In our fast-paced world, it is easy to forget to complete simple tasks. We are plagued with questions such as “did I run the dishwasher?”, “did I shut the garage door?”, “did I submit my essay last night?”. One of the most common questions one asks themselves is “did I water my plants?”. It is common for a person to forget to add watering plants to their daily routine. This device was created to help combat this issue. The Water My Plants device will assist in keeping your plants’ watering schedule consistent and reduce the chances they will become dehydrated.
What it does
This project monitors the moisture level of the soil in a potted plant using a hygrometer, and indicates the moisture level using an LED indicator as well as a LED screen. The user can also input how much water their plant needs using the GUI. This input indicates how long to go in between each watering instance. Based on the moisture level and how much water the plant needs, the pump will activate, watering the plant for a short period. A second hygrometer is also used to measure the water level used for the pump, and a second LED is configured to indicate the level to the user.
How we built it
This project was created with an Arduino, the Processor GUI creator, and external hardware including a motor, a pump, LEDs, an LCD and a hygrometer. The external equipment was wired on a breadboard and connected to the Arduino. The Arduino code was written in C++, and contains code which may read the hygrometer and change the values of the LEDs and LCD based on values read from the hygrometer and the GUI. The GUI created with processor has several functions which may interact with its buttons and send data to the Arduino. The GUI sends commands to the external hardware, which can read and control data coming from the external equipment.
Challenges we ran into
Part of the original idea was to have a light sensor that could tell the user if the plant was getting enough sunlight. Unfortunately, the hardware used for this portion was not compatible with the Arduino board we are using, so it was unable to be configured. Another part of our original idea was to connect to the internet to interface with the Arduino, and to configure the date and time used to space out watering. None of the team members were comfortable putting their personal information into the site, however. To remedy this, the Real-Time Clock was used to keep track of time, and a GUI was created using the Programming tool. Further, a challenge faced while completing this project was working on a hardware project remotely. Since this was not a web-based application, we could not use a host such as GIT to work on code in parallel. To overcome this issue, the team used the "Request Control" function on Microsoft Teams to create, run and edit the code associated with the Arduino and the Processor GUI. Overall, this worked very well, and all team members were able to complete their tasking.
Accomplishments that we're proud of
We are very proud of this project, but we are particularly proud of our GUI which changes settings on the Arduino. We also enjoyed using components that were new to us, such as the hygrometers, RGB LEDs, and the OLED screen. We are also happy that we got our project to work as intended despite the struggles of working on a physical project remotely.
What we learned
None of our group members have ever developed on an Arduino before, so we learned how to use the Arduino IDE and Arduino Due. This involved a lot of research and debugging while under a time constraint. This was also the first time any team member has worked with Java or the Processor GUI creator. Throughout this project, we learned the syntax of Java and how the use the Processor GUI to make an interface that can interact with an Arduino. Another important skill we learned was how to send and receive data between the Arduino and the Processor GUI. One functionality that was ultimately not incorporated was the ability to receive a value from the Arduino and print it on the processor GUI. The team also learned about the challenges of working on a hardware project remotely, and how one is able to overcome them.
What's next for Water My Plants: An Automated Way to Care For your Greens
The project has many aspects that can be improved upon, primarily the customizability. Right now there are only preconfigured options that the user can select for watering their plants. In the future functions can be added to the GUI that allow the user to configure the moisture settings, as well as the watering intervals, to make the program better suit any plants the user may have. Adding a “Days since last watered” indicator to the GUI would also be a big improvement for the user, as they would be able to check if the plant had been watered appropriately.