Interactive Sculpture : Externalizing Data

by anaisafranco in Circuits > Art

1252 Views, 16 Favorites, 0 Comments

Interactive Sculpture : Externalizing Data

Externalizing Data
IMG_3947.JPG
IMG_7957.JPG
IMG_7955.JPG
IMG_7947.JPG
IMG_8099.JPG

Externalizing Data is a sensitive sculpture that performs lights and sound when feeling presence of people.

It was developed during the The School of Machines, 2014 in Berlin. Machines provided by Fablab Berlin.

The music was done by Chicks on Speed.

Modeling the Head

Screen Shot 2015-02-18 at 1.55.34 PM.png
Screen Shot 2015-02-18 at 1.57.56 PM.png

I want a shape that reminds a head. An abstraction of a head.

I first got a 3d model of a human head and modified it to an abstract geometrical, symmetric shape.

I used Meshmixer from Autodesk to edit.

Laser Cutting

Screen Shot 2015-02-18 at 1.59.21 PM.png
IMG_3913.JPG
IMG_3832.jpg

I imported the model to 123d Make and selected radial slices as construction technique.

1st axis: 6

Radial : 18

Then I exported in eps and cut using the laser cut of FabLab Belrin

Controlling Leds Strips With Arduino

Screen Shot 2015-02-18 at 2.14.44 PM.png
Screen Shot 2015-02-18 at 2.12.32 PM.png
IMG_3794.JPG
IMG_3806.jpg
IMG_3916.JPG
IMG_3915.JPG
IMG_3839.JPG
IMG_3931.JPG

The interactive of the piece was done using Arduino, a presence sensor Max Botix (1 x Ultrasonic Range Finder – Maxbotix LV-EZ0) and a Mp3 shield.


1. Controlling leds strip 12v with Arduino:

The leds strips can be controlled by use any power NPN or N-Channel MOSFET, make sure the transistor is rated to be able to pass as much current as you need. For example, since we draw about 0.2Amps per channel per meter, if you have a 5 meter strip you will need to pass up to 1 Ampere per transistor. Get the beefy "TO-220" packages, not the dinky little guys. Make sure they look like this:

For basic, low-cost usage we suggest using N-channel MOSFETs such as the STP16NF06 - they are very popular and inexpensive. If you can't get those, TIP120 are also good but there is more voltage loss in a transistor than in a MOSFET which is why we suggest those first (less heat loss, more light!).

In this project I used 1 TIP120 for each color. The project had 5 colors. So, I used 5 TIP120 in a circuit as the forth image.



Presence Sensor Activate the Led Strips and the Mp3 Shield

HRLV-EZ Ultrasonic Range Finder_200px.jpg
HRLV-AN-Single sensor.jpg
085-AST-300.jpg
10628-01b.jpg
5244a984757b7f993b8b456b.png
hqdefault.jpg
IMG_3934.JPG
IMG_3936.JPG

In this project, the presence sensor Max Botix (1 x Ultrasonic Range Finder – Maxbotix LV-EZ0) activates the led strips and also the mp3 shield.

I connected the presence sensor in the pin number 5 of Arduino and each light was connected in the analog pins A5, A2, A3, A1, A4. The MP3 Shield was just placed above Arduino. I bought a speaker and connected in the jack entrance of mp3 shield.

This is the final code:

#include "Maxbotix.h"
#include

#include

#include

#include

SdFat sd;

SFEMP3Shield MP3player;

int16_t last_ms_char; // milliseconds of last recieved character from Serial port.

int8_t buffer_pos; // next position to recieve character from Serial port.

char buffer[6]; // 0-35K+null

int ledPins[] = {

A5, A2, A3, A1, A4 };

int pinCount = 5;

int timer = 40;

Maxbotix rangeSensorAD(A0, Maxbotix::AN, Maxbotix::LV);

float distancia=40;

void setup() {

initSD(); // Initialize the SD card

initMP3Player(); // Initialize the MP3 Shield

MP3player.setVolume(0,0); //this is to setup volume MAXIMUM. Thanks victor

for (int i = 0; i < pinCount; i++) {

pinMode(ledPins[i], OUTPUT);

uint8_t result; //result code from some function as to be tested at later time.

Serial.begin(115200);

}

}

void loop() {

//-------------------------- NEW CODE FROM HERE

int mp3isplaying=0;

while(1){ // this is the new program loop

distancia=rangeSensorAD.getRange();

Serial.print("cm - ");

Serial.println(distancia);

// if (distancia<200){

if (distancia<150){

if (mp3isplaying==0) {

MP3player.playMP3("track001.mp3");

mp3isplaying=1;

}

for (int i=0; i < pinCount; i++){

digitalWrite(ledPins[i], HIGH);

delay(timer);

digitalWrite(ledPins[i], LOW);

Serial.println("encendido");

}

}

else{

if (mp3isplaying==1) {

MP3player.stopTrack();

mp3isplaying=0;

}

digitalWrite(ledPins[0], LOW); // turn the LED off by making the voltage LOW

Serial.println("apagado");

}

}

}

// initSD() initializes the SD card and checks for an error.

void initSD()

{

//Initialize the SdCard.

if(!sd.begin(SD_SEL, SPI_HALF_SPEED))

sd.initErrorHalt();

if(!sd.chdir("/"))

sd.errorHalt("sd.chdir");

}

// initMP3Player() sets up all of the initialization for the

// MP3 Player Shield. It runs the begin() function, checks

// for errors, applies a patch if found, and sets the volume

/ stero mode.

void initMP3Player()

{

uint8_t result = MP3player.begin(); // init the mp3 player shield

if(result != 0) // check result, see readme for error codes.

{

// Error checking can go here!

}

//MP3player.setVolume(volume, volume);

//MP3player.setMonoMode(monoMode);

}


Laser Cutting the Skin for the Project

IMG_3946.JPG
IMG_3944.JPG
IMG_3943.JPG
IMG_3942.jpg
Screen Shot 2015-02-18 at 2.58.01 PM.png

The last step was to build a skin protection for the project.

I cut various shapes in the laser cut and fixed them all together.

First I prototyped using paper to get in the better shape for the several cuts.

The result is what you can see in the images