[skin] đ&#x;?? //
Angelina Kozevnikova Hamze Machmouchi Razvan Voda Xiaonin Liu
Workshop 02 _ Sensory Environments
tea te team am m
đ&#x;??
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
đ&#x;??
3
team
đ&#x;??
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
đ&#x;??
5
team
đ&#x;??
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
đ&#x;??
7
~@#%&* +{}“/=-‌‌
STEP 1: State Setting
State A: Willing to Talk
team
đ&#x;??
8
?
?
[ Owner to Costume ]
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
đ&#x;??
9
~@#%&* +{}“/=-‌‌
!
Range 1 Sensing Red Lights Blinking
Range 2 Locating
Range 3 Warning
Touch Rejecting
Scenario B: Unilling to Talk
team
đ&#x;??
10
STEP 3: Long-Distance Interacting
[ Costume to Costume ]
*&%#@~ ‌‌-=/“}{+ ~@#%&* +{}“/=-‌‌
Connecting
Physical “Chatting�
team
đ&#x;??
11
Sketches
team
đ&#x;??
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
đ&#x;??
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
đ&#x;??
14
Sensors
Distance sensor (ultrasonic)
Touch sensor (fabric)
Touch sensor (electrical paint)
team
đ&#x;??
15
Methods of actuation
team
đ&#x;??
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
đ&#x;??
17
Patterns - Inner pattern
Exploring different types of pattens and their tactile characteristics
Color study
team
đ&#x;??
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
đ&#x;??
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
đ&#x;??
20
team
đ&#x;??
21
Patterns - Outside layer
- Clear pattern, good for recognition - Has difference between deflated and inglated state
team
đ&#x;??
22
- Bad for patter recognition because pattern merges with background - Has difference between deflated and inglated state
team
đ&#x;??
23
External pattern recognition
team
đ&#x;??
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
đ&#x;??
25
External pattern recognition
team
đ&#x;??
26
Pattern recognition using OpenCv on C++
team
đ&#x;??
27
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
đ&#x;??
29
mold
team
đ&#x;??
30
fit
team
đ&#x;??
31
team
đ&#x;??
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
đ&#x;??
33
tailoring
team
đ&#x;??
34
inner pattern, cnc mold
Action: 1. Bending 2. Shrinking 3. Folding
Method: Density
team
đ&#x;??
35
inflation layer, cnc mold
Action: 1. Expanding 2. Shrinking
Method: Pockets
team
đ&#x;??
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
đ&#x;??
37
System of the prototype - vest
Core
LED light Touch sensor
team
đ&#x;??
38
Distance sensor
team
đ&#x;??
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
đ&#x;??
40
Air pump air out - back
Battery for air pump
Battery for air pump
team
đ&#x;??
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
đ&#x;??
42
if (Buttonstate == HIGH) Buttonstate = LOW; else Buttonstate = HIGH;
// libraries #include <CapacitiveSensor.h> //BUTTON int ButPin = 2;
// 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
time = millis(); } previous = reading; }
airOutF = LOW;} else { interval1 = ms; interval1 = OFFtimeF4; airInF = LOW; airOutF = HIGH;} } digitalWrite(APfrontIN, airInF); digitalWrite(APfrontOUT, airOutF); digitalWrite(led, airInF); }
void button(){ long time = 0; // the last time the output pin was toggled long debounce = 200; // the debounce time, increase if the output flickers
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;
break;
//RANGE2 void RunThis(){ //FRONT const unsigned const unsigned //BACK const unsigned const unsigned
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); //RANGES
//RANGE3 //FRONT const unsigned const unsigned //BACK const unsigned const unsigned
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
//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
//RANGE 3 - CLOSE else if (distance < 40){ Serial.println("distance is less than 40, range 2"); AirPulsing3Front(); AirPulsing3Back(); }
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 - 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
đ&#x;??
43
team
đ&#x;??
44
team
đ&#x;??
45
46
.
team
đ&#x;??
47
team
đ&#x;??
48