Jump to content
Cement

Custom E46 Steering Wheel Controls

Recommended Posts

The Car:

For this project the relevant parts are that it's an E46 with Nissan VQ37 engine swap (running OEM ECM) and Alpine head unit. I need to interface with both of these things with the steering wheel controls, and neither of them speak BMW.

The Plan:

Make custom PCB's to replace the OEM units which will interface natively with the headunit and ECM respectively. Complete OEM look and feel but otherwise totally bespoke. Will likely use an Arduino for the radio controls, hopefully I can stash this some place well out of the way.

It turns out the Alpine (and other brands I believe) use the same signals as the IR remote sends but simply over the wired interface. As for the Nissan cruise control settings, they are based on a resistance ladder which is documented in the service manual. So the cruise functionality (actually used for changing maps in the ECM) will be all passive and the radio will be a little more involved.

So Far:

Have taken the OEM items out of the wheel so I can replicate the PCB's physical layout including fixed items like switch pads + lights.

2023-07-03_21-43-05.jpg.fe9d3e65d41ac024e67ccb194ab9eafc.jpg

  • Like 2

Share this post


Link to post
Share on other sites

Not much to report here, got some good photos which i will use to draw up the PCB shape. Have been tooling around with EasyEDA, an online circuit designer / layout tool ... it's definitely a whole new world to learn !!

Just for interest sake here is the rear side of the OEM boards. The radio PCB is actually a resistance ladder circuit which is read by the 'master' over on the cruise control side:

2023-07-05_19-37-37.thumb.jpg.df302ffbdb4c572c25c949b8059e0d6f.jpg

Share this post


Link to post
Share on other sites

Might be worth having a look at https://github.com/Wnthr/arduino-alpine-remote/blob/master/src/AlpineRemote.cpp which might be helpful in that it references the hex codes to send for various commands. Might be an easier place to start than trying to capture the IR signals and replay them. I note that the readme.md on that project indicates that it's a variation on the standard NEC IR protocol.

Cool project!

  • Like 1

Share this post


Link to post
Share on other sites

So a little bit of a change in plans based on some tooling around with the volt meter in the car. The radio controls circuit is fed 5V from the cruise control side and as mentioned is already a resistance ladder style ... so that makes it perfect out of the box for directly interfacing with the Arduino !! Score :)

Got some help from a friendly person on an electronics forum (https://www.electro-tech-online.com/threads/simple-circuit-reverse-engineering-steering-wheel-radio-controls.165060/) and can now measure all of the button presses on the Arduino with some basic code. Will be parking my code here if anybody is interested: https://github.com/david-morton/E46-SteeringWheel-Controls/tree/main

This is the setup as it stands:

2023-07-10_12-24-31.jpg.1093c98bcb39941e2d13a01ea59cdac6.jpg

Next up will be:

  • Add more code to actually detect the respective button presses
  • Wire in the head unit to this PoC setup
  • Test the internet sourced codes over the wire and see if the head unit does stuff (thanks @Karter16)
  • Work out how I can get everything done with 5 cables total into the wheel via the clock spring taking into account what the cruise control side will need. May try and stash a super small micro controller within the wheel itself ... not sure yet

This is the PoC circuit as it stands:

image.png.178dd9b54937c06a97acddc5e5615125.png

Edited by Cement
  • Like 1

Share this post


Link to post
Share on other sites

Got the PoC running nicely and have validated it against the head unit now :) Next up I will take a look at the cruise control side again and work out the wiring setup + where I will stash the Arduino to deal with the radio controls.

 

  • Like 1

Share this post


Link to post
Share on other sites

Getting the permanent solution wired up using an Arduino Nano. The other piece is a 'buck' DC-DC converter to give the Arduino a regulated 10V and protect it from the noise of the car wiring. The 1.5kohm resistors are inside the heat shrink.

Have got a cable spliced into pin 27 on the lighting control module which will power this as well as provide the power for the lights in the button panels via a pin in the clock / volute spring.

2023-07-13_20-09-33.jpg.d99b91168473788af9a97245da6c8155.jpg

Share this post


Link to post
Share on other sites

Have started on designing the PCB for the cruise control side and its looking ok ... I think I'm in a good place for the actual controls, and have just got to add he little LEDs for the illumination now. Took some good photos of the existing board and have marked out the circuits that are used for the lights. Will just research why they have different resistor values for each LED ... I'm sure there is a good reason for it.

Will add the LED's and resistors to the circuit tonight and then i can refine things a bit, 3D print the board to test fit and at some point actually order the PCB(s) !!

2079491326_PCB_Cruise_1Markup-Copy.thumb.JPG.9586eab316940d53799d9fc39d484d15.JPG

1041101990_PCB_Cruise_2Markup-Copy.thumb.JPG.7b08e1d34c1dcaa6b2dd77e5e4864e58.JPG

image.thumb.png.b0ffe4724130daf34028b8dca527f655.png

Share this post


Link to post
Share on other sites
17 hours ago, Cement said:

Will just research why they have different resistor values for each LED ... I'm sure there is a good reason for it. 

