Something I always wanted to make (or well, ever since my manager came walking into the office with his laptop and used it as a soundboard), is a dedicated device that could function as a mobile soundboard. In this post I’ll take you through the steps that I took to make this device, what parts I used and how you could tie it all together to make a compact, yet rather powerful soundboard.
The parts I used are as follows:
- Arduino Nano
- DFPlayer Mini
- 10K variable resistor
- 3 tactile switches
- 2 x 15 pin female headers
- 2 x 8 pin female headers
- 2 pin screw terminal
- 1 x 1K resistor
- 1 x 2.2K resistor
- 1 x 10K resistor
- 1 x 46K resistor
- 1 x 100K resistor
- 1 x Micro SD card with MP3 files
- 1 x 5W laptop speaker (VECO 35KN04, salvaged from an old laptop)
- Various strands of wire
- 1 x project experiment board (5 cm x 7 cm)
- Mini-USB cable.
Building the mobile soundboard
So, the code for this mobile soundboard isn’t the neatest, nor is it the most efficient. Nevertheless, here it is:
What I learned from this project
While working on this project, I ran into a few things that I think I should share with you so you won’t make the same mistakes I did.
Properly solder the grounds together
I know, I know. Rookie mistake. Please just make sure you do this correctly. I eventually had to rewire most of my project just to get this right.
Use a proper speaker
The speaker I used was salvaged from an old Packard Bell laptop. Initially, it seemed like a good idea due to it’s size and because it also has some nice screw holes that would be beneficial during the mounting process. However, I hit a few snags. First off, the wires for this speaker are terribly thin, which meant properly stripping them was bit of a nightmare. I had to solder two pins and use shrink tubing to keep everything in place, just so I wouldn’t have to worry about the wires breaking.
Additionally, the sound quality isn’t too great. If you turn up the volume too high, the sound coming from the mobile soundboard will be distorted and horrible. Try and use a bit bigger speaker, which should hopefully also have better sound quality.
I decided that placing both the Arduino and the DFPlayer on the same side of the board would be a good idea. Alas, I was mistaken. Although they still fit, it’s really snug, which doesn’t sit well with me. So, the next time I’d probably move one of the two to a different spot on the board or go with a slightly larger size.
The Arduino Nano has an additional 2 x 3 pin header that can be soldered to the board. Because this was my first time using this board, I thought it’d be a good idea to add these as well. In hindsight, it would’ve been a better idea if I had left those off, as making / finding a case would have been easier as the height would have been 1 cm less.
In my current implementation of the code, I decided to just check for certain analog input signals on every iteration within the loop that’s run on the Arduino. My friend Niek pointed out that interrupts would be way more efficient.
For those not familiar with interrupts, basically it’s a signal you send to the processor on the Arduino which tells it to stop doing whatever it’s busy with (so, interrupt it) and execute a certain piece of code instead. After that piece of code is done, the processor will resume with whatever it was doing before we interrupted it.
This technique is way more energy efficient and will hopefully help reduce the amount of battery power needed to run the mobile soundboard.
After I finished this build, I talked with a buddy of mine who studied electronics and he suggested I switch out the current interface that uses the tactile buttons, for a rotary encoder. This way, I can limit the amount of controls necessary to a single input device, thus decreasing the size of the device.
I also have another idea that I want to execute at some point, which will be more of a traditional soundboard with a 4 x 4 arcade button interface. This will most likely be the third version.
Another thing I didn’t initially think about, is an interface to see what file is currently selected. On the next version, I plan on adding an LCD display to output what sound is currently playing and possibly add some more stats to it, if at all possible. One of the downsides of the DFPlayer is that it’s unable to read out MP3 metadata. This means that outputting what file is currently selected will entirely be dependent on a hard-coded list of names, that will have to be updated regularly if new files are added to the SD-card.
I didn’t really build a case for this project due to a lack of materials. Also, due to my choice of buttons, it was terribly difficult to make something that was both sturdy and user-friendly.
I’d like to give credits where credit’s due, so here’s a shout-out to the people that helped me with this project:
- Ralph S. Bacon for his video on controlling the DFPlayer Mini with an Arduino.
- Riaan Cornelius for his Instructables article on how to use a single analog input to handle multiple buttons.
- My buddy Niek, who helped me look over the schematic and tidy it up. He also suggested I use interrupts for my next project.
- My other good friend, Kristina Durivage for proof-reading this post.