🏁 For documentation, checkout our Wiki!
- Firmware libraries are maintained in the DAQ Firmware Libraries repo.
- Custom PCB revisions are maintained in the DAQ-PCB repo.
- When you clone this library, make sure that you add the --recurse-submodules flag
- Objective
- User Features
- Hardware and Equipment
- Firmware Tech Stack
- Automation
- Future Plans
- Deprecated Technologies
- 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.
Supported Logging Method | Library Completion |
---|---|
Micro-SD Card | |
USB Flash Drive | ✔ |
Wireless Transmission |
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.
Component Type | Supported Hardware Device | Library Completion |
---|---|---|
Linear Potentiometer | - SLS 1322-3 | ✔ |
Accelerometer | - LSM303DLHC | ✔ |
Gyroscope | - L3GD20H | ✔ |
Magnetometer | - L3GD20H | ✔ |
GPS/GNSS | - NEO-M9N | |
Strain Gauges | ||
Tire Temperature | - MLX90614 | |
ECU | - PE3-8400P | ✔ |
For additional information regarding each device and its implemention, refer to our Wiki.
A CSV file with associate a timestamp with the following sampled data.
Computed Output | Supported Units |
---|---|
Suspension Travel Displacement | - Inches - Millimeters |
Acceleration (3 DoF) | - m/s^2 - Gs |
Rotational Velocity (3 DoF) | - Degrees per second - Radians per second |
Location Coordinates | - Altitude - Latitude - Longitude |
External Force | - Stress - Torque - Pressure |
Tire Temperature | - Farenheit - Celsius |
Motor Shaft Speed | - Revolutions per Minute (RPM) |
Throttle Position | - Percentage |
Fuel Open Time | - Milliseconds |
Ignition Angle | - Degrees |
Atmospheric Pressure | - Pound per Square Inch (PSI) - Kilopascal (kPa) |
Intake Manifold Pressure | - Pound per Square Inch (PSI) - Kilopascal (kPa) |
Exhaust Oxygen | - Lambda |
- 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 drivers or a Board Support Package (BSP) to interface with the microcontroller.
- Generated by STM32CubeMX within the CubeIDE environment, which also provides the
- FreeRTOS
- 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).
- FatFS
- For maintaining the FAT file system.
- Allows users to access the resulting CSV file on any device
- Unit tests are developed using Google Test and are maintained in
DAQ_System/Tests
. - See our Unit Testing page for running them locally by leveraging Docker.
- Continuous Integration (CI)
- The firmware is compiled as an stm32CubeIDE project using the following GitHub Action: xanderhendriks/action-build-stm32cubeide.
- The unit tests are compiled and ran using CMake with Ninja.
- Developing for a dual-core STM32H7 microcontroller.
- The Cortex M4 core may focus on sampling data from sensors.
- The Cortex M7 core may focus on outputting the processed data.
- Both cores may run FreeRTOS for organizational purposes.
- Both cores may communicate and synchronize with each other using the OpenAMP framework.