Does ruvvitag support RPM?

Hi community,

is it possible to get the RPM using a ruuvitag?

I want to use it to measure the speed of my bike as detailed as possible. I know that there are sensors (e.g. from wahoo) that are capable of returning the RPM, but they are not very precise (e.g. a sudden stop is recorded with a lag of a few seconds).

Anyone has tried something similar?



It would require quite a bit coding, but it should be doable with accelerometer and some signal processing to detect where the gravity points.

It probably is not doable with the standard firmware, as the data update rate of 1/s is way too slow to track the rotation of bike tire.


thanks for the quick answer!
That means I’d also need the devkit to flash a custom firmware with an update rate of more than 1/s?

Do you know of any sample app that does this (or a sample app that is close to doing this)?

I’m a beginner in this area and I’m trying to figure out if ruvvitag is fitting to my needs.


You’d need to collect raw acceleration data with something like and develop an algorithm to calculate the RPM.

Then you’d need to integrate your algorithm and sensor drivers into .

It might be doable, but workload would probably be quite heavy.

Thanks for the links - I’ll look into these… seems to be a very heavy task especially for a beginner!

One way would be hall -sensor soldered to ruuvitag within the enclosure, custom firmware to include its measurements and add regular bike computer magnet to your wheel. Then just position ruuvitag accordingly.

This approach also have delays because there needs to be some kind of averaging for the RPM just like with cadence meters to stop numbers bouncing all around all the time and keep it readable if you want to monitor stuff during your ride. You need multiple rotations measured before you can determine what roughly is the sane value and not just any random variation that gives wrong readings.

Thanks for your answer!
Interesting approach - is there some kind of variation where delays would be close to 0? I’d like to have the readings in near realtime; just like a tachometer in a car.

The most obvious one would be to have multiple signals per single revolution. So if you can space 4 magnets symmetrically enough to wheel you get 4 samples per resolution and then you can have averaging and wait couple pulses before presuming that loss of pulses is because rotation has stopped completely.