This project aims to adapt existing steering wheel controls for a non standard car radio. It's designed to work with Nissan models, but should work in any other resistive steering wheel controls. Essentially, it converts resistive analog values read from the buttons present in the steering wheel into values the car radio is programmed to understand. Naturally, there are several adapting interfaces on the market, but not seemed to work with the setup being used by me, simply because the radio being installed belongs to another car of the same manufacturer, thus, not a standard off the shelf brand, like Pioneer, Kenwood or JVC. Interfaces available on the market are non programmable and non customizable. Additionally, I'd like to learn a different technology as well. Who doesn't?!
- RoboCore - Arduino development kit
- Visual Studio Code - Code editor
- PlatformIO - A platform for embedded development
To get a copy up and running follow these steps.
This project requires an Arduino compatible board with at least 2 analogue inputs, two digital potentiometers, steering wheels controls removed from the steering wheel itself (of course, depending on how advanced you're with Arduino prototyping, you could simulate your own buttons as well), a multimeter and a car radio (or just a multimeter if you're a hundred percent sure it's gonna work once installed).
These were the components used (so far):
- Arduino Uno board;
- 1x 100000k Ω resistance;
- 2x X9C103S 10k Ω digital potentiometers;
- A tension regulator to be defined;
- A case to be defined.
Probably a diagram will be included here anytime soon, I swear.
Once completed, flash the code into your board. Don't forget to comment out the constants responsible for enabling additional serial output, so you don't force your microcontroller to execute extra and unnecessary instructions. You'll find them in the inbound.h
file:
#define INBOUND_RESISTANCE_DEBUG // Enables serial printing for resistance
#define INBOUND_BUTTON_DEBUG // Enables serial printing for button
To install it in the car, we'll basically intercept the wires 6 and 16 from the Nissan harness J502 ( wires SWC-A and SWC-B from the famous 20-pin Nissan connector) and also the wire 15 (SWC ground), and power it on by using the car battery, which is 12v and requires a tension regulator to protect the integrity of the Arduino board.
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
-
Fork the Project
-
Create your Feature Branch (
git checkout -b feature/AmazingFeature
) -
Commit your Changes (
git commit -m 'Add some AmazingFeature'
) -
Push to the Branch (
git push origin feature/AmazingFeature
) -
Open a Pull Request