Intro: Retro Year Pi Radio
The idea is very simple: Take an old radio and modify it to play music from a Raspberry Pi. The goal was to have specific playlists which can be selected by the frequency wheel. The songs are grouped in chronological order by years from 1950 to 2010 and are stored on the intern SD Card. There are several buttons to play, pause and get the next song. An important aspect of the project was to reuse the old buttons. Using them gives the user an old school feeling. In order to additionally increase this feeling the radio imitates the typically noise between two frequencies.
This project was made for an univercity course. After completion we were told to create an instructable. So the photos where taken randomly. We hope it is still clear what is needed to do to remake this project.
Step 1: Find the PinOut for the Buttons
First you need to disassemble the old radio of your choice carefully. Do not lose the screws. Then the tricky part starts - reusing the old buttons. The problem is, the buttons in our radio were mechanically connected - you press one button and the other pressed button automatically pops out. We removed the spring of one button and pressed it in. This button has no more function. But that is why the other buttons jump out again after pressing and do not remain pressed in. The next step was to find the correct pins for each button. This can be fairly easy depending on the buttons that are used in your radio. Our radio had some weird buttons with 10-14 connections on a single button. So we took a multimeter and put it into continuity mode and pressed the buttons, as soon as you find the right pair of pins (the device will start to beep), write the pinout down. In total we used three buttons: the previous song, play/pause and the next song.
If there is no chance to reuse the old buttons, just put your own ones in. You will probably lose the tactile feedback then, but you will still have the device aesthetics.
Step 2: Hardware
To build this project the following tools and parts were used:
- Soldering Iron
- Solder Wire
- Old Radio
- Raspberry Pi Zero with Raspbian OS (saves a lot of space compared to Raspberry Pi 3, however is less powerful)
- Micro USB Cable
- USB Power Adapter with 2 Sockets
- USB Cable
- Jumper Cables for Electronics
- Audio Amplifier (LM386)
- Multiturn Trimming Potentiometer(WEL3266-Y-203-LF)
Why use an amplifier?
The old radio has a fairly powerful speaker and you want to reuse as much old parts as possible. Low-power signals from the Raspberry are not enough to power up the loudspeaker, so you need to boost the signal.
Why to use a multiturn potentiometer?
We decided to reuse the frequency knob for selecting the year. Unfortunately we couldn't read out the generated values, so we took a multiturn potentiometer - the knob can make 5 whole turns, a normal potentiometer normaly only has a range of 270°. We glued it to the inner gear wheel of the knob.
Volume adjustment was still functional, so we used the build-in potentiometer for it and searched for the correct pinout.
After both of the potentiometer are connected check the min/max values of them, so you can adjust correct range in code.
Why use a AD converter?
The Raspberry Pi can only read digital inputs. A potentiometer provides only analog outputs - so you need an analog to digital converter, so the Pi understands the values. If you want to actually rebuild this, without adding fancy features like AirPlay or something else I would recommend using an Arduino instead of a Raspberry Pi. The Raspberry is actually an overkill for such an easy project like that, but the task from the univercity said we have to use one.
Step 3: Wiring
Wire everything according to the fritzing diagram.
Step 4: Instructions
Once you have found out the pinout of the buttons or installed your own it's time to play around with the MCP3008. Connect the potentiometer to the MCP3008 like seen in the fritzing and the microcontroller to the raspberry pi (or search for a tutorial or dive into the MCP3008 datasheet and try to figure it out by yourself). Try out if you get readable outputs of the potentiometer on the computer. If so connect the second potentiometer as well. Copy paste our code and see if you can change tracks with the potentiometer and also set the volume with the other potentiometer.
Now you can connect the buttons to the Raspberry Pi and see if they work.
From this point the real challenge begins to fit everything inside the case. We actually also opened up our USB Power Adapter and put it inside the old radio, so we could use its old power cord cable. Connect one micro usb cable to the Raspberry Pi and cut another USB cable open and connect the red wire to the + pin on the amplifier board and the black one to the - pin. Also wire the loudspeaker to it of corse and connect the Raspberry Pi sound output as well.
We would like to explain this all better, but without good pictures this isn't really possible, but the project it self shouldn't be that hard, so we hope this helps somehow or at least you can use our code.
Step 5: Make Space
The last goal is to find some space inside the radio where the new hardware can be placed. If there isn't enough space inside -simply modify the housing with dremel or a tiny angle grinder by cutting it out slightly (Remember: safety first). Try not to damage the old circuit board and wirings - the less parts you remove, the greater the chance that the radio will keep its original functionality. The device we choose had a large battery compartment, where the Raspberry Pi Zero perfectly fitted in. You can also use a normal Raspberry Pi, if you have the free space for it in the device. Since our goal was not to save the portability of the radio, we decided to use this option to locate the most part of our hardware.
Step 6: Software
Install Raspbian on your Raspberry Pi.
The code for the radio project can be downloaded form our github repository. Additionally, the libary pygame must be installed on the Raspberry. To do this, enter the following command in the console:
sudo apt-get update && sudo apt-get install python-pygame