Cupples is a web based presence & awareness gadget, that helps couples, friends and family connect across long distances.

Created: February 10th, 2016



Cupples provides a fun and playful way for people to connect across long distances.

Cupples are a pair of connected bobble heads. Each Bobblehead is designed as a human persona, of the person you would like to connect with. Wobbling one cupple will automatically wobble the other. This is a great way for users to indicate their availability ; eg. for a phone call, or to just playfully ping their counterparts.

Every wobble lasts for a few minutes, serving as a glanceable ping. Imagine a parent wondering if it's alright to call up their children, or if they are at home, or if they had their meal. It is anticipated that users will add their own layers of meaning to the gestures and effectively anonymizing the data.



Each Cupple consists of:

1 Servo

1 Tilt sensor

1 Particle Photon + Mini Breadboard

1 Decorated Paper-cup with Caricature drawing

1 Foam Cup - Half sawed 

1 Spiral spring


Experimentation & Learnings

Based on a preliminary concept, we set out to design the physical mechanism of the couple.

We tried out a variety of spring based "wobble" mechanisms. We mounted the cup on a steel pin, with a spring on the top. We tried out a number of positions for placing a servo or the vibration motor, to create an effective and convincing wobble. Ultimately we arrived on the solution of ditching the steel pin, and directly using the servo arm as the mounting pin.

This was followed by a bunch of permutations of ping durations within the code to create the ideal wobble.

The next part of the design involved designing a base to conceal all the electronics. Here to experimentation played a key role in determining the ideal form. The use of smaller breadboard did not immediately occur to us.



Every time a user wobbles their Cupple, the tilt sensor detects a deviation in position, and publishes an event on the Particle Cloud. The other Cupple retrieves this event and sets off a vibration through the servo.

#include <stdio.h>
#include <string.h>
#include <math.h>

int TILTPIN = D0;
int servoPin = A5;
int servoPos = 180;
Servo myServo;
int oldVal = 0;

int lastTimeOfOccurence = 0;
String deviceID = "";
int iStartedIt = 0;
int wobbled = 0;

void setup() {
  //  Servo
  myServo.attach( A5 );
  deviceID = System.deviceID();
  // Initialize the LED pin as an output
  pinMode(TILTPIN, INPUT);
  oldVal = analogRead(TILTPIN);
  lastTimeOfOccurence =;

  Particle.subscribe("iot-bobble-head", bobbleMe);


void loop() {
  int tiltData = analogRead(TILTPIN);

  if(abs(tiltData - oldVal) > 150 && wobbled == 0 && iStartedIt != 1) {
    Particle.publish("iot-bobble-head", deviceID);
    wobbled = 0;
    iStartedIt = 0;
  oldVal = tiltData;

void bobbleMe(const char *event, const char *data) {
  String incomingDeviceId = (String)data;
  if( incomingDeviceId != deviceID && iStartedIt != 1) {
    wobbled = 1;
    iStartedIt = 0;
  } else {
    iStartedIt = 1;
    wobbled = 1;
    Serial.println("It's me");
void bobble() {
int servoControl(String command) {
  // Convert
  int newPos = command.toInt();
  // Make sure it is in the right range and set the position
  servoPos = constrain( newPos, 0 , 360);
  // Set the servo
  myServo.write( servoPos );
  return 1;
Click to Expand


We spent a great deal of time brainstorming ideas for this project. We wanted a solution that was universal, meaningful and fun! This is what we hope Cupple would mean to people. The low cost of making this device, and the high cool factor, makes this accessible to a diverse audience.

Cupples IOT Project
Ashwin Ramesh -


The code needs to be polished to improve the head bobbing movement smoother.

Share this Project


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.

Focused on

Cupples is a web based presence & awareness gadget, that helps couples, friends and family connect across long distances.