Plant Assistant

Made by Haokun Wang

Found in DioT 2019: Internet of Plants

This device can help young people to monitor the soil moisture of plants and remind people to water them through lights and sounds. It also can assist with pet families to monitor the situation that pets press the plant, then to remind the owner to treat the situation and help the plants grow better.

0

Solution Statement

In modern society, many families plant green plants to meet their different needs, such as decoration, purifying the air and so on. A young couple family usually both of whom are more busy with work, have no time to pay special attention to the plants at home, so that it is easy to let plants withered. This device can help young people to monitor the moisture of the soil and remind people to water them through lights and sounds. At the same time, for many pet families, such as feed cats, in some cases the cat pressed the plant, this appliance can also monitor this situation, then to remind the owner to treat the plants and help the plants grow better.

0

Approach

Firstly, I defined my target problem and designed a solution for it. There are two parts of my device:

  • Monitor the soil moisture and remind people through sounds and light:

Based on the YL-69 Soil Moisture Sensor threshold, I defined the moisture monitoring bar as 2500. When the moisture sensor's value is bigger than 2500, the light and sound will work.

  • Monitor the plant status that if be weighted by other stuff. If it is, the light and sound will work:

I set up the force of the FSR as 1000 at the beginning and tried with different stuff to press the plant and iterate the force threshold. Then, I use  1500 as the bar of the FSR sensor. When the force bigger than 1500, the sound and light will work to remind people to check the status of the plant.

0

Process

  • Define the main problems I want to solve in this project

  1. Monitor soil moisture status and remind people to water
  2. Monitor the relationship between plants and pets, remind people in abnormal situations.

  • Find a suitable way to design the solution, and choose components to be applied in my project.
  • Design a simple and worked solution, includes circuit, sensor, melody and so on.
  • Set up the threshold of each sensor.
  • Programming a solution cooperates with the circuit. 
  • Test and iterate circuit and code.
0

Implementation

Main Parts

  • 1 x Breadboard
  • 1 x FSR 
  • 1 x LED pin 
  • 1 x YL-69 Soil Moisture Sensor
  • 1 x Piezos 
  • 1 x 10kΩ Resistor
  • 1 x 1kΩ Resistor
  • Several jumper wires
0
// Define a pin that we'll place the FSR on
// Remember to add a 10K Ohm pull-down resistor too.
int fsrPin = A0;

// Create a variable to hold the FSR reading
int fsrReading = 0;

// Define a pin we'll place an LED on
int ledPin = D2;

// Create a variable to store the LED brightness.
int ledBrightness = 0;

int speakerPin = D3;
// create an array for the notes in the melody:
//C4,G3,G3,A3,G3,0,B3,C4
int melody1[] = {1318,1318,1318,1046,1318,1568,0,784,1046}; 
int melody2[] = {1967,1760,1568,1397,1318,1175,1046}; 

// create an array for the duration of notes.
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {8,8,8,8,4,8,4,4 };

//below are for the soil moisture sensor 
int rainPin = A3;
//int thresholdValue = 800;
int sensorValue = 0;

void setup()
{
  // Set up the LED for output
  pinMode(ledPin, OUTPUT);

  // Create a cloud variable of type integer
  // called 'light' mapped to photoCellReading
  Particle.variable("force", &fsrReading, INT);
  
  pinMode( speakerPin, OUTPUT );
  
  pinMode(rainPin, INPUT);
  pinMode(ledPin, OUTPUT);
    
  digitalWrite(ledPin, LOW);
  Particle.variable("rain", &sensorValue, INT);


}

void loop()
{
  // Use analogRead to read the photo cell reading
  // This gives us a value from 0 to 4095
  fsrReading = analogRead(fsrPin);
   if (fsrReading > 1500)
  {
     digitalWrite( ledPin, HIGH );
     delay(500);
     digitalWrite( ledPin, LOW );
     delay(500);
     playNotes1();
  }
  
    //int sensorValue = analogRead(rainPin);
  sensorValue = analogRead(rainPin);
  if(sensorValue < 2500){
        digitalWrite(ledPin, HIGH);
        playNotes2();
    }else{
        digitalWrite(ledPin, LOW);
   }


  // Map this value into the PWM range (0-255)
  // and store as the led brightness
  ledBrightness = map(fsrReading, 0, 4095, 0, 255);

  // fade the LED to the desired brightness
  analogWrite(ledPin, ledBrightness);

  // wait 1/10th of a second and then loop
  delay(100);
}

void playNotes1()
{
    // iterate over the notes of the melody:
    for (int thisNote = 0; thisNote < 8; thisNote++) {

      // to calculate the note duration, take one second
      // divided by the note type.
      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
      int noteDuration = 1000/noteDurations[thisNote];
      tone(speakerPin, melody1[thisNote],noteDuration);

      // to distinguish the notes, set a minimum time between them.
      // the note's duration + 30% seems to work well:
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      // stop the tone playing:
      noTone(speakerPin);
    }
}

void playNotes2()
{
    // iterate over the notes of the melody:
    for (int thisNote = 0; thisNote < 8; thisNote++) {

      // to calculate the note duration, take one second
      // divided by the note type.
      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
      int noteDuration = 1000/noteDurations[thisNote];
      tone(speakerPin, melody2[thisNote],noteDuration);

      // to distinguish the notes, set a minimum time between them.
      // the note's duration + 30% seems to work well:
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      // stop the tone playing:
      noTone(speakerPin);
    }
}
Click to Expand
0
Plant Assistant
Harper Wang - https://youtu.be/MNyqOQxaM0c
0

Next Step

In the present solution, there are several parts can be optimized to make the appliance more convenient and human-centered. I have several plans to iterate my device:

1. Design an application to associate with the Plant Assistant to let the watering process become an ecosystem. Such as it can remind people to water manually, it also could connect with a tank to auto-water plant.

2. Modify the remind sound to make different signals more distinguish.

3. Design a smart flowerpot with the IoT system to make planting easier. Based on the solution to decrease the cost as low as possible.

0

Reflection

In my solution for monitoring the moisture of plant soil and the extra weight for the plant,  turning over for the flowerpot, I think the moisture sensor helps me to conquer the first part of my project - monitor plant water status and remind people.

In the second part, the FSR sensor is a way to remind people about the abnormal situation such as weight by something. But for the pet family, they also have many other scenarios need to be considered, such as the pet bite the plant. 

Thus, I should do more research about my target user, and find comprehensive opportunities for this problem before design a solution based on my former experience.

x
Share this Project

This project is only accessible by signed in users. Be considerate and think twice before sharing.


Courses

49713 Designing for the Internet of Things

· 16 members

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


About

This device can help young people to monitor the soil moisture of plants and remind people to water them through lights and sounds. It also can assist with pet families to monitor the situation that pets press the plant, then to remind the owner to treat the situation and help the plants grow better.

Created

November 7th, 2019