Skip to the content
2 layers165 × 85 mmSprinkler System, the printed circuit board in 3D

PCB design for five zone sprinkler system. For ESPHome with an Esp32 module.

Size
165 × 85 mm
Copper layers
2
Thickness
1.6 mm
Parts
80
Nets
78
Pads
263
Tracks, vias
511, 36
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 May 2026
Updated
26 Jun 2026

Overview

Sprinkler System is an open-source printed circuit board by Swamp-Ig, from the Swamp-Ig/Sprinkler-System repository on GitHub. It is a 2-layer board of 165 × 85 mm with 80 parts on 78 nets, routed with 511 tracks and 36 vias.

It is built around the ESP32-WROOM-32U, HLK-PM01 and AMS1117-3.3, with the EL817, ULN2803A and 10D471K among its other parts. Its parts include 20 resistors, 13 capacitors, 12 connectors, 9 switches and 5 ICs. It belongs with the home automation and IoT boards and the ESP32 boards of this library.

Main components

7

README

README.md

6-Zone WiFi Sprinkler Controller

A custom PCB for controlling up to six 24 VAC irrigation solenoid valves via WiFi, using an ESP32 and ESPHome with native Home Assistant integration.

Features

  • 6 independent zones — each zone switches a 24 VAC solenoid valve via an Omron G5LE-1 relay
  • WiFi control — ESP32-WROOM-32U with external U.FL antenna connector
  • Home Assistant integration — ESPHome firmware; zones appear as switch entities
  • Onboard power supply — HLK-PM01 AC-DC module (mains → 5 V); AMS1117-3.3 regulator (5 V → 3.3 V for ESP32)
  • Relay isolation — ULN2803A Darlington array isolates ESP32 GPIOs from relay coil drive current
  • Protected design — varistors on each zone output and across the mains input and transformer primary (RV1/RV2), time-delay fuses on the mains and 24 VAC supplies, per-zone RC snubbers, and an optocoupler-isolated 24 VAC rail sense

⚠️ Safety

This board carries mains voltage (Line and Neutral) on the PCB.
The HLK-PM01 module is connected directly to mains. The 24 VAC solenoid rail is transformer-isolated but still carries AC voltage.

  • Do not touch or probe the board while it is powered.
  • The enclosure must be non-conductive and fully closed before applying mains power.
  • All mains wiring must comply with local electrical codes. Use appropriately rated cable and terminals.
  • The external transformer must be safety-rated (UL, CE, or equivalent) for your locale.
  • Replace fuses only with the specified ratings — see the BOM below.

See Assembly Notes for enclosure requirements and conformal coating instructions.

How It Works

The controller has three linked paths: logic power, 24 VAC valve power, and relay control.

Logic power: Mains → F1 → HLK-PM01 → 5 V → AMS1117-3.3 → 3.3 V → ESP32 + logic

24 VAC path: Mains → F1 → G3MB-202P SSR (K1, GPIO16) → J2 → external transformer → J3 → F2 → zone relays (K20–K25) → solenoids

Control: ESP32 GPIO17–23 → ULN2803A → relay coils K20–K25 → zone outputs J20–J25

When a zone is activated, the ESP32 first enables the 24 VAC rail (K1), then drives the selected relay through the ULN2803A. The ULN2803A acts as a low-side driver, keeping ESP32 GPIO current low while switching the 24 VAC solenoid load through the relay contacts.

Bill of Materials

RefComponentValue / Part No.Notes
U4ESP32 moduleESP32-WROOM-32UExternal antenna (U.FL)
U3AC-DC moduleHLK-PM01100–240 VAC in, 5 V / 600 mA out
U1LDO regulatorAMS1117-3.3SOT-223
U2OptocouplerEL817Isolates the 24 VAC rail sense
U5Darlington arrayULN2803ASOIC-18
K1Solid-state relayOmron G3MB-202PGates the 24 VAC solenoid rail (GPIO16)
K20–K25Relay ×6Omron G5LE-1SPDT, 5 V coil, 10 A / 250 VAC contacts
RV20–RV25Varistor ×668 VSurge protection, one per zone output
RV1Varistor10D471K (275 VAC)Across mains L–N input, after F1
RV2Varistor10D471K (275 VAC)Across K1 SSR output / transformer primary
F1FuseT1A (time-delay)Mains supply — slow-blow for transformer/HLK inrush
F2FuseT2A (time-delay)24 VAC supply — slow-blow for solenoid inrush
D1Diode1N4148 (0805)24 VAC rail sense
C5Capacitor220 µF / ≥10 V5 V rail bulk reservoir (THT radial)
C1, C7SMD capacitors10 µFSupply filtering
C2, C3SMD capacitors22 µFSupply filtering / sense
C4, C6, C20–C25SMD capacitors100 nFESP32 VDD (C4), EN reset (C6), zone snubbers (C20–C25)
R1, R3, R5, R6, R8, R10, R11SMD resistors10 kΩSense, pull-ups, pull-downs
R2, R9, R12–R14SMD resistors4.7 kΩSense, LED series, I²C pull-ups
R4, R7SMD resistors470 ΩEN/BOOT switch series
R20–R25SMD resistors100 ΩZone snubber series
LED1, LED2LED ×20805IO2 status / power
SW1, SW2Tactile switch ×2—EN (reset) / BOOT
J1Screw terminalPhoenix PT 1,5/3-5.0 (3-pin, 5.0 mm)Mains input — must be mains-rated
J2Screw terminal2-pin, 5.0 mm240 VAC output to transformer primary
J3, J20–J25Pluggable terminal ×7KF2EDG-style, 2-pin24 VAC — J3 transformer in, J20–J25 zone outputs
XFMRTransformer (external)240 VAC → 24 VAC, ≥50 VA, safety-ratedSize for zones × ~8 VA each

See manufacturing/bom/bom.csv for the full BOM with quantities and footprints.

Reference

Project Structure

text
Sprinkler System.kicad_pro    ← KiCad project file
Sprinkler System.kicad_sch    ← Schematic
Sprinkler System.kicad_pcb    ← PCB layout
Sprinkler System.pretty/      ← Custom footprints and 3D models
symbols/                       ← Custom symbol library (G3MB-202P)
manufacturing/
  gerbers/                     ← Gerber files for PCB fabrication
  drill/                       ← Excellon drill files
  pos/                         ← Pick-and-place centroid files
  bom/bom.csv                  ← Bill of materials
docs/
  schematic.pdf                ← Schematic PDF
  pcb.pdf                      ← PCB layer PDF
  board.step                   ← 3D STEP model
  wiring.md                    ← Connector and GPIO reference
  esphome.md                   ← ESPHome firmware configuration
  assembly.md                  ← Build and commissioning guide
.githooks/pre-commit           ← Auto-exports fabrication outputs on commit
setup / setup.ps1              ← One-time dev environment setup
release / release.ps1          ← Tag a release version

Developing

First-time setup

powershell
.\setup.ps1

Configures the git hook path and verifies kicad-cli is available. Use ./setup in Git Bash / WSL.

Fabrication exports

Gerbers, drill files, PDFs, BOM, netlist, and STEP are regenerated automatically by the pre-commit hook whenever Sprinkler System.kicad_pcb or Sprinkler System.kicad_sch are staged. No manual export step is needed.

Run DRC and ERC from within KiCad before committing — fix all errors before submitting to a board house.

Releasing

powershell
.\release.ps1 v1.1.0

Stamps the schematic and PCB title blocks with the version and date, commits (triggering a fresh fabrication export), and creates the git tag. Use ./release v1.1.0 in Git Bash / WSL. Then push:

powershell
git push && git push origin v1.1.0

Parts

80
QtyValueFootprintReferences
8100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4, C6, C20, C21, C22, C23, C24, C25
710kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R3, R5, R6, R8, R10, R11
6100Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR20, R21, R22, R23, R24, R25
668VVaristor:RV_Disc_D15.5mm_W5.4mm_P7.5mmRV20, RV21, RV22, RV23, RV24, RV25
6G5LE-1-DC5Relay_THT:Relay_SPDT_Omron-G5LE-1K20, K21, K22, K23, K24, K25
54k7Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2, R9, R12, R13, R14
4MountingHole_3.2mm_M3_ISO7380MountingHole:MountingHole_3.2mm_M3_ISO7380H1, H2, H3, H4
210D471KVaristor:RV_Disc_D12mm_W4mm_P7.5mmRV1, RV2
210uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C7
222uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3
2470Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR4, R7
11N4148Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1
1220uCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC5
13v3TestPoint:TestPoint_Pad_D1.5mmTP3
15VTestPoint:TestPoint_Pad_D1.5mmTP2
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1BOOTButton_Switch_SMD:SW_Push_SPST_NO_Alps_SKRKSW2
1Conn_ButtonConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ4
1EL817Package_SO:SOP-4_3.8x4.1mm_P2.54mmU2
1ENButton_Switch_SMD:SW_Push_SPST_NO_Alps_SKRKSW1
1ESP32-WROOM-32URF_Module:ESP32-WROOM-32UU4
1G3MB-202PSprinkler System:RELAY_G3MB-202PK1
1GndTestPoint:TestPoint_Pad_D1.5mmTP1
1HLK-PM01Converter_ACDC:Converter_ACDC_Hi-Link_HLK-PMxxU3
1I2CConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ6
1I2C_VCCJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP1
1IO2LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderLED1
1Main_SupplyTerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-3-5.0-H_1x03_P5.00mm_HorizontalJ1
1PWRLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderLED2
1Station_0Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ20
1Station_1Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ21
1Station_2Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ22
1Station_3Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ23
1Station_4Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ24
1Station_5Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ25
1T1ASprinkler System:Fuseholder_5x20mm_15mm_PinsF1
1T2ASprinkler System:Fuseholder_5x20mm_15mm_PinsF2
1UART0Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ5
1ULN2803APackage_SO:SOIC-18W_7.5x11.6mm_P1.27mmU5
1XFMR_InConnector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_HorizontalJ3
1XFMR_OutTerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_HorizontalJ2

Similar boards

  • 2 layers80 × 40 mmIsolated SMPS Based Power Module, the printed circuit board in 3D

    Isolated SMPS Based Power Module

    uttkarsh-chimane/Isolated-AC-DC-SMPS-Based-Power-Module

    An isolated 230VAC to 5VDC power supply using the HLK-PM01 AC-DC module with input protection, EMI filtering, and custom PCB design in KiCad 10.

    16 parts1MIT
  • 2 layers215.9 × 70.6 mmACW First, the printed circuit board in 3D

    ACW First

    EdwardNatasaputra/powerBoard

    PowerBoard

    204 parts1
  • 2 layers100 × 50 mmPower board, the printed circuit board in 3D

    Power board

    ikatkov/hot-plate

    The heating is not uniform (enough?). The father points of the hotplate are 5C colder than the center, where the ceramic heating element is located.

    22 partsGPL-3.0
  • 2 layers77 × 77 mmTww, the printed circuit board in 3D

    Tww

    stan23/tww-control

    Steuerung für Trinkwarmwasser

    58 parts
  • 4 layers267 × 100.5 mmWachcioDrop, the printed circuit board in 3D

    WachcioDrop

    wachcio/WachcioDrop_PCB

    PCB board for WachcioDrop

    74 parts
  • 2 layers71.4 × 66.2 mmHome Automation, the printed circuit board in 3D

    Home Automation

    Omverma3210/Home-Automation

    A smart home automation switch based on triac

    89 parts
  • 4 layers230 × 196.7 mmSteel form Dish washer, the printed circuit board in 3D

    Steel form Dish washer

    R-Mutura/DISHWASHER

    Contains hardware and Software implementation of a dishwasher product

    156 parts

Questions

How big is the Sprinkler System PCB?

It measures 165 × 85 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Sprinkler System use?

80 parts, built around the ESP32-WROOM-32U, HLK-PM01, AMS1117-3.3 and EL817. 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 Sprinkler System KiCad files?

From the Swamp-Ig/Sprinkler-System repository on GitHub, at the commit this page was made from: the board is Sprinkler System.kicad_pcb and its schematic Sprinkler System.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Sprinkler System design in my own project?

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