Smart Plant

Monitor your favorite plant and get the state displayed on an e-paper. Simple, elegant, and with minimum energy consumption.

Similar projects worth following
Starting from
JGAguado has 25 orders / 1reviews
Ships from Austria
The Smart Plant is an electronic board designed to help gardeners monitor the health of their plants. With its advanced sensor suite, the Smart Plant can measure soil moisture, ambient light, air temperature and air relative humidity. In addition to its IoT capabilities, Smart Plant features a 2.9” e-paper display, allowing you to read your plant data at a glance.

Smart Plant is designed to be highly energy efficient, featuring deep-sleep features on its ESP32 microcontroller that allow its battery to last for weeks at a time. When it's time for a recharge, Smart Plant can be charged using a USB-C cable or a small solar panel, making it an eco-friendly choice for gardeners who want to minimize their environmental impact.

I started this project because I was missing some features on the popular Xiaomi Mi Flora. Those devices, despite being very useful, lack a key point: readability. Every time I wanted to check my plant's health I had to go to their app... With time I learned how to implement them into Home Assistant, receiving the data via Bluetooth on my RPi 4 and plotting the graphs I needed on my custom dashboards...

However, I wanted something more... so I made it... 

I started by making a breadboard behaving as a "shield" for the LILYGO TTGO T5 V2.3.1_2.13 Inch E-Paper where I could plug a capacitive soil moisture sensor and two I2C modules for ambient light (MAX44009) and temperature & humidity (BMP280) measurement.

Smart Plant V0R1 assembledSmart Plant V0R1 frontSmart Plant V0R1 back

The breadboard worked so I moved to a customized PCB, this time embedding a 555-based circuit for the capacitive soil moisture sensor and the ambient sensors (light and temperature). On this prototype, I also added a circuit to allow the selective powering of the sensors, with the aim of bringing down the total power consumption after entering the microcontroller into a deep-sleep mode. 

Smart Plant V0R2 assembledSmart Plant V0R2 frontSmart Plant V0R2 back

I also added a circuit for directly reading the soil conductivity through two electrodes (similar to what the Mi Flora does), but after testing it I ended up discarding it, for not finding a good solution to the electrolysis on the terminals that happened after some months of usage. I even added stainless steel rivets to cover the exposure of areas that could get affected, but with enough time it also got affected. 

Since it wasn't a measurement parameter that I would miss that much, I moved with the rest of the board functionalities working (or rewiring and fixing the errors in order to get them working). 

This trial and error path, brought me to the current design the Smart Plant (V1R1). 

Smart Plant V1R1 assembledSmart Plant V1R1 frontSmart Plant V1R1 back

On this board, I integrated an ESP32-S module and I upscaled the e-paper from the 2.13" on the TTGO to a more easy-to-read 2.9" display, together with all the sensors integrated and a LiPo charging circuit. But let's analyze each system individually:


This is the brain behind, the microcontroller powering the board. Its IoT capabilities (Bluetooth and WiFi), together with the support for a good suite of GPIO, digital busses like the I2C, and the deep-sleep mode feature makes it the ideal candidate for a solution like this. In addition, the community support with firmware like ESPHome or platforms like Arduino set the decision and since I didn't want to get things more complicated than what I already had, I decided to use directly an ESP32 module.

I chose ESPHome as the main firmware for the Smart Plant, not only because of the direct support for the e-paper panel and the rest of the sensors on board but because the integration into Home Assistant is (almost) immediate.

One of the critical tests asked for this new design was the low power consumption: for this test I configured the board to be awake 10s and into a deep-sleep mode for 1h. The results were pretty good, achieving an average of 450-500μA in deep-sleep mode and a combined consumption of 1mA per hour. This translates into approximately 5-6 weeks of usage for a 1000mAh battery updating the display (and the Home Assistant) each hour.

With the aim of reducing costs and due to the limited space on the board, I decide not to implement a USB-to-UART IC, such as the CP210x or the CH340G, instead, I use an external USB-to-UART device and the rest of firmware updates I do them OTA (Over The Air) with Home Assistant.

Battery Management

The battery management system consists of the LiPo charging circuit and the voltage regulation to provide...

