← Back to Portfolio

IoT Auto Irrigation System

A compact, reliable drip controller that waters plants in small, repeatable pulses instead of occasional floods. An ESP32 reads a capacitive soil moisture probe and a BH1750 light sensor, then decides when to drive a pump through a relay. Data is sent to my backend for telemetry and alerts. The aim is a system that is simple to operate, gentle on plants, and easy to tune as conditions change.

Hardware

How it behaves

The controller continuously reads moisture and light, smooths the readings, and applies two simple ideas: a hysteresis on soil moisture (start watering below a “dry” threshold, stop after reaching a “wet” threshold) and a light guardrail that blocks watering under strong sun to avoid waste. Water is delivered as micro-doses separated by soak periods, so moisture can propagate in the soil before the next decision. A lightweight rate limit caps the total number of doses within a time window to prevent over-watering.

Control strategy

Telemetry & backend

Each cycle, the node publishes moisture and lux to my server. A short history is kept for quick inspection, and low-moisture events can trigger notifications. This makes it easy to validate thresholds, spot sensor drift, and correlate watering with room conditions.

Installation notes

What I learned

Next steps

Gallery

ESP32 controller with relay and light sensor
ESP32 controller, relay module and BH1750 for ambient light.

Links