I Just Wanna Hold Your Hand

Conducting energy through people to stimulate tangible public interactions
http://ijustwannaholdyourhand.com/
http://vimeo.com/56350598I just wanna hold your hand
What did we do?

We put together an Arduino, some wire, a Mac mini and a DLP Projector, then created a pair of hands out of aluminum. We additionally 3D printed some wall plates that resemble light switch plates, but instead of holding an on/off switch they are precision matched to the hands that we created on the waterjet at TechShop SF.  The hands activate a projected display with intriguing colors.  However, they could have many other uses.Why did we do it?

This was an idea that bubbled up in the pitch night for UPSF.   Tosh Chiang introduced this idea to the audience and the rest of us just couldn’t help it, either because we loved the idea or we wanted to hold hands with Tosh.  It’s hard to say, but we all ended up at the table and in one fabulous weekend fabricated the 1.0 version of what you’re undoubtedly going to improve upon when you bring this to your town.

Why do you want to do it?

We believe that this project can activate “dead” city spaces.  Imagine starting a public fountain, municipal artwork, or other public energy-consuming installation by holding hands!  Also, we like sending electricity through people.

Electrocution, really?

No, well, kinda!  We send 5 volts from the Arduino to the hands.  When two or more bodies complete the circuit, electrons flow through the bodies and are then received by the Arduino.  The Analog to Digital Conversion of the Arduino then measures the flow against 1 volt and outputs a data stream.  This figure varies depending on the quality of hand holding, as well as the conductivity of the individual(s). Processing then compares the data and outputs a graphical, aesthetic display, based on threshold values within the code.

So, really, why?

The technology behind this project is very simple, but the social outcome is nuanced and complex.  Is it odd to hold hands with a friend or stranger?  How will that experience create memories or even trigger communities?  Does it make the moment more tangible?  On top of this, there are no moving parts to the interface; there are no buttons to break.  So long as the unit is powered, it will work!

Who are We?

We met at the UP makeathon.  This project was conceived in a night, and fully executed 48 hours later! http://sf.urbanprototyping.org/projects/i-just-wanna-hold-your-hand/

Yael Braha: Hand Holder + Processing Hacker + Visual Designer http://www.yaelbraha.com/

Tosh Chiang: Hand Holder + Arduino Hacker + Concept http://www.imlichenit.com/imlichenit

Melody Donoso: Hand Holder + Visual Design

Ellen Keith: Hand Holder + Visual Design http://ellenkeith.com/

Jasdeep Garcha: Hand Holder + Sound Engineer + Programmer http://www.iamjasdeep.com/

Marc Roth: Hand Holder + Fabricator https://twitter.com/TheITSystem

*IF YOU HAVE PROBLEMS WITH OUR INSTRUCTIONS, CONTACT US AND WE’LL HELP YOU OUT!
http://ijustwannaholdyourhand.com/

Step 1: Bill of Materials

Hardware:
1) Arduino (any board will do, we had a MEGA)
2) Computer (we used a mac mini)
3) Projector
4) Small PC speaker (ours came from a street fighter 2 arcade!)
Software:
1) Processing
2) Arduino Compiler
3) FTDI drivers (just in case)
Stock:
1)  An Aluminum Sheet, or other conductive metal.
2)  20-50 feet of 18AWG wire
3)  Double-sided tape
4)  A 4″x6″ project box (not necessary, but it keeps it neat!)
5)  Zener Diode x2
6)  20K resistor x2
7) Breadboard
Machinery:
1)  Water-Jet Cutter
2)  3D printerTools:
1)  Precision screwdriver
2)  Wire strippers
3)  Wire Cutters
4)  Scissors

Step 2: Program and Configure Arduino Circuit

Assemble the Circuit:
1)  Take the Zener Diode and the resistor and hook them up on the breadboard according to the diagram.  For now, just use bare wires to represent the hands.  Initially we used 25k potentiometers instead of the single-value resistor.  This allowed us to “dial-in” our signal level.2)  The Schematic shows only 1 pair of hands.   To do two, simply duplicate the circuit, but have R1 & D1 connected to A1 on the Arduino.****these next two steps are optional, but help with debugging.  SO YOU BETTER DO THEM.3)  Hook-up an LED to pin 13 (don’t forget to observe polarity…anode to the Arduino, cathode to ground)4)  Hook-up the PC speaker to pin 12 (the other end to ground)

