Shield Mp3 per Arduino

Ciao!

oggi proverò uno shield in grado di leggere i file MP3 salvati in una scheda micro sd,
questo shield senza ulteriori componenti è in grado di pilotare un altoparlante grazie ad un'uscita audio stereo da ben 3 Watt!





lo shield di cui sto parlando è quello che vedete nella foto qui sopra,
lo potete trovare in vendita sul sito di Futura elettronica al costo di una trentina di euro.

Ecco qui sotto un semplice progetto di prova realizzato con questo shield montato su un'Arduino Mega (l'ho testato e funziona tranquillamente anche su Arduino Uno).

Il funzionamento è davvero semplice, in questo caso ad ogni tasto premuto verrà riprodotto una traccia mp3 diversa.





I collegamenti da effettuare sono davvero semplici, ecco lo schema:



Ed ecco lo sketch da caricare per ricreare il l'esempio che vedete nel video, 
prima di poterlo utilizzare dovete scaricare ed installare la libreria "MP3Player"contenuta in questo archivio.


  1. #include <MP3Player.h>
  2. MP3Player playerone(3, 2);
  3. int tastouno = 6;
  4. int tastodue = 5;
  5. int tastotre = 4;
  6. void setup()
  7. {
  8.   playerone.Init();               //inizializza lo shield mp3
  9.   playerone.Volume(240);         //imposta il volume di uscita
  10.   pinMode (tastouno, INPUT_PULLUP);
  11.   pinMode (tastodue, INPUT_PULLUP);
  12.   pinMode (tastotre, INPUT_PULLUP);
  13. }
  14. void loop()
  15. {
  16.   int valuno = digitalRead (tastouno);
  17.   int valdue = digitalRead (tastodue);
  18.   int valtre = digitalRead (tastotre);
  19.   if (valuno == LOW)
  20.   {
  21.     playerone.Play("uno.mp3");            //esegui la traccia "uno.mp3" caricata nella scheda sd
  22.   }
  23.   if (valdue == LOW)
  24.   {
  25.     playerone.Play("due.mp3");            //esegui la traccia "due.mp3" caricata nella scheda sd
  26.   }
  27.   if (valtre == LOW)
  28.   {
  29.     playerone.Play("tre.mp3");            //esegui la traccia "tre.mp3" caricata nella scheda sd
  30.   }  
  31. }


Adesso dobbiamo preparare la scheda microsd dove andremo a caricare i file mp3 da riprodurre.

Per prima cosa dobbiamo inserire nella scheda microsd il file di configurazione "STA013.cfg" che trovate sempre nell'archivio che avete scaricato prima sotto "configuration file".

A questo punto sarà sufficiente prendere una scheda micro sd e caricare 3 file mp3 rinominandoli "uno.mp3", "due.mp3" e "tre.mp3",
naturalmente potete anche dargli nomi differenti, basterà cambiare il nome nello sketch!

Abbiamo finito, come al solito se avete problemi scrivetemi pure qua sotto, ciao!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

