MP3 přehrávač a bluetooth s dálkovým ovladačem

pro Arduino
     

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.

moduly

Stanice - verze s STM8S103F3

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.

moduly

stáhnout toto schéma v PDF

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.

Zdrojový kod stanice (Arduino MEGA) stáhnout
aktualizováno 5.3.2025         

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 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.

moduly
stáhnout toto schéma v PDF
Zdrojový kod ovladač (Arduino UNO) stáhnout
aktualizováno 18.4.2025         

Co je potřeba:

Moduly pro stanici: Moduly pro ovladadač:
Software:

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ě :-).



Vzkazník - dotazy, názory, připominky, hlášení chyb, atd:

   E-mail nebude nikde zveřejněn, uveďte jej, pouze pokud si přejete odpověď.

Programy zdarma, Arduino návody, tratě pro Open Rails a MSTS.

(c) 2024 iisivak.xf.cz