Sketch per modulo XY5300 Catalex

Modulo XY5300 Catalex

The XY5300 module used in this sketch

Il modulo XY5300 della Catalex e l’Arduino MEGA

La parte audio del sistema domotico è cambiata nel tempo. Nella prima implementazione usavo la scheda WaveShield della Adafruit. Poi ho utilizzato il modulo WTV020-SD-16P che mi ha permesso di semplificare l’hardware e il software, sebbene macchinoso nella creazione dei file audio da passargli. Poi, quando la scheda SD inserita nel modulo cominciò a rovinarsi, mi resi conto del tempo passato. Il modulo accettava schede SD fino a 1GB. Ormai introvabili. Questo, giocoforza, mi ha indotto a cercare altre soluzioni, trovando nella scheda CATALEX XY5300 una valida alternativa. Tale scheda accetta fino a 32GB di memoria SDHC e suona direttamente i file MP3 senza bisogno di conversioni varie tra formati audio. Inoltre la qualità audio è decisamente superiore a quella delle schede utilizzate in precedenza.

Lo sketch per modulo XY5300

Per utilizzarla, ho dovuto trasformare lo sketch di esempio della scheda XY5300 in modo che i file sonori MP3 siano suonati senza che il programma principale si fermi. In altre parole ho modificato lo sketch per non utilizzare delay o cicli potenzialmente infiniti per leggere i dati sulla porta seriale.
Questo modo di operare ha reso lo sketch semplice da utilizzare all’interno di qualsiasi altro programma. Pensando che possa essere utile anche ad altri, l’idea di condividerlo.

La sezione software di gestione audio del sistema domotico, estratta in uno sketch ad uso generale per il modulo XY5300

Chiunque abbia già un bel programma complesso che non può, o non vuole, stravolgerlo per dargli funzionalità aggiuntive come “messaggi vocali” o “musicali” può fare un merge tra il suo e lo sketch scaricabile dal link in questa pagina. In altre parole, per dare le potenzialità della scheda xy5300 al proprio sketch, è sufficiente aggiungere le variabili, le routine dello sketch allegato e nei punti del programma dove si desidera far suonare file MP3 mettere l’istruzione:

XY5300_Play_MP3_file(<MP3_File_number>);

Come accennato il file MP3 verrà suonato per intero, mentre il vostro sketch proseguirà la sua esecuzione. Tuttavia una nuova istruzione, che arrivi prima che il precedente file mp3 sia finito, lo interromperà. Se tale comportamento non fosse desiderato, è possibile da programma aspettare che la variabile XY5300_Is_Playing vada a zero prima di far suonare un nuovo file MP3.

Tutto questo funziona grazie all’istruzione XY5300_Engine(); da mettere nel loop principale e all’istruzione xy5300_sendCommand(CMD_SEL_DEV,DEV_TF);  da mettere nel void setup(). La prima istruzione permette al sistema di lanciare periodicamente le routine di controllo dei dati in transito sulla porta seriale per aggiornare la citata variabile XY5300_Is_Playing. La seconda, necessaria anche questa, istruisce la scheda all’uso della memoria SD.

Per provare lo sketch:

Se si desidera testare questo programma, caricate undici file mp3 in una cartella nominata 01 in una scheda SD. Inserite la scheda SD nel modulo XY5300, collegatela ad un arduino in cui avete caricato lo sketch che trovate in questa pagina. Se avete meno di 11 MP3, modificate le righe 132 e 133 sostituendo il numero 10 con il quanti file avete meno uno. Potete chiamare i vostri file come volete, ma devono essere prefisati da un numero nella forma allineato a destra e giustificato con zeri ad esempio “001 canzone1.mp3”. Ultima considerazione, il programma scaricabile è configurato per l’Arduino Mega. Se utilizzate schede diverse, decommentate le righe da 78 a 81.

Licenza

Questo sketch è distribuito in licenza Postcardware (o cardware), ovvero liberamente utilizzabile a condizione morale che mi spediate una cartolina postale (o una email) dal punto dell’universo in cui siete e che citate il link di questa pagine e autore nei commenti del programma.

Download sketch e alcuni file MP3 di prova