ceci n’est pas un siege.

teamMATTOMIAMA is:
TOMjenkins
MATTfargo
PIAMAhabibullah

we’re friends and decide to work together.
we like arguing, imbibing, theorizing, nosepicking, and of course, physical computing.

MEETING 1

4 beers + 2 whiskey sours + 1 water =

debauchery ensued...

after being thoroughly INvigorated and INspired, we make some legitimate progress.

MEETING 2

we realize we all coincide in concept though we come from 3 separate mothers.
3 in a box
sketches, notes, and a general feeling of apathy and frustration.

MEETING WHAT
we soon notice the inability of the 3 members of our group to occupy any one geographical point.
nevertheless, we troop on.
should it be a table? a chair?

interaction between 2 people
chair video
benchmarking (victorian tea chair, other double chairs)

FOR TWO PLEASE

droog design touch chair
conversation chair
double rocker
face to face
sensor chair

theme of competitive relaxation

medieval torture chair

torture chair

chinese torture chair

chinese torture chair

electrocuting chair

the electrocutor
electrocutor

rietveld’s chair
rietveld designer electrocution

dentist chair
dentist chair

restraint
restraint

research with doctor on lies and deception

components of lie detector

lie detector

functional MRI

functional MRI image

thermal imaging camera

thermal imaging

US Department of Defense Polygraph Institute

body output vs. emotional representation

HAND MAPS

hand reflexology

hand reflexology

stressful hands
nail biting
fist

hand heat
hand heat / heat loss

Heat Loss

How the body loses heat

Physiologically, heat is generated in the muscles by metabolic chemical reactions, mainly in the liver. Some heat is lost through the lungs, although 90-95% is lost through the skin. Heat is transferred from the core to the skin by blood passing through peripheral blood vessels.

The rate of heat loss is determined by the extend to which the peripheral blood vessels dilate; fully dilated they will allow blood to travel 100 times faster than when constricted, thus losing body heat faster. Heat loss rates are also greatly increased by sweating, especially in dry environments.

Mouse over the image to see the effect of warm blood flowing into cold hands.

How the body controls heat loss

The body controls heat loss by tightening the blood vessels under the skin, restricting the flow of blood – to the peripheral blood vessels (‘Vasoconstriction’). The development of peripheral vasoconstriction allows a cooler, outer ’shell’ to form an insulating barrier that slows heat loss from the body’s core. Hands and feet have fewer large blood vessels, and when the flow of blood is restricted it is harder for the blood to keep flowing to these areas which quickly become cold.

How heat transfers from the skin to the surrounding environment

Heat loss is due to one or more of the following – convection, conduction , evaporation or radiation. In comfortable environments, about 65% is lost through radiation, with most of the rest through evaporation. In cold environment, most heat lost is via convection and conduction.

Convection happens when air or water with a lower temperature than the body comes into contact with the skin and then moves away. An example of convection is blowing on hot food to cool it down. The amount of heat loss depends on the temperature difference between the body and environment plus the speed with which air or water is moving.

Conduction is the transfer of heat to objects or substances the body comes into direct contact with. Metal and stones are good heat conductors, which is why they feel cold to the touch, even at room temperature. Air conducts heat poorly, which is why still air is an excellent insulator. Water conductivity is 240 times greater than that of dry air.

Evaporation is responsible for 20 – 30% of heat loss in temperate conditions. About 2/3rds of evaporative heat loss occurs from the skin in thermo-neutral conditions. The remainder happens in the lungs and airways. In cold conditions, airway evaporative heat loss increases as the incoming air is humidifed and warmed.

Even in hot conditions hands can become very cold if the person has been even mildly sweating a cool breeze can easily make the hands feel very cold.

actual device

furniture building

furniture

form and position
social / anthropological impact

output

THE PAIR

how do two people affect each other?

affectation
siamese skeletons

COMPETITION
wrestling bot
arm wrestling shock
competitive pricing
pro thumb wrestling

