Overview
The DAQ Central Node is a raspberry pi-based data acquisition node for aggregating and transmitting sensor data over CAN on a competition EV. Its based on a Raspberry Pi Compute Module 5, with a custom IO board pcb for interfacing with the CAN bus and power delivery. All the code ran on the Pi itself can be found here
Software
I wrote a CAN to Websocket backend that allows the DAQ Central Node to transmit sensor data over the internet to a central server, but also locally stores data for offline analysis. Local clients can connect to the DAQ Central Node via Websocket to view real-time sensor data, upload firmware, and see general health and statuses. It uses socketCAN to communicate with the CAN bus. It is also where I implement my FDCAN bootloader for firmware updates (Learn about it here!). To make working with the Pi easier, I also implemented CI/CD pipelines using Podman and the GitHub container registry, allowing me to automate builds and deployments, and avoid compiling applications on the Pi itself.
To interface with the backend, I wrote a frontend dashboard using React and TypeScript. This frontend provides a user-friendly interface for viewing real-time sensor data, uploading firmware, and monitoring the DAQ Central Node’s health. Its accessible by any member of the team with a web browser who is in proximity to the car. This was important as ease of use for non-technical team members was a priority.
Hardware (Work in progress)
The actual hardware for the DAQ Central Node is composed of a Raspberry Pi Compute Module 5 along with a custom breakout board PCB, which provides a galvanically isolated CAN interface, power supply, SSD for storage, RJ45 connector for Ethernet, and a USB C port for direct connection.


