I finally came around finishing this project and I also made a video in which I explain the build and also show you how to assemble the project. This article covers the case design and some changes in the source code in more detail compared to the video.
I only wanted to cover the case design in more detail and address some changes in this article. For more details about the project and build in general, refer to the following video and this maker pro article that I wrote!
The case design
The case consists of three parts: A base, that contains the Arduino, the centerpiece, which holds the rotary encoder and houses all the cables, and a top piece, that rotates to change the volume and can be pushed down to pause and resume music. The three pieces are held together by M3 screws and nuts (1/8 inch screw diameter).
Anyway, let’s start with the bottom piece:
This part has a large rectangular cutout which holds the Arduino. Due to it not having any mounting holes, the Arduino won’t be mounted in the case. It simply sits there. You could glue it in place though if you want to, but I don’t think it’s necessary because the entire space inside of the case is taken by the electronics, so nothing has any space to move around.
Anyway, the four vertical holes are the bores for the screws which will hold the case pieces together. The horizontal one at the end of the rectangular cutout will hold the USB-cable in place that connects to the PC. The big round cutout in the center of the piece is there to save material when printing the part with a 3D printer.
The middle part of the case does also have the large rectangular cutout for the electronics. It also has a small hole in the center. This is the mounting point for the rotary encoder. The other four quadratic cutouts are there to reduce the material needed to print the part. The other four holes are for joining the bottom and middle piece together and the round horizontal cutout is there to allow the USB cable to connect to the Arduino, as described before.
The top side of the middle part of the case has cutouts to allow all the nuts to sit flush with the surface so they won’t be visible when the product is fully assembled:
The case is complete with a top piece that gets attached to the rotary encoder:
As you can see the inside is supported by the cubes which I added every 45 degrees. This will make the top part more stable while also saving material when manufacturing it. Because this is the piece, that gets touched most of the time, I recommend using a nicer material than 3D printer plastics, for example, wood. Simply use a 60mm hole saw to cut out a disk. Make sure not to completely drill through the disk.
After using the device for several hours a day for two weeks I noticed that the Arduino got quite warm. To prevent damage, I added a few venting cutouts to the case. These are not visible from the outside, so the overall design of the volume knob doesn’t change:
Download the case design
You can download the case design for 3D-printing here!
Changes in the source code
I used the knob for a week or so before making the video and I noticed that changing the volume was pretty slow when only changing it by one with each click of the encoder. So I altered the code to change the volume by five with each click of the encoder. This way you’ll lose accuracy but gain speed when turning the volume up or down, which I found to be more useful in everyday use.
I absolutely love using this thing and since I finished building it, it became so natural and intuitive to use that I actually miss it, when it’s not around. It just feels right to push the top down to pause and resume music and turning it to change the volume feels natural and just right. Simple, but very nice to use!
Table of contents
Part 1 – The theory, electronics and source code
Part 2 – The case and finished product (You are here)
One thought on “USB volume knob for Windows, Mac OS and Linux – Part 2”