By Cindy Zhang
Introduction
This project utilizes the Arduino microcontroller to monitor the soil moisture level of a plant, as well as alert you to when the plant needs watering. Using a soil moisture sensor, the Arduino reads the moisture level and displays it as a percentage on an LCD display. It also controls a buzzer that sounds when the soil moisture drops below a certain level, to indicate that the plant needs watering. The moisture threshold can be changed by increments of 10% using a push button, making the monitor suitable for plants with varying moisture needs. After reaching a threshold of 100%, it will drop back down to 0% moisture threshold.
The intended usage of this plant monitor is for those who may be new to plant care, and would like to know specifically when to water their plants. Based on the houseplant you have, you can easily search on the internet to find out how much water the plant needs. The monitor is easily set up and has a changeable moisture threshold.
Circuit
Project Details
Source: Smart Prototyping
The soil moisture monitor used is pictured above, since it is difficult to see in the project photos below. Because of the short prongs, a plant housed in a deeper pot may not be the best candidate for this monitor.
Click here to see a video of the project in action!
Summary
Throughout this project, I have learned about the technical aspects of building a circuit, as well as how to write code for several components on an Arduino at a time. As for building the circuit, I ran into a few issues regarding wiring. Many of my components required female-to-male jumper wires, which I did not have. Instead, I stuck the components directly into my breadboard, and connected ordinary wires back to the Arduino. This caused my project to be very delicate, and prone to disconnections. If I were able to rebuild the project directly in e-Lab, rather than at home, I would work on making my project more structurally sound. This will also provide a potential user with a higher quality product. Furthermore, I could add another aspect of the project that will monitor light levels in a similar manner.
As for my code, initially, it was quite unorganized. Since I had to set up my LCD screen, the moisture sensor, buzzer, and push button all together, some of the code got jumbled. Additionally, I had some trouble with my timing for each part, since each component needed a different delay. For example, I did not want my moisture sensor and LCD screen to be updating constantly, since the sensor could not accurately read the moisture in a short period of time. However, if the delay was too long, the push button needed to be held down for longer in order to change the moisture threshold. In the end, I played around with the delays and added comments to my code, making it easier to understand.