Read more »

  • 1 × Smart Plant board This is the designed board that host all the circuits and the components that bring the Smart Plant project alive
  • 1 × 2.9" e-paper display The recommend (and tested working) display is the `296x128, 2.9inch E-Ink raw display panel ( that you can order directly on the manufacturer.
  • 1 × 1000mAh LiPo battery The ideal dimensions shouldn't excess the 50x34x5mm in order to fit in the designed enclosure.
  • 1 × 3D Printed enclosure The one I designed, despite not being fully waterproof, does a good job protecting the electronics agains eventual spilled drops of water while watering the pot
  • 1 × Solar panel In addition to the USB-C, and with the aim of extending the service time between (USB) charges of the battery, the Smart Plant can be powered from a solar panel.

  • V1R2 is here!

    Jon04/04/2023 at 14:51 0 comments

    Following up with the great interest of some of you, I have good news: the next revision of the Smart Plant is here, the V1R2!

    In this small revision, from which I ordered a first batch of 30 units, the following minor issues were fixed:

    1. The Battery Management system is now fully embedded in one board, allowing not just the charging of the battery and the 3.3V regulation with the minimum standby consumption (for the deep-sleep periods) but also monitoring the battery through the ADC port (GPIO35) of the ESP-32 and implementing diodes for protecting the charging from a solar panel and the USB-C port.
    2. The light sensor on the SMD factor has been replaced with a 5mm LDR footprint through-hole (THT) solderable. However, I haven't tested all the light conditions with a standard 5-10k GL55 photoresistor, but since it is a THT component the option to replace it with a 5mm photodiode is still there.

View project log

Enjoy this project?



michal wrote 04/14/2023 at 07:35 point

Hi Jon,

How do you handle time in your esp ? I can't see any external RTC, or XTAL for internal one. Do you get time from NTP ? What in case there is no internet connection ? 

My experience with internal RTC during sleep is very poor, it is not accurate at all.

  Are you sure? yes | no

Jon wrote 04/14/2023 at 08:05 point

Hi Michal, currently, the ESP's timekeeping relies solely on its internal RTC to keep the design compact and straightforward. And yes, you are right, the deep-sleep timing is not very precise. In my experience, I have observed a loss of around 1-2 minutes out of every hour, resulting in a deep sleep period that lasts around 58 minutes instead of 60. However, given that the clock's accuracy is not critical for my application, I do not see a compelling reason to integrate an external RTC into the current design.

  Are you sure? yes | no

mrwho wrote 04/12/2023 at 21:24 point

Looks great, but still has a weak point. These capacitive soil moisture sensors don't hold up for very long.
Sooner or later either water seeps through the PCB layers or the laquer coat cracks (usually
starting from the tip = mechanical stress) and destroys the copper layers.

A connector for spare parts would be an advantageous design.

  Are you sure? yes | no

Jon wrote 04/14/2023 at 07:55 point

Dear @mrwh, I appreciate your interest in the project. As you mentioned, while FR-4 (the fiberglass-reinforced epoxy laminate used as a substrate for my PCBs)  is not hygroscopic, it can absorb moisture over time, which can negatively impact the performance of the PCB. Applying a conformal coating, such as silicone or acrylic-based coating, can create a barrier between the board and the environment, ensuring long-term reliability and performance.

However, from my experience with the early-stage versions of the project (V0R1), I have found that the solution you suggested may be less reliable in terms of durability. Not only you can end up with corrosion in the connector metallic pins depending on the ambient moisture, but also, the connector itself would have to behave as a mechanical interface between the upper part (display, electronics, battery and enclosure) and the bottom soil moisture probe. This means that, every time you touch the device, the connector will be subjected to mechanical stress, increasing the chances to fail. 

  Are you sure? yes | no

Marius Schäfer wrote 04/12/2023 at 17:03 point

Great project!

  Are you sure? yes | no

Jon wrote 04/12/2023 at 17:50 point

Thanks Marius!

  Are you sure? yes | no

Giulio Pons wrote 04/12/2023 at 16:28 point

Very nice. I like it a lot.

  Are you sure? yes | no

Jon wrote 04/12/2023 at 17:01 point

Thanks Giulio!

  Are you sure? yes | no

seancriggs wrote 02/24/2023 at 16:27 point

Fantastic project! Well thought through and developed!

Curious, how long did it take you from concept to v1?

  Are you sure? yes | no

Jon wrote 02/24/2023 at 17:45 point

Hi Sean, thanks for your support! I would say around 6 months working intermittently on the weekends. I made some other boards in parallel to complement the "Smart Domotics" setup that I hope to post soon.

  Are you sure? yes | no

Dan Maloney wrote 02/24/2023 at 00:29 point

Hi Jon --

Very nice build, everything looks so well thought out! I wrote this up for the blog, should publish soon. Good luck in the contest!

  Are you sure? yes | no

Jon wrote 02/24/2023 at 10:10 point

Thanks Dan, looking forward to read it :)!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates