← All projects

ESP32 irrigation system

Build resources

Parts, costs, wiring diagrams, and fabrication files for inspecting the build and adapting it to your own hardware.

The parts list and build references are collected below. These resources are not yet a complete step-by-step build guide.

Parts & costs

The Excel workbook lists the parts, their functions, product links, prices, and build notes. It is organized by Transmitter, Receiver, and Ethernet systems, followed by irrigation parts, shared enclosures and accessories, and additional circuitry-building tools.

Entered prices are in USD and were verified by Casey Kenan on September 12, 2026. Prices may change. Blank costs are not included in the subtotals; additional tools are totaled separately from project parts. Check the listed specifications and build notes before ordering.

Board wiring

Transmitter ESP32 · Power & soil-sensor connections

The diagram shows the recommended USB-A–to–Micro-USB cable connection from the power bank to the Transmitter ESP32. My actual build used the alternative VIN/GND connection described below. Both soil sensors use 3.3 V and ground, with their analog outputs connected to GPIO32 and GPIO33 for separate readings.

Transmitter ESP32 wiring: a USB battery pack powers the Micro-USB port; two soil sensors share red 3.3 V and black ground rails, with separate yellow analog signals connected to the left-side D32 and D33 pins. A notes panel explains power, averaging, the watering threshold, wireless reports, and V3 Receiver independence.
Transmitter ESP32 power, shared sensor rails, and separate GPIO32/GPIO33 signal connections, with setup notes. Open full-size diagram ↗

This diagram follows the pictured 30-pin ESP32 board. Confirm your own board’s printed pin labels before wiring. Dots mark connected junctions; crossings with a white gap are not connected.

How I powered the actual build: I did not have the correct USB-A–to–Micro-USB cable, so I cut the available USB cable to access its power and ground conductors. I connected the power bank’s 5 V supply to the ESP32 board’s VIN pin and its ground conductor to GND, rather than using the Micro-USB port shown in the diagram.

For a new build, use the correct USB-A–to–Micro-USB cable instead of cutting one. Both methods can power a compatible development board, but confirm your specific board’s VIN input requirements and polarity first. The 5 V supply is not connected to the 3V3 or GPIO pins. Do not power through USB and VIN simultaneously unless your board’s documentation explicitly permits it.

Receiver ESP32 · MOSFET & solenoid wiring

The Receiver ESP32 supplies the control signal; the separate 12 V DC adapter supplies power for the solenoid through the XY MOSFET driver. This detail shows the signal, ground, power-input, and load connections.

Receiver ESP32 wiring with a 5 V USB supply, red GPIO21 and black ground connections to the XY MOSFET, a separate 12 V adapter on DC+ and DC−, and the solenoid on OUT+ and OUT−. A blue notes panel explains digital on/off control, separate power supplies, and deployed V3 behavior.
Receiver ESP32 digital on/off control, USB power, and the separate 12 V solenoid power path, with setup notes. Open full-size wiring diagram ↗

Ethernet ESP32 · W5500 connections

The Ethernet ESP32 connects to the W5500 over SPI: GPIO13 for CS, GPIO27 for MOSI, GPIO19 for MISO, and GPIO14 for SCLK. The diagram includes 3.3 V power, shared ground, and a pin-by-pin guide to the pictured module.

W5500 Ethernet module above the ESP32, connected through GPIO13 CS, GPIO27 MOSI, GPIO19 MISO, GPIO14 SCLK, 3V3, and GND. A 5 V USB adapter powers the ESP32. A blue panel explains every W5500 pin, unused control pins, power precautions, time synchronization, and email monitoring.
Ethernet ESP32 and W5500 wiring, with each module pin explained and notes on time and email monitoring. Open full-size wiring diagram ↗

Pin functions were checked against the WIZnet W5500 datasheet; physical pad positions follow the supplied module photograph, and GPIO assignments follow the archived Ethernet firmware. Confirm your module’s labels, reset circuitry, and the ESP32 regulator’s available current before wiring.

Hardware & fabrication

Reusing PETG covers as perfboard bases

I repurposed the box covers printed from the STL files as bases beneath the soldered perfboards. I chose PETG for its high electrical resistivity, providing an insulating support for the solder joints and component leads protruding from the underside of each board. This helps separate those exposed connections from conductive mounting surfaces, reducing the risk of unintended current paths and short circuits.

Reliable circuit operation still depends on sound solder joints, adequate clearances, and verified connections; an insulating base alone does not guarantee zero signal loss.

Angled model preview of the flat rectangular sliding-lid cover with a small tab along one edge
Flat cover repurposed as a PETG base beneath the perfboard. Model preview rendered from my sliding-lid STL, not a photograph of the printed part.

Check soldered connections with a multimeter

After soldering and before powering the board, use a digital multimeter in continuity mode to check that points intended to be connected have an electrical path between them. Also check for accidental solder bridges between nearby pads that should remain separate.

Disconnect all power first—including the battery pack, USB cables, and 12 V supply—and follow the equipment’s instructions for safely discharging capacitors. Never use continuity mode on a powered circuit. A beep indicates a low-resistance path, not a guarantee of a good solder joint; other components can also provide a path, so compare the result with the wiring diagram and inspect the joint visually.

Watch: How to test for continuity with a multimeter ↗

Fluke’s continuity-testing guide ↗

Assembling the hardware

The outdoor assembly brought together hand-wired, soldered perfboards, sensor covers, mounting supports, protective enclosures, and the valve hardware. The photo below shows the Receiver inside its open enclosure. Board wiring contains the pin mappings and power connections; 3D-printed parts contains the cases, supports, and compartmented organizer files.

3D-printed parts

Custom storage and mounting parts, alongside two community-designed protective cases. Download the files to use in your own build; check component dimensions and print settings first.

My designs

View the organizer layout and lid design

Community designs used in this build

Printed cases do not by themselves establish waterproof protection. Check fit and sealing for your installation. These downloads contain printed parts, not a complete irrigation build kit.

Software & code

Arduino IDE 2.3.10

I used Arduino IDE 2.3.10 to write, compile, and upload the C++ firmware to the ESP32 boards.

For the exact version used here, open the release page’s Assets section and choose the download for your operating system.

Project code

This overview draws on the firmware, test notes, and build files. Firmware source is not linked publicly here; printable parts are available in the 3D-printed parts section.

View my GitHub profile ↗