Introduction: Volume Knob for 2020 Pioneer DMH NEX Car Radios (and Others Too)
If you have any radio in the Pioneer DMH NEX series that came out in 2020 (DMH-WT8600NEX DMH-WT7600NEX DMH-WC6600NEX DMH-W4660NEX and DMH-W4600NEX) you probably noticed they don't come with a volume knob. This is annoying because if you don't have steering wheel volume controls, you have to take your eyes off the road to find the area on the screen to touch to adjust the volume.
But never fear, there is an answer. You can make a volume knob without knowing much about electronics by using cheap generic parts from ebay and amazon. This knob uses a chip on a small circuit board called an "arduino", a longtime favorite for hobbyists and beginners as well as experts.
I had no experience with electronics before this project. The most I had done is install the radio, which I was forced to do myself because the pandemic had shut down the installation services in my area. But this project was a great (and satisfying!) introduction to the hobby.
We aren't modifying the radio, just plugging a cable into the W/R port. It doesn't involve risk of electric shock because these are low voltage components powered by USB. The knob is powered through a USB port somewhere in your car. You can power, though not charge, multiple devices like dash cams with a single USB port using a USB splitter or hub. And if you installed your radio, you know that car panels can be pried off and on and wiring can be safely hidden behind them.
This works on this series of Pioneer radios and could work on other brands that have an unused “W/R” port in the back, as long as you can figure out by trial and error or through the internet what the correct resistance levels are that are interpreted by that brand of radio as volume commands. You can use this same code and change the resistance levels in the section of code identified in step 3.
I’d like to thank the redditor IvanRaide for creating this project first and for helping me do everything you see here. He wrote the arduino code and to him is owed all the credit for coming up with this.
Supplies
What you'll need is:
1. A soldering iron and solder (I recommend rosin core solder). If you've never soldered before, watch a youtube video on how to strip and solder wires, and solder pins on electronics components. Here's what I watched: https://www.youtube.com/watch?v=oqV2xU1fee8
2. A multimeter.
3. A breadboard. This is a rectangular piece of plastic with a bunch of holes you can stick wires into. It has metal rails inside that make connections between wires you stick into it. It will allow you to test out all the electric connections and make sure your knob works before soldering it all together. This is what they call "prototyping."
4. Search breadboard wires on amazon. Get a set of male to male, female to male, and female to female wires. You can use these for prototyping and if you don't want buy additional 22 gauge solid wires for the final product, you could also just use these in the final version of the knob you make. Just make sure to actually solder them because if you just connect them they might come disconnected from wear and tear.
5. A rotary encoder. This is the stem for the knob that senses when you’ve turned it or pressed it. Pressing it will send a track forward command, which I like to use to skip through podcast ads, as it goes ahead 15 seconds in CarPlay. I used the most common cheap version which can be found by searching "rotary encoder for arduino." You can get a nice brass or aluminum knob for it on ebay with the standard 5mm diameter fit if you don't like the plastic one the encoders come with. I recommend "knurled" guitar knobs for that nice finger feel.
6. A 3.5mm male stereo cable. Make sure it has 2 black rings, not one ring which would be mono. You can salvage one from an old set of headphones. This will be the connection to your stereo. It plugs into the "W/R" port, which is how steering wheel controls used to connect to radios in the old days. Not sure why they still have that port on a 2020 radio, but this is lucky for us.
7. An Arduino Nano microcontroller. There are many generic clones of these little things that should cost no more than $3-5 a pop. Get the kind that come with pins already soldered on and the blue Mini USB cable so you have a way to connect it to your computer. Mini USB is an old type of cable that you probably won't have lying around, it was quickly replaced by the micro USB we all use
8. A digital potentiometer. The one I used is X9C104 Digital Potentiometer Module, costs $5 for two on amazon. This will take commands from the arduino to adjust the resistance in the stereo cable to specific levels that the radio will interpret as signals to change the volume.
9. Perf board. You'll use this to solder all your connections together on the final product.
10. Optional: 3.5mm female socket with pins to mount it on Perf board. This way you can easily plug and unplug the 3.5mm stero cable from your board when testing / installing. This is what I used. The alternative is to just solder the wires in your stereo cable to the board directly.
11. Optional: Screw terminal connectors with pins to mount on Perf board. This also makes it easier to disconnect and reconnect your rotary encoder to your board when testing / installing. This is what I ultimately used for the final product. Alternative is to solder the wires directly onto the board.
12. Optional: 22 Gauge Solid Wire. This is a bit easier to solder onto your board than using the jumper wire. But cutting off the ends of the jumper wire and soldering those works just as well.
Step 1: Make All Your Connections on the Breadboard
If you plug a wire into a breadboard, it will be connected to the wires plugged into all the holes in the same row, but not in the same column. The opposite is true for the + and - columns on either side of the board, which are used to connect to a power source. All + holes are connected on the same rail, as with all - holes.
Make all your connections on the breadboard as pictured in the image. You'lll have to solder pins onto the Potentiometer and use female to male wires to connect to the breadbaord. Remember when soldering: solder flows toward the iron, so put the iron at or behind the destination. Move the solder toward the iron, and keep the iron still. Don’t hold the solder more than 1-2 seconds on the iron, because the flowing part of the solder evaporates and you’re left with the grainy part.
Note: the image shows a mono cable. That was a mistake. Get a stereo cable.
Put the arduino straddling the middle groove of the breadboard and put the wires from the rotary encoder, the potentiometer, and the stereo cable into the correct row corresponding to the Arduino pin.
Double check all your connections and make sure they look like the diagram. Then use the multimeter's beeping function to make sure the electrical connection exists between each pin that you have connected. The beeping function is usually the symbol that looks like 3 lines showing a sound being made. Connect one probe to the 5V pin of the arudino, for example, and the other probe to the VCC of the rotary encoder, you should hear a continuous tone as long as the probes are touching things that are connected.
Make sure there are no crossed connections. Especially if 5V is touching GND anywhere, that can short your circuit.
And also if GND and 5V are swapped, that sends current in the wrong direction which can fry your components.
Step 2: Download the Arduino IDE and Upload the Code to Your Arudino Nano
Go to https://www.arduino.cc/en/software and download the IDE. This is the programming tool you can use to program your arduino.
Get the code for the knob here. https://drive.google.com/file/d/1pJV-yCpkbY9SLo3Z... . This was written by a smart redditor named IvanRaide to whom I owe everything for this project.
Open up the .ino file in the Ardunio IDE.
Make sure you're connected to the USB of the ardunio, and under tools, Port, select the USB port your arudino is connected to.
Make sure under processor it says “ATmega328p” (some cheap clones require the “old bootloader” and under Board it says “Arduino Nano”. Press the upload button at the top of the the green window of the .ino file, it looks like a right arrow. The code should upload to your arduino. If not, google whatever the error message is and listen to the smert people on the internetz.
Step 3: Test That the Rotary Encoder Is Sending Signals to the Arudino
In the Arudino IDE go to Tools, then serial monitor. Make sure the "baud rate" is set to 115200 baud in one of the drop-down menus.
Twist the knob clockwise. See if the PULSE UP appears in the serial monitor.
Twist knob counter clockwise. Check that PULSE DOWN appears.
NOTE: if this happens in the opposite way, this can be fixed by going to this part of the code and swapping the 15 and the 23. Save and re-upload the code and you should have the correct clockwise = volume up command. It will still show the incorrect command on the serial monitor, but your radio should receive the correct one.
#define REST_VOLUMEUP 15
#define REST_VOLUMEDOWN 23
#define REST_TRACKFF 7
#define REST_MUTE 2
#define REST_TRACKPV 10
#define REST_TRIPLECLICK 0
Press the knob down once. Check that PULSE FF appears.
Press the knob down twice in quick succession. Check that PULSE PV appears.
Hold the knob down for a few seconds. Check that "You are still holding down, don't track forward until you let go" and then PULSE - MUTE appears.
If that all happens then you know the knob is sending the correct signals to the Arduino
Step 4: Use the Multimeter to See What Wire Connects to the Tip of the 3.5mm Stereo Cable
Make sure you have a stereo cable. It should have two black rings on the end, not 1 or 3. I accidentally got a mono cable for the wiring images in step one.
The very tip of the 3.5mm end is what sends the signals to the radio. By changing the resistance in the circuit to a specific level, the digital potentiometer sends a command to the radio.
Make sure the tip of the male end of the stereo cable connects to a wire that leads to the correct pin of the digital potentiometer: RH. The other wire, connected to RW, will be the ground wire of the stereo cable, which is normally the part of the end farthest from the tip (it’s the middle one on some stereo cables though). If you are salvaging a cable, the ground wire will either be one of three wires or sometimes, like in the case of my prototype, it will be a bunch of strands surrounding two wires inside the cable. The strands should be gathered and twisted and connected to the pot. The other of the two wires inside the strands (in my case, the red one) we are not using. So even though it’s a stereo cable, we are only using one of the lines, and ground.
Step 5: Test the Knob
See if your knob works by plugging the stereo cable into the W/R port on the back of your Radio and keeping the arduino plugged into the computer.
When you see text like PULSE-UP in the serial monitor, you should see the graphical interface of the radio pop up at the bottom of the screen and the volume should go up a notch. Test out all the commands.
Step 6: Solder Your Components to a Piece of Perfboard
Now that you know your prototype works, you could just solder all those wires together in a big rat's nest that you shove behind your car panels somewhere. I did this at first and it was fine for a while. But then it got unstable and tweaked out while I was on the road and sent the volume to 100%, I had to pull over and disconnect the USB. I didn't crash but it definitely hurt my eardrums.
So make it into a final product by soldering all the connections you just made onto a perf board, which organizes the connections and makes the things sturdier.
You can solder the components to the top of the board and make all the wiring connections on the bottom by sticking the wires up through the holes soldering them at the top, and cutting away the excess wire. It helps to have a flush cutter to cut away the excess.
For my final design I used a 3.5mm female jack to plug a 3.5mm male to male cable. You can also just solder the wires to the board and then use straight solder or more wires to get them to the digital pot pins.
I used the jumper wire from the rotary encoder and plugged the male ends into screw terminals mounted onto the perf board. Again, you can just use direct solder instead of screw terminals.
Step 7: Test Your Final Product
Test the Soldered Perf board version of your knob using the same process. If something isn't working, check all the connections with the multimeter and make sure they are all correct, that nothing is touching something it shouldn't be.
Step 8: Put Your Circuitry Behind Some Panels and Install Your Knob
If your final board works, it's time to insulate it in a couple layers of electrical tape and tuck it behind your car panels somewhere. You can install the knob wherever you want it by drilling a hole for the encoder stem to poke up through it, and fixing it in place with the nut the encoder comes with.
I put it in my center console and it’s powered by the USB port in that center compartment between the seats. The 3.5mm cable runs up and behind the radio. I made the mistake of putting it too close to my gear shift at first, not thinking about how the shifter would be in a different position when in drive, and it was uncomfortable to use so I relocated it back more.
You could also drill a hole in your radio trim kit and put your knob right beside the face of the radio. You could use a USB extension cord to plug into any USB outlet in your car.
Voila, volume knob heaven!