0

In-Home Dining

Teams:

  • Visionaries: Christian & Grae
  • Proto Team: Sonam, Vagisha, & Ran  |  Liaison: Sonam
  • Proto Team 1: Rebecca, Wendy, & Harong  |  Liaison: Wendy
  • Proto Team 2: Qiao, Xuejiao, & Meilin  |  Liaison: Meilin

0
Ambient Eats
Sonam Mahawar - https://youtu.be/Rs_gF8vUY4E
0

Brainstorming:

Defamiliarize:

Design Exploration:

The defamiliarization process included five prompts. The prompts and the themes of the answers are shown below:

- If you could have dinner with anyone, dead or alive, who would it be and why?

|  Dinner dates chosen out of:

  • curiosity
  • connection
  • advice
  • love
  • friendship
  • history
|  Some of the dinner dates were:
  • Martin Luther King
  • Eric Harris and Dylan Klebold
  • Donald Trump
  • Heath Ledger

- Imagine a world where every community had a communal dining area, there is no individual kitchen or dining areas, what would you do?

|  People were uncomfortable with the idea
|  It would depend on the time of day and/or mood to choose to interact with people and share a                   meal
  • would probably sit alone in the mornings because they are not morning people
  • would make more of an effort to socialize for lunch and dinner
  • if there was a communal tv, it would ease the awkwardness of the situation
  • people would cook less, eat more and spend more time eating because of the socializing

- Imagine the royal family sharing a meal, what would they talk about and do? What makes their dining experience different or unique?

  • they would wait for everyone to show up before starting and nobody would leave before everyone            was done eating
  • small, fancy dishes
  • talk about family stuff, not politics
  • they would have proper, fancy settings
  • they eat less
  • they would be catered to throughout the meal

- If money was not an object, what would you buy for your dining area and why?

  • sit with all friends, unlimited puppies and have yummy food
  • cleaning robot
  • comfy chairs
  • hire a bartender
  • hire a chef
  • movie theater dining room
  • outdoor dining area (that is not affected by the elements)
  • wine cellar
  • expensive dining set

- Imagine going home for a holiday dinner in 2050, what would be different?

  • harry potter dining hall style
  • no silverware
  • there is not more edible food, it is all pill form
  • plug in dinner (virtual)
  • decor is futuristic
  • less time is spent eating
  • less socialization
  • teleported food
  • food implants
  • eat once a year
  • dining with robots
Design Proposals:


1) light plates to measure interaction

  • the person communicating or interacting the most, would have the most of their plate lit up
  • this was targeted to increase the communication at the dinner table of a family, the gamification of          the plates would target the younger children and entice them to participate

2) baby dining in a high chair

  • babies often throw food off of their plates and make messes while they are eating. Through the use          of lights, sounds, and vibrations the baby could be steered do better eating behavior while in                      his/her high chair

3) cuisine themed atmosphere

  • based on the type of food that was being eaten for that meal, the ambience of that region would be            displayed throughout the dining area to make it more of an authentic experience.
  • for example, if Italian food was being eaten, there would be romantic lighting and Italian music               would start playing

4) long distance sharing a meal

  • if a couple or family members were not together for a meal, but were to busy to Facetime, they                   could know what the other person was doing through their plates or glasses lighting up.
  • for example, if user 1 takes a bite with their fork, users 2 fork would light up

5)musical plates

  • the speed of eating and the change in the height of the liquid of a drink would create bass and                   percussion
  • this could be used ambiently to slow down while eating
  • it also could keep younger children's attention throughout the meal
  • when everyone is done with their meal, all of the plates would light up and the song created                        throughout dinner would play
  • this would keep the whole family at the dinner table until everyone was finished
0

Project Goals/Concept:

  • Initial Ecosystem Proposal

Dining within the home with your friends and family is almost obsolete from the American culture. Our busy schedules, lack of desire to gather together, and the immersion of our minds within technology is only helping to divide people from an activity that at one point was a vital part of our days: gathering for meals and conversing. 

Musical Plates can't solve this problem completely, but it will help draw people back to the table. We do have the time from our busy days to sit down and converse with each other, we just need to be intrigued to do it again. Sitting down and sharing a meal with friends and family should happen any night of the week, and it should only leave a positive impact on your days and life. 

By creating a musical rhythm and the instrumental sound of a bass drum through our actions within a meal, Musical Plates will create a souvenir of this time together through a song. This song will be produced by us, and our motions that are created by our conversations with each other. As we sip on some wine, carve into our steaks, and set down our utensils periodically through out the meal, Musical Plates is recording this data. The collected data will be turned into beats to be represented by the bass drum. Once the Musical Plates have sensed that everyone is finished with their meal by the weight of our empty plates, the final song will start to be played. 

Let's say you, your friends, and family have had exciting days and your conversation is energetic, these motions and emotions will be reflected back to your through the song you've produced. Maybe your family and you have had some serious conversations, Musical Plates will pick up these emotions and play back to you how the conversations went. Yes this might be a more melancholy song, but that's okay. It helps you reflect on what was discussed and how important it was for you and your family to converse in these topics. It could show through the mellow rhythm that you have all connected on another level with each other.  


  • Proposed Prototypes

1) Proto Team  |  Accelerometer 

This prototype will measure how quickly a person is eating, which will in turn create the rhythm and beats for the bass.

2) Proto Team #1  |  Pressure Sensor

The pressure sensor will measure how much food as been consumed and when the plate is empty. Once all the plates are empty, the pressure sensor will trigger the end song to be played.

3) Proto Team #2  |  Liquid Sensor

The liquid sensor will measure how much fluid is being consumed. As the height of the liquid changes the tempo of the bass will change as well. 

0
Prototypes
New doc 6 1
0

Final Concept:

The final concept evolved from the initial proposal. The final prototype is focused on families, mainly on the children, to have an engaging dining experience without direct contact with technology. This is going to be accomplished by sounds being associated to the action of a utensil or cup being used: 

  • An accelerometer is attached to the fork that will have a sound connected to it whenever it is lifted up to the mouth 
  • A liquid sensor is used in the cup; when there is a change in the liquid level, there will be a sound associated with
  • When the whole family is done eating (signaled by the utensil/accelerometer not moving for more than one minute), a the LED strip and Neopixel under their plates light up signaling the end of dinner

The children are the main target of this design because they are the more technologically inclined and could prefer to use their devices instead of having a conversation with their families. Depending on the child's age, keeping them entertained and excited throughout dinner will promote an easier interaction and more quality experience for the whole family. 

