Companion Minion

Bringing parents and children together

Made by Pedro Mendes, skokate, Alex Surasky-Ysasi and kaylageer

Designed for parents who often travel for work and their children, the plush Minion and Minion key-chain enable the sharing of photos from the parent's travels (or the child's day) to one another via the cloud.

Created: February 3rd, 2015

0

Overview

Modern life for families require a lot of sacrifices. To be competitive in the workplace nowadays means, besides knowledge and hard work, mobility and accessibility. Laptops, smartphones and tablets all increase productivity dramatically, but also bring the office into the home, anytime and anywhere. Nevertheless, a lot of work still require the physical presence of people, and most people might be called upon a business trip on short notice, creating havoc in the family life and plans.
However, we believe that the same technology that sometimes separate has the power to bring people together. By harnessing the power of the Internet of Things, the cloud, any smartphone and an emotionally significant physical object (a Minion!), we look to retain and fortify the bonds between parents and children, even when far away.

Objective of product

A pair of toys that, when a paw is squeezed in one, it will take a picture, store it in the cloud, and cause the other to pulse a LED light to indicate that a new image is waiting. The image can be seen through any connected device, like a phone or tablet with access to the cloud. The toys are proposed in the format of Minions, since they elicit a very emotional response in children, and have two sizes: a large one for children a small one, key-chain sized, for parents to travel easily with it.

Target customer

Parent & Child (5+ because of use of tablet/phone to see image)

Context and sequence of operation

Background: Parent often travels for work, so they purchase the connected stuffed Minion and keychain counterpart to share photos with their child.

0

a) Parent will take its keychain Minion to any trip;

0

b) Parent sees something interesting to share with his/her child, so takes a Picture with keychain Minion;

0

c) Child Minion will blink LED light to let him/her see that a new Picture is waiting;

0

d)  Children will pick any smartphone or tablet and check image uploaded to the cloud;

e)  LED will stop blinking;

0

f) Parent can also keep the keychain minion in his office to connect even more with his/her children.

0

Process

The first step of the process was to brainstorm ideas. After letting go of ideas related to couples, the team decided that families experience challenges in terms of maintaining a meaningful balance between work requirements and physical presence. We considered that the interaction between parents and children is the one most impacted by absence, as it can cause fear and even lead to separation anxiety disorder.

The team also decided that the format of the product should resonate with children, eliciting a calming and emotional response. Therefore a Minion was chosen, as they are funny, enjoyable and silly “creatures” that make people smile. Even adults =)

0

We then created a basic sketch of the idea for the basic functionality of the product.

0

MASTER: push button → servo → iphone → sends to cloud

SLAVE: LED lights up, picture in cloud



With the time available it was not possible to make a stuffed Minion, so the team searched the internet to develop a basic cardboard model for demonstration.

0

With the creature assembled and painted, the team started with the development of the requirements for the circuits:

2 cameras

2 switches

2 screens**

2 LEDs

jumper wires

2 1kO resistors

2 batteries

0

For the purpose of this project, it was not possible to actually install the cameras for full functionality, so the items used were:

0

Bill of Materials: Circuit Layout.fzz

C:/Users/Alex/Documents/CMU/IoT/Creative2 Doc/Circuit Layout.fzz

Tuesday, February 3 2015, 15:19:19


Assembly List

Label                                                             Part Type                                                                   Properties

LED1                                                     Red (633nm) LED                                                    leg yes; color Red (633nm); package 5 mm [THT]

Part1                                                     Spark Core (v1.0)                                                      name Spark Core; revision v1.0; manufacturer Spark Devices; variant variant 1

R1                                                          220Ω Resistor                                                            tolerance ±5%; package THT; pin spacing 400 mil; resistance 220Ω; bands 4

S1                                                          Pushbutton                                                                 package [THT]

S2                                                         Pushbutton                                                                 package [THT]


Shopping List

Amount                                                        Part Type                                                                    Properties

1                                                             Red (633nm) LED                                                    leg yes; color Red (633nm); package 5 mm [THT]

1                                                            Spark Core (v1.0)                                                       name Spark Core; revision v1.0; manufacturer Spark Devices; variant variant 1

1                                                            220Ω Resistor                                                            tolerance ±5%; package THT; pin spacing 400 mil; resistance 220Ω; bands 4

2                                                           Pushbutton                                                                  package [THT]


Exported with Fritzing 0.9.1- http://fritzing.org

0

These items generated the following Circuit / Fritzing diagram 

0

The code was developed through several iterations that debugged items and rationalized the sequence so it would work within the constraints of the parts available.


The code block fo the parent side of the device is as follows:

0
//This code is designed for the Minion connection tool
//This code is for the parent side of the device
//When the hand of a minion is pressed a picture is taken
//by the activation of a servo motor that presses the capacitive touch
//button on an iPhone camera that is already in camera mode
//Once this picture is taken, it sends it to the cloud using
//IFTTT protocol which syncs it dropbox, when this happens
//a signal is sent to the other matching Minion, so it's light turns on
//when the child acknowledges

//push buttons
int takephotobutton = D0;
int photoseenbutton = D1;
//LED
int ledPin = D2;
//counter that keeps track of photos parent has taken since child last checked
int photocounterP=0;


void setup() {
  Spark.variable("photocount", &photocounterP, INT);
  // sets pin as input
  pinMode(takephotobutton, INPUT_PULLUP);
  // sets pin as input
  pinMode(photoseenbutton, INPUT_PULLUP);
  // sets pin as output
  pinMode(ledPin, OUTPUT );
  //Subscribe to child core's photo activation feed
  Spark.subscribe("AASY/Child", handlePhotos);
  //Subscribe to child's feed for having viewed parent's photos
  //Spark.subscribe("AASY/ChildView", countReset);
}