ability to control inner thoughts and emotions, manifesting in the physical realm

“winner of game”

EMOTIONAL RESEARCH / SENSORS
GSR sensor
GSR sensor
Heartbeats 1
emotional sensor
The Biosensor measures your Electrodermal temperature and heart rate. The data is processed and displayed as emotional responses as well as your state of being.

heartrate
failed attempts at justifying monitoring blood pressure
-it takes too long to get a good rate
-it is never a consistent read

blood pressure monitor

failed experiment

pulse

galvanic skin response

http://www.i2m-labs.com/images/main_mouillee.jpg

we chose to purchase this GSR sensor, which is part of a lie detector kit:
GSR

temperature

brain temperature

work on building the thermistor / heat sensor:

circuit

AFFECTIVE COMPUTING
Affective Computing is computing that relates to, arises from, or deliberately influences emotions.

Emotion is fundamental to human experience, influencing cognition, perception, and everyday tasks such as learning, communication, and even rational decision-making. However, technologists have largely ignored emotion and created an often frustrating experience for people, in part because affect has been misunderstood and hard to measure. Our research develops new technologies and theories that advance basic understanding of affect and its role in human experience. We aim to restore a proper balance between emotion and cognition in the design of technologies for addressing human needs.

BUILDING + TESTING THE DEVICE

hand print

demo

furniture demo

KEY COMPONENTS

The Breadboard

piama painting
piama paints

tom strugglin
tom almost faints

fatt margo
as fatt margo looks on and says, “that looks easy.”

The Breadboard

the sex shot
the sexy shot, touch that satin gloss.

INSTALLATION-

872

864

861

882
with the contacts (galvanic skin response, heat, heartrate)

CODE CODE CODE CODE CODE CODE CODE CODE CODE CODE CODE CODE DECODE CODE

Win Conditions inside Debug Code:
//VARIABLE SETUP//////////////////////////////////////////////////////////////////

//THERMISTOR INT SETUP
int thermyA1 = 0; //reads analogue 0 thermistor (player 1 thermistor A)
int thermyA2 = 1; //reads analogue 1 thermistor (player 1 thermistor B)
int thermyB1 = 2; //reads analogue 2 thermistor (player 2 thermistor A)
int thermyB2 = 3; //reads analogue 3 thermistor (player 2 thermistor B)

int tempA1 = 0; //value from thermyA1
int tempA2 = 0; //value from thermyA2
int tempB1 = 0; //value from thermyB1
int tempB2 = 0; //value from thermyB2

//GSR INT SETUP
int gsr1 = 4; //reads analogue 4 for player 1 GSR
int gsr2 = 5; //reads analogue 5 for player 2 GSR

int gsrRead1 = 0; //default gsr reading1
int gsrRead2 = 0; //default gsr reading2

//HEARTBEAT INT SETUP
int heartPin1 = 7; //reads capacitance from digital pin 7
int heartState1 = 0; //sets state as null

int heartPin2 = 5; //reads capacitance from digital pin 5
int heartState2 = 0; //sets state as null

//DEBUG PIN SETUP
int heartOutputPin1 = 6;
int heartOutputPin2 = 4;

int thermOutputPin1 = 13;
int thermOutputPin2 = 12;
int thermOutputPin3 = 11;
int thermOutputPin4 = 10;

int gsrOutputPin1 = 9;
int gsrOutputPin2 = 8;

//GAME VARIABLES

int gsrSampleA1 = 0;
int gsrSampleA2 = 0;
int gsrSampleA3 = 0;
int gsrSampleA4 = 0;
int gsrSampleA5 = 0;
int gsrSampleA6 = 0;
int gsrSampleA7 = 0;
int gsrSampleA8 = 0;
int gsrSampleA9 = 0;
int gsrSampleA10 = 0;