5)  Download our code with the pitches file. https://www.dropbox.com/sh/46k9dfd1oh0s4v1/8ceVhL8zjN

github too (includes processing code too): https://github.com/ijwhyr/ijwhyr

6)  Open the code (hands_sound_integrate2b.ino) in the complier and check that the “analog Reference” line matches your Arduino.  We set it to 1 volt.  Make sure that pitches.h is included in the same folder too.

7)  Now open the serial monitor in the compiler.  Everytime the bare wires touch, you should hear a beep, and the led should light up!  If you hold the wires, you should also get non-zero readings.  Hopefully the tighter you hold the wires, the higher the numbers!

***optional
8)  Modify a project box to hold the Arduino and breadboard.  This makes set-up a snap!

pasted code:

/***************************
by Ellen Keith, Yael Braha, Marc Roth, Tosh Chiang and Jasdeep Garcha
for SF UP festival 2012
***********************/

#include “pitches.h”

///audio
int melody[] = {
NOTE_E5, NOTE_B6};
int melody2[] = {
NOTE_F5, NOTE_C6};
int noteDurations[] = {
8, 8, 2};

//sampling and io
int pairOne = A0;
int pairTwo = A1;
int led = 13;
int aOut = 12;

//the rest

int triggerThresh = 50; //sets the trigger foroutput
boolean stopMusic = true;
int countOut = 0;

void setup() { //configures inputs and outputs

Serial.begin(9600);
pinMode(pairOne, INPUT);
pinMode(pairTwo, INPUT);
pinMode(led, OUTPUT);   //on arduino
pinMode(aOut, OUTPUT);
}

void loop() {

int handShakeReadFinal1;//for final
int handShakeReadFinal2;
analogReference(INTERNAL1V1); //command varies between arduinos
//  analogReference(INTERNAL);
// read the input on analog pin 0 and 1:
int handShakeRead1 = analogRead(pairOne);
delay(10); //resample pin 0!
int handShakeRead1b = analogRead(pairOne);
int handShakeRead2 = analogRead(pairTwo);
delay(10); //resample pin 1!
int handShakeRead2b = analogRead(pairTwo);

//output value only if both samples are greater than threshold and non-zero
if (handShakeRead1 > triggerThresh and handShakeRead1b > triggerThresh){
handShakeReadFinal1 = handShakeRead1;
}
else
{
handShakeReadFinal1 = 0;
}

if (handShakeRead2 > triggerThresh and handShakeRead2b > triggerThresh){
handShakeReadFinal2 = handShakeRead2;
}
else
{
handShakeReadFinal2 = 0;
}

//print values to serial port
Serial.print(‘A’);
Serial.println(handShakeReadFinal1);
Serial.print(‘B’);
Serial.println(handShakeReadFinal2);

// delay(50);

//audio

if(handShakeReadFinal1>triggerThresh || handShakeReadFinal2>triggerThresh)
{
digitalWrite(led, HIGH);
if (stopMusic) {
tune();
}
}
else
{
countOut = 0;
stopMusic = true;
digitalWrite(led, LOW);
//delay(1000);
}
}

void tune(){
for (int thisNote = 0; thisNote < 2; thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
tone(aOut, melody[thisNote], noteDuration);
delay(noteDuration +30);
}
stopMusic=false;
}

Step 3: Integrate Arduino and Processing

I just wanna hold your hand schematic

Download the Processing sketch:  

1)  Close the Arduino compiler program.
2)  Download the processing sketch https://www.dropbox.com/sh/hexeeougg5dulqz/PiA8MbIqz0
github link: http://http://https://github.com/ijwhyr/IJWHYR

3)  Open the code in processing (UPanimation.pde)….”personalizedFunctions.pde” should be in the same folder.
4)  Ensure the Arduino is hooked-up via usb to your computer
5)  Ensure that the processing line with “myPort = new Serial(this, Serial.list()[0], 9600);” is correct, where  Serial.list()[0] is your serial port.  For us it was usually 0, but sometimes it was 1.  This is the port that talks to your Arduino.  You’ll get an error if this is not configured.
6)  Run the sketch.  Hopefully, whenever you touch the bare wires, you’ll see changes on the screen.
7)  Note the if-then-else structure of the Processing code.  You can edit this to make different RGB color blooms or add more thresholds to get a larger span of colors…

 

Read more: I just wanna hold your hand


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top