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/
Project Requirements
- Compatibility: The dashboard must be compatible with a wide range of vehicles that support the OBD-II standard.
- Accuracy: Displayed data must be accurate and in real-time, with a minimal lag between the vehicle’s status and the dashboard readout.
- User Interface: The interface should be intuitive, easy to navigate, and present data in a clear, understandable format.
- Reliability: The system must be robust and perform consistently without crashing or data interruption.
- Responsiveness: The touchscreen interface must respond promptly to user input without delay.
- Power Management: The dashboard should be energy efficient and not drain the vehicle’s battery excessively.
- 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.
- Scalability: The software should be designed to accommodate future upgrades and additional features.
- Safety and Legal Compliance: The system must comply with all automotive safety standards and not distract the driver or impede vehicle operation.
- Ease of Installation: The installation process should be simple, not require specialized tools or permanent vehicle modifications, and be reversible.
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.
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:
- 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.
- 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
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/