int gsrSampleB1 = 0;
int gsrSampleB2 = 0;
int gsrSampleB3 = 0;
int gsrSampleB4 = 0;
int gsrSampleB5 = 0;
int gsrSampleB6 = 0;
int gsrSampleB7 = 0;
int gsrSampleB8 = 0;
int gsrSampleB9 = 0;
int gsrSampleB10 = 0;

int gsrAvgA = 0;
int gsrAvgB = 0;

int tempSampleA1A = 0;
int tempSampleA2A = 0;
int tempSampleA1B = 0;
int tempSampleA2B = 0;

int tempSampleB1A = 0;
int tempSampleB2A = 0;
int tempSampleB1B = 0;
int tempSampleB2B = 0;

int tempAvgA = 0;
int tempAvgB = 0;

int hbCounterA = 0;
int hbCounterB = 0;

//TIME VARIABLE
int time = millis();

//WINNER VARIABLE
int winner;

//SETUP LOOP////////////////////////////////////////////////////////////////////

void setup() {
Serial.begin(9600);
pinMode(heartPin1, INPUT); // set the switch pin to be an input
//pinMode(heartPin2, INPUT); // set the switch pin to be an input
}

//ACTUAL LOOP////////////////////////////////////////////////////////////////////

void loop() {

//GAME CRITERIA/////////////////////////////////////////////////////////////
delay(500);

//SAMPLE GSR
if (time == 1500){
gsrSampleA1 = gsr1;
gsrSampleB1 = gsr2;
}
if (time == 4500){
gsrSampleA2 = gsr1;
gsrSampleB2 = gsr2;
}
if (time == 7500){
gsrSampleA3 = gsr1;
gsrSampleB3 = gsr2;
}
if (time == 10500){
gsrSampleA4 = gsr1;
gsrSampleB4 = gsr2;
}
if (time == 13500){
gsrSampleA5 = gsr1;
gsrSampleB5 = gsr2;
}
if (time == 16500){
gsrSampleA6 = gsr1;
gsrSampleB6 = gsr2;
}
if (time == 19500){
gsrSampleA7 = gsr1;
gsrSampleB7 = gsr2;
}
if (time == 21500){
gsrSampleA8 = gsr1;
gsrSampleB8 = gsr2;
}
if (time == 24500){
gsrSampleA9 = gsr1;
gsrSampleB9 = gsr2;
}
if (time == 27500){
gsrSampleA10 = gsr1;
gsrSampleB10 = gsr2;
}

//SAMPLE TEMP
if (time = 500){
tempSampleA1A = tempA1;
tempSampleA2A = tempA2;
tempSampleB1A = tempB1;
tempSampleB2A = tempB2;
}
if (time = 27500){
tempSampleA1B = tempA1;
tempSampleA2B = tempA2;
tempSampleB1B = tempB1;
tempSampleB2B = tempB2;
}

//COUNT CAPACITANCE SWITCHES
if (heartState1 == 1){
hbCounterA++;
}
if (heartState2 ==1){
hbCounterB++;
}

//DEFINE WINNING
int player1 = ((tempSampleA1A + tempSampleA1B + tempSampleA2A +tempSampleA2B)/4 +
(gsrSampleA1 + gsrSampleA2 + gsrSampleA3 + gsrSampleA4 + gsrSampleA5 + gsrSampleA6 + gsrSampleA7 + gsrSampleA8 + gsrSampleA9 + gsrSampleA10)/10 -
hbCounterA);

int player2 = ((tempSampleB1A + tempSampleB1B + tempSampleB2A +tempSampleB2B)/4 +
(gsrSampleB1 + gsrSampleB2 + gsrSampleB3 + gsrSampleB4 + gsrSampleB5 + gsrSampleB6 + gsrSampleB7 + gsrSampleB8 + gsrSampleB9 + gsrSampleB10)/10 -
hbCounterB);

if (player2 > player1){
winner = 1;
}
if (player1 > player2){
winner = 2;
}

//HEART OUTPUTS/////////////////////////////////////////////////////////////
// read the heart input, offer outputs (red lights):
heartState1 = digitalRead(heartPin1);
heartState2 = digitalRead(heartPin2);

if (heartState1 == 1) {
// if the switch is closed:
digitalWrite(heartOutputPin1, HIGH); // turn on the red LED
}
else {
// if the switch is open:
digitalWrite(heartOutputPin1, LOW); // turn off the red LED
}
if (heartState2 == 1){
// if the switch is closed:
digitalWrite(heartOutputPin2, HIGH); // turn on the red LED
}
else {
// if the switch is open:
digitalWrite(heartOutputPin2, LOW); // turn off the red LED
}

//THERMISTOR OUTPUTS////////////////////////////////////////////////////
//turn on thermistor lights (green) if past certain value (100)
tempA1 = analogRead(thermyA1); // read the temps
tempA2 = analogRead(thermyA2);
tempB1 = analogRead(thermyB1);
tempB2 = analogRead(thermyB2);

//Thermistor1
if (tempA1 > 100){
digitalWrite(thermOutputPin1, HIGH);
}
else{
digitalWrite(thermOutputPin1, LOW);
}

//Thermistor2
if (tempA2 > 100){
digitalWrite(thermOutputPin2, HIGH);
}
else{
digitalWrite(thermOutputPin2, LOW);
}

//Thermistor3
if (tempB1 > 100){
digitalWrite(thermOutputPin3, HIGH);
}
else{
digitalWrite(thermOutputPin3, LOW);
}

//Thermistor4
if (tempB2 > 100){
digitalWrite(thermOutputPin4, HIGH);
}
else{
digitalWrite(thermOutputPin4, LOW);
}

//THERMISTOR SERIAL OUTPUT////////////////////////////////////////////////////////
//player1
Serial.print(“tempA1: “);
Serial.println(tempA1);
Serial.print(“tempA2: “);
Serial.println(tempA2);
//player2
Serial.print(“tempB1: “);
Serial.println(tempB1);
Serial.print(“tempB2: “);
Serial.println(tempB2);

delay(50);

//GSR SENSORS/////////////////////////////////////////////////////////
//turn on GSR lights (yellow) if past certain value (100)
gsrRead1 = analogRead(gsr1); // read the resistance
gsrRead2 = analogRead(gsr2);

//gsr1
if (gsrRead1 > 100){
digitalWrite(gsrOutputPin1, HIGH);
}
else{
digitalWrite(gsrOutputPin1, LOW);
}

//gsr2
if (gsrRead2 > 100){
digitalWrite(gsrOutputPin1, HIGH);
}
else{
digitalWrite(gsrOutputPin1, LOW);
}

//GSR SERIAL OUTPUT////////////////////////////////////////////////////////
//player1
Serial.print(“GSR1: “);
Serial.println(gsrRead1);
//player2
Serial.print(“GSR2: “);
Serial.println(gsrRead2);
Serial.println(” “);

delay(50);

}

FUTURE WORK CONCEPTS

we need the output to reflect the materiality of the device better. for an object that is so simple, having the output b on a screen detracts from the overall aesthetic. We feel that a better way to play the intended game mechanic would beĀ  to have rumbling under each of the players’ seats playing th other player’s heartbeat. This way we could emphasize the adversarial nature of the device, even as it provides a constant thudding that could be very relaxing. After a set amount of time, the person who is more relaxed would “win” and the person who “lost” would get a large general rumbling under their seat.

This next phase is dependent on a better heartbeat sensory setup–the capacitative touch sensor has little resolution in the way of individual heartbeats. We need to procure proper hearbeat sensor boards.


3 Responses to “ceci n’est pas un siege.”

  1. the greatest project in the world, by the greatest team in the world. period.

  2. no really guys, this is the B-E-S-T.

  3. not even a doctor could come up with such good shiz

Leave a Reply