A short bio on the detail of the Formula Hybrid Telemetry bring-up

When tasked with the idea of a telemetry project for our team, we laid out the following requirements:

  • Wireless Transmission
  • Build upon the existing infotainment python architecture
  • Run on web app so all members can access

We already have an existing infotainment platform on the Raspberry Pi B+ , written in python built using PyQt5, listening to the Controller Area Network (CAN) bus of our race car to give the driver an elegant yet informative view of the cars status.

UVic Formula Hybrid Infotainment
On a side note we found a really cool way of developing the UI in photoshop, exporting it to QML to use with PyQt5… Slick, but took awhile to bring-up

The architecture we developed is incredibly modular and abstracted, so adding in the layer for sending data wirelessly would be seamless. One of our team members had experience with the Synapse SS200 Radio Frequency (RF) Transmitter and Receiver modules.

The Synapse modules were plug and play, thankfully, over usb with the raspberry pi. So we had our means of communication chosen, great, next step was to incorporate it with our existing setup and transmit data wirelessly.

Having real-time data of your race-car is invaluable in the development phase, but more so just plain cool.

The Synapse modules have their own IDE and means of flashing scripts with software to run continuously. This made writing the hooks for serial data on wireless reception rather simple

Once this was validated, next step was to incorporate it into our existing code base. This was easy, thanks to the Python Serialport module.

Lol at the try/pass

Now the more fun part, handling the received data on the pit-crew computer for visualization. We wanted to make it a web application… So we decided to be hip and go with the following stack: Node, express, bootstrap (quick bringup), socket.io and the newly found serialport!

I was able to get the node server running, and listening to serial data using the following commands (I didnt have the sticks available)

sudo socat -ddd -ddd PTY,raw,link=/dev/ttyS32,echo=0 READLINE
echo “test” > /dev/ttys013
cat < /dev/ttys012

And finally the node side

Now we are in business, at this point we have accomplished everything EXCEPT:

We stumbled around using Plotly (which I love) for a bit, but we ended up using a d3 library just because. We have our own CAN data-logging tool in the car which we run, thus we don’t really care about storing the data on the web-server anywhere, this made things easier.

The UI for the webapp is as basic as you get, but it works. Here is what it looks like from one of our test days

This is still a work in progress, in hindsight not using bootstrap would have been ideal. We had to upgrade our Synapse module to one with a much bigger antenna because our range was very limited at the time. End goal was accomplished and with plenty of time to show this off at competition.

Developers on this project are:
Marc Laventure (Github account)
@adamhjermstad (Github account)