0% found this document useful (0 votes)
32 views4 pages

Arduino FM Radio Library Overview

This Arduino library allows controlling various FM radio chips to build an open source FM radio. It supports chips like the RDA5807M, TEA5767, SI4703, SI4705, and SI473x. The library provides common functions for controlling things like frequency, volume, stereo/mono mode. It is implemented as separate chip-specific libraries that share a common interface. Examples are included to demonstrate different configurations using optional components like LCD displays.

Uploaded by

jovicarad
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views4 pages

Arduino FM Radio Library Overview

This Arduino library allows controlling various FM radio chips to build an open source FM radio. It supports chips like the RDA5807M, TEA5767, SI4703, SI4705, and SI473x. The library provides common functions for controlling things like frequency, volume, stereo/mono mode. It is implemented as separate chip-specific libraries that share a common interface. Examples are included to demonstrate different configurations using optional components like LCD displays.

Uploaded by

jovicarad
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd

Arduino Radio Library - The Library

This project is about controlling an FM radio chips by using an Arduino and some optional components like an LCD
display, rotary encoder, a LCD+Keyboard shield and Ethernet Shield to build a standalone radio. It comes with several
examples for different configurations.

Content of this article:


 Part 1: The Arduino Library
 Part 2: The Examples
 Part 3: The Wiring
 Part 4: The Web Radio

The Radio library


The core software part of this project is the Arduino radio library that enables controlling radio chips for receiving FM broadcast
audio signals.
Currently the following chips are supported:
 The RDA5807M from RDA Microelectronics.
 The TEA5767 from NXP.
 The SI4703 from Silicon Labs.
 The SI4705 from Silicon Labs.
 The SI473x from Silicon Labs.

Download the project files:


The source files for this library is maintained on github in the repository [Link]
Here you can browse the source code and a DOXYGEN documentation is available at [Link]
The direct download link is [Link]

Introduction
This Arduino library implements the software to control some FM radio chips to build the core part of an Open Source FM radio by
using an Arduino board.
In fact it is a collection of multiple libraries and samples because there are several chips and breakout boards available these days
that can be used to receive FM signals and output an audio signal. I provide a very simple sample for every adapted chip that may
help you to start with your setup and some more feature complete sketches that introduce other hardware components like LCD
panels and other IO.
Because most of the chips are made for integration into mobile phones or car radios the chips themselves are really small. If you
don't have the soldering equipment for these chips you should look out for breakout boards, sometimes together with audio
amplifiers for headphones os speakers. The ones I found and listed above
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.
For each of these chips a specific library is implemented that knows how to communicate with the chip using the I2C bus and the
wire library. These libraries all share a common base, the radio library so that all the common code is only implemented once in
there.
All the libraries (for example SI4705.h+[Link]) share the same interface (defined by the radio.h+[Link] library) so it is
possible to exchange them when not using one of the chip specific functions.
While implementing the first libraries I found several functionalities being useful for all the chips so these are implemented in the
base class too.
However not all chips support the same functionality. For example setting the volume on the TDA chip will not work because this
chip doesn't support it. If you query for the result of setting the columns you will always get the default volume level 15 back.
Other functions are implemented different in different chips. For example the SI4705 chip supports 64 levels of volume while the
RDA only supports 16. To make the libraries compatible the specific implementation normalizes this to the 0 to 15 range. If you like
to use the fine tuning for the specific chip you can use the setVolumeX function instead.

API documentation
The source code of the library is filled with the low level documentation explaining briefly every function. By using the DOXYGEN
tool this information ex extracted into a separate documentation that you can find on github too: [Link]
Choose the chip you have in your setup and see what functions the library supports.
Feature   TEA5767 RDA5807M SI4703 SI4705
RADIO band = FM X X X X
band =
FMWORLD
freq X X X
mono X X X X
stereo Decode stereo signal X X X X
RSSI signal strength 0 - 64 0 - 64
indicator
SNR signal noise ratio 0 – 127
softmute X X X
mute X X X X
Seek
FM Grid 50 kHz
Audio volume Supported number of 0 - 15 0 - 15 0 - 63
volume levels
bassboost Boost bass X - -
frequencies
RDS Data Decode RDS signal - X X X
Errors Provide information on - - X X
RDS signal errors

ChangeLog
 06.04.2015 First published version.
 12.05.2015 stable version with additional documentation.
Continue reading in: Part 2: The Examples
Sitemap
Impressum
License Agreement

