Introduction: Interactive Sculpture : Heart Dialogue

About: Anaisa Franco, 1981. In 2014 she got the Edith Russ Haus prize for emerging new media artists and got Emare-Eman prize to do a residence at Creative and Cognition Studios in Sydney and she also did a residence…

Heart dialogue is a sensitive object that follows the heart beat of the person who places its finger on it. The piece aims to bring closer the heart beating to the user. Our heart is beating 24 hours a day and is what make us alive. The piece is a way to materialize and bring to life this simple but indispensable life pulse.

The piece was done with modeling an abstraction of a human heart, laser cutting it, electronics including pulse sensor, El Escudo Dos Shield, Arduino and EL WIRE color red.

I am going to show step by step pf the development of the piece during Interactivos Birmingham Seminar. Responsive and immersive future technologies at MAC, Birmingham, UK. Collaborators: Pablo Ripollés, Shamin Miah, Arron Moore.

Step 1: 3D Modeling a Abstraction of a Heart

First I downloaded a 3d human heart model from the internet for free. Then I modified it using Meshmixer software from Autodesk.

I created the shape I wanted and with the size to fit all the electronics inside.

Step 2: Laser Cutting the Shape

I sent the model to 123d Make and selected Stacked Slices as construction technique and sent to cut in the laser cut using 2 plates of MDF 3mm.

I glued it in 2 parts up and down to be able to insert electronics inside after all. I used wood white glue.

Step 3: Electronics : Pulse Sensor, Arduino, El Escudo Dos Shield and EL WIRE

The piece is using one pulse sensor to pulse 30 meters of EL WIRE lights. Each 15 meters is connected to a pin of Arduino and they pulse as the heart L with 2 pulses.

First we were soldering the EL Escudo dos shield in the Arduino using the head pins in the picture number 3 above. Each pin of the EL Escudo Dos shield could power maximum of 15 meters of EL WIRE. When you buy El wire make sure that they come with the small head pin connector, which is the same as the El Escudo Dos Shield. We programmed the lights first and then we added the pulse sensor.

Second we connected the pulse sensor on pin number 13 of Arduino.

When all the interactivity were done, I encircled the El wire around the wood shape gluing it with hot glue.

Observation: We tried to connect 2 mini servo motors but it didnt work. There was too many vibrations in the motors when they worked together with pulse sensor.

Code:

unsigned char pin = 13;
unsigned char counter=0;

unsigned int heart_rate=0;

unsigned long temp[21];

unsigned long sub=0;

volatile unsigned char state = LOW;

bool data_effect=true;

const int max_heartpluse_duty=2000;//you can change it follow your system's request.2000 meams 2 seconds.

//System return error if the duty overtrip 2 second.

void setup()

{

pinMode(pin, OUTPUT);

Serial.begin(9600);

Serial.println("Please ready your eat clip.");

delay(500);

array_init();

Serial.println("Heart rate test begin.");

attachInterrupt(1, interrupt, RISING);//set interrupt 0,digital port 2

}

void loop()

{

digitalWrite(pin, state);

}

void sum()//calculate the heart rate

{

if(data_effect)

{

heart_rate=120000/(temp[20]-temp[0]);//6*20*1000/20_total_time

Serial.print("Heart_rate_is:\t");

Serial.println(heart_rate);

}

data_effect=1;//sign bit

}

void interrupt()

{

temp[counter]=millis();

state = !state;

Serial.println(counter,DEC);

Serial.println(temp[counter]);

switch(counter)

{

case(0):

sub=temp[counter]-temp[20];

Serial.println(sub);

break;

default:

sub=temp[counter]-temp[counter-1];

Serial.println(sub);

break;

}

if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty

{

data_effect=0;//sign bit

counter=0;

Serial.println("Heart rate measure error,test will restart!" );

array_init();

}

if (counter==20&&data_effect)

{

counter=0;

sum();

}

else if(counter!=20&&data_effect)

counter++;

else

{

counter=0;

data_effect=1;

}

}

void array_init()

{

for(unsigned char i=0;i!=20;++i)

{

temp[i]=0;

}

temp[20]=millis();

}

Step 4: