
Soilsense alternative
wasylews/soilsense
A low-power soil moisture and climate sensor on an ESP-01, powered by a single 18650 cell for an estimated six months. Custom PCB and a 3D-printed enclosure.

A low-power soil moisture and climate sensor on an ESP-01, powered by a single 18650 cell for an estimated six months. Custom PCB and a 3D-printed enclosure.
Soilsense is an open-source printed circuit board by wasylews, from the wasylews/soilsense repository on GitHub. It is a 10-layer board of 70 × 50 mm with 29 parts on 19 nets, routed with 122 tracks and 0 vias.
It is built around the ESP-01, ADS1115IDGS and GXHT30, with the AO3407 among its other parts. Its parts include 11 resistors, 6 capacitors, 5 ICs, 2 transistors and 1 diode. It belongs with the home automation and IoT and sensors and measurement boards and the ESP8266 boards of this library.
A low-power soil moisture and climate sensor for your garden. It samples capacitive soil moisture, temperature, and humidity, then reports them to Home Assistant. The whole device runs on an ESP-01 and is powered by a single 18650 cell, good for roughly six months per charge. It lives in a 3D-printed enclosure you can print at home.

Why an ESP-01? At the time it was the smallest board I had on hand, and that was the point. I wanted to see how little hardware could still run a useful garden sensor. An ESP32 would have made this easier; it even has ADCs onboard, but easier was not the goal.
The ESP-01 has no ADC on the module, so the probe reads through an external ADS1115 on the same I2C bus as the GXHT30. The 16-bit ADC is overkill for a moisture probe, but it keeps the analog side out of the firmware and the whole board on two wires.
Deep sleep is what makes the battery life work. Between readings the chip sleeps, so the sensor sits in the soil without a cable and without frequent recharges.
The schematic and PCB are designed in KiCad and live in design/soilsense/. The board hosts an ESP-01 module, the TP4056 charger, and an I2C bus that connects the ADS1115 and the GXHT30. While the design was being refined, several board variants were explored (30x70 mm, 50x70 mm, and one rotated ESP layout); the main board is soilsense.kicad_pcb.
The firmware is an ESPHome config, firmware/soilsense.yaml. It reads the sensors over I2C, publishes to Home Assistant, and puts the chip to deep sleep. WiFi credentials and API keys live in a gitignored secrets.yaml. Flash it with:
esphome run soilsense.yamlThe case is modeled in FreeCAD (design/enclosure.FCStd) and exported as STL for printing (design/enclosure-case.stl and design/enclosure-lid.stl). The lid snaps over the case, and the base carries a slot for the moisture probe.
design/
enclosure.FCStd FreeCAD source of the case
enclosure-case.stl case, ready to print
enclosure-lid.stl lid, ready to print
soilsense/ KiCad project (schematic, PCB, board variants)
firmware/
soilsense.yaml ESPHome configuration
images/
board render, PCB layout, schematic and enclosure photos



| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 100K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R1, R4, R5, R8, R9 |
| 4 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1, C4, C5, C6 |
| 2 | 10K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R6, R7 |
| 2 | 10uF | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C2, C3 |
| 2 | 4.7K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R10, R11 |
| 2 | AO3407 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | Q1, Q2 |
| 1 | 100 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R2 |
| 1 | 1N5819 | Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal | D1 |
| 1 | 220K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R3 |
| 1 | ADS1115IDGS | Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical | U3 |
| 1 | CapSoilSensor_v1.2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | U2 |
| 1 | ESP-01 | RF_Module:ESP-01 | U6 |
| 1 | GXHT30 | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | U5 |
| 1 | MCP1700x-330xxTO | Package_TO_SOT_THT:TO-92 | U4 |
The 25 most common of 29 parts.
It measures 70 × 50 mm and has 10 copper layers, 1.6 mm thick.
29 parts, built around the ESP-01, ADS1115IDGS, GXHT30 and AO3407. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the wasylews/soilsense repository on GitHub, at the commit this page was made from: the board is design/soilsense/soilsense.kicad_pcb and its schematic design/soilsense/soilsense.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask wasylews before reusing the design.

wasylews/soilsense
A low-power soil moisture and climate sensor on an ESP-01, powered by a single 18650 cell for an estimated six months. Custom PCB and a 3D-printed enclosure.

RobThree/TemperatureDisplay
Measures temperature and humidity using a GXHT30 and displays this information on an SSD1306 OLED display. Offers a HTTP endpoint to read values as JSON, also outputs values on serial.

UzixLS/mist1010-board
10x10cm PCB variant of MIST FPGA project for G738/G706 enclosure

michar71/DMX_CTRL
DMX512 Controller for light installations based on Bluepill STM32F103 Board


Rangarig/MK312WIFI
A replacement for the MK312's bluetooth adapter that allows to connect to it via wifi ... or comport

slemanz/chronolog
STM32-based temperature data logger with RTC, NOR flash storage, LCD and Wi-Fi. Hardware and firmware.

beckdac/uArm-MicroView-esp8266
uArm control PCB with MicroView (Arduino w/ OLED) and esp8266 WiFi/UART bridge
