Programy zdarma, Arduino návody, tratě pro Open Rails a MSTS.
V důchodu mám dost času na vymýšlení různých pitomostí, zvláště teď v zimě, kdy jinak není moc do čeho píchnout. Zde je jedna z nich.
Napadlo mne vyrobit MP3 přehrávač + bluetooth reproduktor s dálkovým ovládáním s obousměrnou komunikací. To znamená, že na ovladači
je kromě tlačítek i displej, kde se zobrazuje název právě přehrávaného souboru, jeho pořadí, doba trvání s odečtem a celkový počet
souborů. Klasický infra snímač zde použít nejspíš nelze, takže jsem ke komunikaci použil 2.4GHz modul s LT8920 s připojený přes sběrnici SPI. Modul LT8920 je prodáván ve dvou verzích (viz schéma níže), kdy použít se dá kterákoliv z nich. Modul je titěrný a při pájení je třeba
dávat pozor. Je potřeba připojit celkem osm vodičů, viz tabulka níže ve schématu. Na typ XY-WA se vodiče pájí přímo, čtyři z jedné strany a čtyři z druhé.
Typ XY-WB umožňuje připájet piny a vodiče připojit k nim.
Použití Arduino MEGA, nebo i UNO (viz níže uvedená verze stanice) mi přišlo poněkud předimenzované. Stanice nedělá nic jiného, než krátké přenosy
mezi sběrnicí SPI a UARTem. Pokusil jsem se o jakousi minimalistickou verzi v assembleru pomocí procesorové desky STM8S103F3. Podrobnosti
a návod je zde..
Stanice - verze s Arduino MEGA 2560
Jako přehrávač je zde modul BT201, který
má zabudováno opravdu mnoho funkcí a je ovládán (kromě interních tlačítek) pomocí seriového portu (UART). Kvůli toho jsem ve
stanici použil Arduino MEGA, protože má více seriových portů, než ten jeden jediný, který má UNO a který je navíc použit pro USB komunikaci s počítačem.
UNO samozřejmě použít lze, buď s knihovnou SoftwareSerial.h, nebo přes ten jeho seriový port. V tom případě se však musí před nahráním programu z USB, modul BT201
odpojit (RX, TX) a po nahrání zase připojit. Tohle však fakticky znemožňuje ladění pomocí seriového monitoru v Arduino IDE. Pokud někdo bude chtít použít knihovnu
SoftwareSerial, tak modul BT201 (alepoň u mne) měl defaultně nastavenou rychlost 115200Bd, což tato knihovna neumožňuje. Rychlost je pak třeba na něčem snížit.
Sběrnici SPI pro komunikační modul LT8920 2.4GHz je třeba zapojit podle tabulky pro UNO, která je níže ve schématu.
Chtěl jsem zachovat možnost ovládat hlasitost potenciometrem na stanici, aniž bych použil nějaký nf zesilovač připojený na sluchátkový
výstup zvukového modulu BT201. Dal jsem tedy potenciometr přímo na výkonový výstup modulu BT201. Potenciometr má trochu
netypickou hodnotu 100R (menší jsem nesehnal). Koupit se dá zde, včetně
ostatních pasivních součástek (tlumivka, kondenzátory). Reproduktor je galvanicky oddělen od jezdce potenciometru kondenzátorem 100u. Reproduktor se samozřejmě dá připojit přímo k výkonovému výstupu BT201 (piny SPK). Potenciometr, ani výstupní kondenzátor pak není potřeba a hlasitost se
reguluje pouze ovladačem.
Odrušovací člen s tlumivkou 1.5mH a kondenzátory 220n a 100u není nutný, pokud použijete kvalitní napájecí zdroj.
Zapojení ovladače je jednoduché. Na Arduino UNO je nasazený LCD shield 16 x 2 a k němu je připojen komunikační modul LT8920. V mém případě je použit LT8920 typ XY-WA, kdy
modul je připájen přímo k desce shieldu. Udělat to však lze i jinak.
Na LCD shieldu je šest tlačítek - select, left, up, down, right a reset. Reset je "natvrdo", ten programově využít nelze. Ostatní tlačítka jsou naprogramována takto:
select - krátký stisk: play / pause
select - dlouhý stisk: výběr zdroje zvuku z BT201
left - SD karta
up/down - bluetooth
right - USB flash disk
select - zpět beze změny
left - krátký stisk: o soubor zpět
left - dlouhý stisk: o složku zpět
right - krátký stisk: o soubor vpřed
right - dlouhý stisk: o složku vpřed
up - krátký stisk: zesílit hlasitost
up - dlouhý stisk: rychlý posun vpřed
down - krátký stisk: zeslabit hlasitost
down - dlouhý stisk: rychlý posun vzad
reset: reset Arduino UNO (mimo modul BT201)
Pokud přibližně minutu nebude stisknuto žádné tlačítko, zhasne podsvit displeje, kvůli šetření napájení. Při zapnutém podsvitu je odběr ovladače 170mA a při
zhasnutém necelých 50mA. Při stisku jakéhokoliv tlačítka, kromě resetu, se displej opět rozsvítí. Displej se také rozsvítí při změně skladby (souboru).
Na displeji ovladače se zobrazuje pořadí skladby, celkový počet skladeb a zbývající čas, do konce právě přehrávané skladby. Navíc i název právě přehrávaného souboru.
Názvy souborů, bývají všelijak spotfořené, jsem ze staré školy a diakritiku v názvech nemám rád. Mnohdy to dělá problémy. Displej má šířku šestnáct znaků a pokud je
název delší, zobrazí se POSLEDNÍCH šestnáct znaků z názvu. Z názvu jsou navíc vylučovány mezery, pomlčky a podobně, stejně
jako přípona MP3. Znaky diakritiky jsou nahrazovány podtržítkem. Vše se dá změnit případnou úpravou programu ovladače.
Pro modul LT8920 je použita knihovna LT8920.h.
Komunikace mezi stanicí a ovladačem je asynchronní, po odeslání pakety (dotazu) se hned nečeká na odpověď. V jiné smyčce se pak snímají požadovaná data
(pořadí, celkový počet, čas a název souboru).
Důležitý je výběr kanálu, na kterém bude komunikovat ovladač se stanicí. Wifiny, bluetooth a nevím co všechno ještě používají stejné pásmo 2.4GHz.
Zde je nastaven kanál 83 (skoro okraj pásma). U stanice a ovladače musí být kanál stejný. Kanál se nastavuje v obou zdrojácích
na tomto řádku:
#define wifiCanal 2483 - 2402
kde kanál se vypočítá výrazem: frekvence kanálu v MHz - 2402
Poznámka na závěr
Modul BT201 má mnoho dalších funkcí a celý tento "projekt" by šel dál rozvíjet. Chtělo by to jiný ovladač, s více tlačítky a možná i většímm displejem.
Modul umožňuje nahrávání z mikrofonu, místo přímého výstupu do reproduktoru, se může ke sluchátkovému výstupu modulu připojit stereofonnní zesilovač, atd,
atd... Snad někdy příště :-).
Programy zdarma, Arduino návody, tratě pro Open Rails a MSTS.