Sensory Booth — Preservation tool
Connected Historical Preservation with new IoT technologies.
I am a student at Columbia University in the GSAPP Department. I am studying Historic Preservation to help in preserving, conserving and protecting significant historical buildings. I chose to participate to the “Measuring the Great Indoors” module lead by Gabrielle Brainard and Violet Whitney as this class is relative to my thesis topic: “Designing and Evaluating Sensory Technologies for Interpretation of Heritage”.
This course allows me to have a new approach of the architectural space by using IoT tools, and it was also a wonderful occasion to link Historic Preservation with technologies.
Historic Preservation is a field mostly turn toward the past and it is our duty as new generation to bring our profession to the future, and then improve our methodologies.
Along this courses I experimented some approach related to stained glass preservation first and I decided to enlarge my subject and create a Sensory Booth ! What is a Sensory Booth ?! Let’s go discover this together !
From the beginning I had some ideas in my mind about what I wanted to do during this class. Some about architecture and design, some about technologies and some about preservation. It was not a small feat to organize all these idea in a unique project.
I thought about “How influence people behavior to help Historic Preservation ?” So, I decided to identify the key point of what I want in my project and their definition according to expert opinion. I identified 3 main subjects :
Cultural heritage awareness: According to the “UNESCO World Heritage in Young Hands, 2002" one of the objectives of preservation is to promote intercultural understanding and exchange among young people, to promote an awareness of the importance of the World Heritage Convention and to involve young people in World heritage conservation.
Protection: the protection of cultural heritage property shall comprise the safeguarding of and respect for such property. (UNESCO’s Convention for the protection of Cultural Property in the Event of Armed Conflict with regulations for the execution of the convention, 1954)
Maintenance: consist of regular inspections of a monument or a site and may involve small-scale treatment. (Conservation Management Planning : Putting Theory into Practice, The Case of Joya de Ceren, El Salvator — Getty Conservation Institute 2009)
According to these definition the expected behavior change should be to:
- Create Awareness sentiment
- Avoid mass tourism
- Help in the maintenance
My inspiration for the sensory booth :
(stained glass reflection, awareness, create a intimacy space, an experience, involve all senses, have feedback about the experience to improve it)
How it works ?
Even if this box seems small, it’s bigger on the inside!!! (Doctor Who, 2005)
This box involve Sight, Hearing and smell using diffuse, project and speaker which are connected to motion detection and turn on when you enter in the box to recreate fully atmosphere ! Box also contain variety of captor (lightness, color, temperature, humidity) to be use as well as maintenance tool as data collector.
Finally you can leave you feedback using connected interface! (and its only the beginning!)
Well Well Well… I designed my prototype, programming arduino and processing, create all my IFTTT Applet and install all the Connected devices and build the box.
It’s Exhibition TIME !!!
I organized an Exhibition 18th November in Room 504 in Avery. Everyone was welcome to try the box and share comment around pizza slices.
It was an amazing experience full of surprise and rich of feedback ! Arround 40 students mainly from architecture studio came, intrigate by this curious red box (first challenge success !) They tried the experience and give me their feedback.
Please find below the user experience process :
Visitors Feedback
During the November 18th exhibit, around 40 people tried the sensory booth and I collected 32 digital feedback available on Google Drive and 23 manuscrit feedback (as show below).
I analyse feedbacks with paralleldot API and it seems that people appreciate a lot sensory booth ~62% positive vibes !
I used these feedback to know how to improve my project.
One of the recurrent criticisms in the comments is that the box is not isolated enough, therefore, outside noise interferes with immersion. To fix this I decided to used headphone to isolate visitor from the exterior noise.
I really appreciate to work on this project and I would like to go deeply in this experience, however one semester is not enough.
Nevertheless I would like to share with you my ideas:
Annexes
Code Arduino
/*
// TCS230 color recognition sensor
// Sensor connection pins to Arduino are shown in comments
Color Sensor Arduino
— — — — — — — — — —
VCC 5V
GND GND
s0 8
s1 9
s2 12
s3 11
OUT 10
OE GND
*/
// Color Sensor TCS3200
const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
// Ultrason telemeter
const int trigger = 7;
const int echo = 6;
int dist;
//Button
const int b1 = 2;
const int b2 = 3;
const int b3 = 4;
const int b4 = 5;
const int b5 = 6;
const int b6 = 7;
// Variables
int red = 0;
int green = 0;
int blue = 0;
void setup()
{
Serial.begin(9600);
//Setup Color Sensor TCS3200
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, LOW); //Setup Ultrason Telemeter
pinMode(echo, INPUT);
pinMode(trigger, OUTPUT);
//Setup Buttions
pinMode(b1, INPUT);
pinMode(b2, INPUT);
pinMode(b3, INPUT);
pinMode(b4, INPUT);
pinMode(b5, INPUT);
pinMode(b6, INPUT);
} void loop()
{
//color();
//distance();
Serial.print(red, DEC);
Serial.print(“;”);
Serial.print(green, DEC);
Serial.print(“;”);
Serial.print(blue, DEC);
Serial.print(“;”);
Serial.print(digitalRead(b1), DEC);
Serial.print(“;”);
Serial.print(digitalRead(b2), DEC);
Serial.print(“;”);
Serial.print(digitalRead(b3), DEC);
Serial.print(“;”);
Serial.print(digitalRead(b4), DEC);
Serial.print(“;”);
Serial.print(digitalRead(b5), DEC);
Serial.print(“;”);
Serial.println(digitalRead(b6), DEC);
delay(100);
} void color()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
//count OUT, pRed, RED
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
//count OUT, pBLUE, BLUE
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
//count OUT, pGreen, GREEN
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
void distance()
{
digitalWrite(trigger, LOW);
delay(2);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dist= pulseIn(echo, HIGH) / 60.0;
}
Code Processing
import http.requests.*; // import from the library (tool box) to send a request to IFTTT (part ‘This’)import processing.serial.*; // import library to communicate with Arduino// Define some parameters to communicate with Arduino
Serial myPort;
int port = 1;float RED;
float GREEN;
float BLUE;
float DISTANCE;
boolean FlagColor = false;// IFTTT Applet ID
String apiKey = “ot7veRhSfxbEm4sTREt8kVnxjt6kCGXjza0ZnvzuA19”;//Name of the application (events name) IFTTT
String eventName1 = “stained_glass_too_dark”;void setup(){
println(“Liste des ports: \n” + Serial.list());
String nom_du_port = Serial.list()[port];
myPort = new Serial(this, nom_du_port, 9600);
//myPort = new Serial(this, Serial.list()[2], 9600);
//Setup the connexion with Arduino
myPort.bufferUntil(‘\n’);
}void draw() {
// If the flag is ‘OK’, then we send a request to IFTTT in order to send a Messenger alert
if(FlagColor == true){
GetRequest get = new GetRequest(“https://maker.ifttt.com/trigger/" + eventName1 + “/with/key/” + apiKey);
get.send();
println(“Color Request sent”);
FlagColor = false;
}
else if(FlagMotion == true){
GetRequest get = new GetRequest(“https://maker.ifttt.com/trigger/" + eventName2 + “/with/key/” + apiKey);
get.send();
println(“Motion Request sent”);
FlagMotion = false;
}
//Else, if the flag is not ‘OK’, so nothing happens
else{
println(“…”);
}
delay(1000);
}//Each time that data transit via serial; launch this function
void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil(‘\n’);
print(inString);
if (inString != null){
inString = trim(inString);
int inputs[] = int(split(inString,’;’)); //Read arduino data (RGB)
// on affecte nos 3 valeurss
if(inputs.length == 4){
RED = inputs[0];
GREEN = inputs[1];
BLUE = inputs[2];
DISTANCE = inputs[3];
if(RED + GREEN + BLUE < 100){
FlagColor = true;
}
if(DISTANCE < 10){
FlagMotion = true;
}
}
}
}
References