24 commenti:

  1. Salve, mi chiamo Pietro, ho trovato questo progetto interessante e l'ho realizzato. Ho seguito passo passo le istruzioni qui postate e quelle del produttore della scheda, ma quando eseguo la verifica dello sketch mi viene restiuito questo errore:
    Voce_BB8.ino:5: error: no matching function for call to MP3Player::MP3Player(int, int)'

    MP3Player playerone(3, 2);

    E altre a seguire...
    Mi pare di capire che non viene trovata la funzione
    MP3player::MP3player(int,int)
    Ma onestamente non saprei dove cercare
    Sto usando Arduino Uno r.3, scheda sd 8gb fat32
    Potrebbe darmi due dritte?
    La ringrazio anticipatamente
    Pietro

    RispondiElimina
  2. Salve Pietro,
    mi permetto di darti del tu,
    sembrerebbe un problema di libreria, hai scaricato e importato correttamente la libreria?
    inoltre al momento della realizzazione del tutorial usavo la versione 1.0.5 dell'ide, potrebbe esserci un problema di compatibilità della libreria con l'ide attuale. Prova a scaricare la versione 1.0.5 dal sito arduino.cc.
    Ciao

    RispondiElimina
    Risposte
    1. Grazie Daniele per la sollecita risposta (passo anch'io al "tu"). Ho seguito il tuo consiglio e ho installato l'IDE 1.0.5, ho rinominato il file .zip della libreria perchè sono supportati solo numeri e lettere nel nomefile. Alla verifica dello sketch ora l'errore è il seguente:
      error: 'MP3Player' does not name a type
      Viene sempre evidenziata la stringa dello sketch:
      MP3Player playerone(3,2);
      Sembra proprio che la libreria non venga caricata oppure, per quel che riesco a capire, questo MP3Player non viene impostato/definito.

      Elimina
    2. hai estratto lo zip e copiato la cartella "cytron_mp3shield-master" nella directory "libraries" di Arduino giusto?
      prova in alternativa ad includerla direttamente dall'ide di arduino, grazie alla funzione del menu.

      ciao

      Elimina
  3. Ciao Daniele, queste le prove:
    Se estraggo la cartella e la copio in "...\arduino\libraries\" carico lo sketch e lo verifico ho questo errore:
    sketch_aug17a:3: error: 'MP3Player' does not name a type
    Se provo ad inserirla dal menu sketch viene inserita una riga vuota.
    Temo che la libreria non venga letta perchè ha nel nome caratteri non standard "_" e "-".
    Con l'IDE 1.5.0 Beta, quando provo a caricare la libreria mi dice esplicitamente che non è valida. Ora installo l'IDE 1.5.8 Beta e poi a a crescere di versione e vediamo un po' che succede.
    Ti faccio sapere.
    Grazie comunque per l'interessamento.

    RispondiElimina
  4. Rieccomi.
    Sintetico: dall'IDE 1.5.8 a crescere gli errori sono i promi che Ti ho segnalato.
    Più esattamente, mi segnalava la mancanza di files ( es sdfat.h) che ho cercato nella libreria e man mano ho copiato nella cartella \crc della libreria stessa, finchè non ha ridato il primo errore che Ti ho segnalato. Misterium Arduinensis.
    PS: se rinomino la cartella della libreria per farla leggere alle versioni di IDE più vecchie, non viene accettata (se la carico nello sketch inserisce una riga vuota).

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

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

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

    RispondiElimina
  8. OK, ho risolto, ma non riesco a pubblicare lo sketch, viene eliminata parte del codice.

    RispondiElimina
    Risposte
    1. grazie mille, sembra che vengano cancellate solo le 2 librerie, se vuoi scrivile qui sotto, provvederò il prima possibile ad aggiornare il post. Grazie mille per il contributo!

      Elimina
  9. Questo commento è stato eliminato dall'autore.

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

    RispondiElimina
  11. Ciao Daniele, qui di seguito lo sketch:

    #include
    #include

    int vol = 240; //imposta il volume di uscita
    int tastouno = 6;
    int tastodue = 5;
    int tastotre = 4;

    void setup()
    {
    mp3.Init(3,2); //inizializza lo shield mp3

    pinMode (tastouno, INPUT_PULLUP);
    pinMode (tastodue, INPUT_PULLUP);
    pinMode (tastotre, INPUT_PULLUP);
    }
    void loop()
    {
    int valuno = digitalRead (tastouno);
    int valdue = digitalRead (tastodue);
    int valtre = digitalRead (tastotre);
    if (valuno == LOW)
    {
    mp3.PlayTrack("uno.mp3"); //esegui la traccia "uno.mp3" caricata nella scheda sd
    }
    if (valdue == LOW)
    {
    mp3.PlayTrack("due.mp3"); //esegui la traccia "due.mp3" caricata nella scheda sd
    }
    if (valtre == LOW)
    {
    mp3.PlayTrack("tre.mp3"); //esegui la traccia "tre.mp3" caricata nella scheda sd
    }
    }

    RispondiElimina
    Risposte
    1. cosa bisogna mettere dove c'è #include #include ???

      Elimina
  12. Questo commento è stato eliminato dall'autore.

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

    RispondiElimina
  14. Buongiorno. Io ho provato a eseguire tutto il passaggio, ma alla fine mi da questo errore:

    ________________________________________________________________________________________
    In file included from G:\Utenti\Alessio\Documenti\Arduino\Shield_MP3\Shield_MP3.ino:1:0:

    G:\Utenti\Alessio\Documenti\Arduino\libraries\Cytron_MP3Shield-master\src/MP3Player.h:12:19: fatal error: SdFat.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Errore durante la compilazione per la scheda Arduino/Genuino Uno.
    ________________________________________________________________________________________


    Ho provato anche a caricare altri Sketch e tutti gli altri funzionano.
    come devo fare ? :/
    Vi ringrazio in anticipo.

    RispondiElimina
  15. Salve,
    avrei necessità di realizzare una cosa molto simile, ma con circa 20 tasti...
    Dovrei realizzare un sistema che gestisce 20 tasti (uno per ogni regione italiana) e alla pressione di ogni tasto corrisponde un file audio relativo alla regione associata. Sto dando una mano a scuola di mio figlio (elementari) e sarebbe carino far avviare la descrizione di una regione con la voce di un alunno (20 alunni, 20 regioni, 20 file audio)

    è complicato gestire così tanti tasti da arduino?

    RispondiElimina
    Risposte
    1. Ciao, bel progetto, il problema é che con Arduino Uno non hai abbastanza porte per mettere un tasto su ogni pin, ci sono piú soluzioni per risolvere il problema, puoi collegare piú tasti ad un pin analogico di ingresso, mettendo una resistenza in serie al tasto di differente valore per ognuno, in questo modo alla pressione di un tasto vedrai un diverso valore analogico. Un altra soluzione é usare un moltiplicatore di porte tipo MCP. Fammi sapere, ciao!

      Elimina
  16. e' gia' fuori produzione, qualcosa di analogo c'e' in commercio? Mi sembra perfetto per quello che voglio fare (presepe luci/effetti sonori)

    RispondiElimina
  17. buongiorno
    ho acquistato una shield mp3 player sparkfun. ho seguito passo per passo le sue istruzioni, scaricando la libreria e utilizzando lo sketch proposto. quando compilo lo sketch mi viene fuori questo errore:

    compilation terminated.

    exit status 1
    Errore durante la compilazione per la scheda Arduino/Genuino Uno.


    come posso fare per risolverlo?

    RispondiElimina

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

Altri Post