Sentio
Sentio cookbook. How to build a device that enables you to touch another person over internet.
You will need:
- creative group of people
- PhidgetInterfaceKit 8/8/8
- 2 Force Sensors
- 2 PhidgetServo 1-Motor Kits
- materials (wood, leather, metal, paper, clay, glue…)
- design, and craftsmanship skills, programming framework,
- time, patience, nerves of steel, loads of fika, you may consider also sleepless night or two depending on yours group dynamics.
First make exquisitely looking twin devices, then embed one with sensors, second with motors. Set up a framework (in our example actionscript), add some libraries and start coding until you make it work.
Serve with LED lights connected to interface kit’s digital outputs. In order to create emotional and intimate feeling synchronize sensors with visualisation using flash and put some lounge music.
Our group got about 500SEK worth tech equipment, very open brief and a month to produce an interactive digital instalation and to present it during exhibition that was also supposed to have been organised by us.
Our blog where you can read about process of creating Sentio day by day:
202london.wordpress.com
Sentio source code snippet (sender side):
import com.phidgets.*;
import com.phidgets.events.*;
intkit = new PhidgetInterfaceKit();
intkit.addEventListener(PhidgetDataEvent.SENSOR_CHANGE, onSensorChange);
intkit.open("192.168.0.1", 5001);
function onSensorChange(evt:PhidgetDataEvent):void{
sensors[evt.Index]=evt.Data;
i=sensors[3]*10/115+31;
j=sensors[2]*10/115+31;
if (i>=j)
{
gotoAndStop(10+Math.round((i-j)/6));
finger.gotoAndStop(10+Math.round((i-j)/6));
arm.gotoAndStop(10+Math.round((i-j)/6));
}
else
{
gotoAndStop(40+Math.round((j-i)/6))
finger.gotoAndStop(40+Math.round((j-i)/6));
arm.gotoAndStop(40+Math.round((j-i)/6));
}
if (i>32 || j>32)
{
gotoAndStop(2);
finger.gotoAndStop(2);
arm.gotoAndStop(2);
}
}
Sentio source code snippet (receiver side):
import com.phidgets.*;
import com.phidgets.events.*;
intkit = new PhidgetInterfaceKit();
intkit.addEventListener(PhidgetDataEvent.SENSOR_CHANGE, onSensorChange);
intkit.open("localhost", 5001);
motor = new PhidgetServo();
motor.addEventListener(PhidgetDataEvent.POSITION_CHANGE, onPositionChange);
motor.open("192.168.0.2", 5002,"",45407);
motor2 = new PhidgetServo();
motor2.addEventListener(PhidgetDataEvent.POSITION_CHANGE, onPositionChange);
motor2.open("192.168.0.2", 5002,"",45086);
function onSensorChange(evt:PhidgetDataEvent):void{
sensors[evt.Index]=evt.Data;
i=sensors[3]*10/115+31;
j=sensors[2]*10/115+31;
if (i>=j)
{
motor.setPosition(0, 119-(i-j));
trace(i-j);
gotoAndStop(10+Math.round((i-j)/6));
}
else
{
motor.setPosition(0, 119+(j-i));
gotoAndStop(40+Math.round((j-i)/6))
}
if (i>32 || j>32)
{
motor2.setPosition(0,600*10/57+31);
}
else
{
motor2.setPosition(0,0*10/57+31);
gotoAndStop(2);
}
}






