Connected Bedrooms - A Solution for Long-distance Couples

Made by cyan2, Ipsita Mallick and ltrawick

Found in DIoT - Augmented Objects

Connected Bedrooms offers an experience for distant couples which enables them to feel a sense of togetherness even when they are miles away from their loved one.

0

Inspiration and Context

Our story begins with a team of three students. We went searching to find the answer to the question, what object do people cherish the most in their home? We found two insights - people love their bed and people miss their family when they are alone.  How could we enhance the peace that being in bed evokes? How could we bring our families into our lonely homes?

Our designer had a clear vision to elicit these feelings using subtle touches. She didn't want to overpower the person. That's when the right idea clicked - breathing. When we lie next to our spouse, we can feel their breathing. It's the subtle movements of their chest that tell us they're next to us. It's the warmth of their body. 

Our object would communicate the presence of another by simulating breathing. We would use heat, vibration, and soft light. We named our idea, "Rest Assured".

0

Outcome

We designed a pair of interconnected blankets that connect a couple living in different cities through a subtle augmentation of their bedrooms. "Rest Assured" lets people who are far apart, sleep well knowing their loved one is sharing the moment with them.

0
IOT Final Project - Connected Blankets - Carnegie Mellon 2019
Lee Trawick - https://youtu.be/pSLe72G9XGw
0

Discovery

Faizan is a 30-year-old MBA student studying in Pittsburgh, but his girlfriend is based in Chicago. We interviewed Faizan to discover the pain points he may have given his situation. In the interview process, Faizan was able to offer us a detailed context of his living space. His living space in Pittsburgh is somewhat gloomy and he misses the comfort of coming home to his loved one. Although he communicates with his girlfriend quite often, the absence of her presence makes Faizan feels isolated. He truly hopes his living space can be "augmented" in some way so that he feels connected to his girlfriend even when they are miles away from each other. Given Faizan's personal condition, we have designed an augmented blanket for his bedroom, where he spends most of his time, to establish a sense of connection between him and his girlfriend. As such, the device is aimed to create positive and comforting environment for Faizan at his home.

0

Intention

Our intent was to provide and explore the space of comfort, homeliness and connectivity to loved ones through the augmentation of the bed or bedroom ambiance that is an immersive experience.

Below is early concept sketches by our designer.

0

Prototyping Process

The initial prototype was a cardboard model of two rooms separate by a wall. The two rooms were Dallas and Pittsburgh. When you 'rested' you hand on one bed's pillow, the other bed would 'breathe' by breathing a LED strip and a servo motor in unison. 

All in all, we would complete 5 component tests and 5 hardware iterations of our idea. Not bad for a team of two.

The final prototype had a few new features built in, based on feedback from the first demo day.

See below for a visual journey map of the challenges and tests we completed on our way to a final prototype.  

0
Download the Prototyping Journey as a PDF
0

Iteration and Refinement

From the first demo day, the directional feedback that we received was that the servo motor moving the blanket was creepy. Several people mentioned the creepy aspect of it. Another person requested that we have a way to turn the blanket on and off.


We integrated the feedback by removing the servo. No more creepy vibe. We added another 'stage' to the experience. When you walk into your room, your blanket now senses you in the room and automatically 'warms' up to your preferred temperature. The second stage occurs when your partner, lays down in their bed. Your blanket will 'breathe' to indicate that they are 'with you'.
0

Final Prototype

Components: 

- 2 push-button switches

- 2 resistors

- 2 FSRs

- 3 Neopixels

- 2 Particle Argons

- 2 optional heating pads

The completed circuit was duplicated across two different Particles.

0
IOT Final Project - Connected Blankets - Carnegie Mellon 2019
Lee Trawick - https://youtu.be/pSLe72G9XGw
0
Breathing Blanket...Connected Beds_IoT Creative Project II
Ipsita Mallick - https://youtu.be/51Qk3MYHWns
0
//This code is duplicated across two particles

// This #include statement was automatically added by the Particle IDE.
#include <neopixel.h>

// This #include statement was automatically added by the Particle IDE.
#include <neopixel.h>

int fsrPin = A0;
int fsrReading = 0;
int toggle = 0;


#define PIXEL_PIN D2
#define PIXEL_COUNT 7
#define PIXEL_TYPE WS2812

#define PIXEL_PIN2 D4
#define PIXEL_COUNT2 7
#define PIXEL_TYPE2 WS2812

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Adafruit_NeoPixel strip2(PIXEL_COUNT2, PIXEL_PIN2, PIXEL_TYPE2);

//flag to keep track of fade direction up or down
bool breathe_up = true;
//has the blanked been warmed up yet?
bool blanketWarmed = false;
//is my spouse in their bed?
bool spouseInBed = false;
int i = 0;
int publish_time = millis();
int start_time = 0;
void publish_event();
int buttonPin = D7;
int heatingPin = D5;
void turn_heat_on();
void turn_heat_off();
void setSpouseInBed(const char *event, const char *data);
void unloadingSequence();
bool programON = true;

