Introduction: Hug-Me

This project is designed to address the disappearances of physical contact and warmth between relatives who live apart. The strap form device uses vibration motors to provide haptic feedback every time the other side is making a hugging gesture and creating a squeeze effect that is mimicking a hug.

Supplies

* Microcontroller (Lilypad USB) -https://www.sparkfun.com/products/12049

* Vibration Motors X 4 - https://www.amazon.com/tatoko-12000RPM-Wired-Phone...

* Resistor 220 Ohm- https://www.amazon.com/Projects-100EP512220R-220-R...

* Conductive Thread - https://www.amazon.com/Mayata-Conductive-Stainless...

* Needels

* Fabric

* Electric tape (for isolation)

For the fabric sensor:

* Felt

* Velostat- https://www.adafruit.com/product/1361

* Conductive Cloth Fabric Adhesive Tape- https://www.amazon.com/BCP-Conductive-Adhesive-Shi...

Step 1: Making a Soft Pressure Sensor

Materials:

*Velostat (https://www.adafruit.com/product/1361)

*Felt

*Conductive Cloth Fabric Adhesive Tape ( https://www.amazon.com/Conductive-Fabric-Adhesive-... )

*Non-conductive sewing thread

*needle

Velostat is a piezoresistive material, meaning it’s electrical resistance decreases when pressured. When sandwiched between two conductive layers, it can act as a pressure/flex sensor.

Step 2: The Circuit

Step 3: The Code

//const int pushButton = 2;
const int vibeBoard = 10;
const int vibeBoarda = A4;
const int inputPin = A3;

const int numReadings = 10;

int readings[numReadings];
int readIndex = 0;
int total = 0;
int average = 0;

void setup() {

//pinMode(pushButton, INPUT_PULLUP);
pinMode(vibeBoard, OUTPUT);
pinMode(vibeBoarda, OUTPUT);
pinMode (inputPin, INPUT);

Serial.begin(9600);

// initialize all the readings to 0:

for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;

}

}

void loop() {

// int buttonState = digitalRead(pushButton);

// subtract the last reading:

total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;

if (readIndex >= numReadings) {
readIndex = 0;
}

average = total / numReadings;
Serial.println(average);

if (average > 400) {
digitalWrite(vibeBoard, HIGH);
digitalWrite(vibeBoarda, HIGH);

delay(1); // delay in between reads for stability

} else {
digitalWrite(vibeBoard, LOW);
digitalWrite(vibeBoarda, LOW);

}

}

Step 4: Testing the Circuit and Code

Step 5: Strap Assembly

Step 6: Demo