Plant with a heart

Made by Shreyas Sridar

Found in DioT 2019: Internet of Plants

Generally we associate life with heartbeat. But with plants, we do not know whether they are alive unless they fall. I aim to create a plant which has an emotional connection with the user through the perception of life displayed as a beating heart.

0

Background

When we see an animal, we discern that it is living by the movement of its lungs as it is breathing. This innate movement is always intuitive to suggest that something has life. The rate at which this movement occurs is also indicative of the state of the living thing. 

Considering the case of a plant which one can grow in a pot. You water the plant hoping that it will grow but you do not know whether it is alive or dead. 

Wouldn't it be great if you could see the plant having a heartbeat that tells how healthy it is?

That's why I set out to make a plant with a heart! 

I wanted to enchant the plant with glanceability (to know how healthy it is) and loveability (by giving it life through moving parts)


Ideation

The idea was conceptualized as heartbeat showing the different levels of moisture of the soil in the plant pot as a measure of it's health. The concept conveyed information about the health of the plant by 2 ways

1. Movement of a membrane: The rate at which the membrane moves indicates the health which in turn is the water content in the soil. Too much water will cause the membrane to move fast whereas too low water content in soil will cause the movement to be slow. A gentle movement indicates that the plant is healthy and no movement indicates that the plant is dead

2. LED light: A LED will glow in different colors indicating the health of the plant. Red color for too low water, blue color for too much water and green for sufficient water content in the soil. The LED turns off when the plant is dead.


The Process

With the challenge of creating a plant's heartbeat, I brainstormed for the ways and materials for displaying the movement discussed earlier. I finally decided to go ahead with making a foam core box model with a flexible membrane using surgical gloves to make a heart box. I validated the movement of the flexible membrane by using a servo motor. 

0
Proof of Concept
Shreyas Sridar - https://youtu.be/GO2XDRYrtkw
0

 After having satisfactory results, I went ahead to incorporate a RGB LED, the other element of the system. With a simple code to represent the three modes as discussed above, I built the foam core model and tested it.

0
Prototype Testing 2
Shreyas Sridar - https://youtu.be/08A5qoRW3jY
0

Room For Improvement

From the prototype above, following observations were made 

  • The LED was not bright and clearly visible through the membrane material.
  • The membrane movement was not easily noticeable.
  • The soil moisture reading was not displayed on console or made available online.

These improvement opportunities were worked on and implemented on the final prototype.


Final Prototype

The aesthetics of the prototype was improved for better visibility of the membrane movement and the LED light. Also, a touch button was incorporated which will send the real-time moisture value  reading on to an online spreadsheet.

Link of the spreadsheet:

https://docs.google.com/spreadsheets/d/1WE28CpKEqx0S5XC9YLMaoOgCNGyP_xg7DRrJ2KJfVK0/edit?usp=sharing

Process Flow:


 

 The circuit was made as per the circuit diagram below.


List of Components:

AmountPart TypeProperties
1Particle Argonvariant variant 3
1Basic Servo
1Basic Force Sensing Resistor (FSR)package THT; sensing area diameter .5 "
1RGB LED (com. anode, rbg)package 5 mm [THT]; pin order rbg; polarity common anode; rgb RGB
4220 Ω Resistorpackage THT; tolerance ±5%; bands 4; resistance 220Ω; pin spacing 400 mil
110k Ω Resistorpackage THT; tolerance ±5%; bands 4; resistance 10kΩ; pin spacing 400 mil


  Source code for the program:  

