F1 Telemetry System

A server and dashboard to display telemetry for F1

I recently had the chance to play Codemaster's F1 game. Although the game mechanics, and steering control in the game is very realistic, the game was missing one key part of the F1 craze: Telemetry.

I investigated a bit and found out that Codemaster's F1 can publish telemetry data onto a UDP port of your choosing. I thought this would be a great time to learn programming language Golang (a.k.a Go), as Golang is known for its focus on concurrency and networking applications. This is my rendition of a real-time telemetry dashboard, based on the data published from F1.

Using Golang, I was able to read the UDP packets sent by F1 and convert the raw bytes to useable values. I then wrote these values to a local instance of an InfluxDB database. InfluxDB was perfect for what I needed, as it provided an SQL-like database, for time series data. Using Grafana, I was able to query against the database, and I built a custom dashboard to display the retrieved data. The images in the carousel above show the dashboards I created.

Overall, this was a very fun project to work on! I learnt a lot regarding Golang, and how real-time data visualizations are constructed. This is probably the first time I had to use knowledge of endianness, outside of a Microprocessors course, and it's been eye-opening to see how the things I learn in class can be utilized in unexpected applications.

Below is a demo of the real-time dashboard side-by-side with the game. Complete with the driving skills of a novice F1 driver...

  • Github Repo
  • Timeframe: 2A
  • Relevant Technologies: Go, InfluxDB, Grafana