HAM Radio

Posted: July 10, 2019


I always wanted a HAM radio as a kid, so when I saw SparkFun was selling an FM Tuner Breakout Board I decided I could build one. The board is based on a Silicon Laboratories Si4703 chip, complete with a digital tuner and can even tell the name of the song that's currently playing. The board is being controlled by an MSP430G2231 and outputs to an LM386 audio amplifier.

I was originally thinking of building the "case" for it out by carving out a chunk of ham, but it seemed wrong to use the meat of an animal for something like this and then throw it away so I decided to use vegan ham slices.

Related Projects

Artwork: LED Pumpkin Candle, XOR Gate, Motion Eyes, Clay Figures, WS2812 LED, LED Panel, Half Adder, Gingerbread House, Cyborg Chicken, Electric Cat Fight, Iced Electronics


A video tour of the HAM radio.

I kind of feel like the Si4703 documentation is a bit.. lacking. I wish they had just a section of "here's a list of steps you need to do to initialize this thing". Well, they kind of do have that, but I think vital information about it is scattered all over the PDF. Anyway, this thing can communication in 3 modes of operation: 3-wire and 2-wire (i2c). I chose 3-wire and I chose to do it with software instead of trying to get MSP430's SPI to talk to it.

So selecting 3-wire mode.. I'm still not 100% clear on what to do. One part of the documentation shows all that needs to be done is the /SEN signal just needs to be pulled low while /RST goes high. But then their timing chart shows stuff going on with SDIO and it warns not to have SCLK high at the time. I got the 3-wire mode working I think just by playing with /SEN and keeping SDIO and SCLK low, but the thing wasn't coming up the first time it's plugged in (required and MSP430 reset to do everything twice or something) so I started screwing with the other signals. In the end I think the problem was after telling the crystal to start up, the user is supposed to wait 500ms or something for it to become stable. After the ugly stuff is settled, selecting channels and such isn't too bad. I provided source code below to help anyone else wanting to program these chips.

For functionality, I provided a 10k potentiometer for the volume control and a 10k potentiometer for selecting a channel. The channel selector goes to the ADC of the MSP430 which will select 1 of 16 channels I hardcoded in the source code.

To make it a HAM radio (har har) I covered the thing in vegan ham. I decided to go vegan to be nicer to animals (kind of felt bad when I did the Singing Fish project).


Si4702 FM Tuner with MSP430 and LM386

Here's a picture of radio from the front without the HAM. The "cage" it built out of small, thin pieces of wood hot-glued together. The knob on the left is a volume control for the LM386 and the knob on the right is connected to the ADC of the MSP430 so 1 out of 16 preset channels can be selected.

Si4702 FM Tuner with MSP430 and LM386

Here's a picture from the top showing on the left the 8 pin LM386 chip, in the middle the SparkFun FM Tuner Breakout Board, and on the right an MSP430G2231 microcontroller.

Si4702 FM Tuner with MSP430 and LM386

Here's the radio from the front layered in HAM.

Source code

Copyright 1997-2024 - Michael Kohn