Raspberry Pi Digital Dashboard

Team Name

Raspberry Pi Digital Dashboard

Timeline

Fall 2023 – Spring 2024

Students

  • Amey Shinde
  • Bryan Ho
  • Dylan Baes
  • Ikechukwu Ofili
  • Luc Pham

Abstract

Our senior design project focuses on developing a digital dashboard for vehicles, utilizing QT/QML, PyQt5, and PyOBD libraries to enhance the driving experience by providing real-time vehicle diagnostics directly through the car’s OBD-II port. Designed for ease of use, the system features plug-and-play connectivity with no permanent modifications required, making it a versatile addition to any vehicle.

Background

According to a report by the Automotive Aftermarket Suppliers Association, the automotive aftermarket industry is rapidly embracing digital solutions, with a projected growth in digital data applications expected to increase significantly over the next decade
URL:
https://www.aftermarketnews.com/aasavision-what-will-the-aftermarket-look-like-in-2035/

Main screen

GUI

Second_screen

Second Screen

Project Requirements

  1. Compatibility: The dashboard must be compatible with a wide range of vehicles that support the OBD-II standard.
  2. Accuracy: Displayed data must be accurate and in real-time, with a minimal lag between the vehicle’s status and the dashboard readout.
  3. User Interface: The interface should be intuitive, easy to navigate, and present data in a clear, understandable format.
  4. Reliability: The system must be robust and perform consistently without crashing or data interruption.
  5. Responsiveness: The touchscreen interface must respond promptly to user input without delay.
  6. Power Management: The dashboard should be energy efficient and not drain the vehicle’s battery excessively.
  7. Data Visualization Options: The dashboard must offer various data visualization options, such as digital gauges, graphs, and eco-driving indicators, to suit different driver preferences and information priorities.
  8. Scalability: The software should be designed to accommodate future upgrades and additional features.
  9. Safety and Legal Compliance: The system must comply with all automotive safety standards and not distract the driver or impede vehicle operation.
  10. Ease of Installation: The installation process should be simple, not require specialized tools or permanent vehicle modifications, and be reversible.

System Overview

System Overview

High Level System Overview

Hardware Components:

  • Raspberry Pi: This compact computing device serves as the brain of the dashboard, executing the Python code that interfaces with the car’s OBD-II system.
  • Seven-Inch Touchscreen Display: Attached to the Raspberry Pi, this screen is the visual output for the dashboard, showing real-time data and diagnostics to the user.
  • OBD-II to USB Adapter: This cable connects the Raspberry Pi to the vehicle’s OBD-II port, which is the data source for vehicle diagnostics.
  • Power Source: A connection to the car’s power outlet supplies electricity to the Raspberry Pi and the display, ensuring continuous operation.

Software Components:

  • Operating System: A lightweight, Raspberry Pi-compatible Linux distribution hosts the operating environment for the application.
  • PyQt5: A set of Python bindings for the Qt application framework, used to create the graphical user interface of the dashboard.
  • QML: A user interface markup language that focuses on developing components for the user. This is compatible with Python bindings that offer declarative scripting language support for designing the user interface’s look and interactivity.
  • PyOBD: A Python library that facilitates communication with the OBD-II port to retrieve vehicle diagnostic data.

System Functionality:

  • Data Retrieval: The Raspberry Pi communicates with the car’s OBD-II system using PyOBD to request and collect data.
  • Data Processing: The received data is processed and interpreted by the Raspberry Pi, translating raw diagnostic codes and readings into user-friendly information.
  • Data Display: Processed data is rendered onto the touchscreen display via a PyQt5-driven interface, utilizing PyQML for dynamic layout and design.
  • User Interaction: The system allows for user inputs through the touchscreen, providing interactive capabilities to customize views and settings.

System Operation:

  • Upon ignition, the system initializes and establishes a connection with the vehicle’s OBD-II system.
  • The Raspberry Pi continuously polls for data updates, ensuring the information on display is current.
  • The dashboard reflects critical information such as speed, RPM, engine temperature, and error codes, among others.
  • Users can interact with the dashboard to switch between different data displays or set alerts for certain vehicle conditions.

Safety and Security:

  • The system is designed with consideration for driver safety, ensuring that the display is not distracting and complies with safety standards.

Results

For the testing phase of our digital dashboard project, we utilized a team member’s car to ensure the dashboard’s synchronization and accuracy against the car’s built-in dashboard.

This involved connecting our Raspberry Pi-based system to the car’s OBD-II port and running the dashboard application to display real-time data on the seven inch screen.

We monitored key metrics such as RPM, speed, and fuel consumption,
comparing them directly with the readings on the car’s original dashboard.

Testing the GUI

Dashboard GUI while testing

Inside of the car while testing

Car dashboard

Main Dashboard View

Main Dashboard Screen
Second Dashboard View
Second Dashboard Screen

Future Work

As the dashboard achieves all of its goals that was initially put in place, there are still much to improve on and add onto the dashboard:

  1. Automatic Sensor Detection: There are certain cars that may have certain values that other cars don’t. For instance, EVs may have a battery level but not a fuel level,  the ASD, or automatic sensor detection mechanism allows the dash to automatically populate its UI based on the car’s capabilities.
  2. Race Mode: Although the dashboard is used for everyday cars, we are still wanting to hold onto the first mission for this dashboard, which is to be of use for formula cars and track cars to be able to record lap details for analysis. Race mode would be a mechanism in the dashboard, where similar to the 0-60 timer already in place, allows the driver to record details about the car’s performance in certain track events (i.e. 1/4 mile, 60-120 mph timing, etc.).

Project Files

Project Charter – Project_Charter

System Requirements Specification – System Requirements Specification

Architectural Design Specification – Architectural Design Specification

Detailed Design Specification – Detailed Design Specification

Poster

Poster – Poster_digital_dash

Demo Video

Link 1 – https://drive.google.com/file/d/1mctNpBmTSfvW0TR-Qcsg0PHDtHoaQcwP/view?usp=sharing

Link 2 – DemoDayVideo.mp4

Source Code

python_dash_gui-main

Source Code Documentation

Documentation Site: https://cse-digital-dash.netlify.app/

Documentation HTML: https://drive.google.com/file/d/1afj9NvyAmV85WwtVfAqHaGsCZbaBtpY1/view?usp=sharing

References

PyOBD Documentation. python. (n.d.). https://python-obd.readthedocs.io/en/latest/

ads4387