Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:si4703-radio

Toto je starší verze dokumentu!


FM rádio s Si4703

Zadání

  • Vytvořte rozhraní pro ovládání modulu FM rádia Si4703 s pomocí vhodného zobrazovacího média
  • Zobrazte informaci o aktuální naladěné stanici pomocí RDS
  • Použijte vývojový kit FRDM-KL25Z

Integrované rádiové moduly

Většina mobilních telefonů a MP3 přehrávačů mají v sobě automaticky radiový přijímač. Není se čemu divit, výrobci je integrovali do velmi malých pouzder a při jejich masové výrobě je cena příznivá. Všechny potřebné funkce mají již v sobě (RDS, potlačení šumu, AGC, automatické vyhledávání stanic, atd.), takže stačí pouze přidat výstupní zesilovač, nebo využít digitálních audio výstupů. Nejvíce mě zaujala nabídka Silicon Labs. Nabízí mimo přijímačů i vysílače nebo kombinace obojího. Vysílače umožňují velmi jednoduše spojit MP3 přehrávač nebo mobilní telefon přímo s autorádiem. (pozn.: Česká legislativa něco takového neumožňuje)

Hardware

Vybral jsem si modul FM rádia Si4703. Ten má v sobě zabudovaný i RDS procesor a další funkce. Zapsáním hodnoty do příslušného registru ovládáme VCO (oscilátor řízený napětím), s pomocí kterého obvod naladí frekvenci. Modul již má audiozesilovač, takže stačí jen připojit sluchátka, které slouží zároveň i jako anténa.

s-l300.jpg

Jako zobrazovací médium nám poslouží kompaktní OLED displej s řadičem SSD1306, rozlišením 128×64 pixelů a úhlopříčkou 0.96 palce. Komunikace probíhá pomocí sběrnice i2c.

Budeme ho ovládat pomocí vývojového kitu FRDM-KL25Z.

Software

Vývojové prostředí mbed.org umožňuje vyhledat a importovat knihovny, které vytvořili ostatní uživatelé. Takto se podařilo získat knihovny pro FM modul i displej. Následující vytvořený kód má za úkol zobrazit hlavní obrazovku, na které bude zobrazena aktuálně naladěná frekvence, možnost manuálního i automatického ladění, nastavení hlasitosti a dat z RDS.


Velký počet proměnných, které jsou třeba například pro uložení nastavení mě pomohly zpřehlednit struktury

// Prostor pro ulozeni nastaveni
typedef struct{
    bool rds;
    int volume;
    bool tuning;
}Menu_Setup;
 
Menu_Setup setup;
 
// Prostor pro ulozeni aktualni frekvence
typedef struct{
    int current;
    int high;
    int low;
}Frequency_Info;
 
Frequency_Info frequency;





Ukázka funkčnosti

Závěr

Výsledkem projektu je vytvoření aplikace, které spojuje modul rádia, displeje a tři tlačítka v použitelný radiopřijímač. Kromě automatického ladění je možné frekvenci zadat i ručně, je zde i možnost ovládání hlasitosti. Pomocí dat z RDS se podařilo zobrazit jen název u jedné stanice, a to u EVROPY 2. Lepšího výsledku by šlo dosáhnout pouze s vlastní knihovnou pro ovládání FM modulu. Programování mi zpříjemňoval poslech částečně naprogramovaného rádia.

Kromě tohoto modulu FM přijímače mě zaujal i modul pro vysílání FM, například Si4713. Existují i integrované obvody, které slučují obě funkce (příjem i vysílání). Daly by se použít k bezdrátovému přenosu zvuku například z mp3 přehrávače nebo PC. Nebo k bezdrátovému přenosu dat, protože mají implementovanou funkci RDS. Dále modul ​Si4707 pro příjem zpráv o počasí.

Celý zdrojový kód je uveřejněný na stránkách mbed Projekt MPOA Si4703 .

2015/si4703-radio.1453041179.txt.gz · Poslední úprava: 2016/01/17 15:32 autor: Adam Štěpánek