Let's face it: I'm a poor gardener. My main problem: Forgetting to water the plants. I'm thinking about this problem for many years now. Many ideas came to my mind, but I didn't actually start something in this regard.
But this year, sometime between spring and summer, I stumbled across the Gardena MicroDrip system. It's a starter-kit that uses a (indeed very very small) pump within some sort of water reservoir. The last part was pretty important, because my balcony has no direct water tap. The kit came with some pipe, some drippers, the water pump and a very basic controller. The controller is able to do some fixed-interval programs, but you can't freely program it. It has a connection for either a rain sensor or a moisture sensor, but that's all.
I used the controller over the summer and autumn and it worked pretty good. The plants were happy even when we were on vacation. The system didn't account for rainy days, but basically it worked fine.
What didn't work was: me - again. Because I tend to forget to fill up the reservoir. And that's one of the main issues I want to address with my own controller. The idea of my own "Internet of Plants" was born.
I'm also aiming at more flexibility in regard to watering the plants. The basic idea is still to use fixed intervals, but drop waterings in case of rain or extend the watering time if the sun was shining heavily.
My hardware platform is based on an ESP32. I designed a base board with some relays, power supply, UART interfaces (for sensors, e.g. the fill level sensor for the reservoir) and the ESP-WROOM-32 module.
Did you notice the color of the board? It's from OSH Park and they seem to like purple ;) I do like their board quality and price, even though the shipment takes a bit longer. They are producing in the US.
The image shows my first assembled prototype of the board. I assembled it by hand (as I always do), but this time I got myself a cheap hot-air gun (thanks Simon for your blog article! I got a Kaleep-branded version on eBay). I needed it because of the exposed pads of the switching regulators I designed in. It worked perfectly and I was really impressed how easy and fast I got it assembled!
The ESP-WROOM-32 also has an exposed pad, but I used a different approach there: I placed a fairly big via within the pad, so that I could solder it from below. The hot-air gun wouldn't have worked too well because the ESP-WROOM-32 is a fully assembled PCB (with RF shielding!) by itself.
On the top edge of the board are connectors for power, the relay outputs and the UARTs. The connectors are screw terminals which can be disconnected without loosening the screws, which might be handy when installing the hardware in its IP67 enclosure.
As of now, I just did some basic tests of the board. The ESP32 comes up fine and I'm able to flash it. The two switching regulators also work fine. But I do have to write some more debug and bring-up code (e.g. to stimulate the GPIOs the relays are connected to).
In case you wonder why there are two switching regulators: The first one is the main regulator for the 3.3V I use to power the ESP32 and all other digital stuff on the board. The second regulator is used to power the relays and external sensors. This regulator is normally off and can be activated via a GPIO of the ESP32. The UART level-shifters are also held in standby by default and can be powered up by the ESP32 on demand. I did this to reduce the power consumption as much as possible. I plan on driving the whole system on solar power sometime in the future. That's also the reason why I connected an ADC channel to the power input for voltage monitoring.
Despite the fact that I came up with the "Internet of Plants", I'm planning the software to be basically autonomous. I plan on using weather forecasts from the internet, but I also want to use local environmental sensors. If there is no forecast available (e.g. the internet is down), the fixed interval schedule will ensure the plants stay happy ;)
That's a quick overview of the project's state right now. Much coding to be done, more testing of the hardware and the fill level sensor needs to be tested (I plan to write another post about that sub-project as well).