Roberts RM33 Raspberry Pi Internet Radio (Yet Another…)

17K16822

Intro: Roberts RM33 Raspberry Pi Internet Radio (Yet Another…)

Yes, it is another Raspberry Pi internet radio build and not my first one either. I am not sure why this build is still such a popular one, but I do still enjoy it and cannot say this one will be my last either. I really love the look of the Roberts radios of the early 80’s and started thinking of converting one to an internet radio.

My goal was to maintain the same look and interface of the radio but replace the insides and give it a digital display. I really loved the mechanical feel and sound of the switches and the RM33 gave me lots of extra buttons to program.

I kept the concept of the radio like the original RM33 using the 3 center selection buttons for Radio, Spotify and Soundcloud. This allowed me to use the manual and 5 memory buttons on the side to simulate the same as the original for the radio option.

I managed to source a RM33 with a near perfect wooden case and all the buttons retaining their silver caps. The front panel was however loose, scratched and bent in places which led me to do a complete redesign of the RM33 paint.

The brains behind the radio is a Raspberry Pi together with a USB Sound Card and Adafruit Stereo Amplifier for the sound. I kept the original speaker and with some other parts managed to design a compact circuit for all the required components.

STEP 1: Dismantling

I must admit I wanted to add a picture of the RM33 front before I took it apart, but I guess because the front looked terrible, I never bothered to take a photo of it. The front plate was so loose and bent it took no effort to remove it.

The RM33 has a great build, the main components are built on metal frames and screwed into place in the wooden case. It was a simple case of removing the screws and sliding the insides out. I got rid of the DC power adapter, so I was left with the main chassis containing the buttons and potentiometers.

Once everything was removed, I started thinking about where to place the various components. I went through two iterations of this whereby I had the Raspberry Pi mounted on its own to allow for easy upgrade. However to reduce the wiring I ended up placing everything in the main chassis.

STEP 2: Modifications

The first step was to make sure I could get the buttons working as this is what gave the radio a unique character with a real mechanical sound when pressed. Each switch had multiple pins so I started with a multimeter to find the pins so I could use for the Raspberry Pi to detect when it was closed.

Once all the switches were working, I added two rotary encoders to my test rig, one for volume and one for selecting channels. I ended up replacing the volume rotary encoder with a potentiometer as I was getting annoyed with turning an encoder from 0% to 100% doing multiple turns. The potentiometer just made it a quick single turn.

STEP 3: Modifications Part 2

Using the original chassis to mount the potentiometer and rotary encoder presented a new challenge as the shafts of both were too short to stick out far enough for the knobs to fit. I opted for mounting them in the wooden frame allowing the shafts enough clearance.

But this meant some slots needed to be cut in the frame to allow the frame to fit around the mounted bases. The rigidity of the chassis was not impacted it did not cause an issue. The LCD character display was originally also placed inside the frame but this caused it to be too far back from the wooden case. Luckily moving it to the front of the frame was a suitable alternative. I also replaced the original clear screen in the wooden frame with the smoked one.

STEP 4: Circuit Design

After initially having the basics laid out on a breadboard, I copied the layout on a simple board and had wires everywhere and a ribbon cable connecting it to the Pi. This gave me voltage issues and was not great to look at. I started again from scratch using an Adafruit Perma-Proto HAT for the Pi.

The design is basic using short wires to place all the input/outputs I needed from the various GPIO pins. The 9 buttons have the standard 1k/10k ohm resistors. I used the MCP3008 analog to digital converter for the potentiometer which is a perfect fit for the gap on the header board.

I also used an extended header for the HAT which allows me to also put the Petrockblock “PowerBlock” board on the HAT to allow for safe power up / down with a switch for Raspberry Pi. This also does a clean shutdown of the Pi.

For the Adafruit Stereo 3.7W Class D Audio Amplifier I added a small relay switch board. This allows me to control when the amp is turned on or off. On initial boot of the Pi I struggled with ground loop isolation causing static noise over the speaker. Now I wait until the Pi has booted before I power up the amp and on shutdown, I can power off the amp.

STEP 5: Software

The software is written in Python for simplicity as a lot of libraries are easily available for the LCD screen, rotary encoder and analog to digital converter. My script makes use of the MPD daemon and Mopidy for Spotify.

So once Mopidy/MPD was working perfectly it was easy to plug the controls into it. I wrote a simple menu screen to allow you to choose between stations/songs. Once you have scrolled with the rotary encoder to your choice you simply press the encoder button to make your selection.

The buttons on the front works like the original radio. The three in the middle you choose whether you want to listen to the Radio, Spotify or Soundcloud. For the radio the 6 buttons on the side allows for manual station selection with the menu or choose one of 5 preselected radio stations or favourites.

The volume knob also controls the power as it has the switch built into it which is connected to the Petrockblock “PowerBlock” which initially powers up the radio but will also perform a clean shutdown of the Pi and cut the power to the Pi. This is handled by a standalone script running in the background.

