Skip to the content
PCBKitNew board
2 layers148 × 61 mmIrrigation controller, the printed circuit board in 3D

Irrigation System Controller

Size
148 × 61 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
36
Pads
116
Tracks, vias
149, 11
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
19 Oct 2026
Updated
21 Oct 2026

Overview

Irrigation controller is an open-source printed circuit board by adriencarbonaro, from the adriencarbonaro/irrigation-controller repository on GitHub. It is a 2-layer board of 148 × 61 mm with 40 parts on 36 nets, routed with 149 tracks and 11 vias.

It is built around the BT136-600E, HLK-10M12 and MOC3041M, with the XIAO ESP32C3, IRL540NPBF and BC547 among its other parts. Its parts include 18 resistors, 5 transistors, 5 connectors, 3 ICs and 2 capacitors. It belongs with the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

irrigation_controller

Overview

This controller is used to remotely control a drip irrigation system.

It controls up to 3 irrigation zones and, optionally, a submersible pump.

Home Assistant controls the watering sequences:

  • activation of the irrigation controller, programmable start time of the irrigation sequence
  • behavior of each zone (availability and watering duration)

Features

On the irrigation controller

  • water inlet: one 3/4" connection, on the right side
  • water outlets: 1, 2, or 3 × 3/4" connections, facing downward
  • for each outlet:
    • a manual control button (all 3 valves can be opened at the same time)
    • a LED that lights up when the valve is open
  • a safety timeout turns off the valves after EV_timeout minutes of activation
  • the status LED blinks when WiFi is connected
  • the controller is powered from 230 V AC

In Home Assistant

A button makes the controller active (watering according to the zone parameters) or inactive (no watering).

Start time: HH:MM [0:00 to 23:59], when the watering sequence shall start.

The behavior of each zone is defined in Home Assistant with the following parameters:

  • availability: true if the zone is used, false if it is not used
  • days of week: frequency of watering (to be added)
  • duration: watering duration in minutes [1 to 15]
  • frequency: 1 cycle (every 24h), 2 cycles (every 12h), 3 cycles (every 6h) (to be added)
  • a button to manually operate the zone (immediate start on the 1st push, immediate stop on the 2nd push)
  • rain sensor: disables the watering sequence while it is raining (to be added)

Sequence definition: at the start time, zone 1 is operated for the given duration if it is activated, then zone 2, then zone 3.

Hardware

🙌 Sponsor

Huge thanks to PCBWay for sponsoring the PCB manufacturing for this project. Their support, help and advices helped make this project physically real.

If you're looking for high-quality PCB fabrication or assembly services, check them out:

👉 https://www.pcbway.com

Electronics

Schematic & PCB designed using KiCad 9

  • Microcontroller: Seeed Studio XIAO ESP32-C3
  • 12 V solenoid valve control: power MOSFET IRFZ24N (55 V, 17 A)
  • Submersible pump control: 230 V Triac BT136-600

Final design PCB dimensions 148 × 61 mm, 4 mounting holes (141.4 × 45 mm)

Various configurations are available a) 2 valves + 1 pump
The D5 LED (= TRIAC is active) is optional.

b) 3 valves, no pump
Yet to come

Hydraulic

  • Inlet: 3/4" (20/27) for an automatic garden connection
  • Outlet: 3/4" (20/27) for an automatic garden connection
  • solenoid valves: 12 V DC, NC, 0.02 - 0.8 MPa, 1/2" (15/21) solenoid valve, from a washing machine
  • 14 mm copper pipes

Firmware

  • The ESP32 module manages
    • the GPIOs
    • a script to drive the solenoid valves and the submersible pump
    • a safety timeout to stop watering in case HA is disconnected during a watering sequence
  • HA manages the irrigation sequences and the manual control through a card in the "garden" dashboard

ESPHome firmware

binary sensor:

  • SW3, SW2, SW1 (must be high at boot): manual command on the device
  • ev1_active, ev2_active: provide HA with the actual status of the solenoid valves

switch: ON/OFF command

  • EV1, EV2, EV3: commands for the 3 solenoid valves
  • pump control: submersible pump command

output:

  • status LED (HIGH side command)

sensor:

  • WiFi RSSI in dBm

button:

  • 3 virtual buttons to manually control EV1, EV2 and EV3 in HA

wifi:

  • automatically connects to any of the 3 WiFi routers in the home

light: (The binary light platform creates a simple ON/OFF-only light from a binary output component.)

  • led_status: blinks the status LED according to LED_ON (100 ms) and LED_OFF (4900 ms)

script:

  • toggle_EV1, toggle_EV2, toggle_EV3: turn the given solenoid valve on and off; turn on the submersible pump when at least one valve is on, and turn it off when all valves are off; launch the safety timeout
  • valves_safety_timeout: turns off every command after EV_timeout (typically 30 min)

Home Assistant configuration

All the elements linked to the irrigation controller are found under the label "irrigation".

Device
  • add "irrigation_ctl1" under Settings → Devices & Services → ESPHome
Entities

The actionable entities are:

  • EVi command: executes the script toggle_EVi
  • pump: switch_toggle pump
  • EVi: switch_toggle solenoid valve i
Helpers
  • common to all zones:
    • irrigation_auto: enables the automatic watering program
    • irrigation_heure_debut (watering start time): the time at which watering starts
  • for each zone (i = 1, 2 or 3):
    • irrigation_active_zonei: enables the watering program on zone i
    • irrigation_duree_zonei (watering duration zonei): the watering duration of zone i
Script
  • lancer_goutteAgoutte_1 (run drip irrigation): executes commande_EVi if irrigation_active_zonei is true, for the duration irrigation_duree_zonei
Automation
  • Démarrage irrigation (Start irrigation): at irrigation_heure_debut, executes the script lancer_goutteAgoutte_1 if irrigation_auto is set to true
Dashboard

a) 2 valves version, french language

  • Mode Auto ('Auto mode'): makes the controller active (watering according to the zone parameters) or inactive (no watering)
  • Heure Début ('Start time'): the start time of the watering sequence
  • Zone 1, Zone 2: a single click manually starts the watering of the selected zone. A second click stops the watering. While watering is on, the icon turns red.
  • Activé/desactivé ('Enabled/Disabled'): if enabled, the zone is included in the watering sequence
  • Duration: automatic watering duration, from 1 min to 15 min

Parts

40
QtyValueFootprintReferences
8330Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR3, R6, R9, R13, R15, R16, R17, R18
710kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R4, R7, R10, R11, R12, R14
31kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R5, R8
3IRL540NPackage_TO_SOT_THT:TO-220-3_VerticalQ1, Q2, Q3
2Conn_01x04_PinConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ4, J5
2Screw_Terminal_01x02TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ1, J2
110uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC2
147uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC1
1BC547Package_TO_SOT_THT:TO-92_InlineQ5
1BT136-600Package_TO_SOT_SMD:TO-252-3_TabPin2Q7
1FULARR_MP1584ENCarbonaro:FULARR_MP1584ENU2
1HLK-10M12Converter_ACDC:Converter_ACDC_Hi-Link_HLK-10MxxPS1
1LED_SmallLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD5
1LED_SmallLED_THT:LED_D5.0mmD4
1MOC3041MPackage_DIP:DIP-6_W7.62mmU3
1Screw_Terminal_01x04TerminalBlock:TerminalBlock_bornier-4_P5.08mmJ3
1XIAO_esp32_C3Carbonaro:XIAO_ESP32_C3U1

The 36 most common of 40 parts.

Questions

How big is the Irrigation controller PCB?

It measures 148 × 61 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Irrigation controller use?

40 parts, built around the BT136-600E, HLK-10M12, MOC3041M and XIAO ESP32C3. 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 Irrigation controller KiCad files?

From the adriencarbonaro/irrigation-controller repository on GitHub, at the commit this page was made from: the board is hardware/irrigation_controller_2/irrigation_controller.kicad_pcb and its schematic hardware/irrigation_controller_2/irrigation_controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Irrigation controller design in my own project?

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

Similar boards

  • 2 layers135 × 101.5 mmLawn sprinkler ctl, the printed circuit board in 3D

    Lawn sprinkler ctl

    adriencarbonaro/lawn-sprinkler

    Lawn Sprinkler Controller

    91 parts
  • 2 layers100 × 100 mmSplitflap berlin, the printed circuit board in 3D

    Splitflap berlin

    julianschick/fallblatt-schematics-ep2

    Fallblattanzeige der S-Bahn Berlin (Leiterplattenlayout)

    64 parts2MIT
  • 2 layers165 × 110 mmClean room, the printed circuit board in 3D

    Clean room

    trieuhuyduc/Clean_room_slave

    ESP32-based slave controller board for cleanroom equipment — RS485/Modbus, isolated I/O, 220V mains control (KiCad)

    213 parts1
  • 2 layers83.8 × 63.5 mmMcu8266 ledstrip, the printed circuit board in 3D

    Mcu8266 ledstrip

    Danielv123/_arduino

    Various arduino projects

    12 parts
  • 2 layers160 × 110 mmPrepaid meter, the printed circuit board in 3D

    Prepaid meter

    kbssrikar7/esp32-energy-meter-pcb

    KiCad PCB design for an ESP32-based single-phase energy meter (ATM90E26 metering AFE) — DRC/ERC-clean, SPICE-validated, fab-ready

    80 parts
  • 2 layers80 × 70 mmATM90E26 EVAL, the printed circuit board in 3D

    ATM90E26 EVAL

    vivmchp/atm90e26_ref

    atm90e26 reference board for kick start

    43 parts
  • 2 layers56.5 × 97 mmPower Supply, the printed circuit board in 3D

    Power Supply

    electromotif208/pcb-portfolio

    👨‍💻 Electronics Engineer 📺 YouTube: ELECTROMOTIF 🔧 Tools: KiCad, EasyEDA 📡 Domains: Power Supply, ESP32, IoT, Embedded Hardware

    34 parts