Skip to the content
PCBKitNew board
10 layers70 × 50 mmSoilsense, the printed circuit board in 3D

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.

Size
70 × 50 mm
Copper layers
10
Thickness
1.6 mm
Parts
29
Nets
19
Pads
74
Tracks, vias
122, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
4 May 2026
Updated
9 Oct 2026

Overview

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.

Main components

4

README

README.md

SoilSense

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.

3D render of the board

Features

  • Battery-operated ESP-01 that deep-sleeps between readings to stretch battery life
  • Single 18650 cell, estimated six months per charge
  • Capacitive soil moisture probe sampled through an ADS1115 ADC
  • GXHT30 digital temperature and humidity sensor
  • Publishes over MQTT and the Home Assistant API, with OTA updates
  • Custom two-layer PCB with a TP4056 lithium battery charger
  • 3D-printed case and lid, modeled in FreeCAD and exported as STL

Design notes

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.

Design

Electronics

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.

Firmware

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:

text
esphome run soilsense.yaml

Enclosure

The 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.

Repository layout

text
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

Images

PCB layout with both copper layers and silkscreen

Schematic

Printed enclosure

Enclosure interior with the board seats

Parts

29
QtyValueFootprintReferences
5100KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R4, R5, R8, R9
4100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C4, C5, C6
210KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR6, R7
210uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC2, C3
24.7KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR10, R11
2AO3407Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalQ1, Q2
1100Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2
11N5819Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1
1220KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3
1ADS1115IDGSConnector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalU3
1CapSoilSensor_v1.2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalU2
1ESP-01RF_Module:ESP-01U6
1GXHT30Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalU5
1MCP1700x-330xxTOPackage_TO_SOT_THT:TO-92U4

The 25 most common of 29 parts.

Questions

How big is the Soilsense PCB?

It measures 70 × 50 mm and has 10 copper layers, 1.6 mm thick.

What parts does the Soilsense use?

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.

Where can I download the Soilsense KiCad files?

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.

Can I use the Soilsense design in my own project?

Its repository states no licence, so its author keeps all rights: ask wasylews before reusing the design.

More from wasylews/soilsense

1
  • 10 layers70 × 32.5 mmSoilsense alternative, the printed circuit board in 3D

    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.

    25 parts

Similar boards

  • 2 layers25.7 × 34.4 mmTemperatureDisplay, the printed circuit board in 3D

    TemperatureDisplay

    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.

    4 parts3MIT
  • 2 layers100 × 100 mmMist1010, the printed circuit board in 3D

    Mist1010

    UzixLS/mist1010-board

    10x10cm PCB variant of MIST FPGA project for G738/G706 enclosure

    273 parts43MIT
  • 2 layers50 × 100 mmDMX CTRL, the printed circuit board in 3D

    DMX CTRL

    michar71/DMX_CTRL

    DMX512 Controller for light installations based on Bluepill STM32F103 Board

    46 parts12
  • 2 layers68.6 × 95.3 mmMultitool, the printed circuit board in 3D

    Multitool

    cnlohr/stm32f042_fun

    My fun repo for the STM32f042

    90 parts8
  • 2 layers30 × 17 mmMK312WIFI, the printed circuit board in 3D

    MK312WIFI

    Rangarig/MK312WIFI

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

    7 parts7GPL-3.0
  • 4 layers100 × 50 mmChronolog, the printed circuit board in 3D

    Chronolog

    slemanz/chronolog

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

    95 parts5
  • 2 layers102.9 × 52.1 mmUarm, the printed circuit board in 3D

    Uarm

    beckdac/uArm-MicroView-esp8266

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

    14 parts4GPL-3.0
  • 2 layers204.5 × 121.9 mmCt800-pcb, the printed circuit board in 3D

    Ct800-pcb

    d3rvita/ct800-pcb

    PCB for the CT800 chess computer

    91 parts4MIT