Wifi Plant Watering with ESP32 – Part 1: The Concept

Watering my plants is an irritating task. I often forget it and my plants are not very forgiving in this regard. Being a maker and computer science student I thought about a self-watering system for the plants on my balcony.

My initial goal was that the system will run on its own at least as long as there is water in the reservoir (i don’t feel like connecting directly to the house water system). It should remind me when to fill it up. Also, I want to be able to control the moisture for each plant.

Sketching it out

Basic Concept of the Watering System

Each plant will get its own pump and moisture sensor to regulate the moisture individually. The pumps are controlled through an 8 channel relay module which is connected to the ESP32. Each moisture sensor is connected to the ESP32 directly. There is also a water level sensor in the reservoir so the ESP32 knows when the reservoir is almost empty so it can send out a notification and don’t turn on the pumps (They don’t like to run very long without water).

The moisture sensors are placed directly into the soil as close to the plant as possible. Water is pumped through tubes that end in small drippers attached to the moisture sensors.

I also thought about using valves to gravity feed the water but that turned out to be more expensive (3-4$ valve/each or 0.5-1$ pump/each).

The ESP then controls the pumps to establish a defined moisture level for each plant individually. That is done by utilizing state machines for each plant/moisture sensor/pump combination.

Next steps

I already ordered the required parts. Because delivery takes at least a few weeks (ordering stuff from china takes ages but is far cheaper than sourcing parts locally) the next step will be programming the ESP32 as good as possible without the actual hardware.

That way I get all non-hardware related stuff out of my way as soon as possible (logic, MQTT, WiFi, …) and can concentrate on the hardware integration when the parts arrive.