Step 1: Hardware Required:
- Raspberry Pi Model B or B+
- Aftermarket head unit (Note: Must support Auxiliary input)
- Plugable USB Bluetooth 4.0 Low Energy Micro Adapter
- 2A Car Supply / Switch or Micro USB Car Charger
- ELM327 Bluetooth Adapter or ELM327 USB Cable
- RCA cable
- Keyboard (*optional)
Step 2: What is OBD-II?
OBD stands for On-Board Diagnostics, and this standard connector has been mandated in the US since 1996. Now you can think of OBD-II as an on-board computer system that is responsible for monitoring your vehicle’s engine, transmission, and emissions control components.
Vehicles that comply with the OBD-II standards will have a data connector within about 2 feet of the steering wheel. The OBD connector is officially called a SAE J1962 Diagnostic Connector, but is also known by DLC, OBD Port, or OBD connector. It has positions for 16 pins, and looks like this:
Step 3: PyOBD?
pyOBD (aka pyOBD-II or pyOBD2) is an open source OBD-II (SAE-J1979) compliant scantool software written entirely in Python. It is designed to interface with low-cost ELM 32x OBD-II diagnostic interfaces such as ELM-USB. It will basically allow you to talk to your car’s ECU, display fault codes, display measured values, read status tests, etc.
I took a fork of pyOBD’s software from their GitHub repository, https://github.com/peterh/pyobd, and used this as the basis for my program.
The program will connect through the OBD-II interface, display the gauges available dependent on the particular vehicle and display realtime engine data to the cars aftermarket head unit in an interactive GUI.
For more detail: OBD-Pi