Pandaro Box
Made by xinm, svitoora, johnnywu and Evan Adkins
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
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.
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.
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.
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
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.
First actuator prototype
High powered lights
This is all the hardware mess we made from trying to work through our ideas.
Making
Building a box
Filleting edges
Internal mechanism
First successful mock up.
Components
Plywood, paper boxes, spray paint, jumper wires, PIR sensor, accelerometer,
DC motor, photon board, hot glue.
//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
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.