Imagining Physical Computing

Outside of doing a bunch of soldering and wiring and code tweaking, we’ve been asked to imagine applications for physical computing that go beyond the basic tools we currently have access to as students, and even beyond what’s commercially available today.

The idea for this project stems from some thinking I was doing about how we, as humans, communicate. Despite cellphones, text messaging, email, teleconferencing and the like, there’s clearly a tremendous amount of value to physical contact, in all its forms, with other human beings. This is true not just socially but commercially, as evidenced by the continued need for business travel. Nothing closes a deal quite like a handshake. And nothing starts one quite like a handshake, either.

A handshake in itself can tell you a lot about a person. For me, an awkward one isn’t usually a deal-breaker, but it definitely does effect my impression of what comes next.

That initial handshake is usually followed by an exchange of ideas and information, to put it about as dryly as possible. If any of it seems to be leading anywhere, there’s usually a swapping of information about how to get in touch in the future. Maybe a business card, maybe a phone number on a napkin.

For an increasingly large number of people, the contact information they collect is stored digitally, but it’s rarely gathered this way, despite various attempts to make it catch on.

I’d propose that there are a number of reasons for this. First, most solutions are fairly clunky, require both parties to own the same hardware and software, and simply don’t provide any real compelling advantage over more traditional methods. Second, there’s a physicality inherent in the handshake and the card-pass that has some real value. (Admittedly, the latest generation of smart phones provides some examples of attempts to add physicality back into the equation, but they suffer from many of the same downsides as earlier efforts.)

What I’m envisioning is a digital exchange of data that happens silently in the background of a handshake. RFID-enabled rings transmit a unique wearer identifiers to each other. This exchange is only triggered when the rings are in close proximity. Contact information, including location and time of first meeting, is instantly sent to each party’s address book of choice. If this isn’t a first meeting, information is updated and appended as needed.

Now, there are obviously quite a few leaps being taken here, but hey, that’s the point of the assignment. To make this work, and avoid the problems of the earlier digital solutions plus a boatload of new ones, I’m assuming a few things are true. A non-exhaustive list follows.

  • Battery life is not an issue
  • There are well developed, open standards for RFID
  • Various manufacturers use these standards
  • There are well developed, open standards for storing and transmitting contact information
  • Security considerations have been considered
  • Internet access is ubiquitous

With such a system in place, business cards could become a thing of the past, as a seamless transmission of information directly to the place it was needed would occur as easily as humans have greeted each other for centuries. The information transmitted could also be context-specific, eg. when you’re out at a bar, your personal information might be favored over your work number and website.

It isn’t very much of a leap to consider a possible ecology of these sorts of devices, transmitting different information to each other based on the pairings. A ring in proximity to another device embedded in the back of a shirt might transmit data commiserate with a hug. A locket worn around the neck would likely share even more personal information. In this way, the different levels of digital data that each person maintains are mapped to our physical interactions with others in the real world.

I’m not saying this is something anyone would ever buy, or even want, but again, that’s not the point of the assignment. We’ve simply been asked to consider the ways that physical computing could effect our lives and interactions, and I’m perpetually fascinated with the space where the digital world and the physical world interact.

For the purposes of my in-class presentation, I’ve put together a much lower-tech prototype to mock up the interaction. I wouldn’t want all that soldering to go to waste.

Basically, I use an aluminum foil ring and bracelet to close a circuit and tell the Arduino to run a simple function. This function makes some fake “progress” lights turn on, and then sends hard-coded “contact” information to a console on a computer screen. It’s not much, but it helps illustrate the concept and allows me to show off my foil-jewelry making skills.

Imagined Physical Computing demo from Jeff Kirsch on Vimeo.

The basic setup is shown below, sans all-important human participants. I’ll get a circuit diagram up as soon as I get a chance.

Quickly prototyped board for use in class

Quickly prototyped board for use in class

The code running on the Arduino, tweaked almost beyond recognition, but based on a simple example from Getting Started with Arduino is below. It’s scarcely as clean, efficient or well-commented as it should be, but it works for a quick-and-dirty demo.

#define DEL 100
#define LED1 10
#define LED2 11
#define LED3 12
#define LED4 13
// the pin for the LED
#define BUTTON 7
#define BUTTON2 8
int val = 0;
int val2 = 0;

void setup() {
pinMode(LED1, OUTPUT); // tell Arduino LED1 is an output
pinMode(LED2, OUTPUT); // tell Arduino LED2 is an output
pinMode(LED3, OUTPUT); // tell Arduino LED3 is an output
pinMode(LED4, OUTPUT); // tell Arduino LED4 is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
pinMode(BUTTON2, INPUT); // and BUTTON is an input
Serial.begin(9600); // set up Serial library at 9600 bps
}

void loop(){
val = digitalRead(BUTTON);
val2 = digitalRead(BUTTON2);

if (val == HIGH) {
myInfoFunction(1);
} else if (val2 == HIGH) {
myInfoFunction(2);
}
}

void myInfoFunction(int which) {
myProgressFunction();
if (which == 1) {
Serial.println("Rob Faludi rob@example.com 212-555-1212 - SVA IxD Space - September 16, 2009 - 3:02 PM");
}

else if (which == 2) {
Serial.println("Carmen Dukes carmen@example.com 212-555-1234 - SVA IxD Space - September 16, 2009 - 3:00 PM");
}

else {
delay(1);
}

myResetFunction();
}

void myProgressFunction() {
digitalWrite(LED1, HIGH);
delay(DEL);
digitalWrite(LED2, HIGH);
delay(DEL);
digitalWrite(LED3, HIGH);
delay(DEL);
digitalWrite(LED4, HIGH);
delay(DEL);
}

void myResetFunction() {
delay(1000);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
}


About this entry