Embedded firmware and custom hardware for the modular Data Acquisition (DAQ) system of the DJS Racing Formula Student Electric race car.
The DAQ acquires data from distributed vehicle sensors, communicates with CAN-enabled control units, logs telemetry to microSD for post-run analysis, transmits data wirelessly over LoRa, and displays critical parameters to the driver in real time.
This was a collaborative team project. This repository collects the firmware modules, hardware, and documentation I worked on as part of the DJS Racing powertrain team.
Figure 1. High-level architecture of the DAQ system.
- Distributed data acquisition architecture using multiple CAN Node PCBs
- Custom ESP32-based hardware for sensor acquisition, telemetry, and driver display
- Signal conditioning for analog and wheel-speed sensors
- Real-time communication over the Controller Area Network (CAN)
- Wireless telemetry using LoRa for remote vehicle monitoring
- Onboard microSD data logging for post-run analysis
- Modular firmware for CAN, LoRa, and motor-controller interfacing
- Custom-designed PCBs for the CAN Node, DAQ Controller, and Display modules
The DAQ uses a distributed embedded architecture in which multiple modules communicate over a shared Controller Area Network (CAN) bus. Instead of routing every sensor directly to a central controller, dedicated CAN Node PCBs perform local acquisition and transmit processed measurements to the DAQ Controller. This reduces wiring complexity, improves noise immunity, and simplifies future expansion.
The system has three primary modules:
Distributed sensor acquisition. Reads analog and wheel-speed sensors, performs local signal conditioning (LM358, LM2907), and transmits over CAN via an SN65HVD230 transceiver. ESP32-based, with onboard diagnostics and status indicators.
📖 Detailed documentation: firmware/can_node/README.md
Central ESP32 controller that receives data from the CAN Nodes, processes telemetry, logs to microSD, and forwards data to the display and LoRa modules.
ESP32-based Human-Machine Interface (HMI) that receives CAN telemetry and presents it through an LVGL-based graphical dashboard on ILI9341/ILI9488 TFT displays.
📖 Detailed documentation: firmware/display/README.md
Figure 2. Data flow through the DAQ system.
- Sensor Acquisition — vehicle sensors generate analog and digital measurements, acquired by the distributed CAN Node PCBs.
- CAN Node Processing — nodes sample, condition, and package sensor data into CAN messages.
- CAN Communication — data is transmitted over the CAN bus to the central DAQ Controller.
- Central Processing — the DAQ Controller processes incoming data, logs telemetry, and distributes it to connected subsystems.
- Telemetry Output — processed data is displayed to the driver, transmitted over LoRa, and stored on microSD for post-run analysis.
Each firmware module targets a specific hardware platform or communication interface, simplifying development, testing, and maintenance.
| Module | Description |
|---|---|
| CAN Node | Multi-sensor acquisition, calibration, and CAN transmission from the distributed nodes. |
| ESP32 CAN | CAN communication (sender/receiver) between the CAN Nodes and the DAQ Controller. |
| ESP32 LoRa | Long-range wireless telemetry between the vehicle and a remote monitoring station. |
| Display | LVGL-based driver dashboard receiving CAN telemetry. |
| MC Teensy | Prototype firmware validating CAN communication with the motor controller before migration to the ESP32 platform. |
Each firmware directory contains its own README with module-specific implementation details.
The system uses several protocols, each chosen for its subsystem's needs:
- CAN (Controller Area Network) — the primary backbone. Sensor data from the CAN Nodes is transmitted to the DAQ Controller via SN65HVD230 transceivers, giving reliable real-time communication, high noise immunity, and simple modular expansion.
- LoRa — long-range wireless telemetry from the DAQ Controller to a remote monitoring station, at low power, for trackside monitoring during testing.
- SPI (Serial Peripheral Interface) — high-speed link between the ESP32 and peripherals such as the TFT display and microSD card.
- UART — firmware programming, serial debugging, and diagnostics during development.
| Component | Purpose |
|---|---|
| ESP32 DevKit V1 | Primary MCU across the CAN Node, DAQ Controller, and Display PCB. |
| SN65HVD230 CAN Transceiver | High-speed CAN communication between distributed nodes. |
| SX1278 LoRa Module | Long-range wireless telemetry. |
| ILI9341 / ILI9488 TFT Display | Real-time telemetry and system status display. |
| MicroSD Card Module | Onboard telemetry logging for post-processing. |
| Buck Converter | Regulates the vehicle supply voltage for the electronics. |
| Custom PCBs | Dedicated boards for the CAN Node, DAQ Controller, and Display. |
| Analog Sensors | Interface with vehicle sensors for data acquisition. |
DAQ/
├── firmware/
│ ├── can_node/
│ ├── display/
│ ├── esp32_can/
│ │ ├── sender/
│ │ └── receiver/
│ ├── esp32_Lora/
│ └── mc_teensy/
│
├── images/
│
├── README.md
├── LICENSE
└── .gitignore
Each firmware directory contains its own README with module-specific implementation details.
- Requirement Analysis — identified vehicle parameters to monitor; defined the communication architecture and system requirements.
- Hardware Design — designed custom PCBs for the CAN Node, DAQ Controller, and Display; performed schematic capture and PCB layout.
- PCB Fabrication and Assembly — manufactured and assembled the boards; verified power distribution and hardware functionality.
- Firmware Development — developed modular firmware implementing CAN communication, LoRa telemetry, the display interface, and data logging.
- Hardware Integration — integrated all modules with the vehicle; verified communication between distributed nodes.
- System Validation — functional testing, telemetry verification, and on-vehicle validation during testing sessions.
The current architecture separates the Electronic Control Unit (ECU) and Data Acquisition (DAQ) system into independent embedded controllers. A future iteration envisions a unified Vehicle Control Unit (VCU) that combines vehicle control, telemetry, data logging, and communication into a single modular embedded platform while maintaining real-time performance and safety.
Additional enhancements include:
- Support for additional CAN sensor nodes
- Higher sampling rates for critical vehicle parameters
- GPS and IMU integration for track analysis
- Cloud-based telemetry visualization
- Advanced fault detection and diagnostic reporting
Released for educational and portfolio purposes. The hardware designs, firmware, and documentation were developed as part of the DJS Racing Formula Student Electric Data Acquisition (DAQ) system.
Please contact the repository owner before using this work for commercial purposes or redistribution.

