49713 Designing for the Internet of Things
· 18 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
Design an ambient display that would remind the user to keep drinking water throughout the day to stay hydrated without interrupting or causing any distractions.
In our busy lives and work, sometimes we overlook ourselves and routine care of ourselves take a back seat. We get to know of a problem in lifestyle only when it gets serious and we start seeing the symptoms. One of the basic needs of the body to stay healthy is to stay hydrated. An average human adult body required 2-3 litters of water per day to stay healthy, but getting caught up in our work we often unconsciously ignore the body’s signals of thirst. The hydration coaster is an ambient display that reminds its user to stay hydrated. Designed to be installed at the work desk, the coaster measures how much water the user has been drinking and periodically reminds them to drink more water by drawing their attention towards it.
The inspiration for this project from my roommate and my own personal experience. I have known that my water intake is lower than what it should be and I have tried a few mobile apps to remind me, but all they did was interrupt my work and spoil the experience. I got the insights from my roommate that he keeps a water bottle on his work desk in a position where he can always see it in his peripheral vision and one glance at it reminds him to drink more water. This gave me the idea of an ambient display that would be associated with a water cup or a water bottle and would remind the user to stay hydrated without interrupting their work.
The idea of the product is to have a coaster with an embedded weight sensor to measure the presence and weight of a cup or a water bottle, and surround by an array of LEDs that would project light around the coaster subtly drawing the attention of the user towards it.
The initial MVP of the display was setup using an FSR sensor to measure the presence and weight of the cup and 3 different colored LEDs to illuminate different stated of the system.
Yellow - Cup not on the coaster (Reminding to place the cup on the coaster)
Green - Cup on the coaster (Reminding to drink water after a fixed amount of time)
Blue - Cup empty (Reminding to fill up the cup and drink after a fixed amount of time)
The first version was a simple LED program that would light up LEDs of different color according to the force registered on the FSR sensor.
Next the logic of turning lights on and off was built to register placement and removal of filled or empty cup.
Next the logic of time was built in. For the purpose of demonstration, the delay was kept for 5 seconds, i.e, if the user has not had any water for 2 hours (5 seconds for demo), the coaster would glow green to remind the user to drink water.
Final logic of the program -
If the cup is not on the coaster for 10 minutes, glow yellow to remind user to place cup on coaster
If the cup is on the coaster untouched for two hours, glow blue or green (if empty or filled respectively) to remind the user to drink water.
int fsrPin = A0;
int fsrReading = 0;
int ledPinB = D2;
int ledPinG = D3;
int ledPinY = D4;
int b = 0;
int g = 0;
int y = 0;
void setup() {
pinMode(ledPinB, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinY, OUTPUT);
}
void loop() {
fsrReading = analogRead(fsrPin);
if(fsrReading < 100){ //This means the cup is not on the coaster
digitalWrite(ledPinB, LOW); //Turn off lights from other states of
digitalWrite(ledPinG, LOW); //the coaster
b = 0;
g = 0;
y++; //Timer setup to delay the reminder to user
if(y>20){
digitalWrite(ledPinY, HIGH); //Reminder to place cup on coaster
}
}
else if(100 < fsrReading && fsrReading < 2000){ //This means the cup is on the coaster but is empty
digitalWrite(ledPinY, LOW);
digitalWrite(ledPinG, LOW);
g = 0;
y = 0;
b++;
if (b>50){ //Timer to delay reminder to user
digitalWrite(ledPinB, HIGH); //Reminder to fill cup and drink water
}
}
else if(fsrReading > 2000){ //This means the cup is on the caster and filled
digitalWrite(ledPinY, LOW);
digitalWrite(ledPinB, LOW);
b = 0;
y = 0;
g++;
if (g>50){
digitalWrite(ledPinG, HIGH);
}
}
delay(100);
Particle.variable("force", &fsrReading, INT); //Sending the fsr reading to console to calibrate
//weight of the empty and filled cup
}
Click to Expand
The simple LEDs would be replaced by Neopixel Ring that would have the breathing effect when it is glowing and it would be enclosed in a casing taking the form of a coaster.
The FSR sensor would be replaced by a more accurate weight sensor to measure the intake of water in a day and adjust reminders accordingly. The data would also be used to give insights to the user about their hydration.
Additional sensors to measure humidity and temperature can be combined to give better recommendations to the user to suit their hydration needs.
The API from other fitness trackers would also refine recommendations and data from the coaster would be exported to other applications used by the user.
The form of the coaster would be very important to the product, it should not feel out of place when place on the desk among other things and the light should not be too bright to create a distraction and too dim to remain unnoticed. The cup being placed on the coaster would also be a factor during the design process.
The MVP was tested with my roommate who inspired the idea for the coaster and the response was very positive. He mentioned that he would use two of these, one for his desk at home, and another for his desk at work. He also mentioned that he would be willing to pay for the product if available in the market and would be a good gift for family.
A hands-on introductory course exploring the Internet of Things and connected product experiences.
Design an ambient display that would remind the user to keep drinking water throughout the day to stay hydrated without interrupting or causing any distractions.
January 31st, 2019