Bluetooth IMU Beacon

This project was the creation of a Bluetooth-based IMU device that was placed on an athletes body for positional tracking.

The goal was to use a series of IMUs placed on various "hotspots" of a golfers body to track their body during swings. This would provide a cheap and accurate solution for discovering swing characteristics that could be used by both golfers and coaches alike.

For my portion of the project, I helped decide the components used on the IMU and which protocols we should use for data communication.

To test the boards once they were assembled, I wrote some test firmware using ChibiOS to verify the correct operation of each board component. This was done by writing the test firmware for an extra STM32 board I had. To get the test firmware running on our IMU, I wrote a board part description for ChibiOS for the IMU we built. This allowed the firmware to be directly run on the IMU board without any changes.

Board Components

The board was made up of two primary components, an NRF52832 microcontroller and Bluetooth radio, paired with an ICM42688 over SPI.


My primary task in the project was writing the firmware for these IMU boards. I decided to use Zephyr RTOS to write the firmware for the boards. Zephyr was chosen for multiple reasons:

To write the firmware for the boards multiple things were required:

If you'd like to use the firmware or know more specifics about the protocols used, the README in the GitHub repo contains instructions for installing and operating the firmware.

View my code on GitHub