Riprodurre file Audio con Arduino Uno, senza shield

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:

  • 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)
Una volta ottenuto il file copiatelo nella root della scheda micro SD (non so dirvi se ci sono dei limiti di capacità, io ne uso una da 2gb formattata in FAT32).
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!

Segui Daniele Alberti su Google+ per rimanere sempre aggiornato su nuovi post!

15 commenti:

  1. Spettacolo!, appena riesco faccio il medesimo tuo test!

    RispondiElimina
  2. ciao 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.
    sai dove potrebbe essere il problema?
    grazie.

    RispondiElimina
    Risposte
    1. Ciao, il problema potrebbe essere la traccia audio, assicurati di averla convertita in modo corretto, fammi sapere!

      Elimina
  3. ho provato svariate volte ad rieseguire la procedura ma niente, ho notato una cosa pero il formato audio è AIFF, è normale?

    RispondiElimina
  4. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  5. Ora funziona perfettamente!!!!!
    grazie per il supporto.

    RispondiElimina
  6. Complimenti per il tutorial, spiegato davvero molto bene.
    Ho 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.

    RispondiElimina
  7. Si nessun problema, si collega tutto nello stesso modo. Ciao!

    RispondiElimina
    Risposte
    1. Grazie però il mio adattatore ha solo 6 pin, sai quale è quello che posso trascurare?

      Elimina
  8. ho 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.
    quando 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 !!!

    RispondiElimina
  9. Scusami Daniele dimenticavo di ringraziarti !...
    Gianni (giovanni)

    RispondiElimina
  10. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  11. Qualcuno ha provato la riproduzione dei fonemi con questo metodo?

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...