SoleSense
A sensor insole that detects foot tapping, leg shaking and heart rate, built by a team of three at the UpLYFT hackathon.
Role Three-person team at the UpLYFT hackathon, with Xavier Goff and Atharva Mansabdar. I did the mechanical design and the electronics — the insole CAD, sensor wiring and integration, and the control logic — and contributed to the companion app.
Firmware demo
The insole's detector
The tap and shake detection from the prototype's published Arduino sketch, ported line for line and running at the sketch's own 20ms loop. This is the detection half of the firmware; the servo code isn't in the repository.
This runs the real firmware logic on input you provide here. Pressing a pad feeds the sketch an analog reading of 600, releasing it 0. None of it is recorded sensor data.
Tap one pad steadily, about twice a second, and keep going for three seconds. A pad held down does not count.
Tap detection
4+ presses, each within 40–700ms of the last, kept up for 3s
- TOEin 0 · C 0—
- HEELin 0 · C 0—
- MIDDLEin 0 · C 0—
Shake detection
Smoothed gyro above 70 °/s for 300ms starts it; below 40 for 500ms ends it
NOT SHAKING
Heart rate 0. The sketch reports 0 when nothing is on the PPG sensor, and this demo has no PPG input.
printCombinedStatus() formatTOE:0 C:0 HEEL:0 C:0 MIDDLE:0 C:0 | NO_TAP | Gyro:0.0 Smooth:0.0 | NOT SHAKING | HR:0The prototype




Problem
Stress often shows up in the body before anyone names it: a foot tapping under the desk, a leg that won’t keep still. At the UpLYFT hackathon, our team of three (me, Xavier Goff and Atharva Mansabdar) set out to build an insole that notices those patterns and responds with gentle pressure on the foot, without changing how the wearer walks.
Approach
The insole is a 3D-printed TPU lattice carrying three FSR402 force sensors at the toe, midfoot and heel, an MPU-6050 motion sensor and a MAX30102 heart-rate sensor, all read by an Arduino. SG90 micro servos provide the feedback.
The firmware treats each signal on its own. A press on a pad only counts as part of a run: at least four presses, each 40 to 700ms after the last, kept up for three seconds, with separate press and release thresholds so one press can’t register twice. Shaking is a smoothed gyro magnitude that has to stay above 70°/s for 300ms to start and below 40°/s for 500ms to stop. Heart rate is the average of the last eight beats between 50 and 150 bpm. The firmware reports all three every 20ms; it doesn’t fuse them into one stress score.
The design decision worth explaining is where the feedback goes. The main actuation point is the midfoot, the zone reflexology maps to the adrenal glands and solar plexus, with the big toe as a second point. We chose the midfoot because it sees lower plantar pressure during walking, so the actuator can press there without disturbing the wearer’s gait.
Result
The prototype worked on the day: the insole sensed tapping, shaking and heart rate, and the servos actuated. The firmware published in the repository is the detection half. The sketch that drove the servos isn’t in it, which is why the demo above runs detection only.
It is a working prototype, not a validated device. We didn’t test whether the feedback reduces stress, and I make no claim that it does. Several parts of the design exist only on paper: micro-pneumatic soft actuators to replace the servos, a heart-rate sensor built into the textile over the dorsalis pedis artery, and a Qi charging dock.