28 October 2014

An Arduino library for FM radio chips

My latest project is about controlling an FM radio chip by using an Arduino Board, an LCD display and a rotary encoder all the components I need to build a standalone radio for my needs.

There are diverse radio chips available for building radio receivers. Because most of them are made for integration into mobile phones or car radios they normally come on breakout boards, sometimes together with audio amplifiers for headphones.

The ones I found and tried are:

  • The SI4703 from Silicon Labs
  • RDA5807 from RDA Microelectronics
  • TEA5767 from NXP

    They all are capable for receiving FM radio stations in stereo with European and US settings and can be controlled by using the I2C bus. However there are differences in the sensitivity and quality and well on receiving RDS information from the stations.

    The idea of the project beside implementing a radio for my personal needs is to provide Arduino compatible libraries for these (and possible more) chips that all offer the same functionality and expose the same functions. These radio chip adaptions can be combined with the also available RDS encoder and the radio applications.

    This is my current hardware setup for the latest project I am working on by using a breakout board for the SI4703 chip including an audio amplifier that I found on eBay:


    The radio library

    The libraries for this project can be found on github:


    You can download all the files at once by using the provided zip file:


    I still work on this and still some features I like to implement are still in development but maybe you already have experiences with audio functionality on the Arduino or other platforms or you also work on a similar project. Let me know (via eMail) and maybe we can share some experiences.

    Open Topics

    • Implementing all functions for all chips
    • good documentation
    • pictures
    • writing about using LCD displays in the I2C bus
    • writing about interpreting RDS data
    • … let me know