Project in progress

Sole Searching

Reinventing the pedestrian experience.

  • 6,553 views
  • 12 comments
  • 12 respects

Components and supplies

Basic sewing materials (needle, thread, and scissors)
×1
Zippered shorts
×1
Shoe(s)
×1
A000053 iso both1
Arduino Micro & Genuino Micro
×1
Bluetooth Mate Silver
×1
LCD Display
×1
Power Rail (removable from most standard breadboards)
×1
Arduino Battery Adapter
×1
Tens70
9V battery (generic)
×1
Wires
×17
Solder (and necessary tools/accessories)
×1
Rubber Heat Shrink (and heat gun)
×10
Electrical Tape (optional)
×1

About this project

Description of Project

Sole Searching is a shoe that reacts to the invisible space through which we all move. The shoe is a wearable bluetooth detector, picking up the signals that pass through the "hertzian" layer of our space and displaying and the names of nearby devices. This creates a record of a usually ignored aspect of our environment: the multitude of radio waves that surround us and keep us connected to our friends, our work, and the world at large. The information broadcast across these waves is often so invisible that we forget that it exists in the public realm. Sole Searching makes visible this reality with an LCD screen embedded in the shoe to display information specific to that time and place. Just like shoes, radio waves are with almost everywhere we go. We use the radio waves to transmit and access data, but ignore their presence due to the fact that we can’t see them. Sole Searching makes visible this invisible layer, heightening our awareness of the "hertzian" space around us. It is a passive and playful way to interact with this layer of space.

Concept Video

Prototype in situ action.

Warning: embedding parts within the project story has been deprecated. To edit, remove or add more parts, go to the "Hardware" tab. To remove this list from the story, click on it to trigger the context menu, then click the trash can button (this won't delete it from the "Hardware" tab).
Basic sewing materials (needle, thread, and scissors)
Zippered shorts
Shoe(s)
Warning: embedding parts within the project story has been deprecated. To edit, remove or add more parts, go to the "Hardware" tab. To remove this list from the story, click on it to trigger the context menu, then click the trash can button (this won't delete it from the "Hardware" tab).
A000053 iso both1
Arduino Micro & Genuino Micro
Bluetooth Mate Silver
LCD Display
Power Rail (removable from most standard breadboards)
Arduino Battery Adapter
Tens70
9V battery (generic)
Wires
Solder (and necessary tools/accessories)
Rubber Heat Shrink (and heat gun)
Electrical Tape (optional)

The Team Hard at Work

What next?

Streamline & upgrade design:

  • incorporate all elements within shoe proper
  • add sounds and lights to better capture attention of passerbys


Pictured: Adidas "Social Media Shoe" by Nash MoneyCredits: Pocket-Lint

More features to explore: what else can we identify and expose in the virtual world?
Some possibilities:

  • wi-fi
  • browsing history
  • GPS

Practical applications: what can we do with such interaction?
Some ideas:

  • bring strangers together
  • check-in to locations
  • various games (e.g. try to find or avoid someone)

The possibilities are endless! :)

Documentation

Transcribed Brainstorming Process
Coding Research Notes
Powerpoint Presentation

Introduction and Background

Today’s modern world is increasingly characterized by activity and productivity. The time it takes to get from here to there is constantly being cut down and the many modes of transportation are invariably made more efficient. One lives a fast-paced existence, in which travel becomes less and less an experience in itself and more and more simply a matter of how fast one gets to his or her next destination. With this in mind, our group questioned how we could reinvent the everyday experience of commute, through the simplest mode of transportation—our shoes. We saw much potential in the pursuit of this agent given that human beings, for the most part, wear shoes wherever they go and whenever they travel… and have since been using them thusly for thousands of years (possibly since 1200 B.C.). Therefore, despite the heightened efficiency of most transportation modes, the instrument thus experiences extensive usage spanning a wide range of settings.

After a considerable succession of brainstorming sessions, the group decided on the basic concept—to have technology built around the shoe in order to divulge, to users and observers alike, striking information concerning their largely invisible interaction with the world of technology. What manner of information would be worth knowing about? After much deliberation, the group decided upon an answer. We resolved to identify and display upon our shoes the names of the users of various neighboring devices, believing that this would pique said users to question their level of open identity sharing via technology. Our approach thus falls within what has been termed “noir” design, and concerns "hertzian" space in the making physical (i.e. visible) of the virtual, which was previously neglected and imperceptible.

Project Progress

Instructions for Assembly

1. Obtain materials listed

2. Create shoe cover by overlaying shorts against shoe in desired conformation, then cutting accordingly to fit shape and size. Sew together to form cohesive unit (refer to assembly diagram or product picture for design)

3. Assemble electronics as depicted in schematic. Carefully solder joints together. Heat shrink any exposed wiring.

4. Download code (for the LCD display and bluetooth mate) and upload to the hardware. Also make sure to download the relevant libraries mentioned in the code.

5. Measure out and cut a hole within the side of the cover for the LCD display.

6. Carefully place electronics on the insides of the cover, with LCD screen in proper place. Sew on patches to cover up behind them. IMPORTANT: leave some space for two USB connections for any future coding of electronics.

7. Slip on shoes and cover.

8. Go forth and explore your virtual surroundings!

Assembly Diagram

Circuit Diagram

Bluetooth and LCD code

bluetooth_stuff.cpp
Bluetooth and LCD code

Warning: Embedding code files within the project story has been deprecated. To edit this file or add more files, go to the "Software" tab. To remove this file from the story, click on it to trigger the context menu, then click the trash can button (this won't delete it from the "Software" tab).

#include <Regexp.h>

/*
  Example Bluetooth Serial Passthrough Sketch
 by: Jim Lindblom
 SparkFun Electronics
 date: February 26,2013
 license: Public domain

 This example sketch converts an RN-42 bluetooth module to
 communicate at 9600 bps (from 115200), and passes any serial
 data between Serial Monitor and bluetooth module.
 */
#include <SoftwareSerial.h>  
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,7,6);

int bluetoothTx = 2;  // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3;  // RX-I pin of bluetooth mate, Arduino D3
unsigned int i = 0;
char buf[200];
  
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  bluetooth.begin(115200);  // The Bluetooth Mate defaults to 115200bps
  bluetooth.print("$");  // Print three times individually
  bluetooth.print("$");
  bluetooth.print("$");  // Enter command mode
  delay(100);  // Short delay, wait for the Mate to send back CMD
  bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  bluetooth.begin(9600);  // Start bluetooth serial at 9600
  lcd.begin(16, 2);
  lcd.clear();
  lcd.print("hello, world!");
  for (int j=0;j<200;j++){
    buf[j]='\0';
  }
}

