Android app project to generate/record power (watts) information while training on a bicycle trainer with multiple levels but no digital power output to capture (non-smart trainer).
(An alternative to purchasing a power meter.)
Based on the concepts of TrainerRoad's VirtualPower and working with non-smart trainers I wanted a tool to capture the data for use in personal analysis. I am primarily attempting to gather "relative" power measurements for determining my performance improvements (or declines) over time. I am less interested in "accurate" power measurements to compare to other riders or to calculate a "true" speed (calculation of how fast you would be going outside based the current watts you are generating, the grade, your weight and aerodynamic factor profile calculated from your weight).
Bluetooth LE functionality based on PunchThrough's Ultimate Guide to Android Bluetooth Low Energy (and example code). However, a number of other resources were referenced during development, including but not limited to:
- Android Developers BLE Overview
- The Wheels on the Bike part 2
- Tutorial: Intro to Developing Bluetooth Smart Applications for Android
- Introduction to Bluetooth Low Energy Development
- CircuitPython BLE Heart Rate Zone Trainer Display
Converting the Cycle Speed and Cadence information is a little challenging and I needed a lot of help:
- Cycling speed and cadence sensor's BLE Gatt characteristic data parsing and operation
- OLED Bike Computer
- TrainerPi
Interestingly, while researching I found projects creating the sensors part of this!
For Power calculations, I started with the TrainerRoad information (above), but found more curves for more trainers