This page contains affiliate links. If you purchase through these links, we may earn a small commission at no extra cost to you. Full disclosure.
Plant Monitor
An ESP32 reads soil moisture, light, and temperature for your houseplants — then shows it all on a live dashboard. Three build levels grow with your kid: decorate-only, full sensor wiring, or add auto-watering.
Jump to MaterialsAn ESP32 reads soil moisture, light, and temperature for your houseplants — then shows it all on a live dashboard. Three build levels grow with your kid: decorate-only, full sensor wiring, or add auto-watering.
Soil-moisture sensing (capacitance), light measurement (lux), temperature and humidity, I2C bus basics, microcontroller programming concepts, sensor calibration, data dashboards, and (Level 3) closed-loop automation
Active supervision recommended
Materials List
- Capacitive soil-moisture sensor (×3) $7.50 View
- BH1750 light sensor $2 View
- AHT20 temperature/humidity sensor $3 View
- Dupont jumper wires (M-F pack) $5 View
- USB cable + 5 V phone charger $5 View
- Small project box or food container $5 View
- 5 V relay module (Level 3) $3 View
- Small submersible pump (Level 3) $4 View
- Silicone tubing, 1 m (Level 3) $2 View
Tools Needed
You probably own
- Computer with USB port (for flashing)
- Stickers / markers
- Glass of water (for calibration)
Recommended buy
Runs entirely on low-voltage USB (5 V) — kid-safe. No soldering required for Levels 1–2. Level 3 adds a relay and pump that are still 5 V; an adult should handle relay wiring. Keep electronics away from standing water. Adults handle mains plugs.
What You’re Building
A real sensor system that monitors your houseplants — the same technology commercial plant sensors use, at a fraction of the price. An ESP32 microcontroller reads soil moisture, light brightness, and temperature, then shows everything on a live web page or Home Assistant dashboard.
Three build levels let you match the project to your kid’s age and interest:
- Level 1 — Decorate & Read (ages 4–6): An adult handles the wiring. The kid decorates the project box, labels each plant, and learns to read the sensor dashboard.
- Level 2 — The Family Monitor (ages 7–10, recommended): Kids wire color-matched jumper cables to the sensors — no soldering. An adult flashes the config once. The whole family watches the dashboard come alive.
- Level 3 — It Waters Itself (ages 11+): Add a relay and a small pump so one plant waters itself when the soil gets dry. A gentle introduction to automation and feedback loops.
Pairs with The Measured Garden blog series.
Level 1: Decorate & Read
Step 1: Prepare the Box
Pick a small project box or a decorated food container. This is home base for the ESP32 — all the wires run out from here to your plants.
Step 2: Decorate It
Stickers, markers, paint — make it yours. Label each sensor wire with a plant name: “Maya’s Basil,” “Dad’s Fern,” “The Cactus That Won’t Die.”
Step 3: Watch the Dashboard
An adult has already wired and flashed the board. Open http://plant-monitor.local on any phone or tablet on your Wi-Fi. Watch the numbers change when you water a plant or move it into sunlight.
Level 2: The Family Monitor
This is the recommended build — the sweet spot of learning and hands-on fun.
Step 1: Meet the Parts
Lay everything out on the table. Identify the ESP32 (the brain), the moisture probes (three prongs on a stick), the light sensor (tiny board), and the temp/humidity sensor (another tiny board).
Step 2: Wire the Moisture Sensors
Each capacitive probe has three wires: red (power → 3V3), black (ground → GND), and yellow (signal → an analog pin). Plug them in like a color-coded puzzle:
- Sensor 1 signal → GPIO 34
- Sensor 2 signal → GPIO 35
- Sensor 3 signal → GPIO 32
All three share the same 3V3 and GND rails.
Step 3: Wire the I2C Sensors
The light sensor (BH1750) and temp/humidity sensor (AHT20) both use I2C — two shared data wires:
- SDA → GPIO 21
- SCL → GPIO 22
- Power and ground from the same 3V3 / GND rails
They share the bus, each with its own address. The ESP32 talks to them one at a time.
Step 4: Flash the Config
[Adult step] Connect the ESP32 to a computer via USB. Flash the starter configuration using ESPHome or the Arduino IDE. After the first flash, future updates go over Wi-Fi — no more cables.
The ESP32 hosts its own web page at http://plant-monitor.local. No cloud account, no subscription, no app store.
Step 5: Calibrate Together
This is the science moment:
- Read each moisture probe dry (in the air). Write down the number.
- Dip each probe in a glass of water. Write down the new number.
- Pop those two numbers into the config as the dry/wet range.
Now the dashboard shows a real percentage: 0% = bone dry, 100% = soaking wet.
Step 6: Deploy to Plants
Stick each probe into a different plant’s soil. Set the project box nearby. Plug in the USB power. Open the dashboard and watch the numbers settle. Water a dry plant and watch the graph jump.
High-fives required.
Level 3: Auto-Watering
For older builders ready to close the loop.
Step 1: Add the Relay
A relay is an electrically controlled switch. Wire the relay module’s signal pin to GPIO 26, with power and ground from the ESP32. The relay’s switched side controls the pump’s power.
Step 2: Add the Pump
Connect a small submersible pump through the relay. Drop the pump into a water reservoir (a jar works fine). Run silicone tubing from the pump outlet to the plant’s pot.
Step 3: Set the Threshold
In the config, add an automation rule: when Sensor 1 moisture drops below 30%, turn on the relay for 5 seconds, then wait 60 seconds and re-check. This prevents overwatering — the water needs time to soak through the soil before the probe reads the change.
Step 4: Watch It Work
Let the plant dry out naturally over a day or two. When the moisture drops below the threshold, the pump kicks on, water flows, and the graph climbs back up. Your kid just built a feedback loop — the same concept behind thermostats, cruise control, and industrial automation.
The Dashboard
The ESP32 hosts a simple web page showing:
- Moisture for each probe (percentage + raw value)
- Light level in lux (is it getting enough sun?)
- Temperature and humidity (is the room too cold for tropicals?)
For more features — graphs over time, phone notifications when a plant is thirsty, integration with other smart home devices — connect it to Home Assistant (free, open-source).
By Age
- Ages 4–6 (Level 1): Decorate the box, label the plants, learn to read the dashboard. A grown-up handles all wiring.
- Ages 7–10 (Level 2): Wire the color-matched sensors, help calibrate, and understand what the numbers mean.
- Ages 11+ (Level 3): Add auto-watering, set thresholds, and learn about feedback loops and automation.
Make It Easier
- Start with just one moisture probe and skip the I2C sensors. One sensor, three wires, instant feedback.
- Use the ESP32’s built-in web page instead of setting up Home Assistant.
Make It Harder
- Add a small OLED screen to display readings without needing a phone.
- Set up Home Assistant with historical graphs and phone alerts.
- Monitor a Kratky hydroponic setup — track nutrient solution level and light to grow lettuce indoors.
- Build a second kit and give it to a friend, classroom, or community garden.
Troubleshooting
| Problem | Fix |
|---|---|
| Dashboard won’t load | ESP32 not on your Wi-Fi. Re-flash with correct SSID/password. Check your router’s device list. |
| Moisture reads 0% or 100% always | Calibration values swapped, or probe not fully inserted. Re-do the dry/wet calibration step. |
| Light sensor reads 0 | SDA/SCL wires swapped. Swap the two I2C data wires and reload. |
| Pump won’t turn on (Level 3) | Relay wired to wrong pin, or threshold never triggered. Test by temporarily setting threshold to 99%. |
| Readings jump around | Loose jumper wire connection. Push each Dupont connector firmly onto its pin. |
| Probe corrodes over time | Using a resistive probe (two bare pads) instead of capacitive. Replace with a capacitive sensor — they last much longer. |
What Your Kid Learns
Soil-moisture sensing (capacitance), light measurement (lux), temperature and humidity, I2C bus basics, microcontroller programming concepts, sensor calibration, data dashboards, and (Level 3) closed-loop automation