Inspiration

When going on vacation, finding someone to water your plants can be difficult. That's why we created a device that does this for you!

What it does

When the soil moisture becomes too low, our device waters your plant so it stays hydrated.

How we built it

Overview

The device's architecture consists of a soil moisture sensor that constantly monitors the moisture level of the soil. If the moisture is detected to be below a certain threshold that is appropriate for the health of the plant (standardized as a moisture reading of 1000), the moisture sensor triggers a pump through an Arduino uno and relay switch. Upon getting triggered, the pump dispenses water onto the plant and its soil in order to hydrate it.

Hardware

An Arduino uno served as the microcontroller board to relay signals between the various components of the project.

For the input that controls the state of the system, we used a LM393 soil moisture sensor that can continuously monitor the moisture of the soil in real time.

For the output, we used an irrigation pump that is triggered when 5V of current is applied to it. The trigger, when activated by the microcontroller circuit lasts for ten seconds, and activates the ON state of the digital pin corresponding to the pump.

The trigger is conveyed through a 5V one way channel relay module.

Finally, we used a C162A-BW-LW65 LCD screen to display the state of the system. This would show the soil moisture level, as well as indicating if the pump was active or inactive.

Software

The primary logic of the code was to activate an ON/OFF state of the digital pin corresponding to the relay-pump system conditionally based off the soil moisture input. This was done using the digitalWrite() function with LOW and HIGH parameters.

Try it Yourself:

link to our code: https://drive.google.com/file/d/1NE_CCo05m9PJWqnnivclMAmeNy6SqX-v/view?usp=share_link

Challenges we ran into

The primary challenge we encountered was our attempt to implement IOT functionality via Blynk. Our goal was to create a smartphone interface button in Blynk that could trigger the pump regardless of the soil moisture level, in order to give the user more autonomy over the system.

However, we faced several issues with this. First, we tried to implement this IOT functionality using an ESP 32 board. However, this was unsuccessful, as the device would be shown as offline in the Blynk interface despite the watering system being active. In order to troubleshoot this, we tested each component of IOT and non-IOT elements to the system. Each ran successfully in isolation. We also tried to search for bugs in the code using Blynk and Arduino documentation. However, even after attempting to debug our code, and ensuring all libraries and dependancies were installed in our code, this was unsuccessful.

Finally, we also replaced the ESP 32 with an MKR 1000 in case there was an issue with the microcontroller board, but this was also unsuccessful.

What we learned

One of our main takeaways was to simultaneously work on, and test multiple components of any project that involves interfacing hardware and software, especially if it requires IOT integration. This would allow the hardware to be built in a way that accommodates the issues we ran into on the software or IOT side, or vice versa. This is something we will do differently in the future, ensuring that such a strategy is implemented.

We also learned how to test individual components of our hardware before integrating the entire functionality. This would ensure that any issues we encountered could be isolated and fixed, and is also efficient in building a product in an iterative fashion.

What's next

The next version of our plant watering system would include an extensive selection of IOT features, with user-defined personalization of features such as soil moisture threshold, given time for the pump to dispense water when activated, and overriding the moisture-based input of the system for the user to water the plant whenever they want.

Built With

Share this project:

Updates