A Life Bar for Your Plant

Made by Wanqiao Wang

Found in DioT 2019: Internet of Plants · UNLISTED (SHOWN IN POOLS)

Do you have experience left your plant somewhere and forget it forever? Never again with this device!

0

Solution

People tend to take their plants to the yard for more sunlight in the daytime, but sometimes forget to take them back to the warm place at night, or people just put their plants in the garden in summer and left them there until winter. I have seen a lot of people who are passionate about having a plant at the beginning and seldom care about it after that. 

My design is to show the “life bar” of the plants to their owners. If they left the plants in the crucial environment (with improper temperature & humidity), the value of their life bar starts to blinking down. If the environment starts to get worse, the plants would send an email for help. With the life bar and help letter, the owner will no longer forget their plants and put them in danger. The design will remind them to always create a comfortable environment for your plants instead of forgetting them. 

0

Approach

Using a life bar to show the growth environment is quite fun to let the plant interact with its owner. And the growth information could be conveyed straight forward with the blinking lights and emails.

0

Process

Process of design:

In the design-wise, I thought about what people what to know about a growing plant at their home. I came up with a lot of parameters that the user could measure with sensors but end up questioning whether a person would like to put too much effort into monitoring a plant at home with a fancy device. So I finally decide to make it simple as only showing whether the environment is good or not for the plant by capturing the two key factors: temperature and humidity.

I also made it a little bit more interesting by presenting the growth condition in the form of a life bar, which is an intuitive way people use to show the life status in the video games. In this case, people could learn the status by a glance and search for deeper information on the devices if they want. However, it could be a little bit intrusive when the environment is getting worse for the plant, in case people left them somewhere in the house and forget them forever.

-1

Process of Coding:

It is the first try to generate the logic myself, so I experience a hard time to structure how the system works. I tried to not put myself in trouble with the code that is too complicated.

I tried to grade the growth condition in different methods or make the structure more adjustable for different types of plants, then finally come up with the most practical for me. The draft of code as below:

0

Implementation

For the final device, I assumed that for a specific plant, the optimum growth temperature for the plants is between 20-30 degrees centigrade and the proper growth humidity is from 30% to 60%. Then I defined 5 different status of growth conditions depending on the temperature and humidity - The further away the real condition is from the defined environment, the more likely the plant would be in trouble.

Based on this, there are three main interactions between the plant and the owner:

1  See the "life bar" & learn more on your phone

The “life bar” made up of 5 LEDs shows whether your plant is struggling in a certain environment. The worse the condition is, the fewer LEDs will remain, the quicker the LEDs will blink to draw your attention. You could see how the plant reacts toward the environment and replace your plant depends on the parameter you see on your phone.

(For it is not easy to show the temperature or humidity change naturally in a short period of time, I use a heater to accelerate the temperature increase for demonstration. In real situation temperature lower or higher than the standard temperature and humidity that are lower or higher than the standard one could all trigger the same function.)

0
A Life Bar for Your Plant
王婉乔 - https://youtu.be/NK08azJyFls
0

2 Help your plant out when you receive an email from it

If things get really bad - The growth condition status is lower than level 3, the device will send an email to you to show you about the improper temperature or humidity so that you would not forget your plant and put it in danger.

0
A Life Bar for Your Plant - Email
王婉乔 - https://youtu.be/NvPWONVtBoM
0

3 Silent Mode

If you do not want to be disturbed by the plant, you can just switch off the system. The blinking of the 5 LEDs means you are now disconnected from your plant, and it misses you so much.

0
A Life Bar for Your Plant - Silent Mode Demo
王婉乔 - https://youtu.be/OU6zmybgBXY
0

Components included as below:

LED1

Red (633nm) LED

LED2

Red (633nm) LED

LED3

Red (633nm) LED

LED4

Red (633nm) LED

LED5

Red (633nm) LED

R1

1kΩ Resistor

R2

1kΩ Resistor

R3

1kΩ Resistor

R4

1kΩ Resistor

R5

1kΩ Resistor

RHT1

Humidity and Temperature Sensor RHT03

S1

Toggle Switch

The functions work based on the code and circuit below:

0
// This #include statement was automatically added by the Particle IDE.
#include <Adafruit_DHT.h>

// This #include statement was automatically added by the Particle IDE.
#include <Adafruit_DHT.h>

#define DHTPIN D7    // what pin we are connected to
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

double temperature = 0;
double humidity = 0; 

int led_pin[] = {D2,D3,D4,D5,D6};

int T_set[] = {13, 15, 18, 20, 30, 35, 40, 45};
int H_set[] = {10, 20, 25, 30, 60, 70, 80, 90};
int switchPin = D8;
int status = -1;

void setup() {
    // Set up the LED for output
	for(int i = 0; i < 5; i++)
    	pinMode(led_pin[i], OUTPUT);

    dht.begin();
    Particle.variable("temperature", &temperature, DOUBLE); // api variables
    Particle.variable("humidity", &humidity, DOUBLE);
    Particle.variable("status", status);
     pinMode( switchPin , INPUT_PULLUP); // sets pin as input
}

