Skip to content

Cohort15-cmd/automotive-ivi-cluster

Repository files navigation

🚗 Automotive IVI Cluster (Qt/QML)

A digital instrument cluster for an automotive IVI system. Renders live CAN data received over WebSocket from a separate gateway process.

This is the frontend of a two-repo project. The backend — simulated ECUs, DBC, CAN gateway, and record/replay tools — lives in:

Cohort15-cmd/automotive-ivi-simulator


What this contains

A QML-based instrument cluster with:

Component Purpose
Main.qml Top-level cluster window, WebSocket client, layout
Speedometer.qml Reusable circular gauge (used for RPM and speed)
CenterPanel.qml Gear indicator + fuel + coolant + odometer + trip
StatusBar.qml Time, ambient temp, range, drive mode, turn signals
AdasPanel.qml Cruise, lane keep, distance, speed limit
TelltalePanel.qml Warning lights row (ABS, ESP, OIL, BAT, ENG, etc.)
WarningLight.qml Reusable telltale light component
ArcGauge.qml Generic arc gauge primitive
EqsDial.qml Mercedes EQS-style dial concept
LinearGauge.qml Reusable horizontal bar gauge

Plus a flashing collision-warning banner overlay and a hands-on-wheel warning that activate based on ADAS messages from the bus.


Live data contract

The cluster connects to ws://localhost:5555 and expects JSON messages with keys matching DBC signal names. Example:

{
  "EngineRPM": 3000,
  "VehicleSpeed": 88.5,
  "CruiseActive": 1,
  "CruiseSetSpeed": 120,
  "TurnLeft": 0,
  "CollisionWarning": 1,
  "DistanceToLead": 46
}

The full signal set comes from vehicle.dbc in the backend repo. Adding a new signal to the DBC makes it available in the JSON stream automatically — the cluster just needs to bind a property to it.

HMI failover

A "CAN LIVE / NO CAN" badge tracks the WebSocket connection state. Manual sliders at the bottom of the cluster auto-disable while live data is flowing and re-enable when the bus drops. This pattern matches the failover behavior expected of real automotive HMIs in test rigs.


Build

Prerequisites

  • Qt 6.5+ with the WebSockets module installed
  • CMake 3.16+
  • A C++ compiler (MinGW 64-bit on Windows, gcc/clang on Linux)

Open in Qt Creator

  1. File → Open File or Project
  2. Select CMakeLists.txt in this folder
  3. Configure with your Qt 6.5+ kit
  4. ▶ Run

Or build from the command line

mkdir build && cd build
cmake ..
cmake --build .
./appivi_hello   # binary name comes from CMakeLists.txt

The cluster will start and immediately try to connect to the gateway. If the gateway isn't running, the badge will read "NO CAN" and the manual sliders will be enabled — you can drive the cluster by hand to verify the visuals.


Tech stack

Language QML, JavaScript, minimal C++ in main.cpp
Qt version 6.5.3
Modules QtQuick, QtQuick.Controls, QtWebSockets
Build system CMake
Tested on Windows 11, MinGW 64-bit

Author

Youssef El Khaldouni

License

MIT

About

Qt 6 / QML automotive instrument cluster for the automotive-ivi-simulator project

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors