An Inertial Data Logger for Suspension Telemetry


The more I worked on simulating the dynamic response of UBC Solar's racecar (see this article), the more it became apparent that capturing actual race telemetry would be the only real means of validating the models I had created. Thus, in the weeks leading up the 2025 Formula Sun Grand Prix, I decided to set aside a week's worth of late nights to building just that—a system to log our car's motion, specifically at the suspension upright.

The finished logger

This article is intended to focus specifically on the build process, with a future article spending more time talking about making sense of the data.

# Concept Phase

After convincing myself that going home to do more engineering each day after work was worth it just for a couple of CSV files, I set out to figure out what such a system would even look like.

At the beginning, I spent a while thinking about what data was actually worth capturing. The car, Brightside, already had a primary telemetry system that kept track of GPS position, motor speed, and 6-DoF IMU accelerometer and gyroscope measurements at a point on the chassis. Thus, to understand the relative motion at the wheels, all my device really needed to record was acceleration and rotation from a second coordinate frame, at the suspension upright.

Thus, all I really needed was:

  • an inertial measurement unit (IMU) to take these measurements,
  • an SD card to log the data to,
  • a microcontroller to take measurements from the IMU and write them to the SD card,
  • a battery to power it all,
  • a means to turn the device on and off,
  • and an enclosure to mount everything to the suspension and protect it from the elements.

For the microcontroller, the Adafruit Feather RP2040 Adalogger was the perfect solution—featuring an integrated microSD holder and a STEMMA QT connector to easily connect the IMU with I²C. For the IMU breakout, I chose to spend a bit more for convenience, and picked up a 9-DoF BNO055 with on-board fusion algorithms. However, when it came to the battery, things were a little more complicated. While using a traditional LiPo battery (as is typical with Feathers) would have been great, a quick check of the competition regulations made me realize that rechargable lithium batteries were off the table for peripheral systems (safety reasons). A little bit of napkin math later, and I decided that three AAAA batteries in series would last just long enough to make it through a day of racing, while taking up minimal space and supplying the right voltage. With all this out of my way, I placed an order on Digikey, and waited for these parts to come in.

# A Prototype

Pretty soon, my electronics came in. However, Brightside was set to be trailered to Kentucky just a few days later, and there was only one test day remaining where I'd be able to test my device on the car before I met back up with it a week later in Kentucky. Since I didn't think I could finish the whole design and manufacture in one night, I opted to instead construct a super crude prototype to house the electronics, and secure it to the car with everyone's favorite load-bearing material: duct tape. While I was working on this, a friend helped out and got the first version of the .ino firmware written, allowing us to collect the first bit of data and validate the premise of the device.

Prototype installed on car, electronics visible
On/off by means of battery removal

Prototype mounted to upright with duct tape
Everyone loves duct tape...

While everything about this prototype was a bit scruffy, the data we managed to collect proved that this could work.

# Designing and Making the Enclosure

Following the success of the prototype, I set out to create an enclosure that would mount rigidly to the suspension upright. While the uprights certainly weren't designed with this in mind, I found that the brake caliper bolt could be shared with my device if I was clever about things.

The brake caliper tab
The tab I intended to mount to

After some thought, I decided that best way to keep fabrication simple while allowing for mounting below the locknuts was to:

  • FDM 3D-print a box with lid for the electronics,
  • add heat-set inserts to mount boards inside the box,
  • add heat-set inserts for screws to secure the lid,
  • leave an opening to insert a panel-mount switch,
  • and attach a sheet-metal plate with epoxy.

Following this, I got to work in Fusion 360, a choice I made due to Adafruit's Fusion-native part files. One late night later, and I had the following model.

The logger on the suspension upright, in CAD

The next day, I started the prints and got to working using a stomp shear, snips, and a hand brake to cut some scrap aluminum to size. After installing heat-set inserts, I clamped the 3D print to the aluminum and let the epoxy cure overnight.

Working in the Kaiser instrumentation lab

Finished box print

Applying epoxy to aluminum

# Adding the Electronics

After allowing for the epoxy to cure, the next step was pretty simple—just add in all the electronics. After soldering my battery holders, switch, and JST connector together, I was able to snap, screw, and hot glue everything into place as I had planned. Next I added in batteries, pushed in my microSD, screwed on the lid, and flicked the switch. A quick shake and check of the microSD card data, and sure enough, it was logging!

Electronics assembly

# Testing and Deployment

The first "test" of the device was the test of airport security. One explanation of why my carry-on had a black box with wires coming out of it later, and I was headed on a flight to reunite with the car in Kentucky. I used the time to revise the firmware a little bit to try to make the most of the fusion algorithms on the IMU breakout.

Fortunately, when I did arrive at NCM Motorsports Park, the whole device went onto the car without a hitch, and I got to capture data throughout dynamic scrutineering and the race (check out this article).

The enclosure, mounted to the car
The final device, mounted to Brightside

# Reflections

Front of final unit

Back of final unit

Side of final unit

The focus of this project was to learn some things and capture some data, all without spending that much time or money. I'd say this was certainly a success—and I made something I'm proud of along the way. That said—as there always is when a project comes to a close—there are some things I would do differently next time, including:

  • Adding a clock breakout board: Perhaps the biggest oversight with this project, I had to manually timestamp the start of each log file—a preferred approach would be using a self-powered clock breakout.
  • Using a more appropriate switch: I happened to already have a 20A AC switch that I used for this project, though I probably could have gotten something lighter and more appropriate.
  • Using a LiPo battery: While in 2025, I was forced by regulation to use AAAA batteries instead of a small LiPo, regulations have changed in 2026, and I would be able to use an Adafruit LiPo instead.

In the months following this project, I found that off-the-shelf solutions do actually exist that would give similar results, such as the WT901SDCL 9-DoF Logger. That said, I had a lot of fun taking the route that I did, and the experience tinkering with a mechatronic system like this has a value of its own. Plus, now I have a nice I²C IMU breakout board for future projects :).