There is no question that steering wheel mounted controls are super convenient. Reaching all the way over to the dashboard to change a radio station is so 1990’s. An ever-increasing percentage of new cars are coming equipped with steering wheel controls for the stereo, however, you’ll lose the button control if you change out the stock head unit to something a little higher in quality. Sure, there may be an adapter readily available for your car/stereo combination, but there also may not be. [Ronnied] took the DIY road and made his own adapter.
The first obstacle for [Ronnied] was to figure out the wiring on the steering wheel controls. After some poking around he found that there were only two wires used for all of the control buttons, each button only changing the resistance between the two wires. The button states could easily be read by using an Arduino’s analog input. A Pro Mini model was chosen for its small size as it could be housed in the radio compartment of the dash.
The next step was getting the Arduino to control the aftermarket head unit. [Ronnied] did some research regarding JVC’s Stalk digital control interface but came to the conclusion that it would be easier to direct wiring the Arduino outputs to the appropriate spot on the head unit’s circuit board. To do this the button for each function that would also be represented on the steering wheel was traced out to find a common point on the circuit board. Jumper wires soldered to the circuit board simply allow the Arduino to emulate button pushes. To ensure that the head unit buttons still work in conjunction with the steering wheel buttons, the Arduino would have to keep the pins as inputs until a steering wheel button was pushed, the pin changed to an output, the signal sent and the pin changed back to an input. This feature was easily created in the Arduino sketch.
Video below.
I’m surprised that there isn’t some generally universal “control format” for wireless control of head units at this point in time. Even among major automakers, there is a split between different wired buses and as far as I know, no real push for wireless control at all, although a few cars have moved to fiber optics to reduce the sheer amount of wires present in a modern car (it adds more weight and cost than you would think). This is an aftermarket unit though so one would think that features such as wireless control would be both easy and cheap to implement and offer a competitive advantage for units that have that feature.
CAN bus is close… There’s no obvious commercial benefit to be gained from interoperability, so nobody bothers, I guess.
PS. Good to see nothing has changed since I was last round here – HaD proof reading skills still the pits.
SP: proofreading :p
Yeah, still intend to interface with the CAN bus in my Mini at some point. It isn’t needed often, but I’d like to try to pop the rear hatch from inside the car. And I’d like to add some instrumentation. Radio controls aren’t much farther away than the steering wheel controls would be.
Many steering wheel control clusters use LIN.
http://en.wikipedia.org/wiki/Local_Interconnect_Network
Did something similar for a friends car has my first introduction to electronics, it reads an analog value coming from the wheel and translates to the proper digital signal for alpine or resistance value (using a MCP41050) for pioneer, no modifications required to the radio, the pcb layout is stupid and the code sucks but it was made in 2011 for less than 20$ and still works, if anyone wants it i can upload it.
Hi nelson! Could you please share with me your code & circuit layout?
My car (Polonez Atu 1.6) does not even have a radio and i quite like it, makes me focus on a road, not on crappy pop songs.
ok gramps.
you remind me of this character from mr show https://www.youtube.com/watch?v=XCumH8LRo1A
bonus clip for more lulz https://www.youtube.com/watch?v=TNzYqzHmJss
You’d be a better driver if you focus on the car in front of you instead of on the road.
Easier ? Its far easier to just send commands down the proper wire than stripping down the unit and soldering.
Agreed and that was my original plan but this model didn’t have the stalk input line. My hackaday project has more detail which explain this.
https://hackaday.io/project/3078-Holden-Viva-Steering-Wheel-Controls
Agreed and that was my original plan but this model didn’t end up having that input line.
There are more details on my hackaday.io project page:
https://hackaday.io/project/3078-Holden-Viva-Steering-Wheel-Controls
I did the exact same thing on my Saab, it also has a resistor network I connected to the ADC input. I also have a JVC radio but it has a remote cable (blue with yellow stripe) in the DIN connector, the 3.5mm connector is only for audio input. I managed to use the remote cable interface after some research, it turns out the remote interface over wire is the same as the IR remote but without the carrier signal so I just modified a IR library to remove it.
I used the radio 5V USB regulator to power my Arduino and hid it inside.
In the original Saab setup, the buttons are read by the information display unit (called SID by Saab) and it then sends commands over CAN bus to the Saab radio. It was easier to tap the analog value from the wheel instead of listening on the bus.
I can’t say this enough…OPTOISOLATE! Mind you if you cook your arduino, it’s not an expensive repair, but different systems can always benefit from isolation. Makes troubleshooting a fair bit easier too!
Allright! This IS a hack. With all the soldering and modifieng Hardware, but: couldn’t this be done with less invasive soldering and drilling?
I also own a Vauxhall, and from the looks thus holden might also use canbus for transmitting signals to the original OEM headunit. And that Kennwod headunit looks also like it has a Port for a steering wheel remote Adapter. Yes, those adapters cost a lot of money (usually between 80-150€) but it does it s job, and because of the horrifieng price i diddnt buy any of those. But i found a kind of nice piece of Adapter which does all of my biddings (steereing wheel remote & ignition/illumination/reverse/ect) and i would also like to know how it specificly works… sooooo, i would offer a disassembly and all the Infos you’d need, if you like :)
Btw: an allnet banana pi also has a canbus Interface /grin
I made one of these for my scion tc. atmega328 reads the stock buttons and controls a digital potentiometer connected to the wired remote input on the head unit. on mine, the second wire on the head unit plug is just shorted to gnd (or not) to select the alternate function of each button. be careful though, in my stereo, everything was 3.3v, and my circuit was 5v, so I had to set the one wire to low or input, not low or high. also, on my stereo (pioneer) there is no way to use the remote for a seek function. lame.
just done astra can bus to Ir as the unit I had didn’t have a line in for controls but did come with an easily losable remote copied codes wrote a scetch n all buttons working :)