FM Radio From Scratch Using An Arduino

Building radio receivers from scratch is still a popular project since it can be done largely with off-the-shelf discrete components and a wire long enough for the bands that the radio will receive. That’s good enough for AM radio, anyway, but you’ll need to try this DIY FM receiver if you want to listen to something more culturally relevant.

Receiving frequency-modulated radio waves is typically more difficult than their amplitude-modulated cousins because the circuitry necessary to demodulate an FM signal needs a frequency-to-voltage conversion that isn’t necessary with AM. For this build, [hesam.moshiri] uses a TEA5767 FM chip because of its ability to communicate over I2C. He also integrated a 3W amplifier into this build, and everything is controlled by an Arduino including a small LCD screen which displays the current tuned frequency. With the addition of a small 5V power supply, it’s a tidy and compact build as well.

While the FM receiver in this project wasn’t built from scratch like some AM receivers we’ve seen, it’s still an interesting build because of the small size, I2C capability, and also because all of the circuit schematics are available for all of the components in the build. For those reasons, it could be a great gateway project into more complex FM builds.

50 thoughts on “FM Radio From Scratch Using An Arduino

    1. speaking seriously, when was the last time you tuned into an AM station for leisure reasons (music, generally)?
      for most people born after about 1990, this ends up being “AM What?”. AM does have its values, but those do not generally lie in audio fidelity

      1. He said nothing about audio fidelity in his reference to cultural relevance. True that music never sounded good on AM, but one could quite easily assert that sports and current events AM programs, for example, are extremely culturally relevant.

        1. You can receive dozens of AM stations from all over the Europe.
          Try Channel 292 on 6070kHz (transmitter is located in Germany).
          Or Absolute Radio from UK on 1215 kHz. Should be perfectly fine in the evening.

  1. Ok nice build, but the “from scratch”??? Not. Even. Over. The. Horizon. Exactly the opposite. Everything is standard modules.
    Choose your wording carefully and maybe you will end up with a group of followers. Otherwise it will be benchoff all over again.

    1. Headline: “FM Radio From Scratch Using An Arduino”
      Body: “…the FM receiver in this project wasn’t built from scratch…”

      It’s almost as though he knows, but doesn’t care.

      And Benchoff was freakin’ hilarious. I miss being able to be certain I was reading intentional trolling and not sincere ignorance.

          1. I forget who said it, but it was a famous physicist… And it still holds true

            “To bake a cake from scratch one must first invent the universe”

            Now that being said, you don’t get to see the words “from scratch” And “RF receiver” without winding your own inductors, And being able to explain what a discriminator is.

    2. It is from scratch – modules won’t buy themselves, and won’t connect automagically. And Arduino can’t program itself with badly written and optimized code with even worse libraries, too…

  2. I have an FM radio. It’s called almost every smartphone in the last 10 years. In the U.S. smartphones are mandated to have an FM receiver chip. They are not mandated to have it turned on.

    1. Yeah damn, I’ve had at least 3 that said they had FM radio, and buggered if I could find an app that worked with it. Mind you that’s carrier “turn off everything that doesn’t encourage huge data overages” firmware, so guess I shouldn’t be surprised.

  3. It’s a cool project, especially for beginners. Using a bit more advanced chip in the same price category you can even make a radio with RDS support, so it will show the name of the song, etc.

    However, it’s rather offensive to call AM radio not culturally relevant. It’s more culturally relevant as Hackaday.com, it’s less of a niche product and still has millions of users just in North America alone. And by the way, a good receiver makes AM sound very good (even if not quite on par with FM) and you can receive broadcasts from hundreds or thousands of miles away.

  4. For a dollar or two more a Chinese FM tuner module with the U.S. designed Silicon Labs Si4703 chip would give you a performance boost plus RDS decoding. The Si4703 has a LNA/AGC/IQ/PGA quadrature direct conversion front-end and a sophisticated ADC/SDR/DSP back end. That’s assuming the Si4703 chip on the Chinese modules aren’t fake of course. I don’t know if fake Si4703 chips exist, but it wouldn’t surprise me. This is the SiLabs product page for the Si4703:

    https://www.silabs.com/audio-and-radio/fm-radios/si4702-03-radio-receivers/device.si4703

    And the datasheet:

    https://www.silabs.com/documents/public/data-sheets/Si4702-03-C19.pdf

    In contrast the TEA5767 is a more traditional analog RF/IF/DEMOD/DEMUX FM stereo tuner. If I’m not mistaken, the TEA5767 was originally introduced by Philips Semiconductor (now NXP) many years ago. NXP now shows the TEA5767 as discontinued, I do not know who makes them today, if anyone. For comparison purposes with the Si4703, here is the datasheet for the TEA5767, you can see the two chips are entirely different animals:

    https://media.digikey.com/pdf/Data%20Sheets/NXP%20PDFs/TEA5767HN_5.pdf

    On the Web there are plenty of examples and libraries for marrying an Arduino to a Si4703.

    Here’s a Si4703 based FM tuner module from China on Ebay for $2.78 plus $3.47 shipping:

    https://www.ebay.com/itm/151912246979

    If you can’t wait for long shipping times from China here are two Si4703 modules from Amazon with “free” Prime 2-day ConUS shipping for $7.89 ($3.95/module).

    https://www.amazon.com/Comimark-Breakout-Si4703-Arduino-Compatible/dp/B0855JK4QG

    If you are worried about getting a module with a fake Si4703 on it (if they exist), SparkFun sells a Si4703 breakout module for $10.95. The SparkFun module will almost certainly have a genuine part on it:

    https://www.sparkfun.com/products/11083

    SiLabs makes much more sophisticated tuner chips compared with the Si4703, some cover the AM/FM/SW/LW bands and include mono/stereo AM as well as FM demodulation, some accommodate push-button control and there’s even a version that supports an analog-like tuning knob. The problem with the SiLabs tuner chips is that they are hard to get unless you buy an awful lot of them. And even if you can find one to buy, they are outrageously expensive. For example, at my writing time both Mouser and Digi-Key have the Si4703 in-stock, but buying just one (1) chip will set you back a whopping $13.42 at either place! Qty.-1,000 chips from Digi-Key will cost you $3.38 each, which still feels a bit high to me:

    https://www.digikey.com/en/products/detail/silicon-labs/SI4703-C19-GM/2136029

  5. I would like to know how many of you BLA BLA BLA people who are always criticising others that take the trouble to make something, actually do anything but criticise. Talking is easy all you have to do is move your tongue.

    1. In all comments I read they aren’t criticising the maker, but Hackaday which wrote a clickbait title. I’m not interested in making a radio receiver with such a ready module, but I got there as I thought it’s some interesting circuit with discrete components. I already started building 2 detector receivers using instructions from Billy Cheung youtube (AM and FM – slope detection). I’m also going to make RDS decoder for my factory-made radio – I found MPX signal and made some highpass filter. I saw 19 kHz pilot tone on oscilloscope when there was silence, but I probably should make a bandpass filter to get selected subcarriers without interrupts.

  6. “Receiving frequency-modulated radio waves is typically more difficult than their amplitude-modulated cousins because the circuitry necessary to demodulate an FM signal needs a frequency-to-voltage conversion that isn’t necessary with AM.”

    Yes, that’s right. Though it is possible to listen to FM signals using an AM circuit by tuning to the edge of the FM signal. While audio fidelity might be lower in this case, this approach causes no FM noise, also. :)

    (By AM/FM I mean the modulation types,
    not the VHF or medium wave broadcast bands.)

    1. I think the comment was more like “you can build a crystal radio for AM”.

      Once you start building a superhet receiver, there’s just an incremental change whether it’s am or fm.

      1. But since the comparison seemed to be between a “crystal radio” for am, and a superhet for FM, it’s really the superhet that’s the complication, not the method of modulation.

  7. I have a module somewhere, thanks for reminder. I wwanted to use signal strength measurement for Geopathology area search – experiment in more tech approach at dowsing. Those FM stations are maybe culturally relevant, but do not play music i like so, the only purpose to buy was signal strength. Sadly, the project is shelved for like 4 years already.

  8. Are there any DAB+ chips (preferably in VSSOP+, SOIC or some other non-leadless package that still can be soldered with a little bit of care that could be used for such a project? I know there’s a DAB(+)-shield for the arduino, but last I checked it was difficult to find a well-documented chip that could be used in a project.

  9. Great, now how do I get the digital ‘HD Radio’ that has been tacked on above and below evwry station?

    That might use the Arduino XD.

    But yeah was maybe expecting an SDR, not an FM module. I guess ‘how to use your FM module with an Arduino’ doesn’t click bait

  10. AM radio can be made where the audio quality is quite good over the bandwidth given (with a decent receiver). Analog FM can sound excellent. The biggest reasons they sound so bad on the air is:
    1. Because of IBOC digital overlays, very heavy and sharp bandwidth skirt filters are applied to the modulated analog signal which eliminates and non linearizes many of the normal RF sidebands which leads to distortion. (FM)
    2. AM and FM. it was pop culture at the turn of the century to use nearly criminal levels of multi band audio preprocessing clipping and compression in a misguided effort to win the ” loudness wars” in a market. Stations aren’t playing Slayer anymore but nobody has told the PDs that music has more dynamic range than a dB or two. Broadcast radio can be made to sound pretty good just by turning the Omnia or Optimod down but PDs won’t do it because their station won’t sound as loud (and distorted) as their competitors.
    Major market radio is nearly un- listenable IMHO.

  11. we need a fun device like a wide band FM broadcast band transceiver 2-way radio , more then a pirate station , a way for guys to play some good music AND have 2-way radio contacts on the FM band , take over the airwaves and talk about it as other drivers tune in to the direct action !
    Id pay $200 for something like that.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.