My daughter’s third birthday was coming up and she’s been really into music over the past few months. Over the past year, I’ve been hired as her personal deejay when we enter the car. We’re constantly singing “A Whole New World” or “I’ll Make a Man Out of You” together. It became clear that making something that can play her favorite songs was something she would love. Two weeks later this idea was brought to life.

Music Box with Virtual CDs

This has grown to be one of the most complex projects I’ve ever built. So here’s my journey.


The Requirements

So I was on a mission of creating a music player. Originally, I was planning to make a speaker box with a few buttons — each programmed to play a specific song. After playing through some of the designs, this felt limited. I could only load the number of songs that I had assigned buttons for. So the search went on to figure out how I can design around making her something that can expand with her tastes. I also wanted to incorporate the novelty of loading music. The RFID tag was the perfect solution.

Building a Prototype

First Computer Rendering

I made my first mockup to see what it could look like. I’ve been learning CAD (computer-aided design) over the past few months and wanted to use this to challenge my new learned skill. I eventually came up with this first rendering:

The Components and Functional Prototype

The next challenge was trying to figure out what components I needed. I had experience working with Arduinos in the past with many IoT projects and it was the most logical place for me to start given my experience. I found an all-in-one arduino+sound player, but it could only hold 16mb of storage (only enough for ~3–4 songs). I then looked at how I could build the components together and found an sd-card/mp3 player component . Last, I needed an RFID reader. I found a common RFID reader used on many Arduino projects — the RC522. I quickly ordered all the parts, along with a speaker, on Amazon. In a matter of days, I had all the pieces and started to wire everything together. A few days later I figured out the basics of the program and created my first working prototype — not yet incorporating the RFID reader into the equation.

Working prototype with pin triggers

Here’s a demo of it.

A few days later I figured out how to program the RFID Reader with the tags and the project was coming to life.

Usability Improvements

I decided to add a few buttons for improved usability. I added volume buttons and a play/pause button (programming this took a bit of trial and error due to keeping the state of the playing mode).

Lastly, I anticipate bringing this into the car where she may not want to fumble with the tags — so I added a random song button. She can cycle through different songs easily by just tapping a button. With a power bank battery with a step-up converter/charger and we were up and running.

Final Prototype

I made my last prototype using a cardboard box I had laying around. At this point, I was super proud of everything coming together.

The Finishings

Finally, it was polish everything for the final piece.

I went back to Fusion360 and redesigned the enclosure. I wanted to add a compartment to store “cds” so she didn’t need to carry around another container for her discs. I ended up adding a small hidden compartment on the side of the box with a magnetic catch — during production, this created lots of complexities to get the sizing to work exactly right but was worth it.

Instead of cards or keychain tags, I used RFID stickers. The stickers were mounted on the bottom of 1.75in wooden coins. We printed album art onto Avery label stickers and stuck them to the top of the coins. A bit of sanding on the edges made these discs look like some nice pretend cds.

The panels were cut on the table saw and then brought over to the CNC machine to cut out all the features. Some of the surfaces were brought over to the router table to round the edges.

The speaker grill was tricky. I couldn’t find any speaker grills online that would finish this piece the way I wanted it. So I decided to make my own. I drew it up on Fushion 360 and once I got things looking right in 3D, I redrew it in Sketch and imported into Carbide Create to prepare the cut. The pattern was cut into a .002in sheet of aluminum and sanded down to deburr the edges. Finished with 3 coats of spray paint and it looked awesome!

Finally, it’s complete!

After glue-up and transferring all the components from my prototype, I had the finish product! I took my time to glue it, over two sessions, to make sure that the enclosure fit properly since all the pieces were precision cut. Everything fit like a glove. The arcade buttons fit snug, all sides were squared, and the hidden compartment snapped perfectly into place.

Here’s the final outcome!

Demos

A full demo of how the discs load, the functions of each button, and a brief tour of the enclosure.

Loading Disks
Buttons Demo
Magnetic Compartment

Thanks for following along. I’ll post an update when she gets the gift in hand.

Rendering vs Final

This project pushed me beyond my comfort level on all the skills I’ve learned building things over the past few decades. Though I’ve done some Arduino projects in the past, it was really fun and challenging working with the sd-card component and RFID reader. I really enjoyed rendering this in Fusion360. And lastly, taking a 3d drawing to the CNC machine to machine each part took so much precision. I had huge doubts that it would come out nice at the end and the outcome exceed my own expectations. Now, what’s next?


She had no idea dad was making her something so close to her

Update: May 14th, 2021: I’ve decided to take this project to the next level and produce a small run of these. I’m looking for hardware folks for advice. If you or anyone you know could help me make this a reality for not just my daughter but anyone that wants to give kids the ability to enjoy their own music without screens, please reach out to me. I would greatly appreciate any help and motivation on this project.

Please reach me on twitter.com/thegilbertchan