AM/FM TunerWing

Add an AM/FM radio receiver to your Feather project

Public Chat
Similar projects worth following
Maybe you want to build a clock radio. Or you want to listen to the radio on your walkie-talkie when you're not using it for conversation. Or you want to let your robot dance to what's on the radio. Or you want your secret "undercover" project to be disguised as a radio. Or... any of many other possibilities!

This is a project to make a FeatherWing that allows the Feather to control an internal AM/FM radio -- something that, so far as I've been able to determine, is currently unavailable elsewhere.

The chip used is Silicon Labs' Si4734-D60-GU. This chip is controlled by I2C, which means that a fair bit of coding will be required to make it work with Feather (or any other Arduino or similar system).

The AM and FM antennas are external, as are the amplifier and speakers. The intent is for the board's output to be channeled to an amplifier, though the user may want to somehow process the audio in some other way either before or in place of the amp. To better facilitate this option, jumper holes are provided so the output can be diverted to any two of the Feather's Analog pins.

As a bonus, a Qwiic connector is also included for further I2C expansion. (You can never have too many Qwiic connectors.)


The plans, as they appear as of this writing, are based on educated guesswork. This is essentially drawn from the datasheet for the Si4734-D60-GU, and has had no real-world testing.

AM FM FeatherWing I.fzz

An earlier version of the board. If I get around to building this myself, I'll probably use this.

fzz - 24.35 kB - 11/27/2019 at 16:55


AM FM FeatherWing.fzz

Fritzing file, mainly for the PCB design.

- 28.39 kB - 11/15/2019 at 17:07


  • 1 × Printed circuit board As provided with the .fzz file
  • 1 × Silicon Labs Si4730-D60-GU Broadcast AM/FM/SW/LW Radio receiver
  • 2 × 22pF ceramic capacitor
  • 1 × 1nF ceramic capacitor
  • 2 × 100nF ceramic capacitor

View all 10 components

  • Going with the I2C version

    bobgreenwade11/27/2019 at 17:29 0 comments

    I've made the version of the board using the Si4734 the main version, at least for contest purposes. Besides the I2C interface, it has the benefit of using fewer passive components; that allows me to put in jumper wire holes so the output can be diverted to Analog input if need be (I have yet to investigate whether a couple of resistors would be needed for this, but rest assured I'll be looking into that).

    One fun fact: the Si473x family has a pretty nice-sized data sheet, compared to most I've seen, though I've also seen worse. Speaking of which...

    I've also downloaded a copy of the chip's honkin' big programming guide, though I haven't looked at it very intensely. One thing I have found is that the Si4734 normally has a fixed I2C address (0010001), but the SEN pin (currently left hanging) can be used to change it (to 1100011). Whether to hook that pin up to a select jumper (most likely a solder jumper) has yet to be determined.

    I'm foregoing the chip's I2S outputs, at least for now. I'm not convinced that using it will have much benefit. I'm open to arguments to the contrary, though.

    One bit that I'm not satisfied with is the number of via holes needed (6) to move connections between the top and bottom layers in order to get them where they need to go to. I'd like to reduce that, without too much twisting around of the traces; it's more important (in my opinion) to reduce the copper usage.

    Meanwhile, I'm leaving the previous version of the board in place. If I go about pressing my own board, it's probable that I'll use that one, so I can escape the programming... though I may get into that programming after all. (Well, how hard can it be?)

    EDIT: I only just noticed that the Feather's I2C pins "may need a 2.2K-10K pullup." With that, I've tentatively added a pair of 8K resistors for that purpose. Determining the actual proper value -- or even whether they actually need to be there at all -- will come later (possibly during breadboarding).

  • A Slightly Different Approach

    bobgreenwade11/25/2019 at 00:18 0 comments

    After this morning's discovery, I found a resource for the Si4734, which I think is an improvement. I built (in Fritzing) an alternate version of the board, and with the I2C interface it uses only the chip, a crystal, and 6 capacitors, plus I feel much more confident that it's hooked up correctly (the main exception is the crystal, which is probably unnecessary anyway; I may remove it). I even was able to add a Qwiic connector in the bargain!trivial.

    I'm debating whether it'd be worth the trouble to figure out the optional I2S output from pins 1-3. The schematic given on the Si4734 data sheet call for 3 resistors and a capacitor for that option -- meaning I'd have to migrate just about everything toward the east -- and I'm not sure whether I'd want to send it to a separate jack (probably meaning bye-bye Qwiic connector) or to some of the Feather's Digital I/O pins.

    Right now I'm leaning toward just letting the board sit as-is, and making this the primary effort, but I'm open to other ideas.

  • Found a helpful Web page!

    bobgreenwade11/24/2019 at 17:39 0 comments

    After a bit of searching, I came across this Web page that details how to connect a related chip (Si4844-A10) to an Arduino. I'll be taking a close look at that, and adapting it to this project. I might even switch to that chip, or something similar; it looks rather simpler to handle (it's I2C controlled!) than the current Si4836-A10.

  • Chips & Dip

    bobgreenwade11/24/2019 at 01:37 0 comments

    As promised, I rotated the tuner chip to bring the antenna pins closer to the antenna connectors.

    I also added a spot for an EEPROM, with the purpose of easily storing favorite stations. The current chip I'm using is 8K, which I figure should serve that purpose just fine, but if someone gives me a good reason to use something larger I'll at least strongly consider it.

    I'd like to figure out how to do solder jumpers in Fritzing. The shunt-based jumpers are a bit bulky, and they're what I prefer for most things, but in this case I'd like to lower the board's profile wherever I can. Additionally, I currently have the EEPROM locked at I2C address 1010111, and I'd like to make it user-adjustable without filling up the rest of the empty space.

    EDIT/ADDENDUM: It just occurred to me that more compact jumpers (like solder jumpers) might also make it practical to have the option of piping the output into a couple of Analog input pins. (I could do that with the shunt jumpers too, of course, but I like this option better.)

  • Shorten those antenna leads!

    bobgreenwade11/22/2019 at 19:28 0 comments

    Well, I discovered one mess-up that I had to fix on the PCB design: the antenna junctures need to be as close as possible to their respective pins, and the traces need to be as short as possible. So trying to use the super-long trace on the FM antenna was apparently a bad idea.

    I've moved the chip as far to the left on the board as I can manage it, as well as moved the regulating capacitor (C1) to as close to the chip as I could. In a future update I probably will completely rotate the chip 180 degrees to further shorten the distance between pins and antennas, though that'll be more involved than I want to worry about right now.

    (I can tolerate cut-rate things if I'm making them for myself, but I do want others to be able to use this, so I'm going to make it as good as I know how to.)

View all 5 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates