

Irrigation controller
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
6BT136-600E
TO-220-40℃~+125℃@(Tj) 1 TRIAC 1.5V 1.5W 1.7V 10mA 15mA 30A 4A 600V TO-220 Thyristors (SCR)/Modules ROHSJSMSEMIThyristors (SCR)/ModulesHLK-10M12
DIP,46.9x27.8mm1 10W 120mVp-p 12V 3kV 70V~350V 85VAC~264VAC 900mA AC/DC-DC Short Circuit Protection、Over Current Protection ±0.2% DIP,46.9x27.8mm AC-DC Power Modules ROHSHI-LINKAC-DC Power ModulesMOC3041M
DIP-6-40℃~+85℃ 1 1.25V 2000V/us 4.17kV 400V 60mA TRIAC Yes DIP-6 Triac, SCR Output Optoisolators ROHSonsemiTriac, SCR Output OptoisolatorsXIAO ESP32C3
LCC-14QFN-32_5X5_EP3.7 New Arrivals ROHSSeeedUncategorisedIRL540NPBF
TO-220AB-55℃~+175℃ 1 N-channel 100V 140W 2V 36A 63mΩ@4V N-Channel TO-220AB MOSFETs ROHSInfineon TechnologiesMOSFETsBC547
TO-92Bipolar (BJT)Jiangsu Changjing Electronics Technology (CJ)
README
README.mdirrigation_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:

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_togglepump - EVi:
switch_togglesolenoid valve i
Helpers
- common to all zones:
irrigation_auto: enables the automatic watering programirrigation_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 iirrigation_duree_zonei(watering duration zonei): the watering duration of zone i
Script
lancer_goutteAgoutte_1(run drip irrigation): executescommande_EViifirrigation_active_zoneiis true, for the durationirrigation_duree_zonei
Automation
Démarrage irrigation(Start irrigation): atirrigation_heure_debut, executes the scriptlancer_goutteAgoutte_1ifirrigation_autois 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 330 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R3, R6, R9, R13, R15, R16, R17, R18 |
| 7 | 10k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R1, R4, R7, R10, R11, R12, R14 |
| 3 | 1k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R2, R5, R8 |
| 3 | IRL540N | Package_TO_SOT_THT:TO-220-3_Vertical | Q1, Q2, Q3 |
| 2 | Conn_01x04_Pin | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J4, J5 |
| 2 | Screw_Terminal_01x02 | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J1, J2 |
| 1 | 10uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C2 |
| 1 | 47uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C1 |
| 1 | BC547 | Package_TO_SOT_THT:TO-92_Inline | Q5 |
| 1 | BT136-600 | Package_TO_SOT_SMD:TO-252-3_TabPin2 | Q7 |
| 1 | FULARR_MP1584EN | Carbonaro:FULARR_MP1584EN | U2 |
| 1 | HLK-10M12 | Converter_ACDC:Converter_ACDC_Hi-Link_HLK-10Mxx | PS1 |
| 1 | LED_Small | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D5 |
| 1 | LED_Small | LED_THT:LED_D5.0mm | D4 |
| 1 | MOC3041M | Package_DIP:DIP-6_W7.62mm | U3 |
| 1 | Screw_Terminal_01x04 | TerminalBlock:TerminalBlock_bornier-4_P5.08mm | J3 |
| 1 | XIAO_esp32_C3 | Carbonaro:XIAO_ESP32_C3 | U1 |
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 mm

- 2 layers100 × 100 mm

Splitflap berlin
julianschick/fallblatt-schematics-ep2
Fallblattanzeige der S-Bahn Berlin (Leiterplattenlayout)
64 parts2MIT - 2 layers165 × 95 mm

- 2 layers165 × 110 mm

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 mm

- 2 layers160 × 110 mm

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 mm

- 2 layers56.5 × 97 mm

Power Supply
electromotif208/pcb-portfolio
👨💻 Electronics Engineer 📺 YouTube: ELECTROMOTIF 🔧 Tools: KiCad, EasyEDA 📡 Domains: Power Supply, ESP32, IoT, Embedded Hardware
34 parts