Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.
Merged
4 changes: 2 additions & 2 deletions Cluster/ui/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ ApplicationWindow {
flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
// flags: Qt.Window | Qt.WindowStaysOnTopHint

// visibility: Window.FullScreen
visibility: Window.Windowed
visibility: Window.FullScreen
// visibility: Window.Windowed
property int iconWidth: 65
property int iconHeight: 65

Expand Down
2 changes: 1 addition & 1 deletion Cluster/ui/SignDetector.qml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Item {
}

if (value === 0 || path === "") {
speedSigns.clear()
// speedSigns.clear()
trafficLights.clear()
stopSignSource = ""
yieldSignSource = ""
Expand Down
2 changes: 1 addition & 1 deletion Cluster/ui/SpeedDisplay.qml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Rectangle {

Text {
font.family: fontFamily
text: "KM/H"
text: "M/MIN"
font.pixelSize: app.letterSize
color: "gray"
anchors.horizontalCenter: parent.horizontalCenter
Expand Down
6 changes: 3 additions & 3 deletions MiddleWare/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,10 @@ int main(int argc, char** argv)
if (rpm >= -1000 && rpm <= 1000)
{
double wheel_circumference = wheelDiameter * M_PI;
double speed_kmh = rpm * wheel_circumference * 60.0 / 1000.0;
double speed_m_per_min = rpm * wheel_circumference;

std::string speed_str = std::to_string(speed_kmh);
std::cout << "Publishing speed: " << speed_str << " km/h" << std::endl;
std::string speed_str = std::to_string(speed_m_per_min);
std::cout << "Publishing speed: " << speed_str << " m/min" << std::endl;
speed_pub.put(speed_str.c_str());
}
}
Expand Down
94 changes: 92 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# Team02 RaspberryPi - Car Dashboard System
<h1 align="center">Instrument Cluster</h1>

This repository contains a car dashboard system that runs on a Raspberry Pi, displaying real-time vehicle information on a dashboard screen.
<h4 align="center">A real-time vehicle speed and data display.</h4>

![Cluster GIF](https://github.com/SEAME-pt/Team02-RaspberryPi/blob/readme/assets/instrumentCluster.gif)

## Overview

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
Expand All @@ -30,6 +34,8 @@ The Jetson Nano sends vehicle data over CAN bus to the Raspberry Pi, which proce
- Publishes vehicle data using Zenoh messaging
- Handles various vehicle systems (lights, battery, speed, ADAS)

🗂️ [Check here](https://github.com/SEAME-pt/Team02-RaspberryPi/blob/readme/MiddleWare/src/can-id-reference-table.md) the CAN ID Reference Table in middleware

## Vehicle Data Supported

- Vehicle speed and gear
Expand All @@ -46,3 +52,87 @@ The Jetson Nano sends vehicle data over CAN bus to the Raspberry Pi, which proce
- Qt6 with QML support
- Zenoh messaging library
- CAN utilities


### Usage


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](https://github.com/SEAME-pt/Team02-RaspberryPi/tree/readme/deploy).

## Testing





We use **LCOV** for test coverage analysis to ensure the reliability and quality of the codebase. Follow the steps below to run the tests:





1. Navigate to the `RaspberryPi/tests` directory:


```bash


cd RaspberryPi/tests


```





2. After the tests are executed, a coverage report will be generated. Run the test script:


```bash


./test.sh


```


Make sure all tests pass and the coverage meets the project's standards before submitting any changes.

## Acknowledgments

- **Qt Framework:** [Qt](https://www.qt.io/) – A cross-platform framework for GUI applications.


- **Raspberry Pi Foundation:** [Raspberry Pi](https://www.raspberrypi.org/) – The small, powerful computer that powers the display side of the project.


- **Arduino:** [Arduino](https://www.arduino.cc/) – A versatile open-source electronics platform used for sensor data collection.


- **CAN Bus Protocol:** [CAN Protocol](https://www.kvaser.com/can/) – The communication protocol used to connect different ECUs in the vehicle.


## The Team 🤝


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


- <a href="https://github.com/Rui-Pedro-Pires">Rui Pires</a>


- <a href="https://github.com/ziliolu">Luiza Zilio</a>


- <a href="https://github.com/luis-ffe">Luis Filipe Carvalho</a>


- <a href="https://github.com/mjorgecruz">Jorge Cruz</a>




Loading
Loading