Pandaro Box

Made by xinm, svitoora, johnnywu and Evan Adkins

Pandaro Box is all about the surprise. We want to create a box that launches another box when its counterpart is knocked. Through this manner, When a person knocks on his/her box, the other box jumps (only if the owner is present). We want to make this jumping motion a fun and surprising, but not overly startling experience to both parties.

Created: March 7th, 2017

0


Intention

Surprises are vital constituents to maintain an intimate relationship. Arguably, the desire for a delightful surprise is ingrained in our human behavior. Kids are deleighted by a game of peek-a-boo and adults are delighted by a serendipitous serenade. Although SMS has enabled us to communicate serendipitously with one another, an SMS notification does not enable us to recreate the physicality that creates surprises. In this project, we hope to design an experience that can enable people to create surprises through the IoT.

Problem Statement 

Our target audience is children since they love toys and surprises! We chose children because there are not many IoT devices out there for kids yet. Having an surprise IoT device, children are enabled to acknowledge when their best friend is at home. Moreover, they not only delight themselves by having the ability to surprise, they also entertain and communicate tacitly with their friends, sometimes even families. 

0

Goal

Surprise is our essential theme. We as a team want to create a box that launches another box when its counterpart is knocked. Through this manner, When a person knocks on his/her box, the other box jumps (only if the owner is in front). We want to make this jumping motion a fun and surprising, but not overly startling experience to both parties.  

0

Process

The design of this project took many iterations to result in the finished product. After understanding the emotion that we wanted to convey, surprise, we thought of various ways to actuate sound and visual components

Ideation sketches for the Jack in the Box idea.One of the very first designs was very similar to that of a Jack-In-The-Box where when one user tapped his box, the other’s would spring open. It was difficult however to find a proper spring mechanism. The next design incorporated the use of sound by having a servo attached to a spring that would hit against a metal surface within the box before having the lid open to expose a light. However, we felt the light would not be enough to grab an individual’s attention. Finally, we were inspired by a baby toy, Busy Ball Popper, and determined to make the Pandaro Box. Incorporated a DC motor into the holder, the object can throw a smaller box several feet.


Plan for our final idea


Collaborative task division

Prototyping

屏幕快照 2017-03-07 上午12.22.10.png

We began prototyping various designs with cardboard, however we ended up fabricating the two boxes out of plywood, by engraving, cutting, and sanding to get a polished look. We wanted the boxes to be all self-containing, so we supplied two 9V external power sources with the boxes.

We tested the sensors separately by writing code to support a transistor controlled motor, PIR sensor, and accelerometer for tap detection. One user would be able to tap one box, while the accelerometer was looking for a break in threshold value, triggering a message to the other device to check for motion on its end, and if detected, triggering the motor to run for enough time to send the smaller box into the air. In order to optimize functionality, we calibrated both the PIR sensor and accelerometer after installing them in their boxes. Through the Spark API publish and subscribe events we were successfully able to communicate between both devices. Although the chips had trouble connecting to wifi and the cloud during demo, we were able to achieve successful functionality prior to. 


屏幕快照 2017-03-07 上午12.24.00.png

屏幕快照 2017-03-07 上午12.27.19.png

First actuator prototype

屏幕快照 2017-03-07 上午12.29.48.png

High powered lights


This is all the hardware mess we made from trying to work through our ideas.

Making

B.JPG

Building a box

屏幕快照 2017-03-07 上午12.39.25.png

Filleting edges


屏幕快照 2017-03-07 上午12.43.16.png

Internal mechanism

 

First successful mock up.

Components

Plywood, paper boxes, spray paint, jumper wires, PIR sensor, accelerometer,

DC motor, photon board, hot glue.

0
//Device 1 code
int tapPin = A0;
int servoPin = D0;
int pirPin = D1;
int tap = 0;
bool isPresent = LOW;

void setup()
{
  pinMode(tapPin, INPUT);
  pinMode(pirPin, INPUT);
  pinMode(servoPin, OUTPUT);
  Particle.subscribe("motor-turnOn2", motorControl2);
  digitalWrite(servoPin,LOW);
}

void loop()
{
  tap = analogRead(tapPin);
  if (tap < 900){
    digitalWrite(servoPin, HIGH);
    delay(500);
    digitalWrite(servoPin,LOW);
    Serial.println(tap);
    Particle.publish("motor-turnOn1", "tap-detected1");
  }
}

bool checkPresence(String command)
{
  int cmd = command.toInt();
  if (cmd == 1){
    isPresent = digitalRead(pirPin);
    delay(2000);
    if (isPresent == LOW) isPresent = digitalRead(pirPin);
    if (isPresent == HIGH){  
      return true;
    }
  }
  return false;
}

void motorControl2(const char *event, const char *data)
{
    if (strcmp(data, "tap-detected2")==0){
      //Motor turn on
      digitalWrite(servoPin, HIGH);
      delay(500);
      digitalWrite(servoPin,LOW);
    }
}

//Device 2 code
int tapPin = A0;
int servoPin = D0;
int pirPin = D1;
int tap = 0;
bool isPresent = LOW;

void setup()
{
  pinMode(tapPin, INPUT);
  pinMode(pirPin, INPUT);
  pinMode(servoPin, OUTPUT);
  Particle.subscribe("motor-turnOn1", motorControl1);
  digitalWrite(servoPin, LOW);
}

void loop()
{
  tap = analogRead(tapPin);
  if (tap < 900){
    Serial.println(tap);
    Particle.publish("motor-turnOn2", "tap-detected2");
  }
}

bool checkPresence(String command)
{
  int cmd = command.toInt();
  if (cmd == 1){
    isPresent = digitalRead(pirPin);
    delay(2000);
    if (isPresent == LOW) isPresent = digitalRead(pirPin);
    if (isPresent == HIGH){  
      return true;
    }
  }
  return false;
}

void motorControl1(const char *event, const char *data)
{
    if (strcmp(data, "tap-detected1")==0){
      //Motor turn on
      digitalWrite(servoPin, HIGH);
      delay(500);
      digitalWrite(servoPin, LOW);
    }
}
Click to Expand
0

Outcome


Outcome did turned out well. While we were not able to get all the parts working during the demo because there were many major bugs, we were sucessful in finishing our final product to prove our concept.

0

Reflection

As mentioned in the process section above, we had three iterations of prototyping before settling on the Pandaro Box idea. During that prototyping process, we encountered many challenges. For instances, we could not figure out a spring mechanism that works for a Jack-in-the-box idea. Working with lights that demand high power and relays/transistors was also a challenge. As a team, we debated to reach a consensus on the fabrication material. Cloud connection had malfunctions constantly. There are many other challenges alike but we overcame all of them as a team. During the one week of this project, team communication and team cooperation worked out really well. Every member had a specific role but was not confined to that role, and we learned from each other.


x
Share this Project


Focused on
About

Pandaro Box is all about the surprise. We want to create a box that launches another box when its counterpart is knocked. Through this manner, When a person knocks on his/her box, the other box jumps (only if the owner is present). We want to make this jumping motion a fun and surprising, but not overly startling experience to both parties.