FS25 Data Acquisition and Communications System#

  • This year I joined my university’s Formula Student Internal Combustion (IC) Electrics team. I’d been wanting to join for a while but since I was on my placement year I saw it as an opportunity to remain in touch with university in my time away.

  • The basic goals of the project were as follows:

      1. Design a system capable of compiling data from the car into a dashboard-style UI to mount on the steering wheel so that the driver can remain informed of speed, RPM and other telemetry.
      1. Design a PCB to mount atop the Raspberry Pi base to enable this functionality in a compact package.
      1. Design networking capability over cellular internet as well as the required software suite such that a team member (me) on the pit wall can remotely monitor the car in real time.
  • As such, the project can be evenly split into five sectors: Hardware, Data Acquisition, Driver Display, Networking and Pitwall Software.

Hardware#

  • We immediately settled on using a Raspberry Pi 4B for this as our base. I have a lot of experience working with similar hardware so for a first-generation version of this sustem we thought it would be a good starting point. In the future we hope to move to a more embedded-system architecture to save space.

    • We immediately purchased a few parts - a 3.5-inch SPI screen to mount to the steering wheel (chosen for its minimal wire requirement), an Arduino Nano (to read Analogue values since the Pi has no analogue pins, also for its on-board IMU), an Adafruit BNO055 dedicated IMU board and an RS232 serial reading chip for communication with the ECU.
    • We also bought the Waveshare 7600X 4G HAT to handle our 4G networking and GPS.
  • After setting up the custom GPIO configuration for the Pi so that it could communicate with all these components simultaneously, we set about designing a PCB that would house all our additional parts and sit on the top layer of the circuit sandwich forming. This went about multiple revisions but the final result was exactly what we needed.

Image Here Lol

Data Acquisition#

  • With the hardware decided and development on the PCB beginning I turned my focus to the data I would be compiling. The final list ended up being something like this:

    • SIM7600X:
      • Reports GPS Coordinates
    • RS232 (ECU):
      • Engine RPM
      • Engine Temp
      • Throttle Position
    • Arduino Analogue Pins:
      • Wheel Speed
      • Killswitch indicator
      • Neutral flag
    • BNO055 IMU:
      • Acceleration
      • Temperature on-board
      • Gyroscope measurements
  • Important Note - it may seem as if I have forgotten Gear Position - rest assured I have not! I calculate that value using the gear ratios given to me by Drivetrain. Not a perfect solution but we lack a Gear Position Sensor currently.

The repository for this project can be found here.