Serendipicube: Creating serendipitous moments between loose acquaintances

Made by jmadala, Gabriela Suazo and Rachel Arre

An ambient device for acquaintances that presents availability as light and movement in order to encourage casual socialization in remote spaces.

Created: December 6th, 2020

0

Intention

To create serendipitous moments between loose acquaintances 

So, we sit for hours each day in zoom rooms with classmates & co-workers but never really get to know them beyond an icon. This can be really isolating and it’s easy for us to fall into our same routines. What makes serendipitous interactions enjoyable is the feeling you had to be in the right time and place for the experience to happen. You don’t always plan coffee chats, happy hours, or impromptu tea times. They just happen.

With the concept of "lost serendipidity" in mind, we wondered - how might we bring back these moments between acquaintances and to foster social connections during COVID times?

We settled on creating an ambient device to spark serendipitous interactions between loose acquaintances by surfacing people’s availability through light and motion in order to encourage casual socialization in remote spaces. . Given our time scope we wound up focusing on motion n ambient device for acquaintances that presents availability as light and movement. 

0

Approach

In our early ideations of this project we knew we wanted to create something that helped people who might not know each other well, be comfortable reaching out to make a connection. Sending an email or heaven forbid, calling someone on the phone creates a level of permanence and commitment and can even be quite disruptive. By limiting and softening he information, we can create the feeling of serendipity.

We leveraged learnings around Calm Technology – a device that can be simply used when needed and provide insight into whether someone is available to be “bumped into”. Calm tech nudges users to take a break and meet someone new, encourage social bonding, and forge casual connection. There is no pressure to meet again, but if you do, that first introduction is already out of the way.

David Rose’s readings around Enchanted Design were also inspiring and we wanted the Serendipicube to be an “out of the way”, unobtrusive, and subtle, way to add to the pace and structure of Covid-life. 

0

Context

We used several concepts, theory and methods introduced in class as well as drew inspiration from readings.


Principles of Calm Technology.


Case, Amber. Calm technology: principles and patterns for non-intrusive design. “ O’Reilly Media, Inc.”, 2015

There are benefits of using ambient displays to encourage people to adhere to certain kinds of desired behaviors, where there is a choice, such as washing hands or not, eating healthy or unhealthy snacks… ” 

In designing this cube, we wanted an object to nudge you to open up to new people with the feeling of obligation or long term commitment.

 ---

The Design of Enchantment - Part III.


David Rose (2014) Enchanted Objects: Design, Human Desire and The Internet of Things, Scribner.

That's why the doorbell is so simple and intuitive. The sound channel works in your cognitive periphery. You recognize who is on the way home without even trying… ” 

Our current technological landscape is very demanding, and it doesn’t have to be. We designed the cube to be embedded at the periphery of our conscious allowing us to live with deeper (but not overwhelming) context to the state of the world around us.  

---


---

Yo-Yo Machines.


Yo–Yo Machines are playful communication devices that let friends and family send one another nonverbal, expressive signals like lights, sounds or simple mechanical movements.

Interaction Research Studio, Goldsmiths, University of London

https://www.yoyomachines.io/

---

Paper Signals.


Isaac Blankensmith @ Google Creative Lab

These are little paper displays to track things like weather, currency, and rocket launches. They don’t have a screen or buttons, so you control them talking to them.

 https://papersignals.withgoogle.com/

---

Goodnight Lamp.


Alexandra Deschamps-Sonsino, London-based industrial & interaction designer

Turn a Big Lamp on and Little Lamps which you’ve given away turn on too. Anywhere in the world. Use the Good Night Lamp to tell a loved one, ‘I’m thinking of you’ or ‘call me when you get home’.

http://goodnightlamp.com/

---

Love Cube.


Jean, Founder and CEO

Send photos, love notes, drawings or stickers with an app. The heart spins when your loved one receives a message.

https://en.lovebox.love/

0

Concept

