Toto je starší verze dokumentu!
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)
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.
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.
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
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 .