DFPlayer mini mp3

DFPlayer mini mp3 è una scheda molto interessante per permettere al tuo progetto arduino di parlare o emettere musica.

DFPlayer mini mp3

Non a caso ho deciso di parlarti del DFPlayer mini mp3 in occasione del periodo di feste natalizie iniziato da qualche giorno.

Partendo da questo articolo dedicherò al prossimo Natale alcuni articoli che puoi utilizzare per addobbare la tua casa, l’albero od il presepe.

In un crescendo che, articolo dopo articolo, andrà a comporre il progetto natalizio del 2017.

Puoi acquistare il DFPlayer direttamnete dal sito robotics-3d.com

DFPlayer mini mp3 introduzione

La wiki del produttore sul DFPlayer mini mp3 è abbastanza completa ed esaustiva per permetterti di utilizzare in modo semplice il lettore mp3 proposto.

Parti dal pinout per imparare a collegare il DFPlayer mini mp3:

DFPlayer mini mp3 pinout

come vedi il mini mp3 dispone di 16 pin di connessione di cui uno per il Vcc e soli due pin Gnd.

I rimanenti servono per collegare lo speaker e dei pulsanti con cui inviare comandi al DFplayer mini per lavoare anche senza un microcontrollore.

La tabella descrittiva del produttore riporta:

DFPlayer mini mp3 pinout table

in cui per ciascun pin è definito sia la descrizione sia la modalità di funzionamento e come puoi utilizzarlo.

Le modalità di uso e funzione sono diverse e tutte descritte nella wiki indicata sopra, in questo e nei futuri articoli ti mostrerò la modalità seriale interconnessa al microcontrollore arduino e vedrai come controllarlo via seriale usando la libreria del produttore.

Collegamento del DFPlayer mini mp3

Il collegamento del DFPlayer Mini mp3 all’arduino puoi farlo seguando lo schema:

DFPlayer mini mp3 schema

in cui l’unica particolarità riguarda la resistenza da 1K tra il pin Tx del DFPlayer e quello che utilizzerai come Rx su arduino con la SoftSerial.

Preparara la SDCard per il mini mp3

Le caratteristiche che la SD card deve avere sono il filesystem ( Fat16 o Fat32 ) su Mac OS X io ho selezionato ExFat e poi puoi copiare i file MP3 che desideri.

Siccome siamo in periodo natalizio ho deciso di selezionare una serie di brani mp3 a tema natalizio:

DFPlayer mini mp3 Christmas mucis selected

ho eseguito una ricerca per il termine “Christmas” nel mio iTunes e copiato i file nella SD Card:

DFPlayer mini mp3 music copied on SDCard

numerandoli per definirne l’ordine.

Estratta la SD Card dal computer la puoi inserire nel DFPlayer mini mp3 e passare all’installazione della libreria per la comunicazione e controllo del dispositivo mp3.

Installazione della libreria per DFPlayer mini mp3

L’installazione della libreria è semplice in quanto risulta già presente nei repository ufficiali arduino.

Apri il “Gestore Librerie” e cerca DFRobotDFPlayerMini

DFPlayer mini mp3 library DFPlayer

ne troverai solo una libreria con questo nome e cliccando su “Installa” procedi all’installazione della versione più aggiornata:

DFPlayer mini mp3 Library installed

Ora puoi provare il tuo primo sketch partendo dall’esempio proposto dal produttore.

Sketch di esempio del DFPlayer mini mp3

Ecco lo sketch demo che potrai usare per il primo test del DFPlayer:

/***************************************************
DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/index.php?route=product/product&product_id=1121>
 
 ***************************************************
 This example shows the basic function of library for DFPlayer.
 
 Created 2016-12-07
 By [Angelo qiao](Angelo.qiao@dfrobot.com)
 
 GNU Lesser General Public License.
 See <http://www.gnu.org/licenses/> for details.
 All above must be included in any redistribution
 ****************************************************/

/***********Notice and Trouble shooting***************
 1.Connection and Diagram can be found here
 <https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
 2.This code is tested on Arduino Uno, Leonardo, Mega boards.
 ****************************************************/

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(10);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

in questo primo articolo non descriverò il codice che è ampiamente commentato dall’autore stesso della demo.

Nei prossimi articoli descriverò lo sketch, come sempre, per indicarti le motivazioni e le scelte eseguite per i progetti di cui leggerai.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/dfplayer-mini-mp3.html

8 comments

Skip to comment form

    • Gaetano on 24 febbraio 2018 at 15:59
    • Reply

    buongiorno Mauro, mi chiamo Gaetano, ho trovato l’articolo sul dfplayer mini molto interessante, e avendo appunto due shield di questo prodotto in casa ho deciso di realizzare il tuo circuito e relativo programma. Purtroppo ho immediatamente riscontrato un problema, cioè libreria dfrobotplayer mini non valida. Ho eseguito il download dalla gestione librerie quindi da ide, ma purtroppo ho riscontrato questo problema. Dove sbaglio? Hai una possibile soluzione?
    Grazie aticipatamente, Gaetano.

    1. Ciao Gaetano,
      cosa intendi per libreria non valida?
      Io uso regolarmente la libreria DFPlayer che ho descritto nell’articolo sull’IDE 1.8.5 senza problemi.

    • Marco on 24 maggio 2018 at 15:58
    • Reply

    Ciao Mauro, l’articolo è ben scritto e molto chiaro, complimenti!
    Vorrei farti una domanda che può sembrare stupida: mi potresti indicare che tipo di altoparlante mi consiglieresti di usare?

    1. Ciao Marco,
      le domande sono tutt’altro che stupide, io ho usato un altoparlante da Pc 8ohm ma vorrei provarlo presto anche con qualcosa di più piccolo tipo quelli delle cuffie o simili.

        • Marco on 31 maggio 2018 at 21:07
        • Reply

        Grazie mille per la celere risposta.
        Ho un’altra domanda da porti:
        ho seguito la tua guida alla perfezione ma, con l’altoparlante che sto usando da 4 ohm, una volta avviato lo sketch, durante la sincronizzazione di arduino con dfplayer, l’altoparlante emette un rumore fastidioso…dopo essersi sincronizzato, cioè dopo che si è acceso il led blu sul dfplayer, l’altoparlante non emette alcun suono.
        Inoltre, sul monitor seriale esce:

        DFRobot DFPlayer Mini Demo
        Initializing DFPlayer … (May take 3~5 seconds) //qui emette il rumore fastidioso
        DFPlayer Mini online.

        dopo di che il silenzio.
        Che ne pensi? Sbaglio da qualche parte?

          • Marco on 31 maggio 2018 at 21:47
          • Reply

          Ok, dopo qualche tentativo, ho notato una cosa molto strana.
          Premetto che il problema persiste.
          Allora, se cablo l’altoparlante, quando avvio il tutto si sente questo strano rumore per 5-10 sec finche il dfplayer non è “online” tuttavia, se non cablo l’altoparlante il dfplayer si sincronizza subito, quasi istantaneamente, ovviamente senza sentire nulla perche l’altoparlante non è collegato. Non capisco il nesso.
          Perdonami per la scocciatura.
          Grazie in anticipo

          1. Ciao Marco,
            hai modo di provare anche con un altro diffusore audio ?
            Magari di impedenza differente

        1. Ciao Marco,
          il suono fastidioso non ricordo fosse emesso dal mio modello.
          Prova a controllare il volume di uscita o la corretta codifica dei brani che carichi sulla micro sd.

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.