ADD TEXT HERE: Provide a high level design overview that considers and describes: what context it operates in ; what it does and how it behaves; how someone would or could interact with it; and how these interactions unfold to lead to the desired outcome? Detail your design proposal with a series of illustrations. -- Can we pull out the text in the story board into here so it is legible? 

StoryBoard

  • Frame1: User 1 flips the cube to indicate she has free time for a chat.
  • Frame 2: The cube vibrates softly & soft light shines through wood for ~ 15  minutes.
  • Frame 3: User taps the cube to indicate willingness to join a chat at "cafe cube"
  • Frame 4: Text message with link for a multiple to join.

Experience Map

From Daragh: diagraming an experience map of an interaction of using this and how it would help support serendipity while working/learning/taking breaks and during those informal coffee hangouts would be a really nice addition for the documentation.

0

Process

First iterations revolved around using a coaster with a pressure-activated light in the middle to share availability with others having matching sets of that coaster - whenever that coaster has a cup placed on it, will light up on the matching sets alerting people to begin a coffee break conversation. This evolved into several iterations, before realizing the variety or cups and glasses that could be placed on the coaster could cause confusion and add too much complexity to the pressure sensing component. We finally decided on a cube that could be tilted or shaken. The cube form was sturdy for our sensor and avoided unintentional activation; it also conveys stability which is an environment we wanted to create for users on both sides. We initially wanted to use the Neopixel since we believe that light would enhance the user experience. Light could perhaps showing what type of interaction someone is looking for or, in general, alert the user in a subtler way as a vibration as an initial alert may occur to often and be jarring. Light could be the alert that people are reaching out and after accepting, the vibration could serve as a trigger/reminder that your chat is about to begin (tied to your calendar, zoom, etc. or whatever scheduling mechanism we use But the Neopixel is delicate and could not withstand the shaking/tilting we designed for without requiring soldering or some other mechanism to ensure it was protected within the cube. 

Draft - 1.1: Conversation Coaster


  • A coaster that lights up when someone places a cup on it to indicate availability.
  • You place your own cup to accept.
  • All colors are shown at once. The whole coaster is able to display light.

Draft - 1.2: Conversation Coaster


  • A coaster that lights up when someone places a cup on it to indicate availability.
  • You place your own cup to accept.
  • Only one color is shown at a time.

Draft - 1.4-6: Conversation Block


  • Availability Indication
  • Use light to show others are free to meet
  • Pressure sensors
  • Indicate you have some free time and want to meet
  • Paper Notification
  • There is some kind of dial indication of the type of meeting available

Draft - 1.4-6: Conversation Coasters


  • Availability Indication
  • Use light to show others are free to meet
  • Pressure sensors
  • Indicate you have some free time and want to meet
  • Paper Notification
  • There is some kind of dial indication of the type of meeting available

Draft - 1.4-6: Conversation Block


  • Availability Indication
  • Use light to show others are free to meet
  • Pressure sensors
  • Indicate you have some free time and want to meet
  • Paper Notification
  • There is some kind of dial indication of the type of meeting available

Draft - 2.1 Serendipicube


  • A little cube that you can have sit on your desk.
  • Use light to show how many are free to meet, flip the cube to show availability 

0

Demo - Serendipicube 

0
Serendipicube Demo
Jody Techy - https://youtu.be/JrmY0YKXx_A
0

Prototype & Outcome

System Diagram

In this system diagram, we can see how each device is communicating with one another within the Particle API. One device’s tilt sensor is manipulated, which causes that device to send an availability signal to the other connected devices and activate their vibration motors. At this point, the users receiving the signal would have the option to tap on their devices to activate the pressure sensors which would indicate their availability and request acceptance. From there, the API would send an Zoom link via text message to all available users to invite them for a casual socializing break from work. 

Technical Diagram


Prototype: Tilt Sensor

Our process in putting creating our prototype was to get each component working on its own before putting them together. We started with the tilt sensor by getting it to turn on an LED when it was straight up, and turn it off when it was tilted over. The tilt sensor is what would need to be manipulated by a user to send out the first initial of availability. When tilted 30+ degrees, a small, metal ball inside connects the two terminals together. The Serendipicube uses the tilt sensor to trigger an alert to other users - “I’m ready for a coffee break!


Prototype: Vibration Motor

Then, we got the vibration motor working and experimented with the different speeds in order to determine the ideal intensity with which we would want our prototype to shake and sound when it alerted users that a connected acquaintance was available to chat. Output from a small weight motor creates a strong vibration. The Serendipicube uses the vibration motor to actually alert others that a loose acquaintance is ready for a coffee break. 


Prototype: Tilt Sensor + Vibration Motor

We then put the tilt sensor and the vibration motor together on one breadboard and programmed the vibration motor to activate if the tilt sensor’s state was changed to high. The Serendipicube prototype combines the alerting (input) feature of the tilt sensor - user turns over or shakes their cube - with a cube vibration notification (output) to other cube owners. 


Prototype: Form

We wanted the device to take the form of décor that users would want to have placed on or by their desk so we used a hollow acrylic box and wood vinyl to roughly design a small wooden box that would interact well with the vibration motor. Finally, we encountered our biggest challenges at our next steps: networking the devices and timing the vibrations right.


Prototype: Networked Tilt Sensor + Vibration Motor in Box

We wanted the receiving device to vibrate only for a few seconds any time that the signaling device’s state was changed, rather than a continuous vibration only when the signaling device’s tilt sensor was high. With a lot of experimentation and a little bit of help, we were able to prototype two devices that did exactly that.

Serendipicube Prototype

We wanted the device to take the form of décor that users would want to have placed on or by their desk so we used a hollow acrylic box and wood vinyl to roughly design a small wooden box that would interact well with the vibration motor. Finally, we encountered our biggest challenges at our next steps: networking the devices and timing the vibrations right.



Bill of Materials (to be updated with details)

  • Tilt sensor
  • Vibration motor
  • X male/female jumper wires
  • X male/male jumper wires
  • 1K resistor
  • Transistor
  • Diode
0
int motorPin = D2;
int tiltPin = D3;

// This value will store the last time we published an event
long lastPublishedAt = 0;
// this is the time delay before we should publish a new event
// from this device
int publishAfter = 1000;

bool motorTriggeredByOtherDevice = false;

void setup()
{

    // setup the tilt switch
    pinMode( tiltPin , INPUT_PULLUP ); 
    pinMode(motorPin, OUTPUT);

  // We'll want to subscribe to an event thats fairly unique

  // From the Particle Docs
  // A subscription works like a prefix filter.
  // If you subscribe to "foo", you will receive any event
  // whose name begins with "foo", including "foo", "fool",
  // "foobar", and "food/indian/sweet-curry-beans".

  // Basically this will match any event that starts with 'db2018/paired/'
  // This is a feature we'll useto figure out if our event comes from
  // this device or another (see publishMyEvent below)

  Particle.subscribe(  "teampotato/" , handleSharedEvent );

}

int lastTiltState = LOW;

void loop()
{
    // publish my event
    // you'll want some more complex stuff here
    
    int tiltState = digitalRead( tiltPin );
    int speed = 250;
    

    
    if( lastTiltState != tiltState ){
        publishMyEvent();
    }
    
    lastTiltState = tiltState;
    
    
    if( motorTriggeredByOtherDevice ){
        
        for( int i = 0; i < 3 ; i++ ){
          analogWrite(motorPin, speed);
        }
        
        delay( 2000);
        
        analogWrite(motorPin, 0);
    
        motorTriggeredByOtherDevice = false;
    }
    

    // delay for a bit
    delay(100);
}



void publishMyEvent()
{
  // Remember that a device can publish at rate of about 1 event/sec,
  // with bursts of up to 4 allowed in 1 second.
  // Back to back burst of 4 messages will take 4 seconds to recover.
  // So we want to limit the amount of publish events that happen.

  // check that it's been 10 secondds since our last publish
  if( lastPublishedAt + publishAfter < millis() )
  {
      // Remember our subscribe is matching  "db2018/paired/"
      // We'll append the device id to get more specific
      // about where the event came from

      // System.deviceID() provides an easy way to extract the device
      // ID of your device. It returns a String object of the device ID,
      // which is used to identify your device.

      String eventName = "teampotato/" + System.deviceID();

      // now we have something like "diot/2019/paired/0123456789abcdef"
      // and that corresponds to this devices info

      // then we share it out
      Particle.publish( eventName, "data goes here" );

      // And this will get shared out to all devices using this code

      // we just pubished so capture this.
      lastPublishedAt = millis();
  }

}

// Our event handlde requires two bits of information
// This gives us:
// A character array that consists of the event name
// A character array that contains the data published in the event we're responding to.
void handleSharedEvent(const char *event, const char *data)
{
    // Now we're getting ALL events published using "db2018/paired/"
    // This includes events from this device.
    // So we need to ignore any events that we sent.

    // Let's check the event name
    String eventName = String( event ); // convert to a string object
    // This gives us access to a bunch of built in methods
    // Like indexOf()
    // Locates a character or String within another String.
    // By default, searches from the beginning of the String,
    // but can also start from a given index,
    // allowing for the locating of all instances of the character or String.
    // It Returns: The index of val within the String, or -1 if not found.

    // We can use this to check if our event name contains the
    // id of this device

    String deviceID = System.deviceID();

    // device id = 0123456789abcdef
    // event = "diot/2019/paired/0123456789abcdef"

    if( eventName.indexOf( deviceID ) != -1 ){
      // if we get anything other than -1
      // the event came from this device.
      // so stop doing stuff
      return;
    }

    // otherwise do your stuff to respond to
    // the paired device here

    motorTriggeredByOtherDevice = true;

}
Click to Expand
0

Reflection & Next Steps

NEED TO BUILD ON THIS: Reflection and Next Steps: Discuss what you achieved with the project, what you learned about fostering social relationships and what you would do if you took this project forward. Include considerations as well - what should we be careful of (worries, hot button issues, problems for design) in making a connected device (privacy, etc). 200 words max

Learnings 

  • A calm notification is difficult to create.
  • There is fine balance between alerting someone and startling them.
  • The best solution will allow user(s) to intuitively understand how to use device to achieve their goals.
  • LED with light could enhance the experience – using different colors for different teams and people; would also be interesting for design
  • Form factor -> really key decision to understand; given emotional state it should look and feel sturdy
One of the most important reflections we had was on our success in creating an actual serendipitous moment, recognizing that what we thought of as "serendipitous" pre-COVID may now be different and that our task is to really think about what digital serendipity can be. Our prototyped experience is still working towards that goal of happenstance. As part of this exploration, we also would like to think about how to limit the need of the actual user to start the action - how to make it more of a "bump into" moment. The suggestion was made to perhaps use LinkedIn's degrees of separation to have the cube create random interactions with strangers who have reach and connect who have some commonality -- maybe a 3+ degree connection. 

Challenges

  • Prototyping a connected device is difficult when physically distanced.
  • Tilt sensors are very sensitive and can cause unintentional alerts.
  • Vibration motors easily disengage from leads.
  • Neopixel rings are beautiful, but fragile as a light source.

Next Steps

  • Communicate with collaboration tools such as text, Google Calendar, Slack. Microsoft Teams, Whatsapp (use IFTTT, webhooks)
  • Auto populate an invite with Zoom info
  • Light notifications to convey conversation readiness - openness

Bold Vision

Serendipicube has animation abilities!  ~ waving to get user attention (Paper signals)

As of now, we have prototyped the basic tilt and vibrate interactions, but our proposed next steps would be for the devices to communicate with collaboration tools like Slack and Google Calendar and populate Zoom meeting invitations to a user’s preferred messaging system. We would also imagine the addition of a light component on the devices to convey an ambient notification of conversation readiness. An even more ambitious vision would be for the device forms to have animation abilities, like waving to get a user’s attention.


x
Share this Project

Courses

About

An ambient device for acquaintances that presents availability as light and movement in order to encourage casual socialization in remote spaces.