■odorici.sys

$ cat ~/work/bike-buddy.md

project · capstone · 2025

Bike Buddy

Best ECE Project Award, GT Capstone Expo

Predictive maintenance for bicycles from one Hall sensor and a 16-magnet ring: dual-core RTOS firmware on an ESP32-S3 classifies riding events and streams bike health to an iOS app.

fig.01 · photograph
kind
project
course
ECE 4015 Senior Design, Georgia Tech
category
capstone
period
Aug 2025 - Dec 2025
status
completed // award winner
role
Wheel subsystem: magnet ring and Hall encoder, wheel signal processing, speed and wobble detection; Expo Lead
team
6 members

head -n 20 README

Best ECE Project at the Fall 2025 Capstone Expo. A low-cost attachment that gives an ordinary bicycle the maintenance telemetry of a connected e-bike, from one Hall sensor, a magnet ring and a force sensor on the brake.

I owned the wheel subsystem. Sixteen magnets sit on an acrylic ring with alternating poles, so a single Hall-effect sensor on the fork sees a crest and a trough for every magnet. Position, speed and lateral wobble all come out of that one signal, with no IMU. On the ESP32-S3, core 0 samples the sensors and keeps their moving averages on a 1 ms period, while core 1 runs the filtering, the classifier and the BLE link, so radio traffic can never delay a sample. On core 1, a look-ahead steady-state velocity estimate sets the window of a bandpass filter that separates wobble from real changes in speed, and a weighted decision tree written as a finite state machine labels each window as braking, pedaling or noise with bounded memory and stack. A force sensor on the brake lever gives a brake-health metric from the fit of brake force against deceleration. The finished unit weighs about two pounds and costs roughly $35 in parts.

grep -n highlights

  1. 01Built dual-core RTOS firmware on an ESP32-S3, isolating 1 ms sampling from BLE so radio activity could not delay acquisition.
  2. 02Designed a 16-magnet ring and Hall-sensor encoder to derive wheel position, speed and wobble from one sensor. No IMU.
  3. 03Classified braking, pedaling and noise with a weighted decision tree implemented as an FSM, bounding memory and stack usage.
  4. 04Filtered the wheel signal with a bandpass stage and a look-ahead steady-state velocity estimate, so wobble could be measured without being mistaken for a speed change.
  5. 05Expo Lead; the project won the Best ECE Project Award at the Fall 2025 Capstone Expo.

cat spec.toml

[hardware]

  • -ESP32-S3 on a custom PCB with a 1000 mAh LiPo recharged over USB-C
  • -16-magnet acrylic ring on the front wheel, alternating poles, read by one Hall-effect sensor
  • -Force sensor on the brake lever for the brake-health metric
  • -Temperature and humidity sensors on the main board
  • -Laser-cut wheel mount, 3D-printed spoke mounts and PCB housing

[firmware]

  • -Core 0: Hall, force and environment sampling tasks with moving averages, 1 ms wheel period
  • -Core 1: classifier and BLE transmission, so radio traffic never blocks sampling
  • -Core 1 preprocessing: look-ahead steady-state velocity estimate, then a bandpass filter for wobble and speed
  • -Weighted decision tree as an FSM for braking, pedaling and noise, bounded memory and stack

[app]

  • -iOS app in SwiftUI with Core Bluetooth and SwiftData persistence
  • -Dashboards for wobble, acceleration, velocity and brake health, plus maintenance advice

ls ./media

fig.02The Capstone Expo poster. The wheel subsystem, signal processing and decision tree sections are my work.
fig.03The magnet ring. With alternating poles every magnet gives a crest and a trough, so one Hall sensor is enough for direction, speed and lateral deviation.
fig.04How the two cores split the work: sampling and moving averages on core 0, look-ahead filtering, the decision tree and BLE on core 1.
fig.05Where everything mounts. Installing takes under ten minutes with clamps and tape, and nothing on the bike gets modified.
■ 12 modules · 2 roles∿█