FS26 Data Acquisition and Communications System
FS26 Data Acquisition and Communications System#
- This year’s goal was to take what we learned from FS25 and streamline the entire process of data collection, processing and transmission. The keystone of this change was the decision to reduce our central compute unit from a full-size Raspberry Pi 4 to a Raspberry Pi Pico 2. Our original vision was for this dual-RP2040-core microcontroller would handle collecting car telemetry from the ECU (originally a FuelTech FT550Lite), poll a GPS chip for location data and broadcast the revelant information over the rule-dictated 24000Hz radio frequency to a remote receiver.
Hardware#
-
Aside from the Pico, the DAQ unit this year consists of the following extension boards, all mounted on a custom PCB using header strips;
- Waveshare Core1121-HF LoRa Radio Module
- This small chip capable of broadcasting anywhere from typical radio frequencies all the way up to 2.4GHz would be our method of transmitting telemetry this year. Attached to it by myriad adapters was a puck-style planar broadcasting antenna that we eventually mounted on the rear of a sidepod of the car. The radio was communicated with on a dedicated SPI bus.
- Waveshare Pico-CAN-B Module
- After last year’s struggle with RS232, we decided to extract data this year from the ECU’s CAN bus. Most promisingly, our new ECU seemed to have more control over the CAN output so this could be leveraged to our advantage. This board allowed the Pico to read CAN signals through another SPI bus. It also featured an onboard terminating resistor which allowed us to easily close our CAN circuit. The board features the common MCP2515 CAN controller.
- Waveshare Pico-GPS-L76B
- Last year’s GPS module, in being combined with the 4G, resulted in rather slow position acquisition. This more lightweight solution, when outside, performed admirably and with minimal drift. Uniquely, it operated on UART0.
- Waveshare Core1121-HF LoRa Radio Module
-
The receiver unit consisted of an identical Pico and Core1121-HF module setup, but leveraging a specialised antenna intended to pick up signals from a wide horizontal plane, but less so vertically. This matched our need for coverage of the FS track at Silverstone. Based on the gain values of these antennae, our unobstructed communication range was approximately 2-3KM, or approximately 1 with no direct line of sight.
-
The final and later-added piece of the puzzle for this year’s DAQ was the screen mounted on the steering wheel. The Pico couldn’t drive this itself, of course, so we looked for a display that we could potentially program on its own to respond to CAN signals, removing the DAQ from the equation entirely. We found a display by Winstar that fulfilled our needs and EVENTUALLY got our hands on one. Further detail on setting this up will follow, but it was connected to the car’s 12V supply and the same CAN bus as the DAQ and ECU.
Software#
- The Picos were programmed entirely in C, the second-best programming language. This marked a significant departure from the previously entirely Python platform but was overall a much more enjoyable experience given I had significantly more control over the hardware than previously. I focused on leveraging the dual cores of the Pico 2 to efficiently and performantly complete all the tasks required, manually distributing tasks to each core using parallel programming paradigms.
The repositories for this project can be found here and here.