On the back of the radio there is a 9th button. This is designed on the original for you to program your favourites. But I made this a reset button when my code makes a wrong turn and is quick to reboot without a hard power cycle.

STEP 6: Mounting Everything

Once I had everything connected and tested the next was to mount the Pi and both hats inside the radio. Luckily this all managed to fit inside the chassis, so I decided to model a 3D frame to mount the Pi onto and then mount the frame into the chassis.

This not only makes it look neat but also keeps everything secure without making connects with the metal frame. I can still with relative ease remove everything should I wish to upgrade the Pi or make any changes to the design.

The Pi mounted onto plastic standoffs which I epoxied into the 3D printed frame. The circle gap in the middle of the mount is for some ventilation for the Pi and the square gap is to allow the center buttons slide through for a better fit. The other two gap is to feed the cables through.

I also added a Micro SD card ribbon cable to allow me to remove the Micro SD card without having to remove the entire chassis from the case. This helps if I want to take backups or should it become corrupt.

STEP 7: Paint

This is one of the few photos of the original front panel. Sadly (not sad) it is covered in paint remover which worked well, and I was simply able to wipe off the old paint with a paper towel. Was a bit of a weird moment as the Roberts radio was… Roberts no more?

After a light sanding, I added primer and the base coat of gold. Originally, I was going to give it a funky colour paint scheme but felt I owed it to the original to give it something more traditional. I must admit, painting is my Achilles heel and I never get it 100%.

I added a vinyl mask design my wife picked which I think gives the radio character. I added some pin stripes, again as a tribute to the original and label masks for the manual and memory buttons.

I could not get masks small enough for the lettering for volume and menu selectors, so I left it out rather than something that looked wrong. For the function button I could also not decide whether to put “Radio” and “Spotify” labels but was left with the same issue as above.

STEP 8: Finished Product… or Is It?

I am really happy with the finished product even with the amateur paint job. From the exterior and interface, I do not think I will make any changes as I want it to still represent what I like from the Roberts radio.

For the software I still want to make a few enhancements and perhaps add some more features like different playlists for Spotify. I want to also look at making a custom kernel to try speed up the boot time. I tried using the Raspbian Lite version but had some issues.

I was thinking of making it battery powered, but I always tend to not do it because I rarely use it not near a power supply and worry the battery will die with lack of use. It is easy enough to use an external battery pack if needed.

Thanks for reading! This is my first instructable...

I'm on Twitter and Instagram if you want to follow my next projects.

19 Comments

Ah, forgot, no diagram too!!!!!!!
Hi,
It's one of the greatest instructables I been waiting for to restore a very old radio from 30ts
. When and where may we have access to the code. Please let us to know when you are ready to share the code with us even maybe as you said is messy, but better rather noting


This is perhaps my favorite Instructable ever. It is such a great complement of nostalgia with modern electronics. You maintained the flavor of the Robert's, and yet made a fully functional radio with a retro modern look. I think that the face looks great!
Adding the SD card extender was great thinking...there is always a few extra feature ideas lurking in our mind that need to be explored...but not if you have to remove a fully working assembly to test code changes.
Incorporating the presets and the control buttons maintains the appeal of the the original radio, and allows easy recall of your favorite stations.
Bravo on an awesome product!
Bob D
I think that has been the nicest response to anything I have posted on the interwebs. Thank you kind sir!
Hi Erick,
I hope it inspires you to share more of your creations...I am certain there is more we can all learn from you.
You have a great all round style; your board layout and lead dressing are excellent. Many can make things, you have engineered a well thought out product. That speaks volumes about your workmanship and attention to detail.
Bob D

There's no link to the software used for this, nor any configuration instructions. Or did I overlook something?
I did not consider this as my idea was to share the hardware build as the concept of a internet radio with software has been done so many times. I will consider adding it but my code is a bit messy :-)
Hah, don't worry about that. We don't expect perfect code in an instructable. But it kinda feels incomplete if it doesn't contain the full instructions necessary to recreate the project. And in a project such as this, I feel that includes how to set up the system and the source code for custom work required to make it functional.

Cool project, btw. Been thinking about doing something similar with an old gutted CD player that died when lightning struck a couple of years ago. I'm currently looking at projects such as yours for inspiration.
I also am interested in seeing the code. Thank you
Really nice job! I like how you decorated the front :)
Good Looking and good functions! Nice!
Any chance of you sharing your script?
I did not consider this as my idea was to share the hardware build as the concept of a internet radio with software has been done so many times. I will consider adding it but my code is a bit messy :-)
This looks amazing. I have the radio, I have a redundant raspberry pi. Dare I try?
Please do jackohearts ... I would love to see more retro rebuilds! I have never got past the Ras Pi learning curve, seeing such interesting projects makes me want to rethink my current study ( ESP series, Fusion 360 and 3D printing), and get back to the Pi.
Bob D
If you do another one how about an LCD display that mimics the old Roberts green display?
It would need to be a LCD that is not a HAT.A green/black OLED would be cool.