Remind you to water the plant

Made by Fangzheng Zhu

Found in DioT 2019: Internet of Plants

Goal1: To visualize the moisture of the soil; Goal2: To remind people to water the plant by sending SMS.



 1. Students are really busy with their school work and don't follow a regular schedule. Sometimes it would cause some trouble for the plant. Because they always forget to water the plant. So in my IoT project, I choose to use the moisture sensor to detect the moisture situation of the soil. It is really easy for a student to see if he or she needs to water the plant just based on the LED lights' color.

2.  What if people would still ignore the plant itself even if we have the colorful LED lights. I implement the IFTTT  that when the moisture is below a certain number, it would trigger an action that I would receive an SMS to notify I need to water the plant. 



I think the color is the most intuitive and simplest information in this case. So I pick the green and red LED lights as my output. I use the "if" function to decide which light should be turned on. 

The voltage that the sensor outputs changes accordingly to the water content in the soil.

When the soil is:

Wet: the output voltage decrease

Dry: the output voltage increases

The output can be a digital signal (D0) LOW or HIGH, depending on the water content. If the soil humidity exceeds a certain predefined threshold value, the modules output LOW, otherwise it outputs HIGH. The threshold value for the digital signal can be adjusted using the potentiometer.

The output can be an analog signal and so you’ll get a value between 0 and 4067.

Internet of Plant
Tristyn Zhu -
int rainPin = A0;
int greenLED = D4;
int redLED = D3;
// you can adjust the threshold value
int thresholdValue = 2000;
int sensorValue = 0;

void setup(){
  pinMode(rainPin, INPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(redLED, OUTPUT);
  digitalWrite(greenLED, LOW);
  digitalWrite(redLED, LOW);
  Particle.variable("moisture", sensorValue);

void loop() {
  // read the input on analog pin 0:
  sensorValue = analogRead(rainPin);
  if(sensorValue < thresholdValue){
     Particle.publish("water-level-changed", "I need water"); 
    digitalWrite(redLED, LOW);
    digitalWrite(greenLED, HIGH);
  else {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
Click to Expand


1* YL-69 moisture sensor 

1* Particle ARGON

1* Breadboard

2* 220 Ohm Resistors

1* Red LED

1* Green LED

1* Jumper wires


Connected to the ClickSend

This device is connected to ClickSend via IFTTT. When the output voltage increases over 800. The ClickSend would send an SMS to my phone shows "I need water".


Next step

1. Create a persona of the plant, make the system more interactive. For example, I can make a smiley face using the lights when the plant is okay and make a sad face when the plant needs water.

2. Implement a chatbot into the system. Since I use the IFTTT to send SMS notification with me. I can design more conversations using Dialogflow to enhance the persona.

3.  Use face tracking. When the plant needs water, the output would trigger the pot to turn to me with a sad face. 



In this project, I learned something about risk control. In the first few days, I tried to use the PIR motion sensor as my main component. It turned out not very good with many problems but I stuck with it for a long time. I didn't have plan B for this case. So I changed my design at the very last minute because it still didn't work. Before the project starts, I should have an estimate of my ability and project expectations, and then adopt the appropriate strategy. In addition, it is good to try something new, just be prepared to prepare an alternative plan and be careful about time management.

Another takeaway from other classmates' projects is that you can come up with a really good design idea even if you use a really simple circuit. Actually I should spend more time on the idea, not the sensor itself. I can actually achieve the same goal with different sensors. 

At last, I think I should learn some basic C++ language ...

Share this Project


49713 Designing for the Internet of Things

· 16 members

A hands-on introductory course exploring the Internet of Things and connected product experiences.


Goal1: To visualize the moisture of the soil;
Goal2: To remind people to water the plant by sending SMS.


November 7th, 2019