Inspiration

We're just a couple of guys that are incredibly passionate about plants and plant accessories. What more exciting endeavor is there than automating the very thing that could make your beloved plants thrive or die? We aimed to bring about the end of house plant death with this project.

What it does

It is constantly checking the moisture level of soil, and then once it reads a certain moisture level the system will water the plant for a certain amount of time. All of that information is also displayed on the LCD panel.

How we built it

It's built with an Arduino, breadboard, moisture sensor, servo motor, an LCD panel, 220 ohm resistor, and a 10k potentiometer. The Arduino runs the code and supplies power to everything. The sensor is connected to Vin, ground, and A0 on the Arduino. The servo is connected to power and ground on the breadboard and pin 10 on the Arduino. There are 12 connections between the LCD panel and the breadboard and the Arduino. It is connected to pins 2, 3, 4, 5, 11 and 12 on the Arduino. Once the moisture sensor has a reading lower than 300 the servo motor turns 90 degrees (1 degree every 45ms) to begin pouring water from a water bottle. In a real world environment we would have opted for an electrical valve of some sort rather than a servo motor and a water bottle. Once it is at 90 degrees it will hold that position for 2 seconds, but in a real environment we would opt for something like 10 or more seconds. After the pouring it goes back to 0 degrees at a rate of 1 degree every 45 seconds. Then it pauses for 5 seconds before taking more sensor readings. Currently the system logs the moisture reading every 5 seconds, but in a real world environment every couple minutes would be more appropriate. Currently the logging is done using VS Code with Python. The watering, restart timer, and moisture level are all displayed on the LCD panel when those bits of code are being executed during the loop.

Challenges we ran into

We wanted to use an ESP8266 to send the logging data to a cloud-based database, but the networking with the ESP was not easy. We think the main problem was that the UTGuest and eduroam networks are mesh networks with multiple access points and the ESP had problems making HTTP requests because of that. By the time we cut our losses with that we then were having issues trying to get the cloud databases setup. We wanted to keep this independent from a laptop, but with the time constraints we ultimately had to sacrifice that goal.

Accomplishments that we're proud of

Personally I've never done anything with an Arduino before so I'm pretty proud of being able to set the whole thing up and get it to log data correctly. Especially with the time constraints and after it took us a while to get things going.

What we learned

Since I had never used an Arduino before, I learned a lot about that system in general and how I could use one for other personal projects. Also the code for the Arduino was surprisingly simple and I'd be comfortable using it again in the future. We also were, unfortunately, reminded how miserable of an experience networking can be.

What's next for Moist Plant

I might create another automatic watering system for myself because I am awful at remembering to water plants. I'd probably try to do it on something a little smaller and cheaper than an Arduino, though.

Built With

Share this project:

Updates