Imprint  License  This content is part of the [Link] site.

Ардуино Радио Либрари - Библиотека


Овај пројекат се односи на контролу ФМ радио чипова коришћењем Ардуина и неких опционих компоненти као што
су ЛЦД екран, ротациони енкодер, ЛЦД+тастатурни штит и Етхернет штит за прављење самосталног радија. Долази
са неколико примера за различите конфигурације.

Садржај овог чланка:


 Део 1: Ардуино библиотека
 Део 2: Примери
 Део 3: Ожичење
 Део 4: Веб радио

Библиотека радија
Основни софтверски део овог пројекта је Ардуино радио библиотека која омогућава контролу радио чипова за пријем ФМ
емитованих аудио сигнала.
Тренутно су подржани следећи чипови:
 РДА5807М из РДА Мицроелецтроницс.
 ТЕА5767 из НКСП-а.
 СИ4703 из Силицон Лабс.
 СИ4705 из Силицон Лабс.
 СИ473к из Силицон Лабс.

Преузмите датотеке пројекта:


Изворне датотеке за ову библиотеку се одржавају на гитхуб-у у спремишту хттпс ://гитхуб.цом/матхертел/Радио .
Овде можете да прегледате изворни код, а ДОКСИГЕН документација је доступна на хттп: //матхертел.гитхуб.ио/Радио .
Директна веза за преузимање је РадиоЛибрари.зип

Увод
Ова Ардуино библиотека имплементира софтвер за контролу неких ФМ радио чипова за изградњу језгра ФМ радија
отвореног кода помоћу Ардуино плоче.
У ствари, то је колекција више библиотека и узорака јер данас постоји неколико чипова и плоча за разбијање које се могу
користити за примање ФМ сигнала и излаз аудио сигнала. Дајем веома једноставан узорак за сваки прилагођени чип који
вам може помоћи да почнете са вашим подешавањем и још неке садрже комплетне скице које уводе друге хардверске
компоненте као што су ЛЦД панели и други ИО.
Пошто је већина чипова направљена за интеграцију у мобилне телефоне или ауто радио, сами чипови су заиста мали. Ако
немате опрему за лемљење за ове чипове, требало би да пазите на плоче за разбијање, понекад заједно са аудио
појачалима за слушалице или звучнике. Оне које сам пронашао и навео горе
Сви су способни за пријем ФМ радио станица у стерео режиму са европским и америчким подешавањима и могу се
контролисати коришћењем И2Ц магистрале. Међутим, постоје разлике у осетљивости и квалитету и добром пријему РДС
информација са станица.
За сваки од ових чипова имплементирана је посебна библиотека која зна како да комуницира са чипом користећи И2Ц
магистралу и библиотеку жица. Све ове библиотеке деле заједничку базу, радио библиотеку, тако да се сав заједнички код
имплементира само једном.
Све библиотеке (на пример СИ4705.х+СИ4705.цпп) деле исти интерфејс (дефинисан од стране библиотеке
радио.х+радио.цпп) тако да их је могуће размењивати када се не користи једна од функција специфичних за чип.
Док сам имплементирао прве библиотеке, открио сам неколико функционалности које су корисне за све чипове, тако да су и
оне имплементиране у основној класи.
Међутим, не подржавају сви чипови исту функционалност. На пример, подешавање јачине звука на ТДА чипу неће радити
јер га овај чип не подржава. Ако тражите резултат подешавања колона, увек ћете добити подразумевани ниво јачине звука
15 назад.
Остале функције су другачије имплементиране у различитим чиповима. На пример, СИ4705 чип подржава 64 нивоа јачине
звука, док РДА подржава само 16. Да би библиотеке биле компатибилне, специфична имплементација нормализује ово на
опсег од 0 до 15. Ако желите да користите фино подешавање за одређени чип, уместо тога можете користити функцију
сетВолумеКс.
АПИ документација
Изворни код библиотеке је испуњен документацијом ниског нивоа која укратко објашњава сваку функцију. Коришћењем
ДОКСИГЕН алата ове информације су екстраховане у посебну документацију коју можете пронаћи и на гитхуб-у:
хттп: //матхертел.гитхуб.ио/Радио/хтмл
Изаберите чип који имате у свом подешавању и погледајте које функције библиотека подржава.
одлика   ТЕА5767 РДА5807М СИ4703 СИ4705
РАДИО опсег = ФМ Икс Икс Икс Икс
опсег = ФМВОРЛД
фрек Икс Икс Икс
моно Икс Икс Икс Икс
Стерео Декодирајте стерео сигнал Икс Икс Икс Икс
РССИ индикатор јачине сигнала 0 - 64 0 - 64
СНР однос сигналног шума 0 – 127
софтмуте Икс Икс Икс
немо Икс Икс Икс Икс
Сеек
ФМ Грид 50 кХз
Аудио обим Подржани број нивоа јачине звука 0 - 15 0 - 15 0 - 63
бассбоост Појачајте бас фреквенције Икс - -
РДС Подаци Декодирајте РДС сигнал - Икс Икс Икс
Грешке Наведите информације о - - Икс Икс
грешкама РДС сигнала