I wonder if it’s something to do with the button icons having different surface areas that illuminate, and they have adjusted the brightness of each LED so the brightness of each button appears to match?

Share this post


Link to post
Share on other sites
17 hours ago, polley said:

Jlcpcb for the boards ?

Ya I think so, using EasyEDA which I believe is owned by or otherwise tight with them and it's cheap cheap plus good turn around it would seem !!

Not quite sure if I am ready to hit the go button just yet but for the price i think I should just to learn whats wrong and how they come out.

2 hours ago, Karter16 said:

I wonder if it’s something to do with the button icons having different surface areas that illuminate, and they have adjusted the brightness of each LED so the brightness of each button appears to match?

Powered up the board today and all the LED's look to be the same brightness, to the eye at least. Have got another thread going with the electronic folks to see if there are some other ideas. https://www.electro-tech-online.com/threads/circuit-reverse-engineering-different-led-resistor-values.165113/

Looks good in a picture now at least which is encouraging 👍

image.thumb.png.3c9ebd1ec002bcbf251bea05d788106d.png

  • Like 1

Share this post


Link to post
Share on other sites

Looking at your thread on the electronics forum - voltage either side of the resistor won’t tell you anything as LEDs have a fixed voltage drop (approx 1.8v in this case), voltage drop across the resistors will therefore be fixed. V=IR therefore means, in this case, that with fixed voltage drop across resistors and varying resistance, the current will vary through each LED, which in turn will influence brightness (although not enough to be able to tell it would seem) so 🤷‍♂️

  • Like 1

Share this post


Link to post
Share on other sites

Sorry didn’t mean that to come across as short - was making dinner and looking after little one at the same time and just read it back to myself!!

  • Like 1

Share this post


Link to post
Share on other sites
4 hours ago, Karter16 said:

Sorry didn’t mean that to come across as short - was making dinner and looking after little one at the same time and just read it back to myself!!

All good for sure, I just read it as helpful advise 👍 I'm just going to split the difference and use a set value for all then can adjust from there if things look weird ... just ordered everything I need from RS (including new LED's so can try to not reuse) and will get the boards ordered this week.

  • Like 1

Share this post


Link to post
Share on other sites

PCB's arrived ... really impressed with the overall experience with JLCPCB !! Waiting on the remainder of the components from RS so i can assemble a board and test everything out. I'm expecting some minor fitment issues which may need a rev 2 but we shall see.

2023-07-28_13-49-08.thumb.jpg.de584a4a9aef0274b00b42ef57ccaccf.jpg2023-07-28_13-51-54.thumb.jpg.f2e0370c1f6f17e142fba1ca4470a537.jpg

  • Like 1

Share this post


Link to post
Share on other sites

The balance of the components arrived today from RS and I got a board assembled as much as I could. One of the resistors was in the correct bag but the part was of the wrong value :( So held up until thats resolved, and of course it was the one weird value which came from the UK.

Have to drill a missing hole in the board before I can at least test fit it and check the LED brightness etc.

2023-07-31_14-15-35.jpg.5ee67ca7ceb11b45b00a7d4272bc2c2e.jpg

2023-07-31_14-15-50.thumb.jpg.8befa94852a51584a846b5412083190c.jpg

  • Like 3

Share this post


Link to post
Share on other sites

Got the missing resistor and everything measures perfectly as designed !! Pretty happy with that.

Unfortunately something I didn't count on is the little rubber pads in the membrane being shitty conductors and throwing out all of the measurements 😕 So I'm pretty confident that in the car it would not function well at all ... will try and clean the pads but can't see it improving things hugely.

Will then look to silver paints or other things i can add to the little membrane pads to give a better connection.

Share this post


Link to post
Share on other sites

Have ordered some ultra small tactile switches to use instead of trying to get the button pads to work. They are only 0.3mm thick and less than 4mm across. New PCB's on the way to work with the new switches 👍

Link to the switches: https://sten-eswitch-13110800-production.s3.amazonaws.com/system/asset/product_line/data_sheet/236/TL3312.pdf

image.png.d903e68eb1dc72392bb9bd97b2fcf1d0.png

Share this post


Link to post
Share on other sites

New boards and the switches arrived, incredible performance from both outfits ... boards ordered from China on Saturday 4pm and were manufactured and delivered on Wednesday, amazing.

These switches are TINY ... might need to get some solder paste and try to reflow them (heat in a pan or similar :D ) but will have a hoon with some hand soldering first.

2023-08-23_18-42-16.jpg.e37fa64df3e5ef123469663edfd05fe0.jpg

Share this post


Link to post
Share on other sites

Got a board assembled and tested ok, hopefully the switches stay put !! Yet to actually validate the buttons are functional for ECU map changes, will do that tonight. Then i have to try and capture the Nissan CAN (?) signals for cruise control light illumination.

LED illumination looks good compared to the radio button side :)

20230823_215315.jpg.ed101e1b3164eb26bad64a90318f0a4b.jpg

20230823_215324.jpg.3bb4748b7b66ff7697f366ca41328768.jpg

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...