Most cars you drive today will have radio controls on the steering wheel. The added safety of keeping both hands on the wheel as often as possible can’t be overstated. Since one of my vehicles didn’t have that feature I decided to add it. The cost could be less than $20.
How does it work
The vehicle is a 2005 Jeep Liberty. The radio installed in it is a Pioneer DEH-X6600BT. Some Jeeps come with the extra radio controls on the back of the steering wheel from the factory. There are also some aftermarket solutions to control aftermarket radios. If the car didn’t come with built in radio controls, they could be added. In the picture above you can see my steering wheel. It is similar to other Chrysler cars and trucks around this year. There are 2 buttons on the left and 3 on the right. Every time the car is started the cruise control is off and the buttons are useless until you press the ON/OFF button. All 5 buttons are read in by one single analog wire. Using the Arduino you can read that one analog value. Then, with an infrared (IR) LED added to the Arduino it can wirelessly send commands to the Pioneer radio.
The best part of this idea is that you can do more than just 5 commands. When you press each button the voltage on the signal wire will be a different voltage (between 5 and zero volts). When no buttons are pressed the voltage is close to 4.5V. Because all of these buttons are attached to one analog wire, pressing 2 buttons at a time will be a different voltage than any one button being pressed. So on the left side, if you hold the SET button and press any of the buttons on the right you can get a different voltage. The software in this program can send 6 different commands using only 4 of the 5 buttons on the steering wheel. Pressing just the SET button does nothing on its own.
How to Build
You could build this with an Arduino UNO, some wire, and an IR LED. You could also solder up your own on some protoboard. I used the UNO to test the idea and later I made a board for it to leave in the car. Here is a simple schematic of what is going on.
On the left you see the main processor (U2) with the analog signal coming in from the steering wheel. The voltage regulator (top right) takes in the 12V battery supply from the car and keeps it at 5V for the processor and the IR LED. The regulator is already built into the UNO. The IR LED circuit (bottom right) has a transistor controlled by the processor to activate it. The 56 ohm resistor and 300 ohm resistor are approximate and could be setup differently, but this is what is working for me. I was worried about writing code that might leave the LED on accidentally and burn it out quickly, so that is why I have the 56 ohm.
Above is what my setup looks like. The cigarette lighter plug was for quick install testing. It was later hardwired into the fuse panel. The blue banana jack was used so that the box could be unplugged from the car if it needed to be. I added a switch that disconnects the steering wheel input from the device. All of that stuff is optional, so I didn’t include it in my cost. It was all left over equipment I had from other projects anyways. The circuit board that everything is soldered to was nice to have. A couple years ago I had these printed so that I could easily solder small UNO projects like this. It makes the job quicker and lets me fit it in a nice case with room to spare. Again, that was not necessary either.
Once you have the box built, installing it is easy. On the driver’s side of the dash is the fuse panel. Simply remove the cover, plug the positive power supply into the right side of the 10 amp fuse for the radio (fuse number 21). To do this, take out the fuse, slide the wire into the fuse holder, and then plug the fuse back in. Be careful not to have any stray wires short the fuse. Doing this will make the fuse useless and could later damage wiring in the car if there is a short circuit. For the ground you can wrap the wire around any bolt you can find in the chassis of the car.
Under the radio/HVAC controls, just behind the center console there is a lot of space behind the carpet. I just set the box there. The wires for the LED were tucked under the center console and then ran up near the E-brake handle. That was the only place I could find to install the light that would stay in place without any drilling or cutting.
The wire for the analog input from the steering wheel is all violet in color and is the 6th pin of a 6 pin connector under the steering wheel (2005 year). To make sure you have the right wire you can try measuring the voltage as you press the buttons with key on. Do not tamper with any of the yellow connectors because they are for the air bags! Also, when you install this, it is a good idea to disconnect the battery first.
Read through the software to make sure you understand what is happening. Because every analog signal in every application will be a little different, there are tolerances built into the software. You can try calibrating these if yours does not work right away. Using an UNO to read in your analog values over serial would be very useful for debugging. I had to change my tolerances when I went from the UNO to the protoboard design. Building this without an IR receiver (very cheap) could be tricky too.
The software makes an attempt to be user friendly. Holding any button will make it rapid fire the command, but only after a short delay when the first command is sent. I really like this. Other people might not.
Getting the radio to “see” the IR LED was more difficult than I thought it would be. I think that the 56 ohm resistor might be making the signal weaker than it needs to be. I’m also not sure what the view angle is on the LED used. This all means that pointing the IR LED the right way can be a little annoying at times. The biggest hold up was finding a place to install the LED without drilling or cutting. It seems to be working well after a month now.
When I want to use the radio controls, but cruise control is on, I just turn off the cruise control. The buttons on the left do not do anything to the radio on their own. So if you use the cruise control, but only the ON/OFF and SET buttons, then the radio will never be changed. Also, just pointing the LED straight up for a while will stop the radio from “seeing” the signal too.