Monday, April 14th, 2008
Path-o-Logic is an interactive navigation system for museums, trade shows, conferences, and large exhibitions at which the user has a finite amount of time to visit many works, booths, and tables. Path-o-Logic divides large areas into smaller spaces to ease the burden of being inundated by content at a large space. Each space, or “zone,” contains an interactive kiosk where the user places a RFID-equipped paper map (velum, actually) onto a touchscreen, transforming the paper map into the GUI, giving the user an artifact that they are free to mark up however they like and take with them to other kiosks in the space.
A RFID reader identifies the user as unique. Using Java’s serial library the tag is read, and a PHP script is called to enter the tag’s ID into a MySQL database so that the user’s choices will be remembered at subsequent kiosks. The working prototype used at the 2008 ITP Spring Show asked the user to select a project category. The software would display dots on the screen signifying each project’s location within the current zone, and the user could draw his or her own path directly on the map. When the user exited the zone (an area determined to contain the proper amount of projects to ask a user to interact with) another kiosk was strategically placed on the border of the next zone. The next kiosk suggested projects to see within its zone based on previous choices made in other zones. The system received very positive feedback and users were pleased with the ease of interaction and especially the artifact in the physical map.
- Conceptualize a navigation system to benefit trade shows, conferences, museums and large exhibitions
- Develop dynamic software that can easily be adapted and reused.
- Software built with Java and Processing
- Networked system achieved with PHP/MySQL
Map with RFID Tag
P = kiosk location

Interaction Plan

Posted in Networked Objects, Physical Computing, Universal Design | No Comments »
Monday, March 3rd, 2008
For our most recent Networked Objects assignment, we were asked to log data to a database on Sensorbase, as an exercise to bring information from the physical world to the Internet. Xiaoyang and I decided to log the activity of a garbage can and a recycling bin, located side by side in a busy area of the ITP floor. A switch was installed on each, and every time the lids moved, the circuit was disconnected, sending a 1 to the database. We plan to make a physical representation of this data, but we are working on a metric that gives us a fair assessment of the activity of each, ie what is the proper ratio of recycling to garbage. We may also hook up switches to more bins on the floor to study which are being used, which are not, and which could be moved or removed.
We set it up like this: one XPort was wired to a breadboard which was connected to an Arduino. The Arduino code sends 0s and 1s via a PHP request via the XPort to a PHP script online that signs into our Sensorbase account and logs the info. Here are some pictures of the result.



Posted in Networked Objects, Physical Computing | No Comments »
Tuesday, January 29th, 2008
This monkey is a cult favorite from woot.com. It is essentially a slingshot in the form of a cute, lovable monkey. When you launch it, a device in its stomach screams. I decided that this wasn’t good enough. I wanted to give it some character; something more along the line of the jaded, chain-smoking, circus monkey. This required several parts: a monkey, an Arduino, a Piezo pressure sensor, and a Processing program to interpret the serial data from the Piezo and play the voices. I needed quite a bit of wire between the monkey and the Arduino to allow it to fly. Clearly this project would be much better served by a wireless interface, which will come later.
The Processing program works like this: The monkey says one of three random phrases with each sensor reading to give the illusion of spontaneity. There are thresholds in the code that make the monkey yell louder depending on how hard he hits a surface.
Since the voice comes out of the computer instead of the monkey itself, there is a bit of detachment that takes away from its realism. Another application of this monkey is wiring the entire body with sensor and tracking which body parts are hit during his flight to track injury.




Processing Code:
[sourcecode language='java']
import processing.serial.*;
import pitaru.sonia_v2_9.*;
Serial port;
int input;
Sample asshole;
Sample shithead;
Sample dick;
Sample[] phrases; //collection of monkey sayings
int val;
float volume = 2;
int index;
boolean firstContact = false;
void setup() {
size(256, 256); // Stage size
noStroke(); // No border on the next thing drawn
//the sound code
Sonia.start(this);
asshole = new Sample(“asshole.wav”);
shithead = new Sample(“shithead.wav”);
dick = new Sample(“dick.wav”);
phrases = new Sample[3];
//these are the random phrases the monkey will say.
phrases[0] = asshole;
phrases[1] = shithead;
phrases[2] = dick;
// Print a list of the serial ports, for debugging purposes to find out what your ports are called:
println(Serial.list());
port = new Serial(this, “COM5″, 19200);
port.write(65); // Send a capital A in case the microcontroller is waiting to hear from you
println(“Let’s do this!”);
}
void draw() {
background(255);
if (firstContact == false) {
delay(300);
port.write(65);
}
}
//stop Sonia upon shutdown
public void stop(){
Sonia.stop();
super.stop();
}
void serialEvent(Serial port) {
if (firstContact == false) {
firstContact = true;
}
input = port.read();
if (input != 0){
println(“Raw Input: ” + input);
val = input;
}
index = int(random(0,3));
println(index);
if (val > 40 && val < 80) {
volume = 2.0;
} else if (val > 80 && val < 120) {
volume = 6.0;
} else if (val > 120) {
volume = 10.0;
}
phrases[index].play();
}
[/sourcecode]
Posted in Networked Objects | 1 Comment »