Poch Poch
(Tele)Present Heart
Recipient of Hackaday Connected World Prize 2019
Recipient of Hackaday Connected World Prize 2019
Roland Barthes
Concept Statement
Digital technology and networked devices have become mediums through which humans express and experience love. We navigate a variety of instant messaging, emoji, and photo sharing apps as vehicles to communicate with those we love. The architecture of these platforms, and the behaviours and exchanges they enable or neglect, shape the landscape of our emotional lives.
The efficiency of machine-mediated relationships allows us to multitask our engineered intimacies. At arms length, we use technology to create relationships and protect ourselves from them simultaneously. While tethered to the individual surroundings of our physical selves, increasing amounts of time are spent alone together; less together alone.
Network media platforms such as Facebook, Instagram and Twitter provide us with the opportunity to produce, curate and simulate ourselves through personal profiles. By investing ourselves in the digital self-portraits we forge, we deny ourselves that which remains beautifully elusive and in permanent state of metamorphosis.
Networked devices have made it easy to express our emotions as they are being formed. As we communicate our feelings digitally, we revise them - losing natural conversational momentum. We no longer cultivate the ability to be alone and reflect on our emotions in private and begin to shy from the vigour of things that unfold in real time.
The pulse sensor embedded into each amulet's heart shaped, flexible exterior shell records and transmits the data to the servo motor in its sister amulet in real time. Each pulse is translated into a 70 degree rotation of the servo, which results in expansions and contractions of the heart as the interior mechanism opens and closes. Thereby, each wearer can continuously sense the living presence of the other.
Throughout human history, the changing of heart rhythms has been associated with emotional cadences. These are not scientifically quantifiable, and yet an elevation in pulse will follow in a moment of great love, fear, surprise, or anger. The physiological manifestations of our emotions, that allow others to 'read our face', 'or see it in our eyes' are a form of communication that gets lost in digital networking. Poch Poch gives us back a little of this power of reciprocity and synchronisation, allowing us to share the imagined intensities of our unconscious inner experiences, free of revision and ego performances.
The mobile app provides a simple interface with which to pair the amulet to the shareable pulse stream via Bluetooth. In the event that a user wishes to remove their amulet without frightening those connected to their pulse stream - the app also allows users to identify their stream's status as active or inactive.
The amulet's interior mechanism is composed of six parts. The central housing holds the electronics responsible for the expansion and contractions of the two enclosing shells. Each shell half travels along a rack and pinion, powered by a servo motor.
Pulse Sensor
Arduino
Servo Motor
LED
Protoboard
0.1uf Capacitor
100uF Capacitor
1K Resistor
5V Regulator
9V Battery
315Mhz RF Transmitter + Receiver Module
#include <Servo.h>
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
const int OUTPUT_TYPE = SERIAL_PLOTTER;
const int PIN_INPUT = A0;
const int PIN_BLINK = 13;
const int PIN_FADE = 5;
const int THRESHOLD = 550;
PulseSensorPlayground pulseSensor;
Servo heart;
const int SERVO_PIN = 6;
int pos = 90;
void setup() {
Serial.begin(115200);
heart.attach(SERVO_PIN);
heart.write(pos);
pulseSensor.analogInput(PIN_INPUT);
pulseSensor.blinkOnPulse(PIN_BLINK);
pulseSensor.fadeOnPulse(PIN_FADE);
pulseSensor.setSerial(Serial);
pulseSensor.setOutputType(OUTPUT_TYPE);
pulseSensor.setThreshold(THRESHOLD);
if (!pulseSensor.begin()) {
for(;;) {
digitalWrite(PIN_BLINK, LOW);
delay(50);
digitalWrite(PIN_BLINK, HIGH);
delay(50);
}
}
}
void loop() {
delay(20);
pulseSensor.outputSample();
moveServo(pulseSensor.getLatestSample());
if (pulseSensor.sawStartOfBeat()) {
pulseSensor.outputBeat();
}
}
void moveServo(int value){
pos = map(value,0,1023,0,90);
heart.write(pos);
}