Retro Smart Speaker Build

This site contains affiliate links (including Amazon and eBay). If you buy through these links, I may earn a commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases.

I recently built a 3D printed smart speaker with a retro radio-inspired design. It supports streaming audio, Bluetooth playback, and local audio playback from a microSD card.

The original idea for this project came from a previous build where I put together a police radio decoding pipeline that streams audio across my local network. I wanted a simple standalone device that could sit on a desk or shelf and play that stream without needing a phone, computer, or an open browser window.

Once I started designing it, I didn’t want to limit it to just being a glorified police scanner. So I added a few other playback modes and turned it into a more general-purpose smart speaker.

The Speaker Build

The main body of the case is printed in a peanut brown PETG(Amazon) on my Bambu Lab P1S. I tried a few different colors and finishes before landing on this one.

I also ended up using the fuzzy skin slicer setting on the main case. The smooth version looked pretty good, but the layer lines were more visible than I wanted. Fuzzy skin gives the case a subtle texture that feels more intentional and does a nice job hiding the 3D printed look.

The front grill is printed in black PLA with gold accents. This is probably my favorite part of the whole build. The gold details and the little “mostly” badge at the bottom really give it the old-school radio vibe I was going for.

Getting the grill to print nicely took a little trial and error to get dialed in. I ended up using ironing on the top surface, which made a big difference around the small holes and the badge details. Without ironing, I was getting a bunch of tiny gap-like artifacts that made the part look less polished.

Magnetic Grill

I wanted the front of the speaker to have a clean look with no visible fasteners holding the grill on.

The speaker mounts to a black inner frame that screws into the main case. I glued small magnets(Amazon) into the corners of the grill, and those magnets stick to the screws in the speaker frame. This worked out really well. The grill snaps on cleanly, holds securely, and can still be removed if I need to get back inside the speaker.

The speaker itself is a Dayton Audio driver(Amazon), which is a nice step up from the cheap little project speakers I’ve used in the past. The inner frame is recessed slightly to leave clearance between the speaker cone and the grill.

The Knob

The side knob was one of those parts that took way longer than expected, but I’m really happy with how it came out.

It press-fits onto a potentiometer with an integrated power switch(Amazon). Turning the knob first clicks the speaker on, then continuing to turn it adjusts the volume.

I added knurling around the edge so it feels good in your hand, and I used gold accents to match the grill. I printed a bunch of versions before I was happy with the surface finish on the gold center disc. I think small details like this make a big difference once a project is completed. My print settings are available on the MakerWorld model that I posted.

Touchscreen Interface

The modern part of the design is the 2.8 inch capacitive touchscreen on top of the speaker.

The interface is organized into tabs for each playback mode and a settings screen.

The streaming mode can play internet radio stations or other network audio streams. To make it easier to add stream URLs, I built a simple web-based manager interface. Entering long URLs on a tiny touchscreen would be pretty painful, so the speaker can temporarily spin up a web server and let you manage the stream list from a browser on another device.

The Bluetooth mode works like a standard Bluetooth speaker. The device advertises itself as “MostlyBuilds Speaker,” and then you can connect to it from a phone or computer.

The SD card mode is a basic local audio player. It works well, but one thing I don’t love is that the SD card is inside the case. I added a simple WiFi file transfer interface as a workaround, but if I make a V2, I may expose the SD card externally, which may be more practical than chasing a design that supports Bluetooth Classic and native USB.

The settings tab handles things like WiFi setup and changing the Bluetooth device name.

I also programmed the screen to dim after a period of inactivity and then turn off completely. Tapping the screen or turning the volume knob wakes it back up.

Custom Electronics

For the electronics, I designed a custom ESP32-based PCB that plugs into a commonly available 2.8 inch capacitive touchscreen module(Amazon).

You could totally build something similar using an off the shelf ESP32 dev board, and a breakout board for an audio chip like the one I used (MAX98357). Here are the two dev boards that I started with before I went the custom PCB route:

Once I finalized my custom PCB design, I sent it out to be manufactured. I also ordered a stainless steel stencil to allow me to precisely apply paste to the board for soldering the surface-mount components in my homemade reflow oven.

I used a foot-activated vacuum pickup tool to place the components, along with a color-coded diagram of the PCB and parts list. It took about an hour to get everything placed before reflowing the board.

After the surface-mount parts were soldered, I hand-soldered the remaining through-hole components.

All of the external wires connect to the PCB using screw terminals. I also crimped ferrules onto the wire ends, which made the wiring cleaner and easier to work with inside the case.

Assembly

The case uses M3 heat-set inserts in several places, including the screen mounts, speaker frame mounts, and bottom light pod.

The touchscreen and PCB attach to small 3D printed adapter bars that act like standoffs. The screen screws to one side, and the PCB plugs into the screen headers and screws into the other side. That whole assembly then mounts inside the main case.

Melting in the inserts on the inside of the case near the screen opening was a bit tricky because I couldn’t get a perfect vertical angle with the soldering iron, so I had to carefully heat the inserts with the edge of the tip. Not ideal, but it worked and I managed to avoid melting the case by accident.

The back of the speaker has a panel-mount USB-C passthrough connector(Amazon) for power and programming. One annoying thing I discovered is that the connector seems to require the outside USB-C cable to be plugged in with a specific orientation. It technically works, but it loses one of the main benefits of USB-C. Pretty lame, but apparently this is common with some of these passthrough connectors.

LED Light Pod

Originally, I added a single red status LED underneath the case to create a subtle glow. That was a major miscalculation. You could barely see any light coming from under the speaker.

So I went back and redesigned the bottom of the case to accept a separate light pod. The pod holds four rectangular LEDs near the edges of the base, which creates a much better halo effect.

This worked out well, but it was a little cumbersome to assemble. If I were doing it again, I’d probably make a small custom PCB for the LEDs instead of hand-wiring everything.

3D Models

The 3D models for the case are available here:

https://makerworld.com/en/models/2893797-mostlybuilds-retro-smart-speaker

The badge on the speaker grill can be customized, so you can change the text instead of using the “mostly” badge that I printed for mine.

Parts

Here are the main parts used in this build:

Case Materials

Electronics

Hardware & Tools

Final Thoughts

I’m really happy with how this build came out.

The textured brown case, magnetic grill, gold accents, touchscreen, and chunky side knob all work together better than I expected. It has the retro look I wanted, but it’s also a genuinely useful little speaker.

There are definitely a few things I’d improve in a future version. I’d rethink the SD card access, avoid the USB-C passthrough connector I used, and probably make a dedicated LED PCB for the bottom light pod.

Even with those shortcomings, this was a super fun project. It combines 3D printing, custom electronics, audio, UI design, and just enough over-engineering to keep things interesting 😆.

Follow me on YouTube @MostlyBuilds if you’d like to see more projects like this.