Florian Amrhein

/radio2

My father has an old tube radio that he inherited from his father ages ago. All its electronics had been removed decades ago, it was just decor in the kitchen.

After finishing my other radio project, I decided to resurrect my father's empty radio using modern technology: a single board computer, WiFi, internet streaming, and a LCD display that shows an UI that looks just like the original rotatable disc which was used to display the frequencies back in the day.




[ View YouTube video ]

Hardware


My father's radio


Philips started building the 836A model in 1934.

My grandfather must have bought it with one of his first salaries after becoming a baker. It must have cost him a fortune - such devices were very expensive back then.

More information on the 836A:



Computer




I used a cheap single board computer. It isn't powerful or anything, but good enough to do the job. And it is quite cheap. Its main duties in the radio are to

  • show a UI that allows switching between channels
  • play the MP3 streams

See the software section below for more details.

Display




It's really difficult to find good yet inexpensive displays, especially when you have to use HDMI or composite ports on your computer (the DSI port on mine is not accessible). I found a 3.5" display meant for rear view cameras of cars. It has a resolution of 320x240 and uses the composite port.

You can get those displays on eBay, but you have to be careful: Some of the sellers claim their displays have a resolution of 640x480, but in most (all?) cases that resolution gets down scaled to the real resolution of 320x240, or they count the subpixels instead of the real pixels.

Controls


The radio is controlled by two potentiometers (tuning and volume):

  • Volume is connected between the USB sound card and the amplifier.
  • Tuning is connected to a MCP3201 analog to digital converter. The ADC is connected to the Raspberry Pi via SPI protocol.

The volume potentiometer contains a switch that's activated as you turn the potentiometer to the far left. It's connected to the Raspberry Pi which allows the software to deactivate the amplifier.



On the back side of the radio, there's a simple push button (the "info button"), which is also connected to the Raspberry Pi. Press it to have the UI display the current IP address.

Daughter board




The computer I used doesn't have any analog inputs, so I had to use a DAC. I built a small daughter board which is plugged into the GPIO connector on the the computer board. It hosts the ADC, pull-up resistors for the buttons and capacitors for the ADC for stabilizing the voltage and the signal from the tuner potentiometer.

Power




The power is provided by a transformer I got from Ali Express. It provides 24 volts center tapped, which is exactly what the amplifier needs.



I connected that transformer to a rectifier bridge (including a capacitor) in order to power the remaining components. The approximately 16 VDC are directly connected to the display (it accepts anything between 9V and 20V), and a voltage regulator which generates the 5V needed by the Raspberry Pi and the USB sound card.

Sound card


I decided to add a USB sound card, since the quality of the sound provided by the headphone jack on the Raspberry Pi isn't the best.

The line out connector of that sound card is connected to the volume potentiometer, which then passes on the signal to the amplifier.

Amplifier




The amplifier is a low cost board I got from aliexpress.com, it's manufactured by "Yuan Jing". It's based on the TDA8920 digital amplifier chip. It's got a solid quality of sound considering the price of only 15 GBP.



I decided to put a relay board between power and the amplifier given that I want to save a bit of energy. This allows the Raspberry Pi to only power the amplifier when music is playing. After some time of inactivity the amplifier switches off again.

Network


Since the computer board I used doesn't have any built in Wifi, I had to connect a USB based WiFi stick to it.

That board couldn't provide enough power to the USB stick, so I put a short USB cable between the Pi and the WiFi stick, then connected the power lines of the cable directly to the 5V provided by the voltage regulator.

Putting everything together




  • (a) Volume control: Temporarily mounted on a card board. The card board has been replaced by a thin wooden board when I installed the radio in the case.
  • (b) Tuner: Allows switching between radio stations. Connected to the Raspberry Pi (using an ADC on the daughter board).
  • (c) Display: 320x240 resolution, connected to composite socket of the Raspberry Pi.
  • (d) Power switch: Connected to mains and the transformer; Temporary isolated using cardboard.
  • (e) USB sound card
  • (f) USB Wifi stick
  • (g) single board computer
  • (h) Daughter board: Has some resistors for the buttons, capacitors and an ADC for the potentiometer, plus some sockets.
  • (i) Amplifier: Gets 24 Volts center tapped directly from the transformer (via the relay board).
  • (k) rectifier and capacitor: provides about 16 VDC.
  • (m) Relay board: Allows to switch the amplifier on and off; is controlled by the Raspberry Pi.
  • (n) Transformer
  • (o) 5 VDC distribution (for Raspberry Pi and Wifi stick): Gets the power from the voltage regulator
  • (p) 16 VDC distribution (for the display and the voltage regulator)
  • (q) Cable connecting the speaker

The voltage regulator isn't visible on this picture. It's located under the Raspberry Pi, below the board.


Software


The computer runs Debian (Raspbian) and the Music Player Daemon (MPD). I wrote the UI in C and SDL.

I used the WiringPi library to read out the buttons and potentiometers.

Originally, the display was showing a small part of a disc that was rotated via the tuning knob. It had the frequencies printed on it. I tried to resemble the look and feel of this "UI" using a digital display. My software emulates a rotating disc which is digitally controlled by the tuning potentiometer. The only difference is that it shows station names instead of frequencies and a few effects like highlighting the currently selected station or coloring it red when an error occures.

If there's no internet connection or in case of other issues, the UI displays an error message stating the error. Press the "info button" (located at the back of the radio) for the UI to display the current IP address of the radio. This helps configure the radio after connecting it to a network.

The only way to configure the device is by connecting & logging in to it via SSH, and to then manually edit the config files. So it's not that easy to add new radio stations or configure the Wifi, but I'm planning to implement a web based configuration editor later.

More Pictures








Links