void loop()
{
  MatchState ms;
  if(bluetooth.available())  // If the bluetooth sent any characters
  {
    // Send any characters the bluetooth prints to the serial monitor
    char str = (char)bluetooth.read();
    buf[i] = str;
    i++;
    if (i==199) i=0;
    Serial.print(buf);  
    
  } else {
    ms.Target(buf,0);
    char res = ms.Match(".*,(%a+)");
    if (res==REGEXP_MATCHED) {
      lcd.clear();
      lcd.print(ms.GetCapture(buf,0));
    }
  }
  if(Serial.available())  // If stuff was typed in the serial monitor
  {
    // Send any characters the Serial monitor prints to the bluetooth
    bluetooth.print((char)Serial.read());
  }
  // and loop forever and ever!
}

Unfortunate-but-Inavoidable Difficulties

  • Overabundance of cool ideas to choose from
  • Group scheduling difficulties (general mismatch & lack of time individually)
  • Lack of time to produce complex materials/designs (e.g. an entire 3D-printed shoe)
  • Special-order bluetooth module delivered late (despite Amazon "guarantee")
  • General challenge of working with materials (both electronic and generally physical)
  • Challenge of programming execution (people don't generally do what we wanted to do, much less publish 'how')
  • Coinciding midterm season

Code

bluetooth_stuff.cppC/C++
bluetooth_stuff.cpp
#include <Regexp.h>

/*
  Example Bluetooth Serial Passthrough Sketch
 by: Jim Lindblom
 SparkFun Electronics
 date: February 26,2013
 license: Public domain

 This example sketch converts an RN-42 bluetooth module to
 communicate at 9600 bps (from 115200), and passes any serial
 data between Serial Monitor and bluetooth module.
 */
#include <SoftwareSerial.h>  
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,7,6);

int bluetoothTx = 2;  // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3;  // RX-I pin of bluetooth mate, Arduino D3
unsigned int i = 0;
char buf[200];
  
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  bluetooth.begin(115200);  // The Bluetooth Mate defaults to 115200bps
  bluetooth.print("$");  // Print three times individually
  bluetooth.print("$");
  bluetooth.print("$");  // Enter command mode
  delay(100);  // Short delay, wait for the Mate to send back CMD
  bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  bluetooth.begin(9600);  // Start bluetooth serial at 9600
  lcd.begin(16, 2);
  lcd.clear();
  lcd.print("hello, world!");
  for (int j=0;j<200;j++){
    buf[j]='\0';
  }
}

void loop()
{
  MatchState ms;
  if(bluetooth.available())  // If the bluetooth sent any characters
  {
    // Send any characters the bluetooth prints to the serial monitor
    char str = (char)bluetooth.read();
    buf[i] = str;
    i++;
    if (i==199) i=0;
    Serial.print(buf);  
    
  } else {
    ms.Target(buf,0);
    char res = ms.Match(".*,(%a+)");
    if (res==REGEXP_MATCHED) {
      lcd.clear();
      lcd.print(ms.GetCapture(buf,0));
    }
  }
  if(Serial.available())  // If stuff was typed in the serial monitor
  {
    // Send any characters the Serial monitor prints to the bluetooth
    bluetooth.print((char)Serial.read());
  }
  // and loop forever and ever!
}

Comments

Similar projects you might like

DIY Relay Outlet Arduino

Project tutorial by Ben Jones

  • 22,846 views
  • 17 comments
  • 27 respects

SketchBoard

Project tutorial by SketchBoard

  • 3,721 views
  • 20 comments
  • 3 respects

Mystick

Project tutorial by Mystick

  • 1,862 views
  • 19 comments
  • 4 respects

Kite Power Autopilot

Project in progress by 3 developers

  • 3,241 views
  • 15 comments
  • 7 respects

Unlock your door with a knock

Project tutorial by Ashraf Nabil

  • 17,946 views
  • 10 comments
  • 54 respects

Magoo

Project in progress by 4 developers

  • 6,536 views
  • 12 comments
  • 31 respects
Add projectSign up / Login