This repository contains a car dashboard system that runs on a Raspberry Pi, displaying real-time vehicle information on a dashboard screen.
The system consists of two main applications:
- Instrument Cluster - A QML-based dashboard display
- MiddleWare - CAN bus communication handler
Jetson Nano → CAN Bus → Raspberry Pi → Dashboard Display
The Jetson Nano sends vehicle data over CAN bus to the Raspberry Pi, which processes and displays the information on a car dashboard interface.
- Qt/QML-based dashboard application
- Displays speed, battery level, gear, warning lights, and ADAS information
- Real-time lane departure warnings and traffic sign detection
- Custom UI with vehicle lights indicators
- CAN bus communication handler
- Receives data from Jetson Nano via CAN interface (
can0) - Publishes vehicle data using Zenoh messaging
- Handles various vehicle systems (lights, battery, speed, ADAS)
🗂️ Check here the CAN ID Reference Table in middleware
- Vehicle speed and gear
- Battery state of charge
- Light indicators (headlights, fog lights, turn signals)
- Lane detection and departure warnings
- Traffic sign detection
- ADAS autonomy levels
- Emergency braking alerts
- Raspberry Pi with CAN interface
- Qt6 with QML support
- Zenoh messaging library
- CAN utilities
Once the application is up and running, the instrument cluster will display real-time speed data and the vehicle's battery status on an LCD screen. The data is continuously updated as it is received via the CAN bus.
This project's UI can be deployed and tested in two main environments (in a raspberry pi 4 and locally in you computer). Check the deploy manual here.
We use LCOV for test coverage analysis to ensure the reliability and quality of the codebase. Follow the steps below to run the tests:
- Navigate to the
RaspberryPi/testsdirectory:
cd RaspberryPi/tests
- After the tests are executed, a coverage report will be generated. Run the test script:
./test.sh
Make sure all tests pass and the coverage meets the project's standards before submitting any changes.
-
Qt Framework: Qt – A cross-platform framework for GUI applications.
-
Raspberry Pi Foundation: Raspberry Pi – The small, powerful computer that powers the display side of the project.
-
Arduino: Arduino – A versatile open-source electronics platform used for sensor data collection.
-
CAN Bus Protocol: CAN Protocol – The communication protocol used to connect different ECUs in the vehicle.
Together, we've collaborated to bring this project to life, combining our knowledge, skills, and experience every step of the way. It has been a great journey of learning and growing as a team.
