Smart Plant Moisture Monitor

active Hardware
£6.80
Project materials
38.02 g
Filament
3
Live moisture states

Tech Stack

ESP32 C++ ARDUINO 3D PRINTING SENSORS BAMBU STUDIO WOKWI

Links

About

An ESP32-powered plant monitor that reads a capacitive soil-moisture sensor, turns the result into a red or green status light, and sends live readings over Wi-Fi to an installable web app. I printed a case for the sensor, designed my own diffusing RGB lamp head, and created pixel-art plant characters for each moisture state. The working breadboard prototype cost £6.80 in project-specific materials.

Sensor and enclosure

The capacitive sensor reads the moisture level without leaving exposed metal in the soil. I found a printable case, printed its protective parts in white PLA and fitted them around the sensor.

RGB status lamp

I designed a small shade and base to turn the bare RGB LED into a more visible red or green status lamp, then printed both on a Bambu Lab P1S.

Current build

The working circuit uses an ESP32, a capacitive soil-moisture sensor, a common-cathode RGB LED, three resistors and Dupont wires on a breadboard. Project-specific materials came to £6.80, or £19.69 when the shared ESP32 starter kit is included. The two prints used 38.02 g of PLA.

Wireless app

The ESP32 sends a moisture reading over Wi-Fi every five minutes. A Cloudflare Worker stores the latest readings in D1 and serves a React PWA that can be installed on a phone. Instead of showing only a percentage, the app chooses a happy, worried, sad or sleeping pixel-art plant character for the current state.

Build Timeline

6 Aug 2026

Sensor case printed

Printed and fit-tested the protective case around the capacitive moisture sensor.

13 Aug 2026

Status lamp built

Printed the custom lamp head and tested the RGB LED circuit on a breadboard.

16 Aug 2026

Tested in a plant

Placed the sensor in soil and recorded the monitor changing colour with the moisture reading.

18 Aug 2026

Build video published

Shared the working plant monitor across YouTube, TikTok and Instagram.

31 Aug 2026

Wireless PWA published

Connected the ESP32 over Wi-Fi, stored live readings in Cloudflare D1, and published an installable PWA with pixel-art moisture states.

What I Learned

  • Calibrate moisture thresholds in the plant's soil rather than relying on generic dry and wet values.
  • Powering the sensor from 3.3V keeps its analogue output within the ESP32 ADC's safe range.
  • Each RGB LED channel needs its own current-limiting resistor.
  • Thin white PLA diffuses the RGB LED well enough to make the colour change easier to see.
  • A device key can identify the ESP32 to the API without exposing a reusable secret in the public PWA bundle.
  • Saving the last successful reading in local storage keeps it visible during a temporary network outage without presenting stale data as current.

Discussion & Feedback

Have questions about this project? Built something similar? Share your thoughts!
(Requires GitHub account to comment)

LED Blink

My first hardware build. An ESP32 driving a WS2812B addressable RGB strip, lighting individual pixels and cycling them through colours on a timer - the starting point for getting FastLED talking to the panel before doing anything more interesting with it. The ESP32 is a custom board made by someone at DoES Liverpool with the LED connector built in, so 5V, ground and data all come off a single plug. Data sits on GPIO5 and brightness is capped at 50/255. It started out as a sound-reactive build, but the board's microphone turned out to be digital and I ran out of time on the digital-to-analogue side, so that path is still sat commented out in main.ino.

esp32 c++ arduino +2 more

Buggy Robot

Built during my Manchester Uni foundation year with the robotics society, and I got it moving. Started on the university's Arduino in C++, then attempted a Raspberry Pi version independently in Python. Both the Arduino and the old Raspberry Pi eventually broke, which ended the project, but I learned loads.

arduino c++ raspberry pi +1 more

Mushroom LED Keyring

Green and yellow LEDs laid out as a mushroom cap on a mini solderable breadboard, running off two CR2032 coin cells in series with a slide switch for on/off. The LEDs go two in series behind a single 1kΩ resistor, and those six pairs sit in parallel across the rails, so they all light together and a dead LED only takes its own pair out. Designed in Tinkercad first, then soldered up and fitted to a keyring, with the parts coming to £3.80. It doesn't look much like a typical mushroom, but it turns out there is a green-capped, yellow-stemmed one out there - Leotia viscosa, the Jelly Babies mushroom.

electronics soldering tinkercad +1 more

J4 - CONNECT

YOUTUBE
TIKTOK
INSTAGRAM
GITHUB
LINKEDIN
SUBSTACK