World wide free shipping on orders over 100€ - PayPal and Stripe payments - Made in Finland

Bluetooth Vibration Sensor – RuuviTag Pro

We get every now than then questions if RuuviTag could be used to monitor vibrations from rotating machines. RuuviTag Pro can be as a Bluetooth vibration sensor and we have created a custom firmware version to measure vibrations. Some of our customers have already started proof on concept projects with the RuuviTag Pro sensors. Collecting the vibration sensor data needs a custom setup which can be for example a RaspberryPi or data can be collected using the Ruuvi Gateway and send data to a private server.

Scroll down for downloading the custom firmware for vibration measurement. Please note that firmware is a beta version and it’s not comprehensively tested. Note also that might not be possible to flash standard firmware again without Ruuvi Development Kit.

RuuviTag Bluetooth Vibration Sensor Data Formats

Simple Vibration Data Format AC for Bluetooth Vibration Sensors

RuuviTag can run both simple and complex measurements on acceleration. At its easiest, the acceleration measurement can be just a peak-to-peak value.

Vibration Measurement Basics - RMS, Amplitude, and Peak-to-Peak
Vibration Measurement Basics – RMS, Amplitude, and Peak-to-Peak

The peak to peak tells essentially how hard acceleration Bluetooth vibration sensor has seen. Another simple measurement is root mean square value and it tells how much power acceleration has. Since RuuviTag Pro has a 3-axis accelerometer, a separate value is reported along each axis.

RuuviTag Special Vibration firmware Simple Data Format

ByteNameRangeNote
0HEADER0xAC
1VERSION0x02
2P2P_X_MSB0 … 32767Signed, mG.
3P2P_X_LSBLimited by accelerometer amplitude, 4 – 32 G
4P2P_Y_MSB0 … 32767Signed, mG.
5P2P_Y_LSBLimited by accelerometer amplitude, 4 – 32 G
6P2P_Z_MSB0 … 32767Signed, mG.
7P2P_Z_LSBLimited by accelerometer amplitude, 4 – 32 G
8RMS_X_MSB0 … 32767Signed, mG.
9RMS_X_LSBLimited by accelerometer amplitude, 2 – 16 G
10RMS_Y_MSB0 … 32767Signed, mG.
11RMS_Y_LSBLimited by accelerometer amplitude, 2 – 16 G
12RMS_Z_MSB0 … 32767Signed, mG.
13RMS_Z_LSBLimited by accelerometer amplitude, 2 – 16 G
14RESERVED0N/AReserved for future
15RESERVED1N/AReserved for future
16RESERVED2N/AReserved for future
17RESERVED3N/AReserved for future
18RESERVED4N/AReserved for future
19RESERVED5N/AReserved for future
20VOLTAGE_MSB0 … 254Calculate as: 1600 mV + 8 * VOLTAGE mV
21TEMPERATURE_MSB-125 … 125In celcius, 1C resolution
22SEQUENCE_COUNTER_MSB0 … 65534Incremented for each measurement, rolls over to zero
23SEQUENCE_COUNTER_LSB
Special Data Format for Simple RMS vibration data by Ruuvi

Dataformat 0xAC version 2 specification. For signed values lowest possible value means error, for signed values highest possible value means error.

Complex Vibration Data Format AF for Bluetooth Vibration Sensors

The brains of RuuviTag Pro is a quite capable nRF52832 from Nordic Semiconductor. It comes with an ability to run a Fast Fourier Transform to calculate frequency components of acceleration.

Comblex Vibration Measurement - FFT Fast Fourier Transform
Image credit to https://en.wikipedia.org/wiki/Fast_Fourier_transform

The Fourier transform can differentiate between frequencies of acceleration RuuviTag Pro is measuring. By default, the FFT is calculated out of 1024 samples taken at 1344 Hz at 12 bits and 2 G amplitude.

This gives 512 frequency bins where one bin is 1344 / 2 / 512 = 1.3 Hz wide. However, broadcasting every bin is not feasible, so bins are summed together into 16 frequency
buckets and the power of the bucket is calculated for broadcasting. This gives output with 16 buckets of power per frequency.

Since the scale between buckets can vary a lot, it is not meaningful to use a fixed scale for frequency data. Instead, acceleration is normalized to the highest value and the rest of the values are scaled accordingly. Scaling information is sent in the broadcast.

Learn more about the FFT from Wikipedia https://en.wikipedia.org/wiki/Fast_Fourier_transform

RuuviTag Special Vibration Firmware Complex Data Format

