This project is about monitoring my Lotus plant which is located in a 90 litres bucket in my garden.
Cultivating a Louts plant is not that easy. This plant needs clear water and if you want to get a blossum, a specific time of water temperature above 20 degrees Celsius. In the Winter it also must not freeze. Therefor I decided to build a small ESP32 project which monitors the water temperature and gives me the possibility to control a aquarium pump to filter out the dirt.
For outside useage I build everything in an splashproof electric plastic case with external ports for power supply and the temperature sensors.
To get my monitoring project smart I am using the HomeSpan library for full native Apple HomeKit integration.
- NodeMCU ESP 32S Dev Kit (AZ-Delivery Link) - the heart of the project.
- DS18B20 water resistant (AZ-Delivery Link) - for measuring the water temperature.
- GY-21 HTU21D (AZ-Delivery Link) - for measuring the environmental air temperature and humidity.
- IRL 1004 Mosfet (Infineon product link) - for controling the water pump.
- 2x Pushbutton NO - one for switching on/off the water pump without using an app and one for controling the HomeSpan device (e. g. reset, enable access point, ...).
- USB 5V water pump - for filtering the water.
- Waveshare 2.13 inch e-paper display HAT 250x122 (V3) (Waveshare Wiki) - displays all information.
- 4,7 kΩ resistor - for water temperature DATA pull up.
Power supply | ESP32 | Control button | 4,7 kΩ resitor | DS18B20 | HTU21D | IRL 1004 | Pushbutton | Water pump | Display |
---|---|---|---|---|---|---|---|---|---|
5V | 5V | VIN | VIN | 5V | |||||
GND | GND | 3 | GND | GND | SOURCE | 3 | GND | ||
P32 | 4 | ||||||||
P13 | R2 | DATA | |||||||
P22 | SCL | ||||||||
P21 | SDA | ||||||||
P16 | GATE | ||||||||
P4 | 4 | ||||||||
DRAIN | GND | ||||||||
3V3 | R1 | VCC | |||||||
P23 | DIN | ||||||||
P18 | CLK | ||||||||
P26 | CS | ||||||||
P25 | DC | ||||||||
P33 | RST | ||||||||
P27 | BUSY |
Building everything into such a small case was quite challenging.
The power supply port for the ESP32 and the water pump is on the bottom right of the case. The environmental sensor is located in the middle. The left port is for connecting the water temperature sensor. The HomeSpan control button is located on the board which can be used for unpairing the device, creating a local access point, ... . For switching the water pump on/off a magnetic contact switch is used. You can use of course a simple pushbutton instead.
I created my own internal LotusDisplay library for displaying the data much easier and better modularization. It uses the GXEPD2 library.
- ESP32 installation instructions for Arduino IDE (ESPRESSIF How to Install)
- AZ-Delivery e-paper tutorials (Part 1, Part 2)
- Convert images to cpp (image2cpp)
- Free icons (flaticon)
A big thank you to my dad who always supports me with my Arduino projects and who is doing all the electronic and hardware stuff.