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.
- <span class="com">//Project no.3: Walking Backwards </span><span class="pln">
- </span><span class="com">//Hugh Lee </span><span class="pln">
- </span><span class="com">//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. </span><span class="pln">
- </span><span class="com">#include</span><span class="pln"> </span><span class="str"><NewPing.h></span><span class="pln">
- </span><span class="com">#include</span><span class="pln"> </span><span class="str"><Wire.h></span><span class="pln">
- </span><span class="com">#include</span><span class="pln"> </span><span class="str">"Adafruit_DRV2605.h"</span><span class="pln">
- </span><span class="com">#define</span><span class="pln"> TRIGGER_PIN </span><span class="lit">12</span><span class="pln"> </span><span class="com">// Arduino pin tied to trigger pin on the ultrasonic sensor. </span><span class="pln">
- </span><span class="com">#define</span><span class="pln"> ECHO_PIN </span><span class="lit">11</span><span class="pln"> </span><span class="com">// Arduino pin tied to echo pin on the ultrasonic sensor. </span><span class="pln">
- </span><span class="com">#define</span><span class="pln"> MAX_DISTANCE </span><span class="lit">400</span><span class="pln"> </span><span class="com">// Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.</span><span class="pln">
- </span><span class="typ">Adafruit_DRV2605</span><span class="pln"> drv</span><span class="pun">;</span><span class="pln">
- </span><span class="typ">NewPing</span><span class="pln"> sonar</span><span class="pun">(</span><span class="pln">TRIGGER_PIN</span><span class="pun">,</span><span class="pln"> ECHO_PIN</span><span class="pun">,</span><span class="pln"> MAX_DISTANCE</span><span class="pun">);</span><span class="pln"> </span><span class="com">// NewPing setup of pins and maximum distance. </span><span class="pln">
- </span><span class="kwd">void</span><span class="pln"> setup</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">9600</span><span class="pun">);</span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"DRV test"</span><span class="pun">);</span><span class="pln"> drv</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">();</span><span class="pln">
- drv</span><span class="pun">.</span><span class="pln">selectLibrary</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
- </span><span class="com">// I2C trigger by sending 'go' command </span><span class="pln">
- </span><span class="com">// default, internal trigger when sending GO command drv.setMode(DRV2605_MODE_INTTRIG);</span><span class="pln">
- </span><span class="pun">}</span><span class="pln">
- </span><span class="typ">uint8_t</span><span class="pln"> effect </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
- </span><span class="kwd">void</span><span class="pln"> loop</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="com">// Serial.print("Effect #"); Serial.println(effect); </span><span class="pln">
- </span><span class="kwd">int</span><span class="pln"> ping </span><span class="pun">=</span><span class="pln"> sonar</span><span class="pun">.</span><span class="pln">ping_cm</span><span class="pun">();</span><span class="pln">
- delay</span><span class="pun">(</span><span class="lit">50</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. </span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Ping: "</span><span class="pun">);</span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">ping</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Send ping, get distance in cm and print result (0 = outside set distance range) </span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"cm"</span><span class="pun">);</span><span class="pln">
- </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ping </span><span class="pun"><</span><span class="pln"> </span><span class="lit">5</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- effect </span><span class="pun">=</span><span class="pln"> </span><span class="lit">118</span><span class="pun">;</span><span class="pln"> </span><span class="com">//if ping is smaller than 5, it uses vibration 118 from the "Adafruit_DRV2605.h" library </span><span class="pln">
- drv</span><span class="pun">.</span><span class="pln">go</span><span class="pun">();</span><span class="pln">
- </span><span class="pun">}</span><span class="pln">
- </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ping </span><span class="pun"><</span><span class="pln"> </span><span class="lit">25</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> effect </span><span class="pun">=</span><span class="pln"> </span><span class="lit">48</span><span class="pun">;</span><span class="pln"> </span><span class="com">//if ping is smaller than 25, it uses vibration 48 from the "Adafruit_DRV2605.h" library drv.go(); </span><span class="pln">
- </span><span class="pun">}</span><span class="pln">
- </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ping </span><span class="pun"><</span><span class="pln"> </span><span class="lit">50</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> effect </span><span class="pun">=</span><span class="pln"> </span><span class="lit">44</span><span class="pun">;</span><span class="pln"> </span><span class="com">//if ping is smaller than 50, it uses vibration 44 from the "Adafruit_DRV2605.h" library drv.go();</span><span class="pln">
- </span><span class="pun">}</span><span class="pln">
- </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> drv</span><span class="pun">.</span><span class="pln">stop</span><span class="pun">();</span><span class="pln"> </span><span class="com">//stop vibrating for any other values } </span><span class="pln">
- drv</span><span class="pun">.</span><span class="pln">setWaveform</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> effect</span><span class="pun">);</span><span class="pln"> </span><span class="com">// play effect </span><span class="pln">
- drv</span><span class="pun">.</span><span class="pln">setWaveform</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln"> </span><span class="com">// end waveform // play the effect! </span><span class="pln">
- </span><span class="pun">}</span>
Comments are closed.