«

»

Dic 11

Stampa Articolo

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.

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/dfplayer-mini-mp3.html

2 comments

  1. Gaetano

    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. Mauro Alfieri

      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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>