Injury Predicting Shoe

For my main project, I chose to make a shoe that tracks running form and predicts injuries. I will use pressure sensors and accelerometers to get the data while the user runs.


Mihir H

Area of Interest

Software Engineering


Saint Francis High School


Rising Junior


Final Milestone

I completed my final milestone, which was sending the data to a real-time dashboard. When I first completed my third milestone, the data was being sent to an IP address that I created. The problem with that design was that for the pressure values to change real-time, I would have to constantly refresh the page. Now, with the real-time database, I can display the values in a more user friendly way, and have it update real-time without having to refresh the page. So here’s a little demo of how it works. (Demo). The database is Thingsboard and it makes it very easy to display my data. So to get this to work, I had to first download the Thingsboard library on Arduino IDE. It was simple for me to connect the Arduino to the Wifi since I already had the framework from my third milestone. From there I had to connect the Arduino to Thingsboard itself. To do this, I used the Thingsboard token that was specific to my account and also used the server url. This got my Arduino connected to my Thingsboard database, and then I just had to register my devices and setup graphs and meters to display my data real-time. Some difficulties that I had during this step were that there wasn’t enough documentation on how to connect to Thingsboard using Wifi. There was a lot of data on how to connect to Thingsboard using an Esp8266 bluetooth module, but there wasn’t much using the Arduino MKR1000 which is a wifi module. After all my data was being displayed correctly, I had to take my circuit out of the breadboard and connect it directly to the Arduino. At first when I did this, I made the circuit out of solid core wires, however, when I was trying to put the circuit inside of the shoe, the wires were too stiff and ended up snapping my sensors, so instead of using a solid core wire circuit, I changed all my wires to stranded wires. This was much more flexible, but a lot more delicate, so I had to be extremely careful when making the circuit. After getting that circuit to work properly with the database, I duct taped all the sensors underneath the insole and put all the extra loose wires under the laces. For some modifications I plan on adding the injury prediction to the shoe, and also make a 3d printed holder for my power supply. Thank you.

Third Milestone

I managed to send data that I got from my force sensitive resistors to my computer wirelessly. So how I managed to send the data is by creating a specific IP address that my computer would display the pressure sensor values on. The Arduino then connects to the internet using a library called Wifi101. The computer also connects to the same Wifi, and because of this, they are able to send data to each other. The Arduino sends packets to the router which then sends the data to the computer. The computer displays this data onto the IP address that is constantly being updated, to see the updated values on the pressure sensor. During this milestone, I learned how to connect my Arduino to the Wifi. I also realized that different Arduino models use different libraries to connect to the wifi. For example, the Arduino MKR1010 uses Wifi Nina, while the Arduino MKR1000 uses Wifi101. I faced many struggles throughout this milestone since there was not too much documentation on how to connect the MKR1000 to wifi. Eventually I realized that I had to use the Wifi101 library, which then had example codes, which helped me get the framework for my final milestone. For my next milestone I plan to put together my shoe, and connect all the components together. Thank You.

Second Milestone

For my second milestone, I managed to send the raw data from my accelerometer to serial monitor. The accelerometer that I used is an MPU-92/65. This accelerometer consists of an accelerometer, a gyroscope, and a magnetometer. The accelerometer sends data based on how much is tilted. The gyroscope returns positive or negative whether the object is being rotated clockwise or counter-clockwise, and finally, the magnetometer calculates the Earth’s gravitational pull based on direction or relative change of location. So how an accelerometer works is through a piezoelectric effect. There are microscopic crystals in the accelerometer and when accelerative forces are put on these crystals, they get stressed which causes the voltage to change. The gyroscope works because of something called precession. This is what makes gyroscopes look like they defy gravity and it explains that to achieve this look, a gyroscope rotates about an axis at a right angle to the force axis. For my circuit, I connected the VCC port on the accelerometer to the power supply. I connected ground to ground, and I also connected the serial clock and the serial data to the respective ports on the Arduino. During this milestone, I learned how accelerometers and gyroscopes work. I also learned how to shift bits and why it can actually be useful to format data. So what a bit shift does is that it shifts a series of bits either left or right, which will help with optimization because it requires fewer calculations. And the next milestone that I am planning to complete is incorporating Wifi into my Arduino. Thank you.

First Milestone

For my first milestone, I got my force sensitive resistor (FSR) to work. As I press the sensor, it sends values to my computer, which then gets categorized into no pressure, a light squeeze, a medium squeeze, and a big squeeze. These categorizations help because it will help make it clear how much pressure is being put while running, which can then show if it is too much pressure or not enough. So how the FSR works is it is made out of a conductive polymer. As pressure is put onto this conductive polymer, the FSR lowers the resistance. Because of this, FSR sensors are considered as both resistors and sensors. I first created my circuit using a breadboard, however, I knew that I had to make it straight from the Arduino because I would not have been able to fit an entire breadboard in my shoe. I soldered the circuit straight to my Arduino. My circuit consisted of connecting a 220-ohm resistor to the 5V pin, ground, and one of the pins on the FSR, and I connected the other pin on my FSR to A0, which is one of the analog inputs on the Arduino. Some problems that I faced were setting up my Arduino. At first, my computer could not find the port that my Arduino was connected to, so eventually, I fixed it by resetting my Arduino, adjusting any pins connect to inputs 0 or 1, and restarting my computer. Another challenge that I faced was not getting an accurate range on my FSR. At first, when I plugged in my FSR, I got a pressure range of 650-1023. This was a problem because it would be impossible to differentiate a medium squeeze from a big squeeze since they would both equal 1023. The Arduino caps out at 1023 because 1023 is equal to 5V which is the cap of the Arduino. I then realized that I was using a 10k-ohm resistor and that if I changed it to a 220-ohm resistor, it changed the pressure range from 90-800, which is much more accurate because it does not have a set limit.

Starter Project

For my starter project, I chose the Minty Boost, a small-battery USB charger. It uses two AA batteries to charge either your phone or any other gadget using its respective USB charger. The Minty Boost uses multiple different components like boost converters, capacitors, resistors, diodes, and inductors to convert power from AA batteries to charge your phone. Each AA battery produces 1.5V of power, however, to charge a phone, 5V is needed. This problem can be solved by using a 9V battery, but this battery will only run at about 60% efficiency. To overcome this problem while still using AA batteries, a boost converter is used. The boost converter increases the voltage while lowering the current. To use the boost converter, other components are also needed as a part of the circuit. The Schottky diode forces the current in one direction, and the inductors help store voltage and release it in small bursts. This brings the voltage up from 3V to 5V. In addition, capacitors are used to store small amounts of energy and resistors are used to control the current and voltage throughout the entire circuit. During this project, I faced one main problem, and that was learning to solder. Since it was my first time ever soldering, I had a few difficulties at first, but after a while, I got used to it and became much better. So how it works is that phone chargers need about 5V to charge the phone. Two AA batteries will make about 3V of power. Since this is less than the needed 5V, the Minty Boost uses a boost converter. The boost converter will increase the voltage from 3V to 5V by increasing voltage and lowering current. A few things that I learned while making this project is what exactly a boost converter is. I also learned that you need other components when using a boost converter like diodes that will help conduct current in one direction, and capacitors to help store energy. The main struggle I had was learning how to solder components correctly. I had never soldered previously, so it was a bit difficult at first. Making the Minty Boost was a fun experience, and I learned a lot.

STEM Summer Camps Coding & Robotics Classes For Kids San Francisco Coding & Robotics Classes For Kids New York Coding & Robotics Classes For Kids Denver Coding & Robotics Classes For Kids Palo Alto STEM Summer Camps For Kids in New York STEM Summer Camps For Kids in Palo Alto STEM Summer Camps For Kids San Francisco STEM Classes For Kids in New York STEM Classes For Kids in Palo Alto STEM Classes For Kids in San Francisco Code Classes For Kids Code Classes For Kids in New York Code Classes For Kids in Palo Alto Code Classes For Kids in San Francisco STEM Summer Camps For Kids

Leave a Comment

Start typing and press Enter to search