0
int redPin = D2;    // RED pin of the LED to PWM pin **d2**
int greenPin = D3;  // GREEN pin of the LED to PWM pin **d3**
int bluePin = D4;   // BLUE pin of the LED to PWM pin **D4**
int fsrPin=A2; //Fsr pin initialization
int fsrReading=0; //variable for reading fsr sensor
int moistPin=A1;//initializing moisture sensor pin
int moistVal=0;//variable for reading moist sensor
int moistMax=1500;//variable for reading maximum moisture in the soil
int moistMin=800;//variable for reading minimum moisture in the soil
int redValue=255; // Brightness of red LED
int greenValue=255; // Brightness of green LED
int blueValue=255; // Brightness of blue LED
Servo heartbeat;//define the servo motor
int moisture=0;//Moisture value to be logged in the google sheets
void setup() {
    Particle.variable( "SoilReading", moistVal );//Display actual soil moisture sensor reading
    Particle.variable( "Moisture", moisture );//Display the moisture value mapped from the actual sensor reading
    Particle.variable( "Button", fsrReading );//Display the FSR button reading
	heartbeat.attach( D5 );
	 pinMode( redPin, OUTPUT ); //pin mode initialization for red pin
    pinMode( greenPin, OUTPUT ); //pin mode initialization for green pin	
    pinMode( bluePin, OUTPUT );	//pin mode initialization for blue pin
    analogWrite(redPin, 255);//Initializing red pin to off state
    analogWrite(greenPin, 255);//Initializing green pin to off state
    analogWrite(bluePin, 255);//Initializing blue pin to off state*/
    Particle.function("MaxMoistLevel", setmoistMax);//Get user input for moistMax variable from console
    Particle.function("MinMoistLevel", setmoistMin);//Get user input for moistMin variable from console
}
int setmoistMax( String command )
{
    // get the maximum moisture level from console
    moistMax= command.toInt();
  
   return 1;
}
int setmoistMin( String command )
{
    // get the maximum moisture level from console
    moistMin= command.toInt();
  
   return 1;
}
void setRGBLED(int red,int green,int blue) //function for setting the RGB LED color
{
    analogWrite(redPin, red);  //output the red led 
     analogWrite(greenPin, green);//output the green led 
     analogWrite(bluePin,blue);//output the blue led 
}
void loop() {
    fsrReading= analogRead(fsrPin);
     moistVal = analogRead(moistPin);
     moisture=map(moistVal,0,4095,0,100);
    if(moistVal<=moistMax&&moistVal>=moistMin)//check if moisture is in the optimum range
     {
        setRGBLED(255,0,255);//set green color
	    heartbeat.write(180);
	    delay(300);
	    heartbeat.write(145);
	    delay(300);
     }
     if(moistVal>moistMax)//check if the moisture is very high
     {
	    setRGBLED(0,255,255);//set red color
	    heartbeat.write(180);
	    delay(120);
	    heartbeat.write(155);
	    delay(120);
     }
     if(moistVal<moistMin && moistVal>30)//check if the moisture is very low
     {
	    setRGBLED(255,255,0);//set blue color
	    heartbeat.write(180);
	    delay(1000);
	    heartbeat.write(145);
	    delay(1000);
     }
     if(moistVal<=30)//check if no moisture i.e., the plant is dead
     {
         setRGBLED(255,255,255);//switch off the LED
         delay(10000);
     }
     if(fsrReading>3000)//check if fsr is pressed
     log_to_spreadsheet();//log the moisture value in the spreadsheet
}
int last_published = -1;

void log_to_spreadsheet(  )
{

  // check if 1 minute has elapsed
	if( last_published + 60000 < millis() ){
		Particle.publish("Moisture_Value",String(moisture));//publish the moisture value
		last_published = millis();
	}

}
Click to Expand
0

Final Prototype Pictures and Videos:

0
Final Prototype Working
Shreyas Sridar - https://youtu.be/tROAqzY784s
0

Future Scope

Improper and irregular watering is the primary reason that causes the death of the plant. Wouldn't it be nice if the plant can talk to you and ask you for water when it needs them?

With integration of a water pump which will water the plant, the user can be enabled to take care of the plant even when they are not around it. This will create a more personal bond between the user and the plant.


Takeaways from this project

  • Making an object enchanted does not always involve giving it a superpower. Sometimes making inanimate objects to emote can make a big impact as it enables an emotional connection with the human.
  • Think simple and include functionality that add value to the experience of using the enchanted object. 
  • Always look for simple and instinctive ways of communication between the enchanted object and humans as the users can relate the object as another living entity which makes them powerful and indispensable.
  • Prototype with different form, function and materials to achieve your goal. 
  • Skills learned: working with sensors like FSR and soil moisture sensors, output components like servo motors and RGB LEDs, sharing sensor information on the internet through the Cloud API and allowing control of variables via the internet .


Resources

x
Share this Project

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

Generally we associate life with heartbeat. But with plants, we do not know whether they are alive unless they fall. I aim to create a plant which has an emotional connection with the user through the perception of life displayed as a beating heart.

Created

November 6th, 2019