Data Acquisition (DAQ) System
Objective
- A Data Acquisition (DAQ) System for interfacing with the vehicle ECU and additional sensors.
- Build the first fully-fledged DAQ with re-usable code through:
- The Layered Architecture design pattern
- Modularity of components
- Hardware abstraction
- Efficiently record data to a CSV file for system testing & refinement of other vehicle components via analyses.
- Make sensor data conveniently accessible for the whole DFR organization.
- To be used in tandem with DFR's DataAnalyzer.
Hardware and Equipment
Target Device
The STM32 Nucleo F429ZI microcontroller development board is used as the current target device for code merged to the main
and develop
branches. Theoretically, other Arm Cortex M4 based STM32 devices with the necessary peripherals should be able to run the same program.
Firmware Tech Stack
Board Support Package (BSP)
- STM32 Hardware Abstraction Layer (HAL)
- Generated by STM32CubeMX within the CubeIDE environment, which also provides the
arm-none-eabi
toolchain. - Serves as a set of low-level drivers to interface with the microcontroller.
- Generated by STM32CubeMX within the CubeIDE environment, which also provides the
Real-Time
- FreeRTOS
- A framework that offers multi-threading and concurrent programming.
- For optimizing timing and performance.
- CMSIS-RTOS v2
- Not to be mistaken for another RTOS framework.
- An abstraction layer for interacting with an RTOS framework (i.e., FreeRTOS).
File System
- FatFS
- A library for creating files accessible through the FAT file system.
- Allows end users to access the resulting CSV file on any device.
DevOps and Automation
Unit Tests
API Docs
- Our API documentation is built using a combination of three tools:
Environments
- Docker
- For building containerized environments with dependencies pre-installed.
- Utilized for locally writing unit tests and API documentation.
CI/CD Pipeline
Coming soon...