Con pochi euro è possibile acquistare un piccolo lettore mp3 che possiamo pilotare da Arduino e, collegato ad un altoparlante, consentire ai nostri robot di pronunciare frasi, emettere suoni o suonare brani, purché registrati in formato mp3 e caricati sul una microsd.
Per alimentare il lettore il pin VCC dovrà essere collegato al +5V di Arduino, e GND al GND di Arduino. Non vi preoccupate se, pur alimentando il lettore nessun suo led si illumina, perché ciò accade solo quando un brano è in riproduzione.
SPK 1 ed SPK 2 e vanno collegati alle estremità di un piccolo (max 3 Watt) altoparlante ed infine RX e TX, rispettivamente collegati ai pin 4 e 2 di Arduino, consentono di avviare o bloccare l'esecuzione dei brani.
Il potenziometro, che permette di selezionare il brano da riprodurre, ruotando la ghiera, sarà collegato a +5V e GND alle estremità ed al pin analogico A(0) al centro.
Ora si può preparare la microSD da formattare in modalità FAT 16 o FAT 32 e di massimo 32 Giga di capienza.
Su questa possiamo caricare i brani sonori, in formato mp3, che volgiamo riprodurre rinominandoli a partire da 0001, 0002 ed a seguire però, quando diremo di riprodurre il brano non verrà riprodotto il brano 0002 ma, purtroppo, il secondo brano incollato sulla microSD, che potrebbe non essere lo 0002. Nel nostro progetto utilizzeremo solo 4 brani.
Esistono numerosi strumenti on-line, gratuiti e non, che consentono di registrare la nostra voce scaricandola in formato mp3 (ad esempio https://online-voice-recorder.com/it/ ) oppure trasformare un testo in una voce scaricabile in mp3 (ad esempio https://www.narakeet.com/ ).
Passiamo adesso a programmare Arduino usando al solito Mblock.
Per prima cosa dobbiamo aggiungere un'estensione (nuovi blocchi) e quindi da Estensioni selezionare Gestisci Estensioni.
Inserire nella casella di ricerca dfplayer ed, una volta apparsa l'estensione, tra quelle disponibili, scaricarla.
Nel menù Robot appariranno i seguenti blocchi.
Essendo 4 i brani inseriti nella microSD, dividiamo l'intervallo di valori leggibili dalla porta A0 (0-1023) in 5 intervalli, destinandoli a questo scopo:
Se la varibile p, che ospita la lettura del potenziometro
è compresa tra 0 e 203 - blocca ogni riproduzione
è compresa tra 204 e 408 - riproduce il brano 1
è compresa tra 409 e 613 - riproduce il brano 2
è compresa tra 614 e 818- riproduce il brano 3
è compresa tra 819 e 1023 - riproduce il brano 4
La varibile c funge da variabile di controllo per evitare che essendo il potenziometro fermo in una posizione riavvii sempre lo stesso brano. Nel controllo inseriamo quindi che il brano può essere riavviato se non è quello già in esecuzione.
Usiamo infine il pin 13, integrato su Arduino per accenderlo quando il brano è in riproduzione.
Al solito, dopo aver collegato in Mblock la porta seriale ed effettuato l'aggiornamento firmaware, si deve cliccare sul primo blocco ed effettuare il caricamento su Arduino, attendendo il suo completamento.
Terminato il caricamento, ruotando la ghiera de potenziometro si potranno avviare i 4 brani presenti nella mricroSD.
Immaginando un numero maggiore di brani, può essere scomodo replicare il controllo per decine di volte. Il programma può essere, in tal caso, ridotto a soli due controlli sfruttando la parte intera della divisione tra il valore proveniente dal potenziometro e l'alpiezza dell'intervallo .