49713 Designing for the Internet of Things
· 16 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
BUNDLE ME is a device that helps to detect temperature around indoor plants to keep the plant healthy. BUNDLE ME notify plants owners with various alarms (LED Light, Sounds, and text notification) systems by detecting temperature around plant. The goal is to measure the current temperature and LED to give a visual warning if the temperature crosses a predefined threshold.
Most plants grown indoors are native to tropical or sub-tropical countries where temperature conditions are considerably and consistently warmer than what most of outdoor plants reside.
They grow at their best when temperature is between 60-75 °F. Some plants need less, and other’s need more, but plants grow well in this range in general. When temperature goes up, typically the plants need more moisture to accommodate the heat. Plants survive if adequate amount water is provided to their environment in hot weather. However, plants are endangered when temperature goes under 60 °F because the cold temperature damage plants significantly and even causes death.
A temperature detect system for indoor plants is necessary in order to protect them from harsh and long winter in Pittsburgh.
BUNDLE ME, a plant temperature detector, communicates with plant owners by delivering light and sounds signals, and send messages based on the different temperature conditions in the environment. It is an enchant product that does not bother owners in a good condition, which means that temperature is between 60-75 °F. It only notifies plants owner when they need attention and affection.
Here are the temperature variations;
· Any point below 49 °F: Red LED light is on, sounds is on, IFTTT app begins to work
· 50-59 °F: Red LED light is on
· 60-75 °F: No light and sounds
· Above 76 °F: Green light is on
My mom has her own green room in her house. Every morning, she communicated with her flowers and pants. She waters, nourishes, and loves them. When weather gets hot, she opens entire greenroom window in order to let outdoor air flow through the green house, changes soil to increase nutrient resource, and cover them with blanket or paper cloths during the winter. Typically, she spends a good amount of time in late fall to be prepared for coming winter. Before weather gets cold and winter hits Korea peninsula, she adds insulations along with the green house walls, checks heater and thermometer. Thanks to her hard work, I was able to enjoy all kinds of seasonal blossoms and colorful leaves until I left my parent’s house.
I designed BUNDLE ME to provide a similar condition to my baby schefflera. I wish I am as capable as my mom to provide a good condition to my only one plant at home, but my busy work and study schedule become obstacles to give adequate love and attention to my only one plant. I wanted to build the system that is reliable enchanting, and ambient.
1. Defined needs: Temperature is one of the most important environmental signals for plants. High and low temperatures have a variety of effects that affect plant growth and development profoundly. Further, temperature is an indication of seasonal change. Plants must survive under severe conditions in winter and prepare to resume growth and reach their reproductive stage in the following spring.
2. Enchant: My major goal for this project was not to bother end users. The product should sit quietly when they do not need attention but send adequate alarms when they really have to or need to. The ambient temperature detector adapts the indoor temperature changes quietly and report.
3. Ambient: The device should change the behavior of owners to take care of plants with affection. The UI, especially message, experience should be naturally encouraging users to do their job instead of bothering or interrupting users’ daily tasks.
4. Low power consumption: Simple method applies here. If I forget to move the plant to bundle up or increase or decrease room temperature, probably, I will forget to change the battery. I removed all unnecessary sensor and build
5. Since I am new to coding and IoT world, the coding and circuitry should be easy to develop, deploy and monitor.
Once I determined the overall idea of my goal to achieve with my first IoT project, I drew a rough sequence order to execute the project.
· Outline the code with a diagram
· Lean how to use a temperature sensor
· Use my basic knowledge and skills that I learned in the class and ask questions if I do not know certain coding
· Master temperature coding
· Start to draw sketch on
· Wire in LEDs and temperature sensor
· Connect the BUNDLE ME to home WiFi network
· Do test run to check LED and sound detector works properly.
I found that there are many ways to improve this project. I tried to connect this project to IFTTT, but I realized that I need more time to fully master that skill set. Once I become more comfortable, I will add those function to BUNDLE ME. I would include a water sensor and photosensor to build entire eco system for indoor plants. I also want to build a 3D printed house to store all components to achieve sleek aesthetic. I would add different melody for different temperature
variable. For example, play the movie Frozen
theme song (Let it go) for cold temperature and Moana them song (How far I will go) for hot weather. These familiar melodies would make user feel comfortable with minor irritations.
First of all, I have to admit that I was intimidated by the amount of work that I have to do for this class. I have never work with IoT device and coding in my life, so I've been facing a big yet long learning curve to master those new skills.
I am still learning and catching up with class materials to keep up with, but this project helped me to think about interpreting conceptual idea to tangible product without a doubt.
I am sure that I would enjoy more as I create different project throughout the course.
1. Indoor plant temperature: https://extension.uga.edu/publications/detail.html?number=B1318&title=Growing%20Indoor%20Plants%20with%20Success
2. Inspiration 1: https://blog.particle.io/2019/05/06/learn-how-to-build-in-plants-a-mesh-connected-soil-monitoring-system/
3. Inspiration 2: https://particle.hackster.io/gusgonnet/pool-temperature-monitor-5331f2
4. IFTTT tutorial: https://diotlabs.daraghbyrne.me/docs/ifttt
// Define a pin that we'll place the FSR on
// Remember to add a 10K Ohm pull-down resistor too.
int ledRedPin = D5;
// Create a variable to store the LED brightness
int ledRedBrightness = 0;
// Define a pin we'll place an LED on
int ledGreenPin = D2;
// Create a variable to store the LED brightness.
int ledGreenBrightness = 0;
//Sound is Piezo Sensor
int speakerPin = D4;
//Define a pin that will place tempPin on
int tempPin = A4;
double tempReading =0;
double temperatureF =0;
// create an array for the notes in the melody:
//C4,G3,G3,A3,G3,0,B3,C4
int melody[] = {1908,2551,2551,2273,2551,0,2024,1908};
// create an array for the duration of notes.
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {4,8,8,4,4,4,4,4 };
void setup()
{
// Set up the LED and spearPin for output
pinMode(ledRedPin, OUTPUT);
pinMode(ledGreenPin, OUTPUT);
pinMode(speakerPin, OUTPUT);
pinMode(tempPin, INPUT);
// Create a cloud variable of type integer
// called 'light' mapped to photoCellReading
Particle.variable("temperature", tempReading);
Particle.variable("tempF", temperatureF);
}
void loop() {
// Use analogRead to read from the sensor
// This gives us a value from 0 to 4095
int reading = analogRead(tempPin);
// The returned value from the device is going to be in the range from 0 to 4095
// Calculate the voltage from the sensor reading
double voltage = (reading * 3.3) / 4095.0;
// Calculate the temperature and update our static variable
tempReading = (voltage - 0.5) * 100;
temperatureF = ((tempReading * 9.0) / 5.0) + 32.0;
// Any point below 49 °F: Red LED light is on, sounds is on, IFTTT app begins to work
// 50-59 °F: Red LED light is on
// 60-75 °F: No light and sounds
// Above 76 °F: Green light is on
if( temperatureF < 49.0){
analogWrite(ledRedPin, 255 );
playNotes();
}else if( temperatureF < 70.0){
analogWrite(ledRedPin, 127);
}else{
analogWrite(ledRedPin, 0);
}
if( temperatureF > 76.0){
digitalWrite(ledGreenPin, HIGH);
}else{
digitalWrite(ledGreenPin, LOW);
}
// // Map this value into the PWM range (0-255)
// // and store as the led brightness
// ledRedBrightness = map(reading, 0, 4095, 0, 255);
// ledGreenBrightness = map(reading, 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 playNotes()
{
// 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, melody[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
A hands-on introductory course exploring the Internet of Things and connected product experiences.
BUNDLE ME is a device that helps to detect temperature around indoor plants to keep the plant healthy. BUNDLE ME notify plants owners with various alarms (LED Light, Sounds, and text notification) systems by detecting temperature around plant. The goal is to measure the current temperature and LED to give a visual warning if the temperature crosses a predefined threshold.
November 13th, 2019