Turn your "dumb" exercise bike into a Bluetooth Smart Trainer.
SpinLink is an open-source platform that bridges the gap between older, basic exercise bikes and modern cycling apps like Zwift, MyWhoosh, and TrainerRoad.
By adding a cheap ESP32 microcontroller (< $10), you can broadcast power, speed, and cadence data using the industry-standard FTMS Bluetooth protocol.
Smart trainers and smart bikes often cost $500 to $2000+. If you already have a sturdy mechanical exercise bike (like an old Kettler, Schwinn, or spin bike), SpinLink upgrades it to "smart" status for the price of a microcontroller.
Connect your bike to immersive virtual worlds. SpinLink makes your bike visible to apps like:
- Zwift: Ride with thousands of others in Watopia.
- MyWhoosh: Free-to-play virtual cycling.
- TrainerRoad: Structured interval training.
Stop guessing your effort. SpinLink calculates and broadcasts:
- Power (Watts): Estimated based on your bike's physics and resistance.
- Cadence (RPM): Real-time pedal speed.
- Speed (km/h): Virtual speed calculation.
Includes a dedicated Flutter app (iOS/Android) that acts as a modern bike computer, allowing you to:
- Monitor your stats in real-time.
- Adjust resistance virtually.
- Manage "Suggested Resistance" from terrain in Zwift (e.g., when you hit a hill, the app tells you to dial it up!).
Building your own SpinLink is easier than it sounds. You need basic DIY skills (connecting a few wires).
You only need a few parts:
- ESP32 DevKitC V4 (The brain).
- Your Exercise Bike (Must have a reed switch/speed sensor, which most do).
- (Optional) Rotary Encoder for physical resistance control.
Upload the code to your ESP32. π Read the Quick Start Guide for wiring diagrams and setup instructions.
- Power on your SpinLink.
- Open Zwift or MyWhoosh.
- Search for Power/Cadence sensors.
- Select "SpinLink".
- Ride!
| Component | Description | Status |
|---|---|---|
| Firmware | The C++ code running on the ESP32. Handles sensors and Bluetooth broadcasting. | β Stable |
| Companion App | Cross-platform mobile app for dashboard and control. | π§ In Development |
- Sensor Reading: The ESP32 detects pulses from your bike's existing speed sensor (reed switch).
- Physics Engine: It calculates your speed and estimates your power output based on a physics model (taking into account resistance levels).
- Bluetooth Broadcast: It acts as a standard FTMS Indoor Bike, so apps recognize it instantly without special drivers.
We love contributions! Whether it's refining the power curve algorithms, adding new app features, or improving documentation.
- See Firmware README for dev setup.
- See Companion App README for app setup.
This project is licensed under the MIT License - see the LICENSE file for details.