49713 Designing for the Internet of Things
· 25 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
The atmosphere lights on the ceiling help to relieve the anxiety of kids and create a comforting atmosphere to help kids fall asleep.
Ambient Light is one important component of the SleepStars IoT system which provides a calming and fairy-tale-like ambient environment for the kids to peacefully fall asleep. According to scientific studies, around 20 percent of child aged 5-6 are afraid of the dark [1]. No wonder products such as fluorescence stickers and fluorescence patterns embedded wallpapers are desired by a lot of children in their bedrooms. Children who are afraid of dark either need someone else's accompany to help them fall asleep or suffer from fear every night. We want to develop a solution for both kids and their parents that encourages kids to improve their falling asleep experience and form a habit of going to bed around a certain time every day.
We started our ideation by looking for inspirations from nature: what are glowing objects in nature that are desirable and calming? Moon, cloud and stars at night, beautiful aquatic animals such as jellyfish, reflection of water waves... We also considered artifacts in various forms that successfully contribute to calming mood using light. As how to realize those effects, we have considered multiple combinations of different LED lighting components and covering/attaching materials including nonwoven cloth, gauze, and cotton. Finally, we decided to use LED stripes and cotton to make a star cloud since we feel that a more representational form will be better perceived than an abstract form for toddlers.
In the making process, we used 3 empty beverage bottles to form the base of the cloud shape, connected two LED strips and wrap them around the bottles, then used hot glue gun to attach cotton to bottles and hide the LEDs inside. The LEDs on the stripe is programmed to be divided into 4 sets that take turns to gradually light up and turn dark, which creates a nice breathing effect.
#include "neopixel.h"
#include <math.h>
// IMPORTANT: Set pixel COUNT, PIN and TYPE
#define PIXEL_PIN D0
#define PIXEL_COUNT 50
#define PIXEL_TYPE WS2812
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
int shouldRun = 0
void setup()
{
Particle.subscribe("sleepstar/2p", myHandler);
strip.begin();
strip.show();
}
void loop()
{
if(shouldRun == 1) {
breathe1(50);
breathe2(50);
breathe3(50);
breathe4(50);
} else if (shouldRun == 0){
breathe5(50);
}
}
void myHandler(const char *event, const char *data)
{
String dataStr = String(data);
if( dataStr.equals( "run" )) {
shouldRun = 1;
}else if ( dataStr.equals( "stop" )){
shouldRun = 0;
}
}
float breathe1(uint8_t wait){
float val = (exp(sin(millis()/2000.0*M_PI+1)) - 0.36787944)*20.0 ; //108.0
uint16_t i;
uint32_t c = strip.Color(val, val, val);
int array[] = {14,41,24,49,22,10};
int a;
for(a=0; a<6; a++) {
i = array[a];
strip.setPixelColor(i, c );
}
strip.show();
delay (wait);
}
float breathe2(uint8_t wait){
float val = (exp(sin(millis()/10000.0*M_PI)) - 0.36787944)*10.0 ; //108.0
uint16_t i;
uint32_t c = strip.Color(val, val, val);
int array[] = {31,0,46,4,38,6,44,39,18,32,35,33,48,47,20};
int a;
for(a=0; a<15; a++) {
i = array[a];
strip.setPixelColor(i, c );
}
strip.show();
delay (wait);
}
float breathe3(uint8_t wait){
float val = (exp(sin(millis()/2000.0*M_PI+3)) - 0.36787944)*20.0 ; //108.0
uint16_t i;
uint32_t c = strip.Color(val, val, val);
int array[] = {36,45,2,43,28,37};
int a;
for(a=0; a<6; a++) {
i = array[a];
strip.setPixelColor(i, c );
}
strip.show();
delay (wait);
}
float breathe4(uint8_t wait){
float val = (exp(sin(millis()/20000.0*M_PI+1.2)) - 0.36787944)*20.0 ; //108.0
uint16_t i;
uint32_t c = strip.Color(val, val, val);
int array[] = {12,40,16,8,30,34,26,42};
int a;
for(a=0; a<8; a++) {
i = array[a];
strip.setPixelColor(i, c );
}
strip.show();
delay (wait);
}
float breathe5(uint8_t wait){
uint16_t i;
uint32_t c = strip.Color(0, 0, 0);
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, c );
}
strip.show();
delay (wait);
}
Click to Expand
Through this project, we have practiced working in small teams as well as part of a larger group on a project following a very tight schedule. the challenge is to align our goals for the whole group, delegate tasks efficiently and communicate effectively across small teams. There were minor miscommunications during the process but we managed to move on and deliver a satisfying result in the end.
Some critics we have received during the demo day are thought-provoking. One of the concerns is our IoT system might contribute to alienating kids from their parents. While the intention behind a tech product could be good, we should always consider what side effects it might bring and be careful with that. For the next step, we are considering adding a feature to the system to create to a scenario that the parent-child relationship could be strengthened during their time spending together with our product.
[1] J Derevensky, What Children Fear - McGill Journal of Education pp80
[2] https://docs.google.com/document/d/1EnCJOUJYr5U23B6_e2dSaEQmE-YMSDe7gNlyfH_DSw4/edit
A hands-on introductory course exploring the Internet of Things and connected product experiences.
The atmosphere lights on the ceiling help to relieve the anxiety of kids and create a comforting atmosphere to help kids fall asleep.
March 2nd, 2018