|
V důchodu mám dost času na vymýšlení různých pitomostí, zvláště v době, kdy jinak není moc co dělat. 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
433MHz modul HC-12 připojený k seriovemu portu (UART).
Jako přehrávač je zde modul BT201, který je
rovněž ovládán (kromě interních tlačítek) pomocí seriového portu, takže tento modul lze ovládat přímo. Není tedy potřeba nic upravovat, ani překládat,
modul HC-12 se prosté připojí k příslušným pinům (viz schema níže).
Oproti předešlé verzi bezdráťáku která komunikuje ve wifi pásmu 2,4GHz, jde o velké zjednodučení, protože
na straně přehrávače ("serveru"), není žádný kontrolér a není tedy třeba ani nic programovat.
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.
Ovladač
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 HC-12. 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
(up: TF karta, down: USB, left: Bluetooth)
- 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: reset modulu BT201
- down - krátký stisk: zeslabit hlasitost
- down - dlouhý stisk: znovunačtení údajů
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 zpotfoř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 prvních osm a posledních sedm znaků z názvu. Z názvu jsou navíc vylučovány mezery, speciláni znaky a podobně, stejně
jako přípona MP3. Vše se dá změnit případnou úpravou programu ovladače.
V ladícím (DEBUG) režimu je pro seriovou komunikaci použita knihovna SoftwareSerial, která je připojena na piny 11 a 12 (RX, TX). Ve schématu naznačeno přerušovanou
čarou. Pro standartní provoz je použit hardwarový UART arduina na pinech 0 a 1 (RX, TX). Během nahrávání programu z počítače je nutno mít tyto piny odpojené, protože jsou
zároveň použity i pro komunikaci s počítačem. Více seriových linek totiž arduino UNO nemá.
Pásmo 433MHz je u modulu HC-12 rozděleno na 100 kanálů s šířkou 400kHz (433.4MHz - 473.0MHz). Ovladač i stanice musí pracovat na stejném kanálu a při stejné přenosové rychlosti..
Defaultně je nastaven první kanál, přenosová ryhlost 9600Bd a vysílací výkon 100mW (maximální). K nastavení slouží pin SET na modulu, kdy při logické
nule přijímá řídící AT příkazy, viz manuál. Při logické jedničce, nebo pokud tento pin nebude připojen, posílá/přjímá data
ze seriové linky z/do éteru. Při vysílacím výkonu 100mW má ovladač velký dosah, až stovky metrů. V případě tohoto použití je zbytečný a je dobré výkon snížit.
K nastavení modulu HC-12 můžete použít například tento malý program Toma Heylena. Zapojte ovladač podle schématu výše, pro ladicí režim
(RX, TX na piny 11 a 12) a nahrajte jej do Arduina. Aby se odeslané příkazy staly platnými a nahrály se do flash, je nutno pin SET nahodit do jedničky, než se odpojí napájení.
Alespoň takhle nějak to píší v manuálu.
Zdrojový kod ovladač (Arduino UNO)
stáhnout
aktualizováno 31.8.2025
Ladící a standartní režim je určen výrazem #define DEBUG. Pokud tento výraz ve zdrojáku nebude, jedná se o standartni provoz. Pro daný režim je
vždy nutno přepojit RX a TX na příslušné piny arduina.
Komunikace mezi stanicí a ovladačem je asynchronní, po odeslání dat se hned nezpracovává odpověď. V jiné smyčce se pak snímají požadovaná data
(pořadí, celkový počet, čas a název souboru).
Co je potřeba:
|
Moduly pro stanici:
|
Moduly pro ovladadač:
|
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ě :-).
|