Photos of the Device























Brief Video of How it Works


Final Presentation at Museum Lab

Project Statement

Inspired by the writing of Guy Debord’s writing, Theory of dérive (1956), and his idea of the “dérive” or rapid passage through varied ambiances, this project proposes walking backwards as a new means of experiencing a confined space. Debord emphasizes the importance of purposeless strolling for experiencing the discarded, or marginalized aspects of our environment. He believes that purposeful walking has an agenda, making it difficult to absorb the world around us. While walking without a set destination or intention, we are opened to random encounters that enriches our experience.

The Museum Lab is a space with limited to walking and movement options. The sequence of moving through one space to another constructs a linear experience which reduces the chances of random, serendipitous moments. By walking backwards, one is denied of their frontal view and thus changes their perceived path.

In Walking Backwards, the sensors on the hand measure the distance between the user and one’s surroundings. The distance is converted into vibrations, which allows the user to estimate how close one is to nearby objects. From the varying vibrations, the user is able to delineate one’s path.

Process Images 

Sketch of an idea. Device as a glove

The Glove

Process Reflection

The project was a continuation of the previous project, refitted into the context of the Museum Lab. There were some improvements from the previous project, how the device is worn and relocating equipment to different parts of the body. These changes allowed for variety of interaction with the device. Moving the ultrasonic ranger to the hand and keeping the Arduino chip and protoboard to a minimum size improved the wearability of the device. The ultrasonic ranger on the palm of the hand allowed me to use my hands freely to sense any nearby object.

However, I regret that I wasn’t able to make more adjustments to the project. It would have been better if the device was able to detect objects even further ahead and had more variations in the vibrations it let off.

//Project no.3: Walking Backwards 
//Hugh Lee 
//The ultrasonic sensor measures the distance between the sensor and any object nearby and converts into vibration. There are three different types of vibration, indicating how close the object is to the sensor. The different types of vibration are pulled from the "Adafruit Drv2605.h" library. 
#include <NewPing.h> 
#include <Wire.h> 
#include "Adafruit_DRV2605.h" 

#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. 
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. 
#define MAX_DISTANCE 400 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

Adafruit_DRV2605 drv;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. 
void setup() { 
  Serial.println("DRV test"); drv.begin(); 

  // I2C trigger by sending 'go' command 
  // default, internal trigger when sending GO command drv.setMode(DRV2605_MODE_INTTRIG);

uint8_t effect = 1; 

void loop() {
  // Serial.print("Effect #"); Serial.println(effect); 
  int ping = sonar.ping_cm(); 
  delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. 
  Serial.print("Ping: "); 
  Serial.print(ping); // Send ping, get distance in cm and print result (0 = outside set distance range) 

if (ping < 5) { 
  effect = 118; //if ping is smaller than 5, it uses vibration 118 from the "Adafruit_DRV2605.h" library 
else if (ping < 25) { effect = 48; //if ping is smaller than 25, it uses vibration 48 from the "Adafruit_DRV2605.h" library drv.go(); 
else if (ping < 50) { effect = 44; //if ping is smaller than 50, it uses vibration 44 from the "Adafruit_DRV2605.h" library drv.go();
else { drv.stop(); //stop vibrating for any other values } 
drv.setWaveform(0, effect); // play effect 
drv.setWaveform(1, 0); // end waveform // play the effect!