networked objects week.01 | PROJECT:

moonwalkers

For this week’s project we chose from a list of three simple parameters: ACTIONS/THINGS/RESPONSES.

My respective choices:
-dancing
-sneakers
-music

The initial idea involved a pair of old sneakers, repurposed, to dynamically manipulate a sound file.
Basically I wanted to build shoes that would BOOM! when you walked. The louder you stomp the louder the BOOM! In a sense — “giant” shoes.

The two FSR‘s I was working with broke at the eleventh hour, and the trouble-shooting that insued, reinvented the project for me.

The Input:

Using my believe-it-not-only-about-a-year-old Saucony’s, the first step is deciding on the connection between the sensors and the microcontroller. (As a side note, my professor, Tom Igoe has switched to using the Arduino programming interface ove the PIC when teaching this and other physical computing courses). Since the original FSR’s I used were resistors and not potentiometers, I only need two lead wires connecting the sensor to the Arduino board. I know I want to keep the functionality of the shoes intact when not in use as stomping around like a giant (and eventual moonwalking awesomeness), so a detachable connection is a must. I originally thought of using CAT5 cable for it’s low cost, but then I realised i had fifty quarter-inch connectors sitting around from a project that went a different direction. It also compliments the theme of music and dance nicely.

tip: don’t use a drill press to drill through shoes.

I’ve embedded the jacks in the shoes after carefully drilling through the material using a hand drill and a utility knife. The tricky part is making sure the thickness of the sole is enough to entirely embed the jack, and still be able to lay the insole back into the without the jack digging into my heels. I made sure the jacks fit right before I solder up my sensors.

Since my FSR’s kicked the bucket, I’ve decided to use simple photocells – or photo-resistors, since they’ll give me the same analog values that I need. It is amazing how a simple logistics change such as this can change the course of the project so drastically. Now, since I can no longer measure the force of the foot coming down, I am going to have to measure basic distance from the ground, based off the “brightness” values I will get from the photocell. Because of this, I won’t be able to change the volume of the “giant” sounds, so I’ll have to switch to a different mapping of values. Well…what about moonwalking.

The basic assumption is, on a very small scale (about one foot), barring my presence on a light up dance floor, the further my foot is off the ground, the larger the values I will see coming in. This is what will determine whether I am actively moving, which is now what I am looking for over force. Having worked with photocells before in other projects such as Relay1 and Relay2, I feel confident the little variable resistors will work well embedded in the heels of the shoes.

The process is simple enough. I’ve used nails to make a sort of pilot hole in the rubber and then pass the two legs of the photo cell through to the inside of the shoe. I’ve also “counter-sunk” the sensors in the sole so the surface of the photocell doesn’t get damaged by my walk to the disco.

Solder up some leads connecting the photocell to the jacks, make sure I’ve got nothing poking out, slap the insoles back in and my moonwalkers are kickin! now for the fun stuff — how do I control Billy Jean?

The Brain:





I didn’t want to spend too much money on a one week prototype, so the Nestle’s Quick box I found laying around was a literal sweet find. Stylin’ and protective the box proves a durable and cute housing for my Arduino and bread board.





A couple of holes for the 1/4″ jacks and one for the USB out and I’m ready to start programming.






Like I said, I’m in Arduinoland now. Similar to Processing in evvironment and syntax, it’s an easy pick up for a beginner like myself. It doesn’t hurt that I’m only doing an analog in reading.

here’s the code:

#define leftLed 13
#define rightLed 12
int leftShoe = 2; // select the input pin for the shoes
int rightShoe = 3;

void setup() {
pinMode(leftLed, OUTPUT);
pinMode(rightLed, OUTPUT);
Serial.begin(9600);
}

void loop() {
int serialVar1 = analogRead(leftShoe);
int serialVar2 = analogRead(rightShoe);
if(serialVar1 > serialVar2){
Serial.print(serialVar1, BYTE);
}else{
Serial.print(serialVar2, BYTE);
//Serial.print(“\t”);
}

if(serialVar1 > 100){
digitalWrite(leftLed, HIGH);
}else{
digitalWrite(leftLed, LOW);
}

if(serialVar2 > 100){
digitalWrite(rightLed, HIGH);
}else{
digitalWrite(rightLed, LOW);
}
}

easy as pie. This gives me some nice scalable int’s into MAX. It turn out that most people use MIDI to communicate in MAX. Well, it turns out that serial isn’t so bad either. So long as your send the values from the boArduino in BYTE format, you’ve got some happy patches.

It also turns out that Michael was right, Billy Jean is not my lover, and neither, I thought was MAX. For some reasons beyond my control and other well within my control, I was unable to read serial data in to Processing. I was also unable to read serial data into Java…and Isadora. I just want to dance, and these already i’ve exhausted the three programmng languages I have become comfortable authoring in. It’s time to turn to MAX/MSP. As a first time MAX user, I am already somewhat comfortable using the graphical programming environment I’ve grown used to in Isadora. However, the project has a short deadline and I am finding it inefficient to troll through every help page. GabeBC and Chris Kairalla (both somewhat newbies to MAX themselves) came to the rescue with a few examples to help me out. With my new MAX skills I’m able to format the data to give reliable foot action reading and damned if I’m not moonwalking everywhere I go.

The MAX patch basically loads a file (in this case Michael Jackson’s ‘Bad”), then scales the volume and speed relative to the values it sees coming in from the Arduino, and subsequently, the shoes.

The result: hot.

Here’s a screen shot of the simple patch:


Picture 1.png

The Output:

watch that hot little clip one more time.