void setup()
{
    Particle.subscribe( "inbed3000",setSpouseInBed );  // From all devices!
    pinMode( heatingPin, OUTPUT);
    
    pinMode(fsrPin, INPUT_PULLUP);
    pinMode(buttonPin, INPUT_PULLUP);
    //pinMode(PIXEL_PIN, OUTPUT);
    Particle.variable("fsr", fsrReading);
    Particle.variable("spouseInBed",spouseInBed);
    Particle.variable("blanketWarmed",blanketWarmed);
    
    strip.begin();
    strip.show(); // Initialize all pixels to 'off'
    strip2.begin();
    strip2.show();
   
    //loadingSequence();
    //delay(1000);
    strip2.clear();
    strip2.show();
    strip.clear();
    strip.show();
}



void loop() {
fsrReading = analogRead(fsrPin);

    //if you step on the rug, warm the blanket 
    if (fsrReading>2000 and blanketWarmed == false) 
    { 
         loadingSequence();
         start_time = millis();
         blanketWarmed = true;
         turn_heat_on();
         programON = true;
    }
    //if you step on the rug after you've been in bed x hours, cool down the bed
    //turn off procedure if program has ran startup sequence and 10 seconds have passed
    else if (fsrReading >2000 and blanketWarmed and millis() - start_time > 10000)
    {
        blanketWarmed = false;
        unloadingSequence();
        programON = false;
    }
    
    //if I'm in bed, tell my spouse's bed
    if (digitalRead(buttonPin) == LOW and blanketWarmed == true and programON) 
    {
        publish_event();
    }
    else if (programON)
    {
        //if its been 5 seconds since the last published event
        if(millis() - publish_time > 15000)
        {
            spouseInBed = false;
        }
    }
    

    if (blanketWarmed == true and spouseInBed == false and programON )
    {
        //blue is the "ready" state
        for(int j=1; j<strip.numPixels(); j++) {
          strip.setPixelColor(j, strip.Color(0,0,255)); 
          strip.show();
          strip2.setPixelColor(j, strip.Color(0,0,255));
          strip2.show();
        }
        
        //reset the breathing sequence back to starting state
        //starting state should be at 255-blue and fading down
        i=255;
        breathe_up=false;
    }
    else if (blanketWarmed == true and spouseInBed == true and programON)
    {
        //breathe to indicate your spouse is in their bed
        breathAll();
    }
    
    delay(10);
}

//turn the heating pad on
void turn_heat_on()
{
     digitalWrite( heatingPin, HIGH ); 
}
void turn_heat_off()
{
     digitalWrite( heatingPin, LOW ); 
}

//have spam limits on the events
void publish_event()
{
    if(millis() - publish_time > 15000)
    {
        Particle.publish("inbed3000");
        Particle.publish("inbed1000");
        publish_time = millis();
    }
}

//set the spouseinbed flag
void setSpouseInBed(const char *event, const char *data)
{
    spouseInBed = true;
}

//simulate the warming up sequence
void loadingSequence()
{
        strip2.clear();
        strip2.show();
        strip.clear();
        strip.show();
        for(int j=1; j<strip.numPixels(); j++) {
          strip.setPixelColor(j, strip.Color(255,0,0)); 
          strip.show();
          strip2.setPixelColor(j, strip.Color(255,0,0)); 
          strip2.show();
          delay(500);
        }
}

//simulate the warming down sequence
void unloadingSequence()
{
        for(int j=1; j<strip.numPixels(); j++) {
          strip.setPixelColor(j, strip.Color(0,0,0)); 
          strip.show();
          strip2.setPixelColor(j, strip.Color(0,0,0)); 
          strip2.show();
          delay(500);
        }
}

//breathe the LEDs
void breathAll() {
    if (breathe_up)
    {
        i = i + 1;
         for(int j=1; j<strip.numPixels(); j++) {
          strip.setPixelColor(j, strip.Color(0,0,i)); 
          strip2.setPixelColor(j, strip.Color(0,0,i)); 
        }
        strip.show();
        strip2.show();
        if(i>=255)
        {
            breathe_up = false;
        }
        
    }
    else
    {
        i = i - 1;
         for(int j=1; j<strip.numPixels(); j++) {
          strip.setPixelColor(j, strip.Color(0,0,i)); 
          strip2.setPixelColor(j, strip.Color(0,0,i)); 
        }
        strip2.show();
        strip.show();      

        if(i<=0)
        {
            breathe_up = true;
        }
        
    }
    
}
Click to Expand
0

Next Steps

To take this project further there could be some subtle elements that we could add which enhance the experience of connectedness such as:

- active and passive interactions

- comforting immersive ambience

- sensory stimulants

- exploratory methods of connectivity between bedrooms across cities

0

References

https://github.com/technobly/Particle-NeoPixel/blob/master/examples/a-rainbow/a-rainbow.cpp

x
Share this Project

Courses

49713 Designing for the Internet of Things

· 16 members

A hands-on introductory course exploring the Internet of Things and connected product experiences.


Focused on
About

Connected Bedrooms offers an experience for distant couples which enables them to feel a sense of togetherness even when they are miles away from their loved one.

Created

November 21st, 2019