Imagine that you have a window garden but you will be away for several days for a business trip, or you are too busy and occasionally forget to water your plants, or you have some naughty pets who are curious about the taste of your plants, our smart plant-caring system would be a good solution to take better care of your plants.
What it does
By the end of the project, we would like to have a system with the function of self-watering, pet-repelling, temperature/humidity display and low water storage reminder. The sensing system, which includes the DHT11 temperature humidity sensor module, soil moisture sensor module, liquid level sensor module and PIR motion sensor, should reflect the real-time situation and send back signals to the MCU. The execution system, which includes the mini pump, buzzer and LCD screen, should be turned on and off based on the signals sent back from the sensing system.
How we built it
To achieve the first function – self-watering and temperature monitor, we will use DHT11 temperature sensor module and capacitive soil moisture sensor module. A mini pump will be triggered based on the soil moisture level. In order for our Arduino to read and interface with the signals sent back from the sensor, ADC is indispensable.
To achieve the second function, water level detection, we will use a liquid level sensor module. A refill water reminder will pop up on the LCD screen when the water level drops below the threshold we set. ADC is also needed in this part.
To protect the plant from naughty pets, a motion sensor module is utilized. A buzzer will ring when a pet is detected within the guard range. Input capture interrupt is used for motion detection and PWM is used to control the frequency and volume of the alarm.
LCD1602 is our display system, soil moisture level and ambient temperature, as well as the refill water reminder, will be shown here. Serial communication is applied to drive the LCD screen.
Finally, components are soldered together. Acrylic board is cut into the design shape using CO2 laser and glued together. It can assist the integration of the separate components and provide mechanical support for the system.
Challenges we ran into
One obstacle we met is that due to the timer setting, the real delay time that from the _delay_ms() function is not as expected, which caused some issues in activating the DHT11 sensor. We used the oscilloscope to analyze the discrepancy between the time we set and real-time duration.
Accomplishments that we're proud of
In this project, automatic self-watering functionality is well developed: when the soil is too dry for the plant, water will be pumped from the storage tank. The tank also has a water level detection module which will help avoid running out of water. In addition, the PIR motions module and buzzer will sense the approaching pets and threaten them away, as a result the system will do a good job in protecting the plants. LCD display system will show the ambient temperature as well as the soil humidity, which will remind you whether the environment is comfortable for the plants. In total, our smart plant-caring system will take fantastic care of your plants!
What we learned
From this project, we have reviewed the concepts that we learned from the lectures, including input capture interrupt, PWM, ADC and serial communication. We also gained precious practical experience in interacting with the different kinds of sensors, including both analog (water level sensor, soil moisture level sensor) and digital (DHT11) sensors. In addition, we included multiple sensors and actuators in our plant-caring system, as a result, we have learned how to well arrange the resources (timer, interrupt, I/O pins) of the microcontroller to avoid potential race conditions. During the process of applying the theoretical knowledge to the practical applications, we have gained further understanding of the fundamental concepts and satisfaction of turning the ideas from ground into functional realistic product.
What's next for ESE 519 - Smart Plant-caring System
Going forward, we can also implement a remote control module to selectively turn on/off the alarm function. Also, we can further encapsulate the internal components inside a sealed box to avoid potential damages from external environments.