Ciao!
In questo post spremeremo a fondo il nostro Arduino Uno, facendogli riprodurre file audio senza neanche uno shield!
Infatti sfruttando solo la capacità di calcolo del piccolo Atmega328 sarà possibile leggere una traccia da una scheda SD e riprodurla da un piccolo speaker.
Ovviamente date le prestazioni del microcontrollore la qualità non potrà essere elevatissima, ma è comunque molto buona (più di quanto mi aspettavo!) e validissima per svariate applicazioni.
Ecco un esempio:
Questo è lo schema da realizzare, come potete vedere è diviso in 2 blocchi (le due breadboard), una contiene la parte di lettura dalla scheda SD, nell'altra invece c'è la parte di amplificazione del segnale audio.
Ed ecco lo sketch da caricare, è lo sketch di esempio che trovate anche sotto "File", "Esempi", "TMRpcm", "music" che ho leggermente modificato e tradotto.
Prima di poter utilizzare lo sketch dovrete scaricare ed installare (copiando nella cartella "Libraries" del vostro IDE) questa libreria.
Ora non vi resta che caricare nella SD un brano che dovrà essere convertito per avere caratteristiche ben precise.
Per fare ciò è possibile utilizzare un software per l'audio editing che si chiama Audacity.
Il programma è open source, ed è scaricabile da qui.
Per modificare il brano che volete sentire con Arduino aprite Audacity, trascinate all'interno il vostro file (mp3 o altro) ed eseguite i seguenti step:
Inserite la card nell'adattatore collegato ad Arduino, alimentatelo (la musica partirà!) ed avviate il serial monitor (impostate la velocità nel serial monitor a 115200 baud).
Come potete vedere in fondo allo sketch ci sono dei comandi che potete utilizzare anche mentre il brano è in esecuzione (ad esempio con il "-" abbasseremo il volume, con il "=" lo aumenteremo, aumentandolo troppo il segnale si distorcerà).
Per maggiori informazioni vi rimando alla Wiki di questa fantastica libreria.
Per domande e chiarimenti su questo tutorial lasciate un commento qui sotto,
ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
In questo post spremeremo a fondo il nostro Arduino Uno, facendogli riprodurre file audio senza neanche uno shield!
Infatti sfruttando solo la capacità di calcolo del piccolo Atmega328 sarà possibile leggere una traccia da una scheda SD e riprodurla da un piccolo speaker.
Ovviamente date le prestazioni del microcontrollore la qualità non potrà essere elevatissima, ma è comunque molto buona (più di quanto mi aspettavo!) e validissima per svariate applicazioni.
Ecco un esempio:
Questo è lo schema da realizzare, come potete vedere è diviso in 2 blocchi (le due breadboard), una contiene la parte di lettura dalla scheda SD, nell'altra invece c'è la parte di amplificazione del segnale audio.
Prima di poter utilizzare lo sketch dovrete scaricare ed installare (copiando nella cartella "Libraries" del vostro IDE) questa libreria.
Ora non vi resta che caricare nella SD un brano che dovrà essere convertito per avere caratteristiche ben precise.
Per fare ciò è possibile utilizzare un software per l'audio editing che si chiama Audacity.
Il programma è open source, ed è scaricabile da qui.
Per modificare il brano che volete sentire con Arduino aprite Audacity, trascinate all'interno il vostro file (mp3 o altro) ed eseguite i seguenti step:
- Cliccate sul menu "tracce" poi "da stereo a mono"
- In basso cambiate la "frequenza progetto", sono utilizzabili le frequenze 11025, 16000, 22050 o 32000 Hz
- ora salvate il brano cliccando su "file", "esporta audio"
- Salva come: "Altri file non compressi"
- Intestazione: "Wav"
- Codifica: "Unsigned 8-bit PCM"
- Nome file: "music" (non deve avere nessuna estensione)
Inserite la card nell'adattatore collegato ad Arduino, alimentatelo (la musica partirà!) ed avviate il serial monitor (impostate la velocità nel serial monitor a 115200 baud).
Come potete vedere in fondo allo sketch ci sono dei comandi che potete utilizzare anche mentre il brano è in esecuzione (ad esempio con il "-" abbasseremo il volume, con il "=" lo aumenteremo, aumentandolo troppo il segnale si distorcerà).
Per maggiori informazioni vi rimando alla Wiki di questa fantastica libreria.
Per domande e chiarimenti su questo tutorial lasciate un commento qui sotto,
ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Spettacolo!, appena riesco faccio il medesimo tuo test!
RispondiEliminaGrazie mille!
Eliminaciao Daniele, oggi ho provato a fare questo progetto ma non funziona correttamente, la scheda la legge, ma il led lampeggia fisso a circa 1 Hz e non c'è nessun suono.
RispondiEliminasai dove potrebbe essere il problema?
grazie.
Ciao, il problema potrebbe essere la traccia audio, assicurati di averla convertita in modo corretto, fammi sapere!
Eliminaho provato svariate volte ad rieseguire la procedura ma niente, ho notato una cosa pero il formato audio è AIFF, è normale?
RispondiEliminaNo devi salvarlo in wav
RispondiEliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaOra funziona perfettamente!!!!!
RispondiEliminagrazie per il supporto.
Complimenti per il tutorial, spiegato davvero molto bene.
RispondiEliminaHo solo una domanda, io al posto della SD ho la microSD e il relativo adattatore (con pin CS,SCK,MOSI,MISO,VCC e GND) mi sai dire se il tutto funziona nello stesso modo e se si come si collega? Grazie.
Si nessun problema, si collega tutto nello stesso modo. Ciao!
RispondiEliminaGrazie però il mio adattatore ha solo 6 pin, sai quale è quello che posso trascurare?
Eliminaho appena comprato un paio di schede io ho un programmino che fa ruotare un motore dc avanti ed indietro con un ponte h e due interruttori.
RispondiEliminaquando premo e tengo premuto il primo interruttore il motorino gira in un senso e si ferma appena rilascio con il secondo itterruttore ottengo lo stesso risultato nell'altra direzione. Mi servirebbe che il tasto premuto produca anche la riproduzione di un file sulla sd omeglio due file musicali chiamati dai due interruttori quando premuti...non so se sono stato chiaro spero che qualcuno mi aiuti se serve posso mandarvi lo sketch attuale (che faceva uso di una scheda audio non più funzinante e fuori produzione) grazie molte !!!
Scusami Daniele dimenticavo di ringraziarti !...
RispondiEliminaGianni (giovanni)
Questo commento è stato eliminato dall'autore.
RispondiEliminaQualcuno ha provato la riproduzione dei fonemi con questo metodo?
RispondiEliminaBuongiorno Daniele, mi sto cimentando a costruire il riproduttore per montarlo su un presepe.
RispondiEliminaQuesta è la prima volta che uso Arduino e che mi avventuro in queste cose, ho nozioni base di elettronica (so distinguere una resistenza da un diodo e so cos'è un condensatore) però non ci capisco un H di programmazione.
Sul tuo circuito è possibile aggiungere dei pulsanti tipo Play - Stop - traccia successiva - Traccia precedente e al limite il volume + / - ?
Ti ringrazio.
Ciao Daniele e complimenti! E'possibile modificare il codice in modo da far riprodurre ad Arduino dei file (sempre da SD) in base a determinati eventi e non intendo pressione di pulsanti bensì un sensore che rileva un movimento ad esempio...?
RispondiEliminaGrazie!
Ciao Daniele, vorrei realizzare il tuo circuito, ma non riesco a capire cosa collega il ponticello nero posto tra la resistenza R3 e il condensatore C1.
RispondiEliminaGrazie
Ciao Giovanni,
Eliminaquel ponticello é un errore, lo rimuoveró il prima possibile.
Grazie per la segnalazione!
Ciao Daniele, complimenti per il progetto!
RispondiEliminaMi chiamo Antonio e da poco tempo mi sono avvicinato al mondo di Arduino.
Ho caricato il tuo sketch ma mi da errore!!!
Te lo posto:
27:22: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
tmrpcm.play("music");
Riusciresti ad aiutarmi?
Grazie
Sto avendo il tuo stesso problema ma non riesco a risolverlo
RispondiEliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaciao, ho sotto mano uno di quegli amplificatori con LM386 (questo per capirsi : https://www.amazon.it/Denash-Moduli-amplificatori-guadagna-Scheda/dp/B07WRS76K2/ref=sr_1_3?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=lm386&qid=1588984096&sr=8-3).
RispondiEliminaRiesco comunque ad utilizzarlo per riprodurre audio con Arduino? se si, mi mostri come sarebbe lo schema elettrico? grazie
Ciao, complimenti per la dimostrazione... Una domanda è possibile attivare più messaggi vocali uno ad ogni ingresso?
RispondiEliminaCiao Daniele volevo sapere se potevi mandarmi la lista dei componenti che hai utilizzato perché dal video non riesco a capirlo bene grazie
RispondiEliminaCiao Daniele volevo sapere se potevi mandarmi la lista dei componenti che hai utilizzato perché dal video non riesco a capirlo bene grazie
RispondiEliminaCiao Daniele volevo sapere se potevi mandarmi la lista dei componenti che hai utilizzato perché dal video non riesco a capirlo bene grazie
RispondiEliminaCiao Daniele senti volevo sapere se potevi darmi una lista di tuitti i componenti perché dal video non capisco molto bene tutto quello che ci vuole?
RispondiEliminaCiao Daniele,
RispondiEliminacomplimenti per questo grande lavoro
Ho provato a riprodurlo ma mi fa da stazione radio ovvero untercetta le frequenze in giro e me le fa sentire. Non riesco a capire qualle sarebbe il problema (legge il contenuto della scheda SD come me lo fa sapre la seriale di arduino ma non me lo fa sentire tramite speaker) avresti qualche suggerimento !?!
Cordialmente
Carles