Introduction: Power Laces- the Auto Lacing Shoe
Welcome new visitors!
Keep in mind this Instructables was published almost 5 years ago! I've learned a lot since than, expanded my workshop, and am attempting to turn Power Laces into a viable, soon to be released product!
Check out www.Power-Laces.com for more information, and thank you for visiting and commenting!
Why wait until 2015?
Inspired by 'Back to The Future II', this project is less 'Practical' than 'Proof of Concept', but hopefully it'll tide you over until Nike comes out with something more polished.
This was also the first time I worked with an Arduino microcontroller, and I wanted to get some experience with the little guy.
Operation is quite simple- step into the shoe and a force sensor reads the pressure of your foot and activates two servo motors, which apply tension to the laces, tightening the shoe. A touch switch reverses the servos.
Due to budget constraints, I only modified one shoe. Where did I put that darn sports almanac?!
And if you get a chance, vote for me in the Instructable USB contest!
Step 1: Parts & Tools
A shoe // a hightop with a lot of padding and undersole seemed easiest to work with and modify
Arduino // I used the Duemilanove
Motor shield// The kit from adafruit.com works great, and allows control of multiple types of motors
Force sensor// Also got this from adafruit.com
Servo Motors // again, also from adafruit.com. Gotta save on that shipping whenever you can!
Sheet metal // about 4" x 4", enough to keep it's shape but easily trimmed with shears
LED and a couple of resistors // I only had 1K's laying around, so that's what I used
9 Volt case, with built in battery clip and switch
Insulated copper wire// I used high and medium gauge
Plastic zip ties, various sizes // I went through a lot of these
Plastic 1/2" cable loops // used for organizing cables
1/8" braided nylon paracord // 10' should be enough
Just the basics- soldering iron, screwdrivers, etc. A hot glue gun is handy, too.
A USB A to B cable and a computer to load the Sketch to the Arduino.
Step 2: The Laces Pt. 1
Cut six lengths of cord, each about 18" long. Remove the inner core and save for future projects.
Fit the zip ties into the holes for the shoelaces on one side. I fit in 5, leaving one space inbetween each zip tie.
Fit the shell of the cord over the zip tie. Don't trim the end, as shown in one of the pictures. Keep in long, as later the end of this will connect to the Servo.
I trimmed the "clipping part" off the zip tie, and then used a lighter to melt the cord down, giving it a cleaner appearance. If you apply some quick heat to a 1/4" area at the end here, it will stiffen and prevent the it from coming out (that's what she said.)
Repeat for the other four.
Screw on the plastic loops and thread through on the other end.
Save the 6th length of outershell cord for later in the project.
Step 3: The Laces Pt. 2
The ankle strap is mounted pretty much the same way as the lower laces. The ankle strap runs the opposite way of the other straps, to put some counter-force on the servos when they put the laces under tension.
I put a small martini shaker into the shoe to act as a foot analog, so I could make strap adjustments and such. You want to be able to get your foot easily into the shoe, and visually the tightening laces look better if they have a lot of slack.
Step 4: Servo Mounting Plate
Trim the sheet metal to fit on the back of the shoe. My pairs have a handy little rubber part at the back and I trimmed the metal to approximate the shape.
After sanding down any rough corners and edges, drill in some holes and use some flat bottomed screws to mount the plate to the shoe. The two screws on the side actually to go into the shoe and are secured with screw nuts, but they're wide enough apart that I don't feel them when I put the shoe on. The bottom screw just goes into the padding.
Leave a bit of a gap between the plate and the shoe for now, as later we're going to put some zip ties through to attach the servo motors.
Step 5: Construct the Motor Shield
The Motor Shield is an addon circuit board that enables the Arduino to control various motors, or Servos in this case.
The Shield comes as a kit from Adafruit.com, which has the building instructions along with software libraries that you will need to program and control the Servos.
Following the instructions on the site, solder the Motor Shield together and attach it to the Arduino via the header pins.
Step 6: Mount the Servos, Battery, and Arduino
Zip ties are used to mount the various electronic components.
The motors were attached to the mounting plate first by using some rubber cement (optional) to keep them in place, and wrapping and tightening them as much as possible with the zip ties.
Note that most of the ties thread through the space between the mounting plate and the shoe. As my zip ties weren't long enough in some areas, I combined two together. After the servos were in place, I trimmed down the ties.
Beneath the motors, the battery case is mounted in much the same way, power switch outward.
Finally, the Arduino board can be attached. The holes line up with zip ties on both side, and is held in place by screws attached to them.
Before attaching the Motor shield, some modifications must be made.
Step 7: Adding Some Electronics to the Motor Shield
Is your soldering iron still warm? Time to add some of the bells and whistles.
As you can see in the pics, I tested the components and programing with a breadboard attached. Since I've done the heavy lifting you can skip this part, but it doesn't hurt to double check before everything is set in place.
After the program is uploaded (posted at the end of the instrutable) we can permanently mount the parts. First, we solder a resistor and to one pin of the LED and a length of wire to both pins.
That assembly is then pushed through an unused shoelace socket, and the wires are ran to the Arduino, using hot glue to keep everything in place and out of the way. Make sure you know which of the wires goes to the positive pin of the LED!
The Force sensor is mounted next. Soldering is not advised as the plastic may melt, so I wrapped some wire around the leads and hot glued them into place. The sensor was then glued and duct taped into the bottom of the shoe, right where my heel would rest.
The wires, also glued and taped into place, go up the back of the shoe and to the Arduino.
Finally, after we grab another resistor and a bit of medium gauge wire, we can begin soldering everything into place:
1. The positive wire of the LED goes to digital pin 2.
2. One force sensor wire (doesn't matter which) is soldered to +5v.
3. The other force sensor wire goes to Analog Pin 0.
4. Also connected to Ana. Pin 0 is a resistor. The other end of the resistor goes to Ground.
5. Also connect the negative LED pin to Ground.
6. A four inch spiral wrap of wire is soldered to Analog Pin 5. This is the touch switch- touching this wire firmly will cause the servo motors to move into the unlocked position.
7.Finally, plug in the servo motors, making sure to get the orientation right. My Arduino sketch assumes the left (looking from the back) servo is plugged into the right most servo pin, though this can easily be changed in the software.
The electronics are finished!
Step 8: Connect the Laces to the Servos
Now we just have to connect the laces to the servos and the hardware portion of the project is finished.
This usually requires a lot of little adjustments to get it right- you want enough slack to get your foot comfortably in the shoe, but when it laces up you want it to be visually appealing.
I used zip ties to secure the laces, and attached them to the servo arms, making sure the servos are in the "unlaced" position. The sketch will turn the servos 180 degrees from the starting point, tightening the laces.
Step 9: Upload the Arduino Sketch
Plug the USB cable into the Arduino and the computer, and open the .pde sketch with the Arduino IDE. Make sure you have download the motor shield libraries as detailed in it's instructions.
Click 'Upload' and within a few seconds it'll be transferred and the shoe is now ready for use!
Just a caveat, this is my first time working with the Arduino and programming in general, so I'm sure the sketch is nowhere near optimized and could use some fine tuning. Feel free to play around with it!