With children being the target, there are multiple theme choices for the sounds to give them options and keep them interested. The first theme is the rainforest. The sounds for the rainforest are as follows:

  • There is a constant sound of rain for ambience 
  • When the fork is used, a cricket, koyla bird, and parrot sound is played. (Each person at the table has a different rainforest sound assigned to them.  
  • When the liquid level of any cup changes, a thunder clap is heard and the LED strip and Neopixel under the plates light up simulating lightening.
  • The LED strip under the plate lights up at the end of the meal with sparkling green and blue lights. The goal of the final light show is to entice the whole family to stay at the dinner table until everyone is done with their meal. 

sparkles green and blue for the rainforest

The other theme choice is space. The sounds for the space theme are as follows:

  • There is the Star Wars theme song playing in the background 
  • The Fork - three different light saber sounds (specific to each person) and the LED flashes green
  • The Cup - space ship shooting through the sky (same for everyone) and the  LED goes in a circle with white light
  • The Plate - LED goes from green to red to blue (for the colors of light sabers)

For this stage of the design, there are only the three prototypes designed for one person. If this project was taken further, there would be the three devices for each member of the family to make it more interactive. 

Since there are only devices for one person, the video is based around a child's dining experience and it is using the rainforest theme. The sounds and LED functions are the same as stated above, but the fork randomly chooses between the cricket, koyla bird, or parrot sound to keep it interesting since it is just one person outputting the sounds.

0

Plate:

Bill of Materials:

-Plates

-Neopixel

-LED Strip

Process:

  1. Setting up the neopixel ring and strip, exploring different lighting patterns,refining the lightning and adding a fade to the end.
  2. To see what pattern would be best, buttons were added and correspond to each effect. The biggest barriers were figuring out how to make the code stop looping. It was the first thing tackled though so remedied early. 
  3. Refine lighting to simulate lightning pattern in nature. 
  4. Refine finale lighting color to be more related to our rainforest theme.
  5. Linked with fork and cup to allow communication between ecosystem 
0
Accelerometer
#include "neopixel.h"
#define PIXEL_PIN D0
#define PIXEL_COUNT 16
#define PIXEL_TYPE SK6812RGBW
Adafruit_NeoPixel ring = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
void setup() {
  Serial.begin(9600);
//  ring.setBrightness(55);
  ring.begin();
  ring.show();
  //rainforest
  Particle.subscribe("diot2017/musical_plates/activity", activity);
  Particle.subscribe("eatingend", finishedeating, "310039000f51353338363333");
  //space
  Particle.subscribe("space_eatingend", spacefinishedeating, "310039000f51353338363333");
}
void loop() {
}
void activity(const char *event,const char *data) {
  String activity = data;
  if (activity == "drink") {
    changeColor(ring.Color(0, 0, 0, random(200, 256)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, random(100, 200)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, random(200, 256)));
    delay(random(600,800));
    changeColor(ring.Color(0, 0, 0, 0));
    delay(random(200,300));
    changeColor(ring.Color(0, 0, 0, random(100, 200)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, random(200, 256)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, random(100, 200)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, random(200, 256)));
    delay(random(50,70));
    changeColor(ring.Color(0, 0, 0, 256));
    delay(random(150,300));
    changeColor(ring.Color(0, 0, 0, 0));
    delay(random(250,350));
    changeColor(ring.Color(0, 0, 0, random(100, 200)));
    delay(random(20,50));
    changeColor(ring.Color(0, 0, 0, 230));
    delay(random(200,300));
    for(int i = 230; i >= 0; i -= 20) {
      changeColor(ring.Color(0,0,0,i));
      delay(1);
    }
  }
  else if (activity == "space_drink") {
    for(int j=0; j<256; j++) {
      for(uint16_t i=0; i<ring.numPixels(); i++) {
        ring.setPixelColor(i, ring.Color(0, 0, 0, 255) );
        ring.show();
        delay(85);
      }
      changeColor(ring.Color(0, 0, 0, 0));
      delay(300);
      changeColor(ring.Color(0, 0, 0, 255));
      delay(1000);
      changeColor(ring.Color(0, 0, 0, 0));
      off();
    }
  }
  else {
    off();
  }
}
void finishedeating(const char *event,const char *data) {
  hueChase(ring.Color(127, 100, 0), 50); // Lime Green
  hueChase(ring.Color(80, 0, 127), 50); // Cyan
  hueChase(ring.Color(127, 0, 0), 50); // Green
  hueChase(ring.Color(127, 100, 0), 50); // Lime Green
  hueChase(ring.Color(80, 0, 127), 50); // Cyan
  hueChase(ring.Color(127, 0, 0), 50); // Green
  off();
}
void spacefinishedeating(const char *event, const char *data) {
  greencolor();
  redcolor();
  bluecolor();
}
void greencolor(){
  for(int i = 0; i <= 240; i += 20) {
    changeColor(ring.Color(i,0,0,0));
    delay(1);
  }
  delay(500);
  for(int i = 240; i >= 0; i -= 20) {
    changeColor(ring.Color(i,0,0,0));
    delay(1);
  }
}
void redcolor(){
  for(int i = 0; i <= 240; i += 20) {
    changeColor(ring.Color(0,i,0,0));
    delay(1);
  }
  delay(500);
  for(int i = 240; i >= 0; i -= 20) {
    changeColor(ring.Color(0,i,0,0));
    delay(1);
  }
}
void bluecolor(){
  for(int i = 0; i <= 240; i += 20) {
    changeColor(ring.Color(0,0,i,0));
    delay(1);
  }
  delay(500);
  for(int i = 240; i >= 0; i -= 20) {
    changeColor(ring.Color(0,0,i,0));
    delay(1);
  }
}
void hueChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<5; j++) {
    for (int q=0; q < 3; q++) {
      for (uint16_t i=0; i < ring.numPixels(); i=i+3) {
        ring.setPixelColor(i+q, c);
      }
      ring.show();
      delay(wait);
      for (uint16_t i=0; i < ring.numPixels(); i=i+3) {
        ring.setPixelColor(i+q, 0);
      }
    }
  }
}
void off() {
  changeColor(ring.Color(0, 0, 0, 0));
}
void changeColor(uint32_t color) {
  for(uint16_t i=0; i < ring.numPixels(); i++) {
    ring.setPixelColor(i, color);
    ring.show();
  }
}
Click to Expand
0
Plate Circuit Diagram
Screen shot 2017 03 07 at 4.39.23 pm
0

The Cup:

Bill of Materials:

- Plastic Cup

- PN 12110215TC-8 Liquid Sensor

- 460 ohm resistor

- 6-pin push button

- stick (to hold liquid sensor up)

- Jumper Wires

- Particle Microprocessor

0
Neopixel
// This publishes an event every few seconds to test with
// That's all
#define SERIESRESISTOR 560
// What pin to connect the sensor to
#define SENSORPIN A0
int last_publish = 0;
int next_publish_after = 1000;
int readingbefore = 0;
String activity;
int button = D0;
void setup()
{
  Serial.begin( 9600 );
  pinMode (button, INPUT_PULLUP);
}
void loop()
{
  float reading;
  Particle.variable("drinkAct", activity);
  reading = analogRead(SENSORPIN);
  Serial.print("Analog reading ");
  Serial.println(reading);
int buttonState = digitalRead(button);
if(buttonState == LOW){
  Serial.println(buttonState);
//read button
  // convert the value to resistance
  /*reading = (1023 / reading)  - 1;
  reading = SERIESRESISTOR / reading;
  Serial.print("Sensor resistance ");
  Serial.println(reading);*/
  if( last_publish + next_publish_after < millis() ){
    // publish a random event named fork, drink or plate
    //int r = random(4);
     activity = "other";
  //  if( r == 0 ){
    //  activity = "fork";
  //  }
    //else if( r == 1 ){
    if(readingbefore - reading > 50){
      activity = "drink";
    }
  //  }else if( r == 2 ){
    //  activity = "plate";
    //}
    Particle.publish( "diot2017/musical_plates/activity", activity );
    last_publish = millis();
    //next_publish_after = random( 1000, 10000 ); // publish randomly between 1-10s
    delay(1000);
    readingbefore = reading;
  }
}else if(buttonState == HIGH){
  // convert the value to resistance
  /*reading = (1023 / reading)  - 1;
  reading = SERIESRESISTOR / reading;
  Serial.print("Sensor resistance ");
  Serial.println(reading);*/
  Serial.println(buttonState);
  if( last_publish + next_publish_after < millis() ){
    // publish a random event named fork, drink or plate
    //int r = random(4);
     activity = "space_other";
  //  if( r == 0 ){
    //  activity = "fork";
  //  }
    //else if( r == 1 ){
    if(readingbefore - reading > 500){
      activity = "space_drink";
    }
  //  }else if( r == 2 ){
    //  activity = "plate";
    //}
    Particle.publish( "diot2017/musical_plates/activity", activity );
    last_publish = millis();
    //next_publish_after = random( 1000, 10000 ); // publish randomly between 1-10s
    delay(1000);
    readingbefore = reading;
}
}
  delay( 100 );
}
Click to Expand
0

The Fork:

Bill of Materials:

- Fork

- 6-pin push button

-ADXL335 accelerometer

- Jumper Wires

- Particle Microprocessor

0
Liquid Sensor
int x, y, z;
int counter; // sets a counter
int button = D0;

void setup() {
  Serial.begin(9600);      // sets the serial port to 9600
  pinMode(button, INPUT_PULLUP); // sets pinMode for push button
}

void loop() {
  int buttonState = digitalRead (button); // read digital input from push button

  x = analogRead(0);       // read analog input pin 0
  y = analogRead(1);       // read analog input pin 1
  z = analogRead(2);       // read analog input pin 1


  if(x<2000 || y<2000 || z<1600) { // if the accelerometer changed position
    if (buttonState == LOW) { // jungle version
      //Serial.println("moving");
      Particle.publish("diot2017/musical_plates/activity", "plate" ); // start playing jungle background music
      Particle.publish("diot2017/musical_plates/activity", "fork" ); // start playing criket sound clip
    }else{ // space version
      //Serial.println("moving");
      Particle.publish("diot2017/musical_plates/activity", "space_plate" ); // start playing space background music
      Particle.publish("diot2017/musical_plates/activity", "space_fork" ); // start playing blade sound clip
    }
    counter = 0; // reset the counter
    delay(100);
  }else{
    Serial.println("stopping");
    counter ++; // counts every 0.1s
    //Serial.println(counter);
    delay(100);}

  if(counter == 300) { // trigger end of eating event after 30s inactivity
    //Serial.println("=======eating stopped======");
    if (buttonState == LOW) { // jungle version
    Particle.publish("eatingend"); // send a signal to plate
    Particle.publish("diot2017/musical_plates/activity", "eatingstop"); // stop the jungle background music
    }else{ // space version
    Particle.publish("space_eatingend"); // send a signal to plate
    Particle.publish("diot2017/musical_plates/activity", "space_eatingstop"); // stop the space background music
    }
    delay(100);
  }else if(counter > 30000) {
    counter = 0; // after 3000s, reset the counter
  }
}
Click to Expand
0

Overall Process:

Below is general documentation of the process.

0
Progess Video 1
Grae Prickett - https://youtu.be/xecu1Ry-lFI
0
Progress Video 2
Grae Prickett - https://youtu.be/KFG7k63WrQ0
x
Share this Project

This project is only listed in this pool. Be considerate and think twice before sharing.


Courses

49-713 Designing for the Internet of Things

· 26 members

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


Focused on
About

~

Created

February 26th, 2017