[skin] π //
Angelina Kozhevnikova Hamze Machmouchi Razvan Voda Xiaonan Liu
Workshop 02 _ Sensory Environments
team _π
2
a new type of media for the post-human
In a world where humans and machines are no longer separated entities, a new type of media has to emerge and symbiotically merge the two.
team _π
3
team _π
4
Content
Section A: Concept 7 1. diagrams 2. sketches
Section B: Studies 14 1. sensors 2.methods of actuation 3.patterns
Section C: Prototypes 29 1. poncho 2. vest
team _π
5
team _π
6
Concept [skin] is a wearable device that extends communication abilities beyond language. It extends the skin's sensory faculties in order to exchange through touch. Using a soft actuation system and computer recognition, the devices are able to exchange physical media between them based on their location and intents.
team _π
7
team _π 8
~@#%&* +{}β/=-β¦β¦
?
?
~@#%&* +{}β/=-β¦β¦
?
?
STEP 1: State Setting
[ Owner to Costume ]
STEP 1: State Setting
[ Owner to Costume ]
State A: Willing to Talk
State B: Unwilling to Talk
State A: Willing to Talk
State B: Unwilling to Talk
STEP 2: Face-to-Face Interacting ~@#%&* +{}β/=-β¦β¦
[ Owner to Costume ]
Range 1 Searching
Range 2 Pairing
Range 3 Communicating
Touch Playing
Scenario A: Willing to Talk
team _π
9
~@#%&* +{}β/=-β¦β¦
!
Range 1 Sensing Red Lights Blinking
Range 2 Locating
Range 3 Warning
Touch Rejecting
Scenario B: Unilling to Talk
team _π 10
STEP 3: Long-Distance Interacting
[ Costume to Costume ]
*&%#@~ β¦β¦-=/β}{+ ~@#%&* +{}β/=-β¦β¦
Connecting
Physical βChattingβ
team _π 11
Sketches
team _π 12
we made a series of sketches studying the different possibilites and outcomes of the wearable device based on aesthetics and methods we were interested in experimenting with
team _π 13
Studies
The extension is inside-out, derived and emerged from the biological properties of the human body. The extension is consequentially an extrusion.
Learning from microscopic typologies
team _π 14
Sensors
Distance sensor (ultrasonic)
Touch sensor (fabric)
Touch sensor (electrical paint)
team _π 15
Methods of actuation
team _π 16
Inflatables
Electromagnets
Silicon. Soft actuation
Magnetic actuation
Nitinol
Tensegrity
Shape memory wires. Material actuation
Pop-up effect. Mechanical actuation
Patterns - Inflatable layer
Exploring different geometry and size of air pockets, air input points and thickness of connecting tubes.
team _π 17
Patterns - Inner pattern
Exploring different types of pattens and their tactile characteristics
Color study
team _π 18
Patterns - Inner pattern
The extension is inside-out, derived and emerged from the biological properties of the human body. The extension is consequentially an extrusion. The inner pattern is connecting the senseless machine with the senseful human body.
defining sensitive areas
least sensitive
most sensitive
team _π 19
Exploring micro patterns
Studying different types of patterns and textures, we came up with a synthesized synesthetic inner layer that will cause new senses for the human skin.
team _π 20
team _π 21
Patterns - Outside layer
- Clear pattern, good for recognition - Has difference between deflated and inglated state
team _π 22
- Bad for patter recognition because pattern merges with background - Has difference between deflated and inglated state
team _π 23
External pattern recognition
team _π 24
The outer pattern complements the communication between human, communication that is facilitated through a middle layer which is the machine and computer vision.
Pattern recognition using OpenCv on C++
team _π 25
External pattern recognition
team _π 26
Pattern recognition using OpenCv on C++
team _π 27
team _π 28
iteration01, poncho
Prototypes We have developed two iterations studying the assembly, fit, and experience of the wearable. The first one, a poncho, didn't incorporate any computer vison capabilities and was solely made to test assembly and inflation patterns. The wearables were cast into platinum cure silicone using digitaly fabricated molds.
puncho mold
base
inflation patterns
result
team _π 29
mold
team _π 30
fit
team _π 31
team _π 32
iteration02, vest
Researching different microscopical details of biological frameworks, we were able to exponentially scale the found geometries and the relationship within in order to produce patterns that will not only be derived from the human, but will also tend to reinvent the human.
Outside Layer
Inflation Layer
Inside Layer
team _π 33
tailoring
team _π 34
inner pattern, cnc mold
Action: 1. Bending 2. Shrinking 3. Folding
Method: Density
team _π 35
inflation layer, cnc mold
Action: 1. Expanding 2. Shrinking
Method: Pockets
team _π 36
The costume was designed in order to accommodate and relate to the most sensitive areas of the human body. Sketches were made to find a form that will maximize the relationship between the machine and the human and to enhance the interaction between humans through a new type of conversation.
Action: 1. Expanding 2. Shrinking
Method: Extrusions
outside layer
team _π 37
System of the prototype - vest
Core LED light Touch sensor
team _π 38
Distance sensor
team _π 39
Core
Air pump air out - front
Air pump air in - front Battery for arduino Battery for air pump
Mosfet
Mosfet
Battery for air pump
Mosfet
Mosfet Air pump air in - back
Button Arduino nano
team _π 40
Air pump air out - back
Battery for air pump
Battery for air pump
team _π 41
Coding
1 RANGE - APPROACHING (1,5 m) When costume senses someone approaching (in costume we mimic it with button because ultrasonic is very innacurate for this distance) it starts long air pulsation. Led light turns in rythm of "air in" or inflating interval.
2 RANGE - CLOSE (0,4 m) When costume senses someone close with ultrasonic sensor, the air pulsation becomes faster. Led light turns in rythm of "air in" or inflating interval.
3 RANGE - TOUCH When costume senses someone close with ultrasonic sensor and touching with touch sensor, the air pulsation becomes extremely fast. Led light turns in rythm of "air in" or inflating interval.
team _π 42
// libraries #include <CapacitiveSensor.h> //BUTTON int ButPin = 2;
if (Buttonstate == HIGH) Buttonstate = LOW; else Buttonstate = HIGH;
// the number of the input pin
int Buttonstate = LOW; // the current state of the output pin int reading; // the current reading from the input pin int previous = LOW; // the previous reading from the input pin long time = 0; // the last time the output pin was toggled long debounce = 200; // the debounce time, increase if the output flickers
}
time = millis(); } previous = reading;
void button(){
airOutF = LOW;} else { interval1 = ms; interval1 = OFFtimeF4; airInF = LOW; airOutF = HIGH;}
} digitalWrite(APfrontIN, airInF); digitalWrite(APfrontOUT, airOutF); digitalWrite(led, airInF); }
switch (Buttonstate) {
void AirPulsing2Back(){ unsigned long ms2 = millis (); //Air In
long duration; int distance;
case HIGH: RunThis(); break; case LOW: digitalWrite(APfrontIN, LOW); digitalWrite(APfrontOUT, LOW); digitalWrite(APbackIN, LOW); digitalWrite(APbackOUT, LOW); digitalWrite(led, LOW);
//INTERVALS long interval1; long interval2;
} }
//ULTRASONIC const int trigPin = 5; const int echoPin = 6;
//RANGE2 //FRONT const unsigned const unsigned //BACK const unsigned const unsigned
void RunThis(){ long ONtimeF2 = 500UL; //AIRIN long OFFtimeF2 = 500UL; //AIROFF long ONtimeB2 = 500UL; //AIRIN long OFFtimeB2 = 500UL; //AIROFF
DistanceSensing(); //TOUCH SENSOR long start = millis(); long total1 = cs_4_7.capacitiveSensor(30);
//RANGE3 //FRONT const unsigned const unsigned //BACK const unsigned const unsigned
//RANGES long ONtimeF3 = 1000UL; //AIRIN long OFFtimeF3 = 1000UL; //AIROFF long ONtimeB3 = 1000UL; //AIRIN long OFFtimeB3 = 1000UL; //AIROFF
//RANGE4 //FRONT const unsigned const unsigned //BACK const unsigned const unsigned
break;
//RANGE 1 - TOUCH if (distance <40 && total1 >100){ Serial.println("distance is less than 40, someone touched the costume"); AirPulsing2Front(); AirPulsing2Back(); }
long ONtimeF4 = 10000UL; //AIRIN long OFFtimeF4 = 6000UL; //AIROFF long ONtimeB4 = 10000UL; //AIRIN long OFFtimeB4 = 6000UL; //AIROFF
unsigned long preMillis = 0; unsigned long preMillis2 = 0; //AIR PUMP //Front int airOutF = HIGH; int airInF = LOW; //Back int airOutB = HIGH; int airInB = LOW; //pins airpumps const int APfrontIN = 9; //AIRIN FRONT const int APfrontOUT = 10; //AIROUT FRONT const int APbackIN = 11; //AIRIN BACK const int APbackOUT = 3; //AIROUT BACK //TOUCH SENSOR CapacitiveSensor cs_4_7 = CapacitiveSensor(4,7); //4,7 PIN //LED LIGHT int led = 8;
void setup() { //BUTTON pinMode(ButPin, INPUT); //AIR PUMPS pinMode (APfrontIN, OUTPUT); pinMode (APfrontOUT, OUTPUT); pinMode (APbackIN, OUTPUT); pinMode (APbackOUT, OUTPUT); digitalWrite(APfrontIN, LOW); digitalWrite(APfrontOUT, LOW); digitalWrite(APbackIN, LOW); digitalWrite(APbackOUT, LOW); //ULTRASONIC pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input //LED pinMode(led, OUTPUT); //TOUCH SENSOR cs_4_7.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(9600); // Starts the serial communication } void loop() { checkBut(); button(); }
void checkBut(){ reading = digitalRead(ButPin); if (reading == HIGH && previous == LOW && millis() - time > debounce) {
//RANGE 3 - CLOSE else if (distance < 40){ Serial.println("distance is less than 40, range 2"); AirPulsing3Front(); AirPulsing3Back(); } //RANGE 3 - APPROACHING else { Serial.println("button pressed, range 3"); AirPulsing4Front(); AirPulsing4Back(); } } void AirPulsing2Front(){ unsigned long ms = millis (); //Air In if ((millis() - preMillis) >= interval1){ preMillis = ms; interval1 = ms; if (airInF == LOW && airOutF == HIGH){ interval1 = ONtimeF2; airInF = HIGH; airOutF = LOW;} else { interval1 = ms; interval1 = OFFtimeF2; airInF= LOW; airOutF = HIGH;}
} digitalWrite(APfrontIN, airInF); digitalWrite(APfrontOUT, airOutF); digitalWrite(led, airInF); } void AirPulsing3Front(){ unsigned long ms = millis (); //Air In
if ((millis() - preMillis2) >= interval2){ preMillis2 = ms2; interval2 = ms2; if (airInB == LOW && airOutB == HIGH){ interval2 = ONtimeB2; airInB = HIGH; airOutB = LOW;} else { interval2 = ms2; interval2 = OFFtimeB2; airInB = LOW; airOutB = HIGH;}
} digitalWrite(APbackIN, airInB); digitalWrite(APbackOUT, airOutB); } void AirPulsing3Back(){ unsigned long ms2 = millis (); //Air In
if ((millis() - preMillis2) >= interval2){ preMillis2 = ms2; interval2 = ms2; if (airInB == LOW && airOutB == HIGH){ interval2 = ONtimeB3; airInB = HIGH; airOutB = LOW;} else { interval2 = ms2; interval2 = OFFtimeB3; airInB = LOW; airOutB = HIGH;}
} digitalWrite(APbackIN, airInB); digitalWrite(APbackOUT, airOutB); } void AirPulsing4Back(){ unsigned long ms2 = millis (); //Air In
if ((millis() - preMillis2) >= interval2){ preMillis2 = ms2; interval2 = ms2; if (airInB == LOW && airOutB == HIGH){ interval2 = ONtimeB4; airInB = HIGH; airOutB = LOW;} else { interval2 = ms2; interval2 = OFFtimeB4; airInB = LOW; airOutB = HIGH;}
} digitalWrite(APbackIN, airInB); digitalWrite(APbackOUT, airOutB); }
void DistanceSensing(){ //ULTRASONIC digitalWrite(trigPin, LOW); delayMicroseconds(20); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(100); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance= duration*0.034/2; }
if ((millis() - preMillis) >= interval1){ preMillis = ms; interval1 = ms; if (airInF == LOW && airOutF == HIGH){ interval1 = ONtimeF3; airInF = HIGH; airOutF = LOW;} else { interval1 = ms; interval1 = OFFtimeF3; airInF = LOW; airOutF = HIGH;}
} digitalWrite(APfrontIN, airInF); digitalWrite(APfrontOUT, airOutF); digitalWrite(led, airInF); } void AirPulsing4Front(){ unsigned long ms = millis (); //Air In
if ((millis() - preMillis) >= interval1){ preMillis = ms; interval1 = ms; if (airInF == LOW && airOutF == HIGH){ interval1 = ONtimeF4; airInF = HIGH;
team _π 43
team _π 44
team _π 45
team _π 46
.
team _π 47
team _π 48