49713 Designing for the Internet of Things
· 16 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
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.
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.
Firstly, I defined my target problem and designed a solution for it. There are two parts of my device:
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.
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.
// 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
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.
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.
This project is only accessible by signed in users. Be considerate and think twice before sharing.
A hands-on introductory course exploring the Internet of Things and connected product experiences.
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.
November 7th, 2019