Make your car like a fighter jet! But not as fast!
Our senior design project is to build a projected heads-up display for a car that is projected on to the windshield. This system will pull vehicle information from the OBD jack located in all modern cars.
The initial software implementation will have only three steps:
At this point, this program is only an attempt to parse OBD data from the vehicle. Once the data connection is established, we can begin adding other components. The data will be reflected on to the windshield with a vacuum fluorescent display. The light from the dispay will be collimated with either mirrors or lenses.
This prgram will be installed on a Linux-based operating system, most likely a pcDuino running Ubuntu 12.10 or 13.04.
We will use a consumer device to allow us to communicate with the CAN bus via Bluetooth. This specific device/protocol may change, but in all likelihood we will still be using a serial device, even if it isn't a Bluetooth device.
Specifically, we are performing initial testing with an ELM327 OBD to RS232 Interpreter. The serial requirements for the device are as follows:
9600
symbols/sec8
None
1
'\r'
or 0x0D
) (input and output)A majority of messages will be less than 7 data bytes long. We must send a
a signal of ATAL
to allow longer messages.
ATZ
.ATE0
.ATSP0
.At this point, we can begin communicating normally.
To request data from the vehicle's systems, we send it a byte string according to the OBD standard. More information may be found on Wikipedia.
Commands take the form of:
When we issue a command (terminated by a carriage return), the device will respond with a hex string consisting of:
0x40
to signify a responseAs a prototype implementation, our system will be requesting the speed
(0x010C
) and RPM (0x010D
) and printing this information
to the console.
Copyright 2013 Robert Richter and Aaron Hall
Distributed under the terms of the GNU GPL.