void loop() {
  //check to see if takephotobutton is pressed
  //takephotobutton is wired so that it will output LOW when pressed down
  int takephoto = digitalRead(takephotobutton);
  //update photo count
  if(takephoto == LOW){
    photocounterP = photocounterP + 1;
  }
  //if photocount is greater than one send to the cloud that photos available
  if(photocounterP >0){
    Spark.publish("AASY/Parent", "PHOTO", 60, PUBLIC);
  }
  //check to see if photoseenbutton is pressed
  //photoseenbutton is wired so that it will output LOW when pressed down
  int photoseen = digitalRead(photoseenbutton);
  //if photo has been seen then let child core know
  if(photoseen == LOW) {
    Spark.publish("AASY/Parent", "VIEW", 60, PUBLIC);
    digitalWrite(ledPin, LOW);
  }else{
    //Spark.publish("AASY/ParentView", "NO", 60, PUBLIC);
  }
  delay(10000);
}

void handlePhotos( const char *event, const char *data) {

  if(strcmp(data, "PHOTO")==0) {
    digitalWrite(ledPin, HIGH);
    }
  if(strcmp(data, "VIEW")==0) {
    photocounterP = 0;
    }
}

/*
//handler function that turns other device's LED on when this device takes
//a photo
void ledToggle(const char *event, const char *photowaiting) {
  if(strcmp(photowaiting, "YES")==0) {
    digitalWrite(ledPin, HIGH);
  }
}

//handler function to reset photo counter on paired device when photoseen
//button has been pressed
void countReset(const char *event2, const char *photoseen){
  if(strcmp(photoseen, "YES")==0){
    photocounterP = 0;
  }else{
    //tester code to see if the this countReset is running at all
    //photocounterP= photocounterP + 1;
  }
}
*/
Click to Expand
0

The code block for the child part of the device is as follows:

0
//This code is designed for the Minion connection tool
//This code is for the child side of the device
//When the hand of a minion is pressed a picture is taken
//by the activation of a servo motor that presses the capacitive touch
//button on an iPhone camera that is already in camera mode
//Once this picture is taken, it sends it to the cloud using
//IFTTT protocol which syncs it dropbox, when this happens
//a signal is sent to the other matching Minion, so it's light turns on
//when the child acknowledges

//push buttons
int takephotobutton = D0;
int photoseenbutton = D1;
//LED
int ledPin = D2;
//counter that keeps track of photos parent has taken since child last checked
int photocounterC=0;


void setup() {
  Spark.variable("photocount", &photocounterC, INT);
  // sets pin as input
  pinMode(takephotobutton, INPUT_PULLUP);
  // sets pin as input
  pinMode(photoseenbutton, INPUT_PULLUP);
  // sets pin as output
  pinMode(ledPin, OUTPUT );
  //Subscribe to child core's photo activation feed
  Spark.subscribe("AASY/Parent", handlePhotos);
  //Subscribe to child's feed for having viewed parent's photos
  //Spark.subscribe("AASY/ParentView", countReset);
}

void loop() {
  //check to see if takephotobutton is pressed
  //takephotobutton is wired so that it will output LOW when pressed down
  int takephoto = digitalRead(takephotobutton);
  //update photo count
  if(takephoto == LOW){
    photocounterC = photocounterC + 1;
  }
  //if photocount is greater than one send to the cloud that photos available
  if(photocounterC >0){
    Spark.publish("AASY/Child", "PHOTO", 60, PUBLIC);
  }
  //check to see if photoseenbutton is pressed
  //photoseenbutton is wired so that it will output LOW when pressed down
  int photoseen = digitalRead(photoseenbutton);
  //if photo has been seen then let child core know
  if(photoseen == LOW) {
    Spark.publish("AASY/Child", "VIEW", 60, PUBLIC);
    digitalWrite(ledPin, LOW);
  }else{
    //Spark.publish("AASY/ParentView", "NO", 60, PUBLIC);
  }
  delay(10000);
}

void handlePhotos( const char *event, const char *data) {

  if(strcmp(data, "PHOTO")==0) {
    digitalWrite(ledPin, HIGH);
  }

  if(strcmp(data, "VIEW")==0) {
    photocounterC = 0;
  }


}



/*
//handler function that turns other device's LED on when this device takes
//a photo
void ledToggle(const char *event, const char *photowaiting) {
  if(strcmp(photowaiting, "YES")==0) {
    digitalWrite(ledPin, HIGH);
  }
}

//handler function to reset photo counter on paired device when photoseen
//button has been pressed
void countReset(const char *event2, const char *photoseen){
  if(strcmp(photoseen, "YES")==0){
    photocounterC = 0;
  }else{
    //tester code to see if the this countReset is running at all
    //photocounterC= photocounterC + 1;
  }
}
*/
Click to Expand
0

The video below shows the functionality of the toys by allowing the visualization of the two SparkCores talking to each other:

0
0

SOURCE OF IMAGES:

minion parent 1 - http://mashable.com/category/business-travel/

minion parent 2- http://pixgood.com/women-at-work.html

0

Team:
Alexandra Surasky-Ysasi
Kayla Geer
Sanika Kokate
Pedro Mendes

x
Share this Project


About

Designed for parents who often travel for work and their children, the plush Minion and Minion key-chain enable the sharing of photos from the parent's travels (or the child's day) to one another via the cloud.