void loop() {
    
    int buttonState = digitalRead( switchPin );
    
if( buttonState == LOW ){
    
    // Reading temperature or humidlity takes about 250 millisecond
    // Sensor variable also may be 2 second old 
    humidity = dht.getHumidity();
    temperature = dht.getTempCelcius();
    
    if(humidity < H_set[0] || temperature < T_set[0] || humidity > H_set[7] || temperature > T_set[7]) {
        digitalWrite(led_pin[0], LOW);
        digitalWrite(led_pin[1], LOW);
        digitalWrite(led_pin[2], LOW);
        digitalWrite(led_pin[3], LOW);
        digitalWrite(led_pin[4], LOW);
        
        status = 1;
        
        for(int i = 0; i < 15; i++) {
            digitalWrite(led_pin[0], HIGH);
		    delay(100);
		
            digitalWrite(led_pin[0], LOW);
		    delay(100);
        }
	}else if(humidity < H_set[1] || temperature < T_set[1] || humidity > H_set[6] || temperature > T_set[6]) {
        digitalWrite(led_pin[0], LOW);
        digitalWrite(led_pin[1], LOW);
        digitalWrite(led_pin[2], LOW);
        digitalWrite(led_pin[3], LOW);
        digitalWrite(led_pin[4], LOW);
        
        status = 2;
        
        for(int i = 0; i < 15; i++) {
            digitalWrite(led_pin[0], HIGH);
            digitalWrite(led_pin[1], HIGH);
    		delay(300);
    		
            digitalWrite(led_pin[0], LOW);
            digitalWrite(led_pin[1], LOW);
    		delay(300);
        }
    }else if(humidity < H_set[2] || temperature < T_set[2] || humidity > H_set[5] || temperature > T_set[5]) {
        digitalWrite(led_pin[0], LOW);
        digitalWrite(led_pin[1], LOW);
        digitalWrite(led_pin[2], LOW);
        digitalWrite(led_pin[3], LOW);
        digitalWrite(led_pin[4], LOW);
        
        status = 3;
        
        for(int i = 0; i < 15; i++) {
            digitalWrite(led_pin[0], HIGH);
            digitalWrite(led_pin[1], HIGH);
            digitalWrite(led_pin[2], HIGH);
    		delay(500);
    		
            digitalWrite(led_pin[0], LOW);
            digitalWrite(led_pin[1], LOW);
            digitalWrite(led_pin[2], LOW);
    		delay(500);
        }
    }else if(humidity < H_set[3] || temperature < T_set[3] || humidity > H_set[4] || temperature > T_set[4]) {
        digitalWrite(led_pin[0], LOW);
        digitalWrite(led_pin[1], LOW);
        digitalWrite(led_pin[2], LOW);
        digitalWrite(led_pin[3], LOW);
        digitalWrite(led_pin[4], LOW);
        
        digitalWrite(led_pin[0], HIGH);
        digitalWrite(led_pin[1], HIGH);
        digitalWrite(led_pin[2], HIGH);
        digitalWrite(led_pin[3], HIGH);
        digitalWrite(led_pin[4], LOW);
        
        status = 4;
        
    }else {
        digitalWrite(led_pin[0], LOW);
        digitalWrite(led_pin[1], LOW);
        digitalWrite(led_pin[2], LOW);
        digitalWrite(led_pin[3], LOW);
        digitalWrite(led_pin[4], LOW);
        
        digitalWrite(led_pin[0], HIGH);
        digitalWrite(led_pin[1], HIGH);
        digitalWrite(led_pin[2], HIGH);
        digitalWrite(led_pin[3], HIGH);
        digitalWrite(led_pin[4], HIGH);
        
        status = 5;
        
    }
}else{
    for(int i = 0; i < 3; i++) {
            digitalWrite(led_pin[0], HIGH);
            digitalWrite(led_pin[1], HIGH);
            digitalWrite(led_pin[2], HIGH);
            digitalWrite(led_pin[3], HIGH);
            digitalWrite(led_pin[4], HIGH);
    		delay(500);
    		
            digitalWrite(led_pin[0], LOW);
            digitalWrite(led_pin[1], LOW);
            digitalWrite(led_pin[2], LOW);
            digitalWrite(led_pin[3], LOW);
            digitalWrite(led_pin[4], LOW);
    		delay(500);
    		
        status = 0;
        
    }
}
}
Click to Expand
0

Next Steps

Depending on the components available, the only two factors considered this time are temperature and humidity. There are more variables related to the growth condition of a plant including soil moisture, concentrations of carbon dioxide, etc. The next step could be taking more factors into consideration to evaluate the growth condition.

0

Reflection

A good idea or solution should always go before what function you want to realize.

This project is a good try to combine the entry-level IoT skill with design thinking. However, I still feel constrained by the coding skill and the sensors I familiar with. Hope I could be more comfortable with the components so that I could prioritize the experience and cool concepts - looking forward to my next try.

x
Share this Project

This project is only listed in this pool. 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.


Focused on
About

Do you have experience left your plant somewhere and forget it forever? Never again with this device!

Created

November 6th, 2019