ЦхангеЛог
 06.04.2015 Прва објављена верзија.
 12.05.2015 стабилна верзија са додатном документацијом.
Наставите са читањем у: Део 2: Примери

Common questions

Powered by AI

The Arduino radio library manages discrepancies in chip functionalities by implementing a shared base class that includes functionalities common to all supported chips, while chip-specific functionalities are handled through specific implementations of the shared interface. For instance, volume normalization is used to provide a consistent user experience despite differences in volume control capabilities across chips. This approach ensures that users have a seamless experience when switching between chips without needing to rewrite application code .

The I2C bus plays a crucial role in interfacing the Arduino with supported FM radio chips, as it provides a communication protocol for data exchange between the Arduino and the chips. This simplifies the hardware integration process and allows for the control of multiple chips through a common interface. The implication on hardware requirements is that the user must ensure their Arduino board supports I2C, and they might need breakout boards for soldering small chips, which are often designed for mobile or automotive integration .

The core purpose of the Arduino FM radio library is to control FM radio chips for receiving FM broadcast audio signals. It supports chips such as the RDA5807M from RDA Microelectronics, the TEA5767 from NXP, the SI4703 and SI4705 from Silicon Labs, and the SI473x from Silicon Labs .

The common interface implemented in the radio library standardizes the communication and control methods across different FM radio chips. This abstraction layer allows developers to switch between chips without significant changes to their code, as long as chip-specific functions are not used. The interface includes common functionalities such as volume control and frequency tuning, which aids in maintaining code consistency and reduces the learning curve when working with new chips .

The Arduino radio library allows for enhanced user experience by integrating additional components such as LCD displays and Ethernet shields. This enables the creation of standalone radios with features like station information display, user interaction through rotary encoders, and web radio functionality with network capabilities. Potential applications include hobbyist radio projects, educational tools for learning about radio technologies, and even custom home audio solutions .

The SI4705 supports 64 levels of volume, while the RDA5807M supports only 16 levels. To maintain compatibility across different chips in the library, the specific implementation normalizes these volume levels to a 0 to 15 range. This indicates that while the chips have different inherent capabilities, the library ensures a consistent interface for easier integration .

The TEA5767 chip does not support decoding RDS (Radio Data System) signals, while the SI4703 does support RDS signal decoding. Both support FM band operation and stereo decoding. A developer might choose the SI4703 over the TEA5767 if RDS functionality is required, such as displaying metadata associated with the broadcast, like station name and broadcast information .

API documentation and tools like DOXYGEN are vital for both the development and adaptation of the Arduino radio library. They provide detailed references for all functions and facilitate understanding of library capabilities and usage, which is especially important in open-source projects where user contributions are common. Comprehensive documentation helps users quickly adapt the library to their specific needs and encourages further development and innovation by improving accessibility and reducing the learning curve .

The Arduino radio library supports varying levels of technical expertise by providing a range of examples, from simple demonstrations for beginners to complex sketches for advanced users. This layered approach allows users with different technological backgrounds to engage with the library according to their skill levels. Additionally, by encouraging the integration of Arduino with an array of components, the library facilitates learning and experimentation, enabling users to expand their understanding of electronics and programming via hands-on experience .

A potential challenge in using the Arduino radio library for global FM broadcasting standards is dealing with varying frequency grids and broadcast standards between regions (such as Europe and the US). The library must accommodate these differences to ensure compatibility. One solution is incorporating adaptable frequency settings and allowing users to select appropriate regional standards. Furthermore, ensuring the chips support RDS where necessary enhances the library's global usability, given that some chips may have varying RDS capabilities .

You might also like