Wearable Smart Sensing Insole
Understanding the orientation and distribution of force exerted by the feet can be extremely useful in preventing injury and assessing and improving performance in a variety of activities. Looking to improve my skiing technique and with a love of all things gadget I designed a smart pressure and angular sensing insole, designed to be worn inside your boots with minimum discomfort thanks to its small, slim design. Data from each individual sensor is fed to a mobile app wirelessly and can be used to monitor weight distribution and position in real-time or collectively at the end of a session. Use this data to know exactly what you're feet are doing and what adjustments may be necessary to improve things on your next run. Such information may be just as useful to runners and other sports alike.
Some knowledge of electronics and programming of micro-controllers would be useful to complete this project. You will also need to purchase the following items:
- 2 x ESP32 Micro-controller (one for each foot)
- 8 x 10k ohm resistors
- Copper Tape
- Sheet of Velostat conductive sensing material
- Printed insole templates
- 2 x WS2812RGB LED
- 2 x Push Button Switch
- 2 x MU-6050 Accelerometer (For angular measurements)
- 2 x 3D-Printed housing (If required)
Additionally you will need the following if you don't already own them:
- Solder and soldering Iron
- Scissors
- Glue gun
- Thin guage wire
- Breadboard/Proof board
Create a Template
The sole consists of 3 parts, a base 'supporting' layer, the sensors themselves and an upper insulating layer.
First make a template for the sole and to help position individual sensors and any cable connections. I suggest you print this on a piece of card and cut it out. Card will provide some support yet retain flexibility whilst it moves around under your foot. The template here is for a US size 8, scale the length of the sole based on your shoe size, see Table.
As I don't have a printer I used the template to 3D-print a thin (0.5mm) base, download the gcode file if you wish to do the same. For opposite soles simply mirror the design.
Lay the Copper Traces
We will use copper tape instead of wire to connect up our sensing circuit as it is thinner and should hopefully prove more robust to the flex and stresses required under foot.
Stick the tape directly to your template using the marked paths, ensuring that the traces do not touch one another. Allow some extra tape at the sensor locations so that it can be folded back on itself and attached to the conductive sensing material in the next step.
Prepare the Sensors
The sensors are made using Velostat. Velostat is an electrically conductive material whose resistance changes as it is flexed or compressed. It can be bought in sheets as thin as 0.1mm thick and is a lot less expensive than similarly purposed sensors, it is therefore an excellent choice for wearable projects/gadgets.
Measure and cut small squares/circles of material (one for each sensor). I chose squares to save waste but it really doesn't matter too much at this stage as we will be calibrating our sensors later.
Secure each square of material in place on the template using the copper tape from the previous step, ensuring that the individual sensors do not touch one another or any of the neighbouring copper traces
Solder Data Cables
Solder some thin gauge wire directly to the copper tape at the heel of the sole, this will be used to carry data from each sensor to the micro-controller. The wires will need to be long enough to reach the micro-controller attached to the outside of the boot. Secure in place using hot glue and trim off any excess copper tape.
Insulate the Bottom Layer
We will be measuring resistance across the Velostat, sandwiched between two layers of the copper tape so it is important that we insulate everything but the Velostat on this first layer. Do this by using electrical tape to mask all but a small space at each sensor location. It is important that this layer is thin so that as much weight as possible is transferred from the foot to the sensing material.
Secure in place using hot glue.
Wire the Upper Layer
The top layer is used to supply voltage to each sensor. As we will be providing the same voltage to each sensor we can connect them in parallel. Stick copper tape over each of the sensor locations, ensuring that they make contact with one another and that the tape extends towards the heel.
Trim any excess copper tape extending beyond the template.
Solder a single cable to a point at the back of the heel. This cable must also be sufficiently in length to reach the micro-controller on the outside of the boot. Secure the soldered connection with hot glue to prevent it from breaking free over time.
Connect the Micro-controller
For this project we will be using the ESP32 micro-controller as it has plenty of analog inputs and both Bluetooth and WiFi connectivity. Connect individual wires to the micro-controller as shown in the schematic. Use a proof board to keep the space taken up by the circuit to a minimum, remembering that it all needs to attach to the outside of your boot when completed. Alternatively you could run the cables to a pocket or backpack, just try not to get them in the way of what you're doing!
Power for the circuit comes from a 7.4V Li-Po battery connected to VIN of the ESP32.
The switch and led may be omitted but they will make the final product much easier to use if you do include them.
Optional: Attach the MU-6050 to enable monitoring of acceleration, pitch, yaw and role, the information from which I hope to develop even further in a future version of this project.
Make a Housing
You could strap all those fragile electronics and heavy battery straight to your leg or ankle but a better way (for skiing at least) is to attach it your boot. If you have access to a 3D printer, download the STL files and print a housing and lid for each sensor. Place the electronics and battery within the housing, securing with hot glue where necessary and ensuring you can still access the battery connectors as these will be used for charging later.
Configure the Sketch
Download the latest Arduino IDE and the latest Arduino sketch which can be found at the following links:
Ensure you have the following libraries installed. These can be installed using the libraries manager from within the Arduino IDE if not. Newer versions may work but have not been tested.
Blynk v0.6.1
WiFi v1.2.7
If you are missing the ESP32 from the boards manager add the following address to the alternative boards manager URL within the preferences window:
https://dl.espressif.com/dl/package_esp32_index.js...
Open the sketch in the Arduino IDE. Change the 3 lines shown below to reflect your own WiFi credentials and your Blynk Auth Token (see Blynk App section to locate this).
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YOUR WIFI SSD HERE";
char pass[] = "YOUR WIFI PASS HERE";
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YOUR AUTH TOKEN HERE";
Before uploading, ensure that your board settings match those in the screenshot.
To troubleshoot any faults, with the ESP32 connected to the PC, use the Serial monitor in the Arduino IDE to help diagnose.
Blynk Mobile App
The sensors may be monitored over WiFi using a Blynk web app. Blynk is an IoT platform free for prototyping/non-commercial use.
Begin by downloading Blynk from the Android Play or Apple App Store.
Create an account and Scan the QR-code above from within the app.
Under the project settings locate the projects Auth Token by emailing to your account or using the Copy all feature.
Copy the auth token to the android sketch, upload and you should be good to go!
Note: To connect to the device when you are out and about I suggest you set-up your phone as a WiFi hotspot and change the configuration in your sketch to match. The ESP32 does have bluetooth capabilities and this would make for a much better form of communication with significantly lower power consumption. At present Bluetooth support in Blynk is sketchy but with developments in the pipeline, watch this space!
Attach to Your Boot
Slide the insole carefully into the bottom of the boot on top of the existing liner, lay the cables along and out of boot along the back edge. Clip the transmitter unit to the power strap of the ski boot.
Connect and Calibrate
With the insoles now installed they are almost good to go! All that remains is to calibrate, which is done automatically before each use. Simply raise your foot off the ground and turn the power on using the switch. Once calibration is complete the LED will flash green. For accurate angle measurements, ensure that the boot is also at the same pitch, yaw and roll as your alternate foot.
You can re-calibrate in the app at anytime by hitting the calibrate button under the settings tab.
Repeat for the Other Sole!
If you want to monitor both feet simultaneously, you will obviously need another sensor, repeat the steps above remembering to reverse the template accordingly and upload the corresponding sketch.
I hope you enjoyed this project, please visit my website (www.cabuu.com) for more details and other fun things to make!