DCC Audio dekodér

Při procházení stránek Geoffa Bunzy jsem narazil na zapojení označené SMA21 osazené audio modulem DF Player. Původní zapojení a program byl určen pro vestavbu do vagónu H0. Jelikož do mého vagónu velikosti N tato sestava určitě prostorově nevejde, napadlo mne upravit zapojení a program pro použití jako dekodéru příslušenství. S upraveným programem lze pomocí jediné adresy příslušenství spouštět dva hudební soubory. Dekodér obsadí 29 po sobě jdoucích adres, lze tak spouštět až 58 definovaných klipů. Pokud se rozhodnete použít přehrávání náhodných klipů, lze pak podle dokumentace využít až 2999 klipů. Hlášení lze přehrát buď přepnutím adresy příslušenství, nebo je možné přehrávání hlášení spínat uzemněním vstupu Arduina (např. detekcí průjezdu soupravy). Dekodér vždy přehrává celý soubor. Pokud je v průběhu přehrávání poslán dekodéru příkaz k přehrávání dalšího souboru, je tento povel ignorován. Arduino si na vstupu hlídá, zda je přehrávač zaneprázdněn (výstup BUSY z DF Playeru), a pokud je soubor přehráván, nedovolí přehrávání jiného. Výstup přehrávače BUSY je dost pomalý, proto je tento výstup programově ošetřen tak, aby nedocházelo k opakovanému spouštění souboru.

Deska je navržena pro 3,3V verzi Arduina Pro mini. Konverzi signálů mezi moduly Arduina a DF playeru tak lze vypustit a deska je jednodušší. Konvertován je pouze DCC signál. Funkcím dekodéru pro spouštění přehrávání jsou přiřazeny piny D10 a D11. Využil jsem volné místo na desce, a pro další využití jsem vyvedl další vstupy (D6, D7, D8, D9, D12) a výstup (D13) Arduina. V programu jsou těmto vstupům přiřazeny zvukové soubory, které lze spouštět přímo uzemněním vstupu (pro použití i bez digitálního ovládání). Na pinu D13 je integrovaná LED, a proto je tento pin použit jako výstup, který signalizuje stav přehrávání.

I když je v datovém listu DF playeru deklarováno napájecí napětí od 3,2 do 5,0V, pod 4,2V se mi nepodařilo s ním spolehlivě pracovat (asi ne moc povedený klon). Zachoval jsem proto napájení modulu DF playeru na 5V. Před nahráváním programu je nutné nastavit v Arduino IDE správnou verzi desky Pro Mini 3V3/8MHz.

Program používá knihovnu "DFPlayer_Mini_Mp3.h" Ta vyžaduje umístění souborů na SD kartě v adresáři "mp3" a názvy souborů v něm "0001.mp3, 0002.mp3, atd".

Tento popis je pro skeč "AccDec_Audio_Only_3V3", který je pro příslušenství. Druhý skeč "Dec_Audio_Only_3V3" je pro funkce.

V programu už jsou změny větší. Jelikož jsem vycházel z programu pro funkce, zachoval jsem počet 29-ti funkcí (F0-F28). Dekodér proto obsadí 29 po sobě jdoucích adres. Počáteční adresa dekodéru se nastavuje do konstanty "#define Accessory_Address" (zde 40) a tato adresa bude odpovídat funkci F0. Nastavení pro funkci F0 začíná na řádku 105 a lze volit ze čtyř možností :

6 - přehrát definovaný soubor, 

7 - přehrát náhodný soubor, 

8 - spustit přehrávání definovaného souboru uzemněním vstupu D10

9 - spustit přehrávání náhodného souboru uzemněním vstupu D11 

Tady se pozastavím. Logicky použitelné je nastavení každého z režimů 7, 8 a 9 pouze pro jedinou funkci (jeden režim = jedna adresa). U režimu 7 se přehrává náhodný soubor, takže není potřebné zvolit tento režim pro více adres. U režimů 8 a 9, které jsou spouštěny uzemněním vstupů Arduina, může být každému režimu zase přidělen pouze jeden vstup. Nelze tedy použít tyto režimy vícekrát, a jelikož jako programátor stojím za bačkoru, není tato možnost nijak softwarově ošetřena. Proto si budete sami muset ohlídat použití režimů 8 a 9 pouze jedenkrát. 

Na řádku 106 zvolíme v rozsahu 0 - 30 hlasitost přehrávaného souboru. Pro režimy 6 a 8 zvolíme na řádku 107 číslo přehrávaného souboru "1" pro soubor "0001.mp3". S použitím jediné adresy lze v režimu 6 přehrávat dva soubory. Další řádek 108 je proto určen pouze pro režim 6 a slouží k zadání čísla druhého přehrávaného souboru. Nastavení na dalším řádku není použito. Na dalších řádcích se nastavení opakují pro následné adresy a jejich funkce.

Pro náhodná přehrávání souborů (režimy 7 a 9) se počet souborů (skutečně umístěných na SD kartě) zadává na řádku 31 do konstanty  "NUM_CLIPS_RANDOM" (maximální limit jsem nezkoušel, ale podle dokumentace by mělo jít přehrát soubory s čísly 0-2999).

Nepovažuji se za programátora, jen si hraji s Arduinem a DFPlayerem, proto všechny úpravy původního programu berte s rezervou.

Kamarád Jarek nebyl spokojen s možnostmi dekodéru, protože po nahrání programu už uživatelsky nebylo možné měnit hodnoty. Zapracoval jsem proto do programu ukládání hodnot pomocí programování #CV. Celý program byl přepsán, proto následující programy již v některých parametrech neodpovídají předchozímu popisu. Programy jsou proto uloženy v archivu (.zip) i s dokumentací (PDF) o nastavení jednotlivých #CV.

Poslední editace 26. 4. 2021