Inspiration

The idea for Ivy came from the fact that we are all terrible at keeping plants alive. We wanted to build something that would help us keep track of our plants, but also build something that actually had a personality and could talk back to us when we're neglecting it. We thought it would be funny to turn a silent plant into a chaotic presence that uses a Discord bot to scream at you and demand water in real time. It started as a simple sensor project, but it turned into a full IoT (Internet of Things) system because we wanted to see if we could actually bridge the gap between digital code and physical survival.

What it does

Ivy is a self-aware plant monitor that's tired of being thirsty. She's powered by an ESP8266 acting as its physical body and a node.js bridge that serves as my brain. I judge my owners neglect in real time and use a servo-controlled valve to water myself when things get too dry.

How we built it

Hardware

We used an ESP8266 as the main controller because it has built in wifi chip which was important for the wireless commands. For the actual plant care we wired up a capacitive moisture sensor to an analog pin to get live soil readings and an mg90s servo motor to handle the physical watering mechanism. We also added a piezo buzzer on pin D6 for the "scream" function so the plant can give audio feedback when it is thirsty. The whole thing is powered over USBC and we built a custom physical rig to hold the servo in place so it can open/close a valve that lets water flow freely.

Software

The "brain" of the project is a Node.js server running Discord.js which acts as the bridge between the user and the plant. We used "axios" to send restful api requests from the discord bot to the ESP's local IP address whenever a command like water or update is typed in chat. For the Firmware, we wrote C++ code using the ESP8266 Web Server library to create specific routes like "/water" and "/threshold". We also had to handle data parsing to turn the raw analog moisture values into a visual graph in discord and added try catch blocks to keep the bot from crashing when files were too big or the hardware was offline.

Challenges

The main challenges we ran into were software related, because 2/3 of us inherently do not understand how hardware and software connect. Figuring out the correct angle to turn the motor to allow and restrict water flow is an example of the hardware to software struggles.

We also ran into issues connecting the module to WiFi/Discord, as we inherently didn't understand how to do this before finally figuring out that a node.js file would be the best way to implement the Discord Bot integration and interactivity.

Accomplishments

Overall, we are proud of going above and beyond the initial scope of the project. We initially had wanted to just have the plant water itself based on how dry the soil is, and having a message get sent through a Discord WebHook that the plant had been watered. We now have 20 different commands for the user to use (even if most of them are silly) and have an alternate functionality mode where the user can choose to manually send a command to have the plant watered.

What we learned

First and foremost, we learned how to connect and read data from hardware parts and use them in a software environment, ensuring complete functionality on both ends. We also learned how to integrate Discord WebHooks and Bots to control the hardware, which took a lot of node.js research.

Ivy's growth

Ideally, we would like to make it easier for the user to download the source code and just start using Ivy in a Discord server of their choice. We'd like to find a way to have the initial setup be easier for the user, instead of having to make them make the WebHooks and Discord bot themselves.

Furthermore, a fellow hacker had suggested that we could find ways to make fun shapes out of the water dispenser, and we agree! We've talked about 3D modeling a character to make it look like the water is coming out of their mouth/body, similar to fountains that have stone fish "spitting" water.

Built With

Share this project:

Updates

posted an update

Moisture detection and Servo Motor functionality was completed at around 6PM!!!

We spent a good hour trying to figure out the best angle values for the motor to turn to restrict/allow water flow....it was kinda ridiculous....... BUT WE GOT IT! >:D

Log in or sign up for Devpost to join the conversation.