I'm building Arduino-based bicycle computer with GPS at my free time as a hobby project. So I have to find out which parameters of ride will be useful to track to see a progress (or any changes) in riding. Later I will surely write software to analyze recorded track.

What will be recorded anyway:

  • Trackpoints (latitude, longitude, elevation + time),
  • Cadence,
  • Current front gear number,
  • Current rear gear number.

Which parameters should be also tracked to get the best result in ride analysis? Or maybe there is some articles about bicyclists training on the web, that I can read to get more information that could be usefull?

  • 1
    What about time, distance, and speed? Jul 19, 2012 at 11:23
  • Actually, knowing front and rear gear numbers is just an incidental way to know about gear ratio, which is what actually matters. I think you can get it from cadence and speed, so you can save the shifting sensors. Jul 19, 2012 at 18:49
  • @DanielRHicks - time, distance and speed can be calculated when you have a geo.points(with lat/log) collection.
    – zetdotpi
    Jul 19, 2012 at 21:48
  • 2
    I've often wanted an air speed sensor as well as the road speed. I'm not sure how feasible it is though.
    – DanS
    Jul 23, 2012 at 9:17

3 Answers 3

  1. Pressure sensor / altimeter. http://www.meas-spec.com/pressure-sensors/board-level-pressure-sensors/altimeter-pressure-sensor-modules.aspx The best one of their sensors can detect a change in elevation of 10 cm. I2C interface. These are really great. Bosch makes a sensor with similar quality.
  2. Of course the most interesting and most difficult to measure quantity is the power. There is a system that measures the tension of the chain by its resonance frequency, times the speed of the chain that gives the power. You could try a guitar pickup to measure the vibrations of the chain and the links as they pass by and get both speed and tension.
  3. Compass sensor, 3 axes, cheap and easy to hook up
  4. Heart rate, easy to measure
  5. Respiration frequency? Don't know if this is useful, but fun to measure.
  6. To be really fancy, put strain gages on the frame. Extra points for putting them on the spokes.
  7. Temperature, just because it is easy.
  8. Oxygen saturation, don't know if there are cheap sensors.
  9. Accelerometer, cheap and simple, too.
  • 3
    I like it : If you cant take the cyclist to the lab, take the lab to the cyclist. With all that gear, rider will be going the same speed as he does in the lab - Stationary :)
    – mattnz
    Jul 20, 2012 at 4:12
  • At least he'll get a lot of exercise that way. But anyway, it's an interesting project. Once you have all the data, you can look for all kinds of interesting correlations.
    – Dan
    Jul 21, 2012 at 3:47
  • Actually I think an Arduino is a bit too small for that kind of project, I'd go with something with an ARM core, like the STM32L. I think there are some ARM Arduinos. Now that three axis accelerometer chips are cheap, one can record the accelerations in several times a second. That could maybe tell about the state of the rider, how he is handling the bike.
    – Dan
    Jul 21, 2012 at 3:54

You will obviously be able to get this from your trackpoints, but it can be useful (depending on the frequency of collection of trackpoints) to take speed - directly from your front wheel tacho if possible. This just gives you a higher degree of accuracy.

Other nice to haves:

accelerometer input - both fore-and-aft, and left-and-right - these can give a good correlation between the movement of the bike and the cadence and gear readings so understand how the power is being transmitted to the road.

  • 2
    Right. GPS isn't quite as good for speed as having a dedicated sensor. In addition, if you're going to have to have a cadence sensor anyway, you might want allow for a speed sensor on the rear wheel. If you have speed and cadence, you can usually figure out the chainring and cog, so you don't need to keep track of it directly. Perhaps zetdotpi wanted to use the cadence and gearing to figure out speed -- but when coasting he'd need to rely on the GPS anyway. So it's probably better to have a speed sensor.
    – R. Chung
    Jul 19, 2012 at 8:09
  • Knowing speed and cadence won't always tell you the chainring and cog since you can technically pedal without applying any force to the wheel. It would be interesting to do some measuring to see how often a cyclist does this. Also, there is some overlap in terms of different gearing combinations creating the same gear ratio.
    – Kibbee
    Dec 10, 2012 at 16:05

Curiously, I've been tinkering with GPS data analysis (taken from some multi-kilometer randonnees, gpx format). Since you have the 4D trajectory (latitude, longidude, elevation and timestamp), you could theoretically get any derivative or combination of it. For example, currently I am calculating, for each pair of consecutive points in the trajectory:

  • Distance (using geodesic distance, haversine function);
  • Speed (distance over timedelta);
  • Grade (elevation delta over distance delta);

I could be working better, mainly due to these factors:

  1. It seems that timestamp is recorded as an integer, with one second resolution. That causes a quantization effect which affect speed calculation horribly, specially when the sampling rate is too high (lots of samples per minute);
  2. Elevation from GPS alone is not very precise, and causes a lot of noise unless you have a barometric altimeter onboard (which more modern GPS devices already have).

So, as others have already suggested, I think the way to go is having dedicated cadence and speed sensor, provided that you could log all the coordinates of each trackpoint at the same time (that is, your board should query every sensor at almost the same time to record their values).

Aside from that, the most useful measure I think should be made by a multi-parameter sensor is torque (and its integral, power) which is what PowerTap hubs and other power meters do. Unfortunately, these are expensive things, since power-metering instrumentation (strain-gauges, piezoeletric stuff) are tricky to work with.

It would be interesting to extract some metrics from the ride that could tell about the RIDER. For example, some statistic that could tell if a rider is tired or not. So, it would be possible to track evolution of rider's tiring along time, be it between several days or weeks, be it during a long-distance event.

Hope that helps!

  • I'll bet you could put force sensors in the seat and on the bars that would tell you a lot about how tired the rider is, how hard he's working, etc. And reading the variation in angular velocity of the cranks through the stroke would provide some interesting info -- when the rider's "in the groove" the angular velocity would likely be fairly steady vs when he's tired/irritated. Jul 19, 2012 at 18:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.