Skip to content

Automatic Watering

This is a programmable, connected (WiFi) automatic watering system. It can be managed through a web interface, allowing programming of watering cycles and manual control of the valves.

An MQTT broker can be configured, for example, to interface the system with HomeAssistant. The time is synchronized using the NTP protocol.

The electronics use an ESP32 DevKit C module, and the PCB was designed with KiCad. It can accommodate up to 6 valves.

The ESP32 program uses the Arduino environment and can be compiled and uploaded to the ESP32 either with the Arduino IDE or with PlatformIO.

PCB

The KiCad project can be found on the PCB’s GitHub page. PCB 3D

Thanks to PCBWay for helping prototyping this project by sending me assembled boards ! The build quality is great, and their manufacturing service was very available and professional to help me to prepare everything and create the bill of material (BOM).

Below are some pictures of these prototypes boards.

PCB view

PCB front view

PCB back view

In the Releases section of the GitHub page, you can find all PCBWay related resources to make it (gerbers, positions, BOM).

It is perfectly working, installed in a waterproof case, with power supplies for 5VDC, 12VDC, 24VAC, and the ESP32.

PCB installed view

ESP32 Program

The program can be found on the firmware’s GitHub page. All instructions are provided there for compiling and uploading the program to the ESP32.

Watering management is done via a responsive web interface (adapted for both PC and smartphones). Web interface

Before compiling, you need to create a config.h file based on config.h.example. In this file, you must configure your WiFi connection details, the valves in your setup, the time zone to use, and the web interface language.

You can also configure your MQTT broker here to interface with HomeAssistant. Scheduling in HomeAssistantValve control in HomeAssistant