Retrofit a Radio with a Pi Pico | Part 1
intro#
It’s been something of a long-running project idea of mine to take an antique radio, its uniqueness and craftsmanship, and bring some new abilities. The goal isn’t to swap parts but develop a module that can be integrated into the original design or act as a replacement if needed. This means keeping the functionality of the original buttons, knobs, and widgets while adding some new features. The timeliness of sharing this idea with my Father-in-law and the family radio in the cabin stopped working and took this idea off the whiteboard and into the physical plane.
design considerations#
After consideration of the features desired, I decided at a minimum the radio should have bluetooth sink and FM Radio. That being said, we are talking about an antique which has been supporting FM and AM for the last few decades. With the intent to improve the capability I’d like to explore AM and WX as I suss out the project design.
For others who are interested in the project or for future retrofit radios, I’m considering a more modular concept where the new parts don’t handle the functionality but rather can control it. The thought process here is I’m unsure of the viability of adapting the original tuner with the new design. Each radio will be different, each radio will probably be broken for different reasons. The new controller should allow the original system’s function or a replacement to integrate.
Starting with a bluetooth sink and FM Radio would give me the ability to adapt the controller with mode selection, integrate volume control, among other features.
controller#
I considered a few different options for the base controller to include the following
- Raspberry Pi
- Adafruit Feather ESP32
- Raspberry Pi Pico
Raspberry Pi#
Everyone knows and loves the Raspberry Pi. For this project though it seemed heavyweight for the minimalist feature set even with a light OS. I was ultimately looking for something I could tie closer to hardware and work on some embedded skills.
Adafruit Feather (ESP32)#
So taking a look at some embedded options I started with the ESP32 which is a well-loved and hard to beat microcontroller. Specifically for the board I reviewed the Feather ESP32
Which honestly seems like a great board and with some great features. There were availability issues at the time and I moved on to the Pico.
Raspberry Pi Pico#
Ultimately I found the Pi Pico W to be the best fit for my design. With the built-in wireless modules and the well documented SDK it gave me a good place to start and adapt as the platform developed. Also, you can’t shy away from the value you get with these boards at 7$. The last thing that really set apart the Pico is the Programmable IO (PIO). PIO is a killer feature which allows for adapting the board to support different bus protocols. I knew I’d need I2S and UART out the door, but everything else is up in the air. So +1 for modularity. What is PIO
Pico debugger#
I didn’t pick it up right away, but it became very apparent of the usefulness on a future article on debugging bluetooth. You can use another Pi or Pico instead, but if you’re like me, those are already tied up doing other tasks. I highly recommend just grabbing this for the minimal cost.
the build#
I2S#
To start off the build I went for a minimum viable feature set which offers a bluetooth sink and audio out.
Before we talk bluetooth, let’s talk audio. The Pico as an embedded microcontroller doesn’t directly support direct audio out, but it does support I2S through the aforementioned PIO. Moreover, a Pico example for using the I2S bus in the pico-playground: sine_wave
If the board supports I2S we still need something to receive I2S data and output in the human auditory band. Since this is the early days in design, I’m not really worried about sound quality. After some skimming I came across this guy sparkfun-i2s-audio-breakout. Operating as a DAC with a built-in amplifier it’s the perfect attachment to get this system functional and worry about good audio quality later.
Wiring it in gives us a simple build that looks a little something like this
Architecture
what’s next#
Part 1 here is more of the intro design and decisions. I have the bluetooth sink functional and Part 2 will focus on the details of such. Generally the progression of the project will follow this loose roadmap.
- bluetooth sink support
- mode switching (bt, off)
- FM Tuner
- ADC Volume Control
- FM tuner dial integration
- …
I’m looking forward to bringing an interesting and functional piece of history back in service again. Hope you like the concept, feel free to comment with any ideas or considerations.
Till next time.
-daryl