Project tutorial
SKRT

SKRT

Moving the personal bubble

  • 1,304 views
  • 0 comments
  • 11 respects

Components and supplies

About this project

Problem

The personal bubble is a spatial concept that was designed to protect the individual. This concept is both attacked and exaggerated by different social expectations. For example, feminists argue that women are constantly interrupted by a man’s physical presence through the spreading of their legs ("manspreading"); this physical sign of dominance forces the woman into a smaller space, tinier than what she is accustomed to. 

Other people argue that the personal bubble is decreasing outwardly but increasing inwardly. The bubble does not exist beyond the body anymore but exists internally because of the cell phone, prominently the smartphone. These devices force users to not be aware of their context and only focus on matters occurring privately within the palm of their hands.

Solution

Our intention is to neither attack nor exaggerate the personal bubble. Instead, we simply created a physical bubble that will not only define the wearer’s boundaries but also intrude into others’. We decided that by creating a skirt composed of 5 “leaves” that move towards any sign of movement, we can do just that. Using motors, sensors, carbon fiber, and lights, we create a SKRT that critiqued the presence of a spatial concept: the personal bubble. We did not design this object to resolve an issue, or to perpetuate one, but to merely exist.

Design Evolution

We had various iterations, with pieces of different shapes to test out the torque and bending of the wire. Some materials were lighter and easier to use. Through precedents and sketches, we decided to create 5 leaves that wrapped around the waist of the wearer. These leaves would respond to motion. The leaves were then prototyped into a simple structure: the spine (composed of carbon fiber and acrylic) and the skin (acrylic and fishing line). Each leaf would then attach to a belt (hardware, acrylic, fishing line, etc.). Each iteration was designed to avoid an obstacle: prevent torquing, increase flexibility, cover wearer, have depth, be beautiful, and allow for technology. These obstacles eventually created a skirt that exemplifies our physical personal bubble: SKRT.

We tried different shapes, sizes, spacers, and form factors before reaching our final design. At first we thought we would have a separate spine with a feather layering on top, but then we played with the idea of using the spine as the leaf itself. The smaller sizes were easier to lift up via fishing line, but they were too bare. One other difficulty was in finding the right spacers. We tried 3D printing one type and it took an hour just for one piece, and it made the spine's movement rigid, so we shifted toward using acrylic pieces stacked in between the frosted acrylic larger shapes. However, this also made it very rigid, so we then moved toward using the white tubing from cotton swabs.

6 Prototypes

Building

Building the Final Prototype

Electronics

Building the electronics was lots of fun. We have 5 micro servos pulling on the fishing line in order to get the dress to move. At first, we had plastic gear servos, but we soon realized that those servos were not strong enough, so we switched to metal gear servos. We have 5 led strings running down each of the leaves. We have 2 ultrasonic range finders that can detect distance so that when people get near the wearer, the dress will move. To control all of this, we use an Arduino Micro. However, the power from the micro itself is not enough to also drive the servos. To handle this, we use a 12bit PWM/Servo driver

Illustrator

Leaves and belt llustrator files

Final Product

Code

Arduino CodeC/C++
Drives the lights and pulls the servos
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <RunningMedian.h>
  
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  600 // this is the 'maximum' pulse length count (out of 4096)
#define trigPin0 9
#define echoPin0 8
#define trigPin1 7
#define echoPin1 6

RunningMedian distSamples = RunningMedian(10);
uint8_t servo0 = 0;
uint8_t servo1 = 1;
uint8_t servo2 = 2;
uint8_t servo3 = 3;
uint8_t servo4 = 4;
int lastDist = 0;


void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("~~~~~~~~~~~");
  
  pinMode(trigPin0, OUTPUT);
  pinMode(echoPin0, INPUT);
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);

  pwm.begin();
  pwm.setPWMFreq(60);
  pwm.setPWM(8, 0, 0);
  pwm.setPWM(9, 0, 0);
  pwm.setPWM(10, 0, 0);
  pwm.setPWM(11, 0, 0);
  pwm.setPWM(12, 0, 0);
  
  // Servos 0,2,4 are backwards, resting mode is at max.
  pwm.setPWM(0, 0, SERVOMAX);
  pwm.setPWM(1, 0, SERVOMAX);  
  pwm.setPWM(2, 0, SERVOMAX);
  pwm.setPWM(3, 0, SERVOMAX);
  pwm.setPWM(4, 0, SERVOMAX);
  
}

