← All projects in the gallery

Greenhouse Watering

by jonathan harrocks

The interesting part of this one is not the watering, it is the refusing. A capacitive probe reads high when dry, so the percentage is inverted and clamped. When the soil drops below the target the pump runs - for eight seconds, and then it waits fifteen minutes whatever the probe says. A sensor that has fallen out of the pot reads bone dry forever, and that limit is the difference between a watered plant and an empty reservoir on the floor. Two rings share a centre: the wide one is the soil and the thin one the level it is watered at, so how far apart they are is how long until the pump runs. The settings screen swaps them, and the wide ring becomes the control. No I2C parts at all: an analog input, a digital output and some arithmetic. That is the shape of design MicroPython suits, and you can change the watering time from the REPL between runs without rebuilding anything.

About this design

Greenhouse Watering is an LVGL interface for the ESP32-S3 + ILI9341 SPI (ILI9341 240 x 320, XPT2046 touch), with 2 screens and 28 widgets, made for MicroPython on LVGL 9.

Screens

  • Main
  • Setup

Hardware and build

Board
ESP32-S3 + ILI9341 SPI
MCU
ESP32-S3
Display
ILI9341
Resolution
240 x 320
Touch
XPT2046
Graphics library
LovyanGFX
LVGL
v9
Exports to
MicroPython
Libraries
lvgl, LovyanGFX

Notes from the author

Soil moisture on the ADC, a pump on a relay, and a lockout so it cannot flood the bench.

Using it

Open a copy in the designer and it is yours to edit: restyle the screens, move it to another board, and export the MicroPython project. Designing is free, and a copy needs no account. Open the designer.