Téma: DIY internetové rádio pro seniora
Po delší době a taky delším provozu bych vám chtěl prezentovat svůj ca. dvoutýdenní projekt. Kvůli ústupu od klasických FM technologií jsem si již delší dobu pohrával s myšlenou stavby internetového rádia. Nabídka je sice velká, ale ani jedna z nabízených variant nesplňovala požadavky. Finální rozhodnutí a ponoření se do projektu plně proběhlo kvůli zdravotním problémům a nemožnosti sportovat.
Hlavní motivace pro vlastní stavbu bylo odlákat seniora od věčného sledování TV a přimět ho k poslechu hudby. Hlavním požadavkem tedy byla jednoduchost ovládání, bez zbytečných funkcí navíc, přijatelný zvuk, přijatelný vzhled a rozměry, a hlavně přijatelná celková cena. Vedlejší motivace byla zase něco postavit a něco se přiučit.
Řešení:
- Jádrem celého rádia je Raspberry Pi 3B+ (bylo doma) na kterém běží servis obsluhující rádio
- Použita externí zvukovka (ADA-17 USB - HQ MINI AUDIO) pro alespoň trochu přijatelný zvuk - zvuk z RPi je naprosto nepoužitelný
- Přídavný modul Wi-Fi pro nedostatečnou sílu signálu pro interní Wi-Fi na RPi
- Display zobrazující číslo a název stanice + datum
- 3 ovládací tlačítka (další, předchozí, mute), analogové ovládání hlasitosti potenciometrem, On/Off vypínač (s opožděným vypnutím napájení RPi).
- Mono zesilovač založen na LM1875
- Pro zachování rozměrů je použit širokopásmový MONACOR SPX-31M v bassreflexpvé ozvučnici s objemem ca. 2.7 -3 l
- Oddělené napájení pro RPi a zesilovač
- Bedna z překližky s odjímatelnou vrchní a zadní částí
Fotky:
Odkaz na GoogleDisk
Detailnější popis:
Projekt jsem začal výzkumem použitelného řešení a jako nejjednodušší se ukázalo použití RPi 3 B+ (Původně jsem chtěl použít RPi Zero, ale kvůli potřeby 2 USB jsem ho zavrhl). Po naběhnutí Raspianu se spustí servis který celá rádio ovládá. Servis je naprogramován v Pythonu za použití LibVLC a obsahuje několik funkcí na obsluhu tlačítek, zobrazení na display a případné vypnutí rádia. Díky požadavku na jednoduchost řešení jsou adresy stanic s názvy jsou uloženy v souboru a můžou být změněny přes SSH přímo do rádia.
Díky potřebě alespoň pasivní cirkulace vzduchu kolem RPi byla oddělena část se zdroji a elektronikou. Pro zachování maximálního objemu ozvučnice byl zesilovač umístěn do ozvučnice. Kvůli snaze o co nejmenší rozměry a snaze o zachování "jednoduchého" přístupu k elektronice vznikl požadavek na možnost oddělání zadní stěny. Zesilovač je nakonec přichycen kusu hliníku na zadní stěně dřevěné podpěře tak, aby pevně držel na zadní stěně. Jako bassreflex posloužila vodovodní trubka, kterou jsem musel nahřát a následně ohnout tak, aby se vešla do boxu.Ozvučnice je utěsněna a částečně vytlumena vatou. Do oddílu pro elektroniku jsou navrtány díry pro možnost pasivní cirkulace vzduchu. Celá ozvučnice je vyřezána na laseru z překližky. Opálení laserem je záměrně ponecháno.
Největší výzvou pak bylo vyřešit vypínání rádia. Chtěl jsem, aby se rádio dalo kompletně vypnout jenom přepnutím z On do Off, a to včetně všech zdrojů. Problém byl v tom, že RPi potřebuje na správné vypnutí ca. 10 s. Nakonec jsem použil tříkanálový přepínač a postavil obvod opožděného vypnutí s relé. Po přepnutí do Off jeden kanál vyvolá interrupt na RPi, které se následně vypne. Druhý kanál vypne přímé napájení za sítě (napájení ze sítě sepnuté přes relé stále aktivní). Třetí kanál vypne napájení ovládání opožděného vypnutí - po ca 15 s dojde k automatickému odpojení relé a odpojení síťového napětí.
Možnosti vylepšení:
- Implementace čtení metadat ze stanice. Momentálně je název stanice čten pouze ze souboru uloženého v RPi. Název, ani dálka písně tedy nejsou zobrazeny.
- Nalakování boxu - díky časovému presu (snaha o předání v den narozenin) a špatnému počasí jsem bohužel neměl čas box nalakovat.
- Lepší implementace servisu
- Lepší "učesání" vedení a kabeláže
Shrnutí:
Celkově hodnotím tento projekt asi jako jeden z nejzábavnějších, na kterém jsem doposud pracoval - především kvůli jeho "komplexnosti" - práce v Linuxu, Pythonu, návrh zesilovače, opožděného vypnutí a mechanické konstrukce. Výsledek pak jako celkem povedený. Cíl pak na 100% splněný.