void moveUp(int servoNum) {
  for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
    // Servonum + 8 is the pin for the lights
    pwm.setPWM(servoNum, 0, pulselen);
    pwm.setPWM(servoNum + 8, 1, 0);
    delay(5);
  }
  pwm.setPWM(servoNum + 8, 0, 0);
}
void moveDown(int servoNum) {
  for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
    // Servonum + 8 is the pin for the lights
    pwm.setPWM(servoNum, 0, pulselen);
    pwm.setPWM(servoNum + 8, 1, 0);
    delay(5);
  }
  pwm.setPWM(servoNum + 8, 0, 0);
}
void doWave(int servoNum, int leftRight) {
  if (true) {
    for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
      // Servonum + 8 is the pin for the lights
      pwm.setPWM(servoNum, 0, pulselen);
      uint16_t invPulse = map(pulselen, SERVOMIN, SERVOMAX, SERVOMAX, SERVOMIN);
      pwm.setPWM(servoNum - leftRight, 0, invPulse);
//      pwm.setPWM(servoNum + 8, 1, 0);
    pwm.setPWM(8, 1, 0);
    pwm.setPWM(9, 1, 0);
    pwm.setPWM(10, 1, 0);
    pwm.setPWM(11, 1, 0);
    pwm.setPWM(12, 1, 0);
      delay(3);
    }
  }
//  pwm.setPWM(servoNum + 8, 0, 0);
    pwm.setPWM(8, 0, 0);
    pwm.setPWM(9, 0, 0);
    pwm.setPWM(10, 0, 0);
    pwm.setPWM(11, 0, 0);
    pwm.setPWM(12, 0, 0);
}




long getDistance(int sensor) {
  int trigPin;
  int echoPin;
  if (sensor == 0) {
    trigPin = trigPin0;
    echoPin = echoPin0;
  } else {
    trigPin = trigPin1;
    echoPin = echoPin1;
  }
    // Get distance from ultrasonic distance sensor
    long duration, distance;
    for (int i = 1; i < 10; i++) {
      digitalWrite(trigPin, LOW);  // Added this line
      delayMicroseconds(2); // Added this line
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10); // Added this line
      digitalWrite(trigPin, LOW);
      duration = pulseIn(echoPin, HIGH);
      distance = (duration/2) / 29.1;
      distSamples.add(min(200,distance));
    }
    // Here is the distance
    return 20*floor(distSamples.getMedian() / 20);
}

void loop() {
    
    int medianDist0 = getDistance(0);
    distSamples.clear();
    int medianDist1 = getDistance(1);
    distSamples.clear();
    
    Serial.println(medianDist0);
    Serial.println(medianDist1);
    Serial.println("++++++++");
    // GO!
    if (medianDist1 < 70) {
      moveUp(4);
      doWave(3, -1);
      doWave(2, -1);
      doWave(1, -1);
      doWave(0, -1);
      moveDown(0);
    } else if (medianDist0 < 70) {
      moveUp(0);
      doWave(1, 1);
      doWave(2, 1);
      doWave(3, 1);
      doWave(4, 1);
      moveDown(4);
    }


}

Comments

Similar projects you might like

Windows PC Lock/Unlock Using RFID

Project tutorial by Prasanth K S

  • 20,270 views
  • 28 comments
  • 66 respects

Control a Cockroach with Arduino for under $30

Project tutorial by bravoechonovember

  • 12,767 views
  • 8 comments
  • 34 respects

E-Health: Low Cost Sensors for Early Disease Detection

Project tutorial by Saudin Dizdarevic

  • 13,295 views
  • 8 comments
  • 36 respects

Habitatt

Project tutorial by 5 developers

  • 10,879 views
  • 2 comments
  • 34 respects

Gesture-Controlled Robot

Project tutorial by Romina Abachi and Youssef El-Gendy

  • 4,352 views
  • 0 comments
  • 12 respects

Infinity Mirror Scuba Mask

Project tutorial by Curt White

  • 3,711 views
  • 2 comments
  • 15 respects
Add projectSign up / Login