HUD One: RADAR Detector/HUD Integration Project
As you may have heard (e.g. by reading this thread), I designed an interface between the Valentine One and Passport 9500ci RADAR detectors (yes, I have both installed in my car!) and the Head-Up Display (HUD) in my Corvette. I call my interface the "HUD One."
I began working on this project way back in 2008. The first step was to determine how to communicate with the HUD and tell it what to display. By studying the service manuals for the car, I quickly determined that the HUD is connected to the rest of the car via what GM calls the "Class 2" bus. This bus is based on an SAE (Society of Automotive Engineers) standard called J1850, and there is a lot of information available regarding the standard. This is primarily due to the fact that the J1850 standard owes its existence to CARB (California Air Resources Board) legislation that required all cars sold in California to provide a standard interface for smog check equipment. GM, Ford, and Chrysler decided that, since they had to provide this interface anyway for diagnostic and test purposes, they might as well use it for other purposes. By installing small embedded microcontrollers that directly control various functions and connecting them together using the J1850 bus, carmakers were able to not only satisfy the regulatory requirements but also to replace miles of dedicated wiring, relays, and other circuitry. This increased reliability, saved weight, and (most importantly) cut manufacturing costs.
Thus, although the basic protocol and the messages relating to diagnostic and smog test functions are publicly documented (and available from the SAE web site for a fee), the other functions use proprietary messages which are not publicly documented. Naturally, the HUD communication falls into this latter category. In order to "talk" to the HUD, it would be necessary to reverse-engineer these undocumented messages. This part alone took several weeks.
I also needed to understand the display protocols used by the RADAR detectors. Fortunately, the
protocol for the Valentine One was hacked out long ago and has been floating around the net for years. No such luck for the 9500ci protocol; this required another few weeks of reverse-engineering effort to tease out.
Next I needed a small embedded system on which to run the HUD-One application. I'm a software guy, not a hardware guy, so for this first attempt, I decided to use as many off-the-shelf hardware components as possible. I settled on an LPC-P2103 development board from Olimex. The LPC2103 has 5V-tolerant I/O (important for interfacing with the V1), and the board has a small prototyping area which turned out to be extremely handy. I already had all the necessary development tools from a previous project, which was also a plus.
I then selected an LDV6S to serve as the interface to the in-car network. Unlike most OBD-II interfaces which use the clunky ELM command protocol, the LDV6S uses a unique binary protocol and had other features which seemed to make it well-suited to this application.
To power it all I used an M3-ATX power supply. Total overkill, but after spending several weeks screwing around with other power supplies that didn't work well in the challenging automobile environment, I decided to bite the bullet and use something that I knew would work.
There were other problems which had to be worked out. For example, when I first hooked the fledgling HUD One up to the Class 2 bus, I discovered that the LDV6S would jam the vehicle network while it was powering up, preventing the car from even starting(!!!) I had to isolate the bus connection with a relay before it would even work. On top of that, although the LDV6S has a "bus monitor" mode where it "sniffs" all traffic on the Class 2 bus and forwards that through its serial port, it has to exit this mode in order to transmit a message - which means that any messages that appear on the bus during the time when monitor mode is turned off will be missed. This could definitely cause me problems down the road.
This is version 1.0 of the HUD-One, neatly packaged in a plastic box with a see-through smoked lid.
The box was chosen specifically to fit into the cozy little spot underneath the passenger side floorboard, next to the fuse panel and the amp for the stereo:
The V1 itself is hardwired to the passenger side headliner using a VoZtech mount:
I ran the wire from the HUD One mounting location through the inside of the A-pillar:
Once it reaches the top, it runs inside the headliner until it reaches the sun visor bracket:
It comes out through a small hole in the bracket which used to house a small yellow LED used for ambient lighting in the cockpit at night. I saved the LED in case I ever want to restore the car to factory condition. :)