Skip to content

Data Acquisition (DAQ) System

Project Repository

Library API Docs

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

image

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)

image

  • 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.

Real-Time

image

  • FreeRTOS
    • A framework that offers multi-threading and concurrent programming.
    • For optimizing timing and performance.

image

  • 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

image

  • 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

image

  • Google Test
    • A framework for writing unit tests.
    • Developed and ran on the developer's host device.
    • Compiled and ran using CMake with Ninja.

API Docs

  • Our API documentation is built using a combination of three tools:
    • Doxygen — A traditional tool generating documentation pages by scanning the C/C++ source code.
    • Sphinx — A modernized, more aesthetic documentation tool.
    • Breathe — A project that bridges and connects Doxygen and Sphinx

Environments

image

  • Docker
    • For building containerized environments with dependencies pre-installed.
    • Utilized for locally writing unit tests and API documentation.

CI/CD Pipeline

Coming soon...