Aggiungiamo il sonoro al nostro impianto: Decoder DCC con modulo MP3
Molti plastici ferroviari, casalinghi e/o di associazioni, sono delle vere e proprie realtà in miniatura, ricchi di particolari e realizzazioni di grande realismo. Nell' ammirarli anche staticamente, o magari durante un lento procedere di un treno regionale o il transito di un intercity, tutti ci immaginiamo di sentire una campanella leopolder, un annuncio in stazione, insomma... manca solo la parola! 😉
Ebbene, la tecnologia oggi ci permette di aggiungere una caratteristica al già tanto ricercato realismo dei plastici ferroviari: il sonoro. Qualche anno fa notai sul sito di Luca Dentella (www.lucadentella.it), noto divulgatore di tecnologia ma anche appassionato di ferrovie in miniatura, un piccolo ed economico player mp3 che potrebbe assolvere allo scopo, il JQ6500-16P.
Il modulo alloggia il chip principale (che è il vero e proprio player, il JQ6500 appunto) più un piccolo aplificatore audio. Esso inoltre è dotato di 5 ingressi cui poter collegare altrettanti pulsanti per permettere al riproduzione immediata di 5 file audio. La memoria è 2Mbyte. Qui potete trovare un'altra pagina (in inglese) con un'ampia descrizione del modulo.
Montanto una breadboard quindi, come quella indicato in figura, alimentando il tutto a 5V,
si può tranquillamente realizzare un circuito che permete di avere alla pressione di un tasto, la riproduzione della campanella di un passaggio a livello, un annuncio in stazione o semplicemente il fischio di una loco in partenza. Con un po' di manualità con l' elettronica lo si può anche interfacciare con un tipico sensore di presenza, barriera infrarossi o pedale di quelli usati sui plastici ferroviari. Il limite è che si possono gestire soltanto 5 suoni da riprodurre.
Sul come caricare i file sul modulo, vi rimando ai molteplici video che si trovano in rete, in pratica collegado il JQ6500 ad una porta USB del PC tramite il connettore micro-usb on board, questo lo vede come una lettore CD. Lanciando l' applicativo MusicDownload.exe è possibile caricare files i file audio. Per associare correttamente i files ai tasti, è bene nominare questi in modo che rispettino la corretta associazione con essi, quindi i nomi saranno 001.mp3, 002.mp3 e così via...
C' è da far notare che alcuni store cinesi vendono i moduli JQ6500 senza il software precaricato: l' ottimo Luca ha redatto un articolo (link) molto chiaro sul come recuperare questi moduli, ma anche per questo si trovano molte guide in rete.
Interfaccia DCC con Arduino
Fin qui abbiamo descritto un modulo mp3 che permette di riprodurre suoni alla pressione di alcuni tasti. Il JQ6500 ha una interfaccia seriale che permette la gestione di tutte le funzioni tipiche di un player mp3, ovvero start/stop/pausa, gestione del volume, avanzamento rapido, scelta del brano da ripeodurre etc. E come accade nel mondo dei maker, per tali funzioni sono state sviluppate librerie per la gestione del modulo tramite Arduino che rendono semplice la fruizione di tali funzioni.
La libreria che ho utilizzato è
JQ6500_Serial,
qui potete trovare una più che esauriente descrizione della stessa.
Dopo aver quindi sviluppato i decoder per accessori presentati negli articoli precedenti, è stato piuttosto semplice derivare anche lo sketch adatto per realizzare un decoder capace di gestire questo modulo mp3 per poter replicare i suoni tramite comandi DCC. Lo sketch, come i decoder precedenti, fa uso della libreria NmraDcc.h.
In pratica, realizzando il circuito indicato nello schema (figura successiva) e con lo sketch adatto, il decoder riproduce i suoni precaricati quando dalla centralina DCC vengono inviati comandi per accessori. Il decoder avrà un indirizzo base come un decoder per scambi o segnali, e in base al comando dritto/deviato, manderà in riproduzione i file corrispondente. Un esempio forse sarà più esplicito, se come indirizzo base abbiamo "1" avremo:
Indirizzo
Scambio |
Comando |
File riprodotto |
1 |
dritto |
001.mp3 |
deviato |
002.mp3 |
2 |
dritto |
003.mp3 |
deviato |
004.mp3 |
3 |
dritto |
005.mp3 |
deviato |
006.mp3 |
4 |
dritto |
007.mp3 |
deviato |
008.mp3 |
5 |
dritto |
009.mp3 |
deviato |
010.mp3 |
6 |
dritto |
011.mp3 |
deviato |
012.mp3 |
7 |
dritto |
013.mp3 |
deviato |
014.mp3 |
8 |
dritto |
015.mp3 |
deviato |
016.mp3 |
Il decoder non ha un limite per il numero di file da caricare, esso all'
accensione identifica il numero dei file memorizzati nel modulo JQ6500 e
da lì associa gli indirizzi ai file, in pratica se abbiamo memorizzato 8
files, da 001 a 008, il decoder risponderà agli indirizzi da 1 a 4
secondo la tabella precedente, se invece abbiamo caricato 12 files (da
001 a 012) esso risponderà con indirizzi da 1 a 6 e così via... Il
limite è la memoria del modulo JQ6500 che, ricordo, è di 2Mbye.
Lo schema del decoder è il seguente:
Il tasto S1 permette di programmare l' indirizzo base: premendo il pulsante il modulo memorizzerà l' l'ultimo indirizzo ricevuto dalla centrale come indirizzo base da cui iniziare ad associare i suoni. Durante la fase di "ascolto" il led sul pin D13 di Arduino lampeggerà. Premere reset quando si intende memorizzare l' indirizzo in EEPROM.
Il modulo ha di default il volume regolato al massimo, il decoder può cambiare tale valore tramite una CV. La libreria NmraDcc.h infatti permette la gestione delle CV, lo sketch utilizza questa funzionalità per poter regolare il volume: inserendo un valore da 1 a 30 nella CV numero 10 è possibile regolare il volume del decoder.
I comandi funzionano in modo "on/off" per la riproduzione dei suoni, ciò significa che inviando un comando il suono corrispondente verrà riprodotto, inviando lo stesso comando durante l' esecuzione del file, questo verrà interrotto. Durante la riproduzione di un file tutti i comandi ricevuti, ad eccezione dello stesso comando per interrompere la riproduzione, verranno ignorati.
All' avvio il decoder mostra sulla seriale tutti i parametri:
Viene riportato il nome del file, ora e data caricato su Arduino (per rintracciare la versione SW), se la seriale di servizio è attiva, se è stato programmato un indirizzo, altrimenti di default è "1", il numero di file memorizzati sul modulo, e il range di indirizzi cui essi fanno riferimento per essere riprodotti, infine il valore del volume.
Funzionamento in analogico
Per riprodurre i suoni non è necessario disporre di una centralina DCC, dallo schema si vede che sono stati previsti punti di collegamento per i pin D3, D4, D5, D6, D7, D10, D11, D12. Tali pin corrispondono all' esecuzione dei files da 001 a 008 nella stessa modalità descritta in precedenza, ovvero portando a GND uno dei pin elencati con un pulsante o sensore di presenza, verrà riprodotto il suono associato; se durante la riproduzione verrà nuovamente portato a GND lo stesso pin il suono verrà interrotto.
PIN |
File riprodotto |
D3 |
001.mp3 |
D4 |
002.mp3 |
D5 |
003.mp3 |
D6 |
004.mp3 |
D7 |
005.mp3 |
D10 |
006.mp3 |
D11 |
007.mp3 |
D12 |
008.mp3 |
Attenzione: occorre agire in modalità "pulsante" ovvero con un impulso della durata minore di 1,5 secondi - tale parametro è regolabile nello sketch.
Il limite è dettato in questo caso dal numero di pin di Arduino Nano: nello sketch sono usati i soli pin digitali D3-D12 (D2 è utilizzato per ricevere i dati DCC, D8 e D9 sono usati per comunicare con il JQ6500, D13 pilota il led di stato), ma si possono facilmente aggiungere anche i pin analogici per aggiungere altri suoni da riprodurre.
Anche per questo progetto, come di consueto, ho realizzato un PCB dal mio fornitore cinese. Le piastre sono arrivate in 4 settimane e sono di ottima qualità:
Infine, voglio segnalare un software gratuito, open-source e multipiattaforma che ho usato per generare i files audio: si tratta di Audacity© (https://www.audacityteam.org/), un programma che in pratica si mette in "ascolto" di ciò che viene riprodotto dagli altoparlanti o cuffia del PC per poi essere modificato, tagliato e quindi salvato in formato mp3.
A presto! 😉
- antogar
DOWNLOAD SKETCH PER ARDUINO
Per chi fosse interessato ai files Gerber per la realizzazione del PCB ne faccia richiesta tramite il modulo di contatto del blog in Home Page, riceverete un link ai files necessari.