Enchanted Pot
Made by svitoora
Made by svitoora
Owning a plant is a great reminder to take care of yourself, but sometimes life gets too busy and we neglect our responsibilities. Enchanted Pot helps remind you to take care.
Created: February 2nd, 2017
Plants are physical reminders of our responsibility to take care of things, relationships, and ourselves. Unfortunately, sometimes life gets too busy and we neglect to care for our plants. A wither up and dead plant communicates to others our incapability to take care of our plants and thereby ourselves. In order to prevent plants from dying, Enchanted Pot serves as a gentle reminder to care for our plants and ourselves.
As a reaction against IoT purely becoming a method to increase our lives' efficiency, I argue that efficiency without certain responsibilitie is undesirable. An important part of being human is caring for others; be it things, human beings, or plants. Without care, we are no different machines, and therefore making a plant pot that removes the caring element from us is desirable. Instead of making a self-water IoT device attached to a water pump, I seek to animate the plant and re-emphasis the human-plant relationship. Currently your plant will text you when it needs more water, and fades back into background when its happy.
Most current indoor plant growing product seeks to make efficient the process of growing plants by reducing human intervention. This means that humans no longer are required to directly water the plants (Aerogarden, Click and Grow, etc).
Please check out:
https://medium.com/@supawatvitoorapakorn/iot-enchanted-pot-8faf3a1bff6c#.onrfa34bv
//Global--------------------------------------------------------------––––––––––––––––––––––––––––––––––––––––––––––––
//PIN SETUP
//Moisture Read
int sensorPin = A0;
int Moisture_Feed = D0;
//Temperature
int Temp_Read = A2;
int Temp_Feed = D2;
//Light_Value = A1
int PR_Read = A1;
int PR_Feed = D1;
//LEDs
int Blue_LED = D6;
int Green_LED = D5;
//Timer
void print_every_second()
{
static int count = 0;
Serial.println(count++);
}
Timer timer(1000, print_every_second);
//SETUP--------------------------------------------------------------––––––––––––––––––––––––––––––––––––––––––––––––
void setup(){
//Creating feed for PR
//Moisture Feed
pinMode(Moisture_Feed, OUTPUT);
//Temperature Feed
pinMode(Temp_Feed, OUTPUT);
//Temperature Feed
pinMode(Temp_Feed, OUTPUT);
//LED Feed
pinMode(Blue_LED, OUTPUT);
pinMode(Green_LED, OUTPUT);
//Light
//3.3V
//Setting up Monitor
Serial.begin(9600); // set up serial port for 9600 baud (speed)
delay(500); // wait for display to boot up
}
//LOOP--------------------------------------------------------------––––––––––––––––––––––––––––––––––––––––––––––––
void loop(){
//Mositure FEED
digitalWrite(Moisture_Feed, HIGH);
//Sesnor Readins
//Moisture
int Moisture_Value;
Moisture_Value = analogRead(sensorPin);
if (Moisture_Value < 2500) {
digitalWrite(Blue_LED, HIGH);}
if (Moisture_Value > 2500) {
digitalWrite(Blue_LED, LOW);}
//Light
int Light_Value;
Light_Value = analogRead(PR_Read);
if (Light_Value < 300) {
digitalWrite(Green_LED, HIGH);}
if (Light_Value > 400) {
digitalWrite(Green_LED, LOW);}
//Temperature
int Temp_Value;
Temp_Value = analogRead(Temp_Read);
//Converts to Signal to Voltage
//sensorValue = ((analogRead(D1)/40));
//sensorValue = sensorValue/100;
//sensorValue = sensorValue*3.3;
//Publish Moisture
//Took between if function from:
//http://forum.arduino.cc/index.php?topic=327601.0
if (0 <= Moisture_Value && Moisture_Value <= 2500){ // between
Spark.publish("Moisture", String("Ready to be water.") + "");
//Timer Non-nagginess
timer.start();
};
delay(500);
if (2501 <= Moisture_Value && Moisture_Value <= 3500){ // between
Spark.publish("Moisture", String("Still moist.") + "");
timer.reset();
};
delay(500);
if (3501 <= Moisture_Value && Moisture_Value <= 5000){ // between
Spark.publish("Moisture", String("Wet.") + "");
timer.reset();
};
delay(500);
//Spark.publish("Moisture", String(Moisture_Value) + " fq");
//Publish Light
if (0 <= Light_Value && Light_Value <= 200){ // between
Spark.publish("Light", String("Too dark.") + "");
};
delay(500);
if (251 <= Light_Value && Light_Value <= 380){ // between
Spark.publish("Light", String("Dim.") + "");
};
delay(500);
if (381 <= Light_Value && Light_Value <= 600){ // between
Spark.publish("Light", String("Well Lit.") + "");
};
delay(500);
if (601 <= Light_Value && Light_Value <= 1000){ // between
Spark.publish("Light", String("Bright") + "");
};
delay(500);
//SERIAL DEBUG--------------------------------------------------------------––––––––––––––––––––––––––––––––––––––––––––––––
//Debugging Serial
//Moisture:
//Serial.print("Moisture:");
//Serial.println(Moisture_Value);
//Light
//Serial.print("Light:");
//Serial.println(Light_Value);
//Temperature:
//Serial.print("Temparature:");
//Serial.println(Temp_Value);
delay(500);
}
//--------------------------------------------------------------––––––––––––––––––––––––––––––––––––––––––––––––
Click to Expand
Enchanted Pot makes your plants text you when it needs water. A Photon Particle board is used in collaboration with IFTT to make the plant text used. An ambient light sensor is used to detect brightness, and two prongs of wires are used to convert the ground into variable resistor thereby a moisture sensor.
Within this project, I learnt how to connect my Particle Board to IFTT and brushed up on rusty coding skills. This project also demonstrates to me that I lack the fundamental of computer science. My goal between now and the next project is to learn how to utilize a boolean in collaboration with an if function to fix my plant from texting me every 30 seconds when it needs water. In terms of packaging, I hope that if I had more time I want my packaging to blend into one with the vessel.
Owning a plant is a great reminder to take care of yourself, but sometimes life gets too busy and we neglect our responsibilities. Enchanted Pot helps remind you to take care.