An example on how to decode the vibration sensor data, please see https://github.com/ojousima/ojousima.ruuvi_endpoints.ts/blob/master/src/ojousima_endpoint_af.ts

ByteNameRangeNote
0HEADER0xAF
1VERSION0x01
2TYPE0 … 20 – X-axis, 1 – Y-axis, 2 – Z-axis
3SCALE_MSB0 … 2558.8 Fixed-point value
4SCALE_LSBDivide value by 256 to get a scaling float
5FREQ_MSB0 … 65534Highest frequency bucket.
6FREQ_LSBLimited to ~5 kHz by accelerometer. In Hz.
7BUCKET_10 … 255Divide by scale to get original value in G(rms)^2/Hz
8BUCKET_20 … 255Divide by scale to get original value in G(rms)^2/Hz
9BUCKET_30 … 255Divide by scale to get original value in G(rms)^2/Hz
10BUCKET_40 … 255Divide by scale to get original value in G(rms)^2/Hz
11BUCKET_50 … 255Divide by scale to get original value in G(rms)^2/Hz
12BUCKET_60 … 255Divide by scale to get original value in G(rms)^2/Hz
13BUCKET_70 … 255Divide by scale to get original value in G(rms)^2/Hz
14BUCKET_80 … 255Divide by scale to get original value in G(rms)^2/Hz
15BUCKET_90 … 255Divide by scale to get original value in G(rms)^2/Hz
16BUCKET_100 … 255Divide by scale to get original value in G(rms)^2/Hz
17BUCKET_110 … 255Divide by scale to get original value in G(rms)^2/Hz
18BUCKET_120 … 255Divide by scale to get original value in G(rms)^2/Hz
19BUCKET_130 … 255Divide by scale to get original value in G(rms)^2/Hz
20BUCKET_140 … 255Divide by scale to get original value in G(rms)^2/Hz
21BUCKET_150 … 255Divide by scale to get original value in G(rms)^2/Hz
22BUCKET_160 … 255Divide by scale to get original value in G(rms)^2/Hz
23SEQUENCE0.254Rolls over to 0, increments by one for each measurement
Special Data Format for Complex FFT Vibration data by Ruuvi

RuuviTag Pro Bluetooth Vibration Sensor Firmware

We have made a proof-of-concept firmware which broadcasts in above formats and original Ruuvi RAWv2 (0x05) format. You can download and run it on any RuuviTag or Ruuvitag Pro up to hardware version B8. Special firmware can be downloaded here https://github.com/ojousima/ojousima.acceleration_bcast.c/releases/tag/v1.0.3. Flashing can be done using Nordic Semiconductor nRF Connect and instructions can be found here.

The firmware broadcasts in one-minute cycle, with each cycle having 5 distinct broadcasts:

  • Original RAWv2
  • “Simple” Vibration Data Format AC
  • “Complex” Vibration Data Format AF, once per each axis

Each broadcast is repeated 5 times at 1285 ms interval, so the one-minute cycle has about 32 seconds of broadcasting and another half minute of quiet time. All measurements are taken from same acceleration sample.

RuuviTag Pro Bluetooth Sensor
Test Ruuvi's beta firmware for Vibration Measurement

RuuviTag Pro Bluetooth Sensor

Test Ruuvi's beta firmware for Vibration Measurement

Add more for quantity discount!

Total: 49,90 + shipping

Shipping

Add more for free shipping!

View shipping options

Show bulk discount pricing table
FAQ
Can RuuviTag Pro used as Vibration Sensor?

Yes, it’s possible to use RuuviTag Pro Bluetooth Sensor as a vibration sensor with special proof-of-concept firmware.

What are the Typical Use Cases for Bluetooth Vibration Sensors?

  • Determine if machine is on or off
  • Make analysis from vibration sensor data for predictive maintenance

Featured Products

Find the right products for your measuring needs
  • RuuviTag sensor measures temperature, air humidity, air pressure and motionIn stock
    RuuviTag is a Bluetooth sensor that sends temperature, relative...
    Read more

    RuuviTag Sensor (4in1)

    39,90
  • Ruuvi KitIn stock
    Every Ruuvi Gateway product is shipped with...
    Read more

    Ruuvi Sensor Measurement Kit

    339,00
  • Ruuvi GatewayIn stock
    Note! Every Ruuvi Gateway product is shipped with a...
    Read more

    Ruuvi Gateway Router

    199,00
  • RuuviTag Pro 3in1 measures temperature, air humidity and motionIn stock
    Choose your model (2in1, 3in1 or 4in1) depending on...
    Read more

    RuuviTag Pro Sensor

    49,9055,90