Window Talk

Made by K P, Gabriela Rubio and Jake Maxfield

The goal of the project is to create a connected and enriching experience for users to share their time of day with their loved ones.

Created: February 10th, 2016

0
Intention

A common problem with distant relationships is the feeling of disconnectedness and desynchronized schedules. The intention of Window Talk is to increase closeness to loved ones through the creation of a glanceable connected device.  There are two identical devices that are paired with each other to coordinate communication and interactions.  The Window Talk has been created to communicate time of day to people in different locations by providing a visual cue.

0
The Device

There are two devices: a home device at the home device and a distant device at a relative's home.  The home device consists of a 100 mA warm LED and  photoreceptor that is connected to the relative device.  Each device is powered by a battery pack to provide mobility.  The change of day in each location triggers the other location to adjust as a glanceable notification. 

Bill of Materials per device

1 Breadboard with USB cable

1 Photon

1 – 3V DC power supply/battery pack

1 – Window

1 - 1 Warm LED 100 mA

1 – Jumper wires

1 - 47 Ω Resistor

1 - 100k Ω Resistor

1 - 10k Ω Resistor

1 - Photoresistors

0
The Design Process

The design process included ideating on the type of relationships and emotions people feel when distanced from their family, friends or significant others.  From experiences of coordinating multi-time zone relationships, it became apparent there was an opportunity to link people together by providing a connected object that lights up the distance device when the home device is experiencing daylight and vice versa.  

0
Circuit Diagram
Creative assignment three fritz v2 bb.thumb
0
Circuit Setup
Img 9922.thumb
0
Code
/* CONSTANTS & VARIABLES
------------------------------------------------------*/
const String myID = Particle.deviceID();
int ledPin = D0; //Setup LED
int testledPin = D1; //test values
int photoCellPin = A0; //Setup Photocell
int photoCellReading = 0; //Store the sensor reading
int ledState = 0;
int remoteState = 0;
/* SETUP
------------------------------------------------------*/
void setup(){
  //Function that will allow direct communication between usb port, analogue reading
  Serial.begin(9600);
  //Connect the photo cell reading to the cloud to read the value on "cloud variables"
  Particle.variable("light", &photoCellReading, INT);
  Particle.variable("brightness", &ledState, INT );
  pinMode (ledPin, OUTPUT);
  pinMode(testledPin, OUTPUT);
  pinMode (photoCellPin, INPUT);
  Particle.subscribe("SweetTalkProject", eventHandler);
  Particle.function("setState", setStateFromCloud); //Just to chech LED locally
}
/* LOOP
------------------------------------------------------*/
void loop(){
  monitorPhotocell();
}
/* FUNCTIONS
------------------------------------------------------*/
void eventHandler (const char *event, const char *data){
  Serial.println( "event detected" );
  Serial.println( data );
  Serial.println( event );
  String dataStr = data;
  if (!data) return;
  //String myID = System.deviceID(); (redudnant to line 3)
  if( dataStr.indexOf( myID ) > -1 ) return;
  //Serial.println( "Not from another ... "); // i dont know what not from another refers to
  int index = dataStr.indexOf(",");
  String value = dataStr.substring( 0, index );
  int state = value.toInt();
  setState( state );
}
int monitorPhotocell(){
  photoCellReading = analogRead(photoCellPin); //Read from photoCellPin
  int convertedToState = map ( photoCellReading, 800, 4000, 0, 255 ); // Set range for states
  analogWrite( testledPin, photoCellReading );
  //Serial.println( photoCellReading ); //Display it on serial
  if (remoteState != convertedToState){
    announceState (convertedToState);
    remoteState = convertedToState;
    delay (1000);
  }
}
int setStateFromCloud (String command){
  int newState = command.toInt();
  setState ( newState );
  return 1;
}
void setState(int state){
    if ( state == ledState ) return;
    if ( state != ledState ){
      ledState = state;
      analogWrite(ledPin, state);
      }
    }
void announceState (int state){
  //String myID = System.deviceID(); (Redundant with like 3)
  String data = String(state) + "," + myID;
  Particle.publish("SweetTalkProject", data);
  delay (2500);
}
Click to Expand
0
Challenges

Challenges emerged when pairing the devices together.  A lot of time was spent determining how to coordinate the devices to talk to one another.  After experimenting and inspecting the code, we were able to create a paired device.  

0
Outcomes and Reflections

We successfully were able to connect paired devices and witness how devices can connect geographically separated people in relationships. The Window Talk provides a way to comprehend and empathize with loved ones and their daily schedules and experiences.  Future iterations would include creating a prototype that retrieves true-time information from the cloud about exact sunrise and sunset times, removing the devices dependence on photoresistors.  

0
WindowTalk
k4n56jk - https://youtu.be/rPFjn3i_qPk
0
WindowTalk
Gabriela Rubio - https://youtu.be/ksE7vfigF_I
x
Share this Project

Courses

49-713 Designing for the Internet of Things

· 4 members

This course charts the emergence of the now "connected world" to explore the possibilities for future products and connected spaces.


About

The goal of the project is to create a connected and enriching experience for users to share their time of day with their loved ones.