Physical Computing and Computational Media – Final Project
Armanda Lewis, Cynthia Hilmoe


The Project Experience:
A great learning experience. Though it may seem straightforward from the outside — a box with some switches that activate lights, mechanical sounds and text — the project involved some tricky coding and persnickety circuitry. Considerable debugging made me a more confident “coder” and more experienced in physical computing. The project was a worthwhile effort that kept me headed towards my desired level of competency.
What is it?
The Toy Emissary is a felt-covered box with switches and buttons that tempt the curious. The Toy delivers messages displayed on an adjacent screen; makes noises and lights LED. Messages entered from an accompanying keyboard by one person are retrieved by another person by playing with the switches in combination. The recipient can pass text back by doing the same thing.
Motivation Behind Making the Object:
This is the beginning of an exploration into how interactive media can be used to help engage and empower communities or individuals faced with solving ambiguous, complex or contentious/divisive issues. The idea is to provide a playful environment where conversations, imagination and out-of-the-box thinking is stimulated among people with diverse interests. The goal would be to create common ground, build trust and a sense of hope and unity as a precondition to tackling the difficult issues. The objects and their installations would provide the platform for sharing stories, images and information that daylight implicit values and investments that transcend differences within a community.

This sketch offers some examples of how they might be deployed: Community Bulletin Board made of hook material holds Sticky Balls borrowed by community members like library books. Mobile Kiosk for County Fairs and other public gathering spaces. Traffic Light Post Wheels (mechanism like a zoetrope or slot machine cylinder).
Project Scope:
In this project, we tested the idea of passing information between two people using a Toy Emissary. We postponed user testing until code and circuitry could be fully debugged.
Precedents and Inspirations:
Table toys: observations illustrate the effect these toys have on interactions between people and individuals of all ages— stimulate playfulness, imagination, outside-the-box thinking and unsolicited mingling and conversation.
Cultural: Message in a bottle; couriers (in ancient times, the very personal wax-sealed parchment);
Yellow Bike Movement: Publicly placed bikes that circulate freely. Community trust; investment and empowerment; word of mouth. http://www.ibike.org/encouragement/freebike-details.htm
Community Design Team experience: observations illustrate the power of hyperlocalism design initiatives.
Stationary Information Kiosks: Interest in making functions mobile.
Challenges, Research and Experimentation:
Observation:
Before making this object, we observed the effect of randomly distributed table toys within a public environment. People easily approached the objects. Handling the toys, people gave them names, making them their own in a way. Typically, people turned to others nearby to share their amusement with the toy. While the conversations were initially about the toys, people soon were associating the experience with their dreams, aspirations and beliefs. People replied with encouragement, prompting the person to troubleshoot life’s obstacles.
Feedback:
Before making the object, we posed a set of questions to test the concept. People agreed that human communication, especially concerning difficult topics, could be helped by intervening objects. One person recounted a story in which he printed a message to someone to a printer, emailed the person to pick up the printout and bring it to him, knowing full well that she’d look at the contents. It worked like magic. Other people suggested the Toy Emissary could be used as a joke or Mad Lib box or in counseling and therapy.
Circuitry:
A goal of the project was to provide an intriguing complement of switches and playful responses as curiosities. Because analog switches proved persnickety and complicated the Processing side of the code, we focused on digital switches. We built a copper mesh and snap switch and included buttons. We abandoned flex sensor after reviewing information about resistance response on the ITP Sensor wiki. We tried alternate power sources (9V, 12V) and researched transistors trying to remedy inconsistent performance.
Computer Programming:
We decided that Arduino would manage the sounds and LEDs in response to turned switches and Processing would deliver the text in response to sequences of changes in switch state. We faced two main challenges in programming the box as we intended:Keeping track of the change in switch state;Remembering the sequence of changed switch states.
Click here for links to the code: Combination Lock Code, In-Unison Code, TestCount.
Combination Lock
In-Unison
TestCount
Initially, we talked about using switch patterns based on order (combination lock) and unison (simultaneous). We knew from the feedback we received to avoid interfaces that might frustrate the user. However, we also wanted to rely on chance as much as possible without hard coding the experience within a narrow range since users would experience the box multiple times.
Armanda initiated code for these two sequencing frameworks. In the process, I focused on developing code for keeping track of the switch state, debugging the Processing code with the circuitry and tweaking the Arduino code to provide playful feedback using mechanical sounds and LEDs.
At this time, the combination lock code works with our prototype circuitry and the in-unison code works with our final box circuitry. We prefer the combo lock code. The in-unison code is awkward; some of the switches are hard to hold down at the same time as others. Ongoing troubleshooting is a bit ambiguous. For some reason, Processing is not receiving the sensor values from Arduino in the combo lock version. Using serial.print/DEC and the serial monitor, we have verified that Arduino is reading the values. The box switches activate the electronic outputs managed by Arduino. Two different Arduinos have performed the code successfully using the prototype circuitry. The code, both Arduino and Processing work with a prototype circuitry. The problem may lie with serial communication code. I will continue to play with the circuitry, too.
While looking for the best way to keep track of change in switch state and remembering switch state sequence, I also tested an edge detection counting method. Edge detection for simple counting code didn’t appear to accommodate multiple switches operating fewer outputs. I looked at Shiffman’s Example 9.5, Snake following Mouse as an interesting template for keeping track of the sequence of changed states in a way that relied less on hard coding for the text response. Boolean variables seemed like a complementary option for tracking the change in switch state. Time prevented full investigation into these options.
Armanda developed a text entry interface built in JAVA, which we ultimately abandoned in favor of building our own in Processing. We both worked on various versions of reset code based on counting groups of changes in switch state.
Lessons Learned
Pseudo Code helps communicate intentions between partners as well as develop code.
Seek continuity in help received to avoid being pulled in too many directions because of reinterpreted goals or preferences in coding approach.
Ohms Law points in the right direction, but is not necessary accurate.
Future Directions:
Untether:
Incorporate XBees in order to operate the objects in the field remotely, enabling information/content updates and collection and to make the “objects” (users) talk to each other.
Incorporate serial LCD monitors and keypads to untether from laptop computer.
Power Source: Incorporate sustainable off-grid sources for remote maintenance and operation.
Interface:
Aesthetics and Design of the Object: Make more audience specific. The soft cover makes people think the object is more for children than adults. Size and shape the object for easy handling. Make the object more “poetic.”
Text Entry Interface: Develop better instructions. Revise code to pop up instructions to recipient for how to reply.
Templates or Text Display Choices: Create templates or radio buttons or drop down menus to provide user with formats, text animation and attributes consistent with the intention of the message. Some suggested uses: Community Engagement. Psychological therapy. Mad Libs and Jokes. Sharing tender or difficult feelings. Congratulatory or Thumbs Up.
Coding and Operation:
Make the object response more sophisticated. Right now the text response from the object is somewhat hard coded using switch combination lock or in-unison language. Investigate how chance might be incorporated in a more sophisticated way without frustrating the user. Continue to explore edge detection, Boolean variables and arrays.
Modify Processing code to accommodate analog switch data.