Introduction: Giant USB Volume Knob
Ever wished for a giant volume knob? I have! So I thought I'd have a go at making one and share it in my first Instructables project.
I had 2 goals:
- Adjust volume (Up/Down/Mute)
- Switch playback devices
The Solution: A giant volume knob!
To make things easy I went with using an Arduino ATmega32u4 board. Which can be recognised as a USB HID keyboard (using the NicoHood HID Library).
SoundSwitch is a great lightweight software for playback device switching. It provides a simple UI for set up and has the perfect functionality - shortcut macro keys to switch device, which can easily be emulated by the Arduino.
Step 1: What You Will Need
Software
- Arduino IDE
- Teensy Encoder and NicoHood HID libraries - these should be downloaded through the IDE
- SoundSwitch Application
- Arduino Sketch
Materials - Electronics
- Arduino ATmega32u4 board
- Rotary encoder 5 pin
- Momentary switch
- 3 x 2k0 Ohm resistors
- Toggle switch or Jumper
- Micro USB cable
Materials - Case
- Giant volume knob
- Aluminium U-Channel (15mm square)
- Aluminium sheet (2mm thick)
- Screws & Rivets
Step 2: Getting the Electronics Ready
Testing the circuit
As always I would suggest testing the circuit on a breadboard before moving on to soldering. The last thing you'd want to have to do is desolder everything!
Pin layout reference:
- Encoder Pin A -> Pin 2
- Encoder Pin B -> Pin 3
- Switch -> Pin 5
- SoundSwitch Button -> Pin 4
- HID Switch/Jumper -> Pin 6
*If you find your encoder is reversed, just swap pins A&B on the board or the pinout in line 22 of of the sketch :
Encoder knobVol(2, 3); // VOLUME KNOB
Making the circuit
Depending on the encoder and enclosure you are building, it might be a good idea to have a daughter board for the encoder. The encoder in this build is a very common 12-step encoder. It does not have a mounting thread around the shaft. So I built a little daughter board with a pull down resistor for the switch and some standoffs for mounting.
The Arduino board I used is a cheap version of the Arduino Pro Micro 3.3V/8MHz, I managed to get a bunch of them from aliexpress.com for <$10. Instead of a switch, I opted to use a bent wire jumper as this pin won't need to be toggled very often.
Step 3: Setting Up Software
Programming the Arduino
Before uploading the sketch, there are some dependencies you'll have to take care of.
- HID-Project by NicoHood
- Encoder by Paul Stoffregen
These libraries can be installed directly through the Arduino IDE: Sketch > Include Library > Manage Libraries. Once that is set it should compile and upload without a hitch. If you need to re-upload a sketch, setting the main HID switch to off will make it easier for the Arduino to be recognized.
Installing/Setup of SoundSwitch
Setup is very simple, download and install the latest release of SoundSwitch.
Choose your playback devices and other settings by right clicking on the SoundSwitch icon and going into settings. Make sure to check the "Run on Startup" checkbox, then you're ready to go!
Attachments
Step 4: Make the Case
*This enclosure was made to match the aesthetic of my PC.
I decided to build a very basic enclosure using bits of aluminium I had lying around.
It is made up of 15mm Square U-Channel pieces cut into rabbet joints then sandwiched between two sheets of 2mm aluminium.
A great way to cut sheet materials is to use a paper template, just print out a 1:1 of your design and stick it to your sheet. This provides a nice guide for your lines and drill holes to help keep things accurate. I've attached the template I used, it was made using cadstd.
I do not recommend making the enclosure as short as I did. The tolerances were very tight. Also it could be wise to remove some of the unnecessary overhang from the U-Channel to give yourself more room.
JB Weld epoxy and rivets were used to fasten the bottom plate to the U-Channel. The same epoxy was used to fill in gaps at the joints. The top plate is held down with screws that have been tapped in to the base, this way it can be taken apart as needed.
Painting
I was aiming for a durable matte finish.
- 2 coats epoxy primer
- 2 coats enamel
- 1 coat clear coat
When spray painting it is best to do light passes and let paint build up slowly. A light sanding with high grit sandpaper after the first enamel coat could yield a cleaner result.
Feet
To stop your enclosure from sliding you will need to add some form of grip to the bottom. I got very lucky and found these black rubber screw covers that I am using as feet. They fit perfectly over the rivets on the underside of my enclosure. Grip tape, thin foam/rubber were some of the other possibilities.
Attachments
Step 5: Put It All Together!
Mush it all in there!
Having a semi modular design really helps at this point. Makes taking apart and putting together a lot easier. Be sure to insulate anything that could short! Hot glue and tape are your friends here.
Thoughts / Suggestions
- Having a heavy base is great! Especially if you have buttons mounted on the side like I have done.
- Using an Arduino is a bit overkill for this build. Another possible way to go would be to use a Micro USB Digispark, or other micro controller that can run the HID profile. This would help to miniaturize the enclosure.
- The key combination currently set for SoundSwitch is Crtl+Alt+f11 (default). This can be changed in code line 80-84. Adding a button for switching default recording device can be achieved through the same structure used for play back device.
- There is a lot of extra IO. This leaves space for additions like LEDs (fade with PWM?) or other buttons and controls.
- If you are adding buttons I would recommend using a debounce library instead of boolean states like I have.
Hope this instructable was helpful! Please do let me know if you make your own Giant Volume Knob or have any questions/suggestions :)
51 Comments
2 years ago
The basic debounce made large and fast volume changes problematic. I used Butronix's Rotary library and its perfect now! Thanks for the tutorial and great idea for audio device switching!
Question 3 years ago
Hello.
I am want to make such volume knob, but I would like it to be less, if possible.
Did somebody did manage to make it; or though about it.
I am looking for a bluetooth module that can handle HID, to transmit keyboard data, and a battery for it to be wireless.
Can somebody recommand some advices module please:
Thx
Reply 3 years ago
Hi there,
You could try a Bluetooth HID module like BluSMIRF HID. I have used it briefly and seems to be easy to work with.
Good luck!
Question 5 years ago on Step 1
total noob here. is there a way to make the same volume controller with IR to control a sonos? Any pointers would be greatly appreciated.
6 years ago
Cool Thing!
Can you say how can i read out the actual volume?
And can i control the Mic Mute?
It woult be helpfully...
6 years ago
Looks cooool.I had not built it yet. But will begin buit it soon. First let me collect the electronic & other hardware. I think www.aliexpress.com is excellent e-commerce website to buy all stuff required to built a electronic project with low cost.I had just searched for "volume knob" & there was great cool small and large knobs. Aliexpress provide international shipping. Only thing is that you have to wait a bit long for delivery. Just search for "Encoder" & you will find many cheap one>
6 years ago
Hello! Congrats for this amazing project!
I'm trying to make my version, but somehow I'm in trouble with ino code:
#error "Encoder requires interrupt pins, but this board does not have any :("
That's my first time using HoodLoader2, so ANY tips would help a LOT!
Thanks in advance!
Reply 6 years ago
I figured out that my mistake was using Arduino Uno.
I will try a solution proposed in this link: http://forum.arduino.cc/index.php?topic=274386.0
Reply 6 years ago
Does changing the firmware remove the interrupt pin access? Hope your project works out! Easiest solution would be to switch boards to something that is compatibable without modification
Reply 6 years ago
I did it and was infinitely easier. Thank you!
6 years ago
Where do I get that knob!??!?
Reply 6 years ago
I found mine on eBay, large aluminium volume knob. Not sure if I can link to products here
Reply 6 years ago
Thanks! I just bought some!
Reply 6 years ago
http://www.ebay.com/itm/1PC-30-17mm-Black-Anodized-Machined-Solid-Aluminum-DVD-Potentiometer-Volume-Knob-/321441068287?hash=item4ad76174ff:g:lZQAAOSwZ8ZW6VsR
Reply 6 years ago
If you can find the item again, just copy/paste the URL, like above.. some of the other instructables have links to their items too, as well as others pointing to optional sources the same way. I imagine you can also add the IR library, and add additional control with a IR remote, as well as the local volume control. Simply add the key-code to the same controls as the encoder (up/down) and mute button. Nice job!!!
Reply 6 years ago
Updated the first step with links to some of the items :)
Reply 6 years ago
You can copy and paste url's no problem.
6 years ago
I love it! Definitely on my to do list now. I really miss the manual knob.
A while back I made this as a homage to the missing volume knob:
https://www.instructables.com/id/Turn-Up-the-Bracelet/
Reply 6 years ago
Great job looks awesome!
6 years ago
how do you download soundswitch for mac?