EmoPot: IOT Plant pot with emotions

Penguin Pranav
5 min readJun 14, 2023

--

Introduction:

Welcome to the world of EmoPot, a project that combines emotions , embedded sysstems, IOT to bring a new level of interaction to your plants. In this blog post, I’ll walk you through the exciting features of EmoPot, including a range of emotions and real-time environmental feedback. With its open-source design and integration with the Blynk cloud platform, EmoPot empowers users to personalize and care for their plants in an innovative way.

Emotional Expressions:

EmoPot offers a range of eight emotions + one rain overlay that can be displayed on its TFT LCD screen. These emotions include:

  1. Happy: Radiating positivity and contentment, this emotion conveys a healthy and thriving plant.

2. Sad: Reflecting a need for attention, this emotion alerts you when your plant requires care or nurturing.

3. Blank: This emotion signifies a neutral state, allowing you to observe your plant without any specific emotional cues.

4. Grumpy: This emotion adds character to your plant, displaying a playful or mischievous personality.

5. Hot: Indicating a high-temperature environment, this emotion raises awareness of potential heat stress on your plant.

6. Cold: This emotion warns you of low temperatures that might affect the well-being of your plant.

7. Vampire: Embracing a touch of darkness, this emotion represents a need for shade or reduced exposure to sunlight.

8. Thirsty: This emotion signals low moisture levels, reminding you to water your plant and maintain its hydration.

Real-time Rain Overlay:

To further enhance the interactive experience, EmoPot incorporates a rain overlay feature. By displaying a cloud with raindrops over any emotion, this overlay allows you to mimic the weather conditions affecting your plant. It adds a visually immersive touch, aligning the emotional expression of the plant with the current weather conditions.

Blynk Cloud Integration:

EmoPot takes plant care to the next level by connecting to the Blynk cloud platform. Through this integration, you gain access to real-time environmental feedback, empowering you to make informed decisions for your plants. The Blynk app displays five essential variables:

1. Temperature: Keep track of the ambient temperature surrounding your plant to ensure it stays within the optimal range.

2. Humidity: Monitor the moisture content in the air to create a suitable environment for your plant’s growth.

3. Moisture: Stay informed about the soil moisture level, enabling you to water your plant promptly when needed.

4. Sunlight: Track the amount of sunlight your plant receives, helping you adjust its placement for optimal light exposure.

5. Health: Receive an overall health assessment based on the combined factors, offering valuable insights into your plant’s well-being.

Problem with Graphics:

One of the significant challenges I encountered while implementing EmoPot was the constraint imposed by the 2MB flash memory and limited computational power of the Raspberry Pi Pico. To overcome this limitation, I devised a clever solution by creating all the graphics using basic shapes provided in the ILI9341 display library. By leveraging pre-defined functions for shapes such as circles, ellipses, line, rectangle etc., I optimized the memory usage and computational load. Additionally, I wrote custom functions for more complex shapes like inclined rectangles, triangle, semi ellipse, further saving computational power and storage space.

Shifting Versions: From Webserver to Blynk IoT Integration

Initially, I set out to implement a webserver on the Raspberry Pi Pico, intending to allow local network users to access the Pico’s stats using its IP address (e.g., 192.16.1.12 in my case). However, I encountered a roadblock in the form of a persistent issue. The Pico would get stuck while waiting for a user to connect, preventing any updates in the displayed emotions. After careful investigation, I identified that the problem stemmed from the user handling function, which involved blocking I/O processes. This caused the program to remain stuck until a user connected, resulting in a lack of emotion updates.

To address this challenge, I made the decision to shift to Blynk IoT integration. By leveraging the capabilities of the Blynk cloud platform, I could now upload data from the sensors to the cloud whenever they obtained readings. This approach proved to be a more efficient and reliable solution, ensuring a seamless flow of data and eliminating the issue of the program getting stuck during the waiting process. The shift to Blynk IoT integration allowed me to overcome the challenges and enhance the overall performance and functionality of EmoPot.

By making these adaptations, I was able to optimize the graphics rendering and provide a more stable and interactive user experience through the integration with the Blynk IoT platform.

--

--