

Plant water array
An ESP32 based moisture detection array built with a SQLLite, Fast API backend and React frontend.
- Size
- 60 × 80 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 8
- Nets
- 29
- Pads
- 49
- Tracks, vias
- 62, 0
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 20 Sep 2024
- Updated
- 14 Mar 2026
Overview
Plant water array is an open-source printed circuit board by millelog, from the millelog/plant-water-array repository on GitHub. It is a 2-layer board of 60 × 80 mm with 8 parts on 29 nets, routed with 62 tracks and 0 vias.
It belongs with the ESP32 boards of this library.
README
pcb/README.mdPlant Water Array — PCB Design
Breakout board for ESP32 DevKit V1 with OLED display and 5 moisture sensor connectors.
Board Summary
+--------------------------------------------------+
| |
| [OLED 4-pin] [ESP32 DevKit V1] |
| GND VCC SCL SDA L-socket R-socket |
| (1x15) (1x15) |
| |
| [J_S1] [J_S2] [J_S3] [J_S4] [J_S5] |
| G34 G35 G36 G39 G32 |
+--------------------------------------------------+Parts List (per board)
PCB Connectors (solder onto the board)
| Part | Qty | Search Term | Notes |
|---|---|---|---|
| 1x15 Female Pin Socket (2.54mm) | 2 | "1x15 pin socket 2.54mm" | ESP32 DevKit mounts into these |
| 1x4 Female Pin Socket (2.54mm) | 1 | "1x4 pin socket 2.54mm" | SSD1306 OLED plugs in here |
| JST-XH 3-pin vertical header (B3B-XH-A) | 5 | "JST XH 3 pin male header vertical" | Board-side sensor connectors |
Sensor Cable Parts (per sensor, 5 per board)
| Part | Qty | Search Term | Notes |
|---|---|---|---|
| JST-XH 3-pin plug housing (XHP-3) | 1 | "JST XH 3 pin female housing" | Mates with B3B-XH-A header |
| JST-XH crimp contacts (SXH-001T-P0.6) | 3 | "JST XH crimp terminal" | One per wire |
| 3-conductor wire (22-26 AWG) | ~1m | "3 conductor 24AWG wire" | Length as needed, up to ~2m |
Quantities for 5 Boards
| Part | Total Qty |
|---|---|
| 1x15 Female Pin Socket | 10 |
| 1x4 Female Pin Socket | 5 |
| JST-XH 3-pin header (B3B-XH-A) | 25 |
| JST-XH 3-pin housing (XHP-3) | 25 |
| JST-XH crimp contacts | 75 |
| 3-conductor wire | ~25m |
Where to Buy
- Amazon (fastest) — search "JST XH connector kit" (
$10-15 for assorted kit with headers + housings + crimp pins). Separately get a pack of "female pin header socket 2.54mm" ($5-7). - AliExpress (cheapest, 2-3 week shipping) — same searches, about 1/3 the price.
- Digikey / Mouser (exact part numbers, reliable) — B3B-XH-A ~$0.15ea, XHP-3 ~$0.10ea, SXH-001T-P0.6 ~$0.05ea, pin sockets ~$0.50ea.
A JST crimp tool (~$25) is helpful but you can solder wires directly to the crimp contacts instead.
Pin Mapping
| Connector | Pin 1 | Pin 2 | Pin 3 | ESP32 GPIO |
|---|---|---|---|---|
| J_S1 | GND | 3V3 | SIG | GPIO 34 |
| J_S2 | GND | 3V3 | SIG | GPIO 35 |
| J_S3 | GND | 3V3 | SIG | GPIO 36 (VP) |
| J_S4 | GND | 3V3 | SIG | GPIO 39 (VN) |
| J_S5 | GND | 3V3 | SIG | GPIO 32 |
| J_OLED | GND | 3V3 | SCL (GPIO 22) | SDA (GPIO 21) |
Generating the Netlist
cd pcb/
python generate_netlist.py
# Produces plant_water_array.net
# Open KiCad PCB Editor → File → Import NetlistNo dependencies required — just Python.
PCB Layout Tips
- ESP32 socket headers in the center (25.4mm apart, verify with your DevKit)
- OLED header on top edge
- JST-XH connectors along bottom or side edge
- Keep traces wide (0.5mm+)
- Pour a ground plane on the back copper layer (select B.Cu → Place → Add Filled Zone → net GND)
Ordering PCBs (JLCPCB)
- Export Gerbers from KiCad: File → Fabrication Outputs → Gerbers, then Generate Drill Files
- Zip the
gerber_out/folder - Go to jlcpcb.com → Order Now → upload the zip
JLCPCB Settings
| Setting | Value |
|---|---|
| Base Material | FR-4 |
| Layers | 2 |
| PCB Qty | 5 |
| PCB Thickness | 1.6mm |
| PCB Color | Green (cheapest) |
| Surface Finish | HASL (or LeadFree HASL) |
| Copper Weight | 1 oz |
| Everything else | Default |
Cost: ~$2-5 + shipping ($1-5 standard, ~$15-20 DHL express).
Sensor Cable Assembly
Each sensor cable is a 3-wire bundle with a JST-XH plug on the board end:
Sensor Board End
┌─────────┐ ┌──────────┐
│ S (sig) │─────────│ Pin 3 │
│ + (VCC) │─────────│ Pin 2 │
│ - (GND) │─────────│ Pin 1 │
└─────────┘ └──────────┘
JST-XH plugUse 3-conductor cable (ribbon cable or twisted triple) — can run 1-2 meters without issues for analog signals.
Parts
8| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | ESP32_Left | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J_ESP_L |
| 1 | ESP32_Right | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J_ESP_R |
| 1 | Moisture_G32 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J_S5 |
| 1 | Moisture_G34 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J_S1 |
| 1 | Moisture_G35 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J_S2 |
| 1 | Moisture_G36 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J_S3 |
| 1 | Moisture_G39 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J_S4 |
| 1 | SSD1306_OLED | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J_OLED |
Questions
How big is the Plant water array PCB?
It measures 60 × 80 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Plant water array use?
8 parts. 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 Plant water array KiCad files?
From the millelog/plant-water-array repository on GitHub, at the commit this page was made from: the board is pcb/plant_water_array.kicad_pcb and its schematic pcb/plant_water_array.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Plant water array design in my own project?
Its repository states no licence, so its author keeps all rights: ask millelog before reusing the design.
Similar boards
- 2 layers20.5 × 24.8 mm

- 2 layers14.4 × 10.5 mm

OSO SWAB B1-00 Sensor Watch Accelerometer
joeycastillo/Sensor-Watch
A board replacement for the classic Casio F-91W wristwatch
8 parts2.1k - 2 layers7.9 × 39.1 mm

Brain board STM32F407 SD wing it
rusefi/rusefi
rusefi - GPL internal combustion engine control unit
8 parts1.2k - 2 layers59.9 × 25.7 mm

Buffer
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
8 parts1kGPL-3.0 - 2 layers52 × 12.6 mm

USB
shanteacontrols/OpenDeck
A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.
8 parts960Apache-2.0 - 2 layers87.5 × 48.5 mm

7 input macropad
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
8 parts915 - 2 layers36.2 × 63.1 mm

PicoMemcard pico
dangiu/PicoMemcard
Emulating PSX Memory Card (or controller) using a Raspberry Pi Pico
8 parts694GPL-3.0 - 2 layers36 × 10 mm

PCB4-PWR BTN Rev.A
OLIMEX/DIY-LAPTOP
Do It Yourself Open Source Hardware and Software Modular Hacker's Friendly Laptop
8 parts578Apache-2.0