DFPlayer mini mp3 sketch

DFPlayer mini mp3 sketch segue il precedente articolo dedicato al mini mp3 della DFRobot.

DFPlayer mini mp3 sketch

Puoi leggere il primo articolo qui: DFPlayer mini mp3 in cui trovi:

  • i collegamenti elettronici
  • lo schema, pinout, del DFPlayer
  • la libreria da scaricare

Oggi potrai comprendere lo sketch e le funzioni che ti servono per controllare con la seriale da Arduino il DFPlayer mini mp3 sketch.

Il progetto, come hai letto, fa parte di una serie di articoli natalizi che ti permetteranno di realizzare una centralina luci e musiche di natale.

Collegamenti tra Arduino e DFPlayer

Lo schema dei collegamenti, come hai letto, è identico a quello mostrato nello scorso articolo, ecco lo schema consigliato:

DFPlayer mini mp3 schema

Dal punto di vista pratico per collegare DFPlayer mini mp3 sketch puoi seguire le due foto seguenti. Lato Arduino Uno usa i pin +5v e Gnd per l’alimentazione ed i pin 10 ed 11 come Rx ed Tx:

dal lato del DFPlayer mp3 usa una resistenza da 1Kohm per adattare l’uscita a 5v del pin 11 ( Tx ) ai 3,3v

DFPlayer mini mp3 Sketch

Il primo esempio che vedi sotto è il default consigliato dalla DF Robot che ha realizzato il modulo e la libreria.

Si tratta di uno sketch demo con cui puoi provare il DFPlayer mini mp3 e la comunicazione/controllo seriale da un microcontrollore come arduino uno o simili.

Prima di compilare lo sketch verifica di aver installato sia la libreria SoftwareSerial sia la DFRobotDFPlayerMini come descritto nel precedente articolo.

/***************************************************
DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/product-1121.html>
 
 ***************************************************
 This example shows the basic function of library for DFPlayer.
 
 Created 2014-8-28
 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
 <>
 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);

static unsigned long timer;

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)) {
    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){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(15);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
  timer = millis();
}

void loop() {
  if (millis() - timer > 15000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 15 second.
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read());
  }
}

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;
  }

}

Le prime linee 22-24: includi le librerie che ti servono per comunicare con il DFPlayer Mini mp3 sketch;

linea 26: istanzia l’oggetto mySoftwareSerial passandogli i pin che userai come Rx e Tx;

linea 27: istanzia l’oggetto myDFPlayer per comunicare con il mini mp3;

linea 28: definisci la funzione printDetail() che costruirai in seguito, non condivido fino in fondo il motivo di tale scelta ma è pur vero che l’IDE arduino comprende da solo cosa fare in caso di funzioni dichiarate due volte;

linea 30: definisci la variabile di tipo long timer che userai per controllare il tempo che passa dall’inizio di ogni brano;

linea 33: imposta a 9600 baud la velocità di comunicazione verso il DFPlayer via seriale;

linea 34: imposta la comunicazione a 115200 verso il monitor seriale del computer;

linea 40: richiama il metodo begin della myDFPlayer passandole l’oggetto mySoftwareSerial per la comunicazione seriale con il mini mp3;

linee 41-44: se a comunicazione fallisce scrivi a video i messaggi delle linee 41-43 e inizia un ciclo infinito ( while true; ) per evitare che lo sketch proceda oltre;

linea 48: alla conferma della comunicazione con il lettore mp3 scrivi a video il messaggio “DFPlayer Mini online.”

linea 50: imposta il volume della musica usando il metodo volume della libreria DFPlayer;

linea 51: avvia il primo brano usando il metodo play( numero del brano );

linea 52: imposta la variabile timer con il valore in millisecondi trascorsi dall’avvio dello sketch;

linea 56: se il tempo corrente detratto del valore di timer è superiore a 15000 ( 15 secondi )  esegui le linee 57 e 58;

linea 57: reimposta il valore di timer;

linea 58: usa il metodo next() per proseguire nell’eseguzione del brano;

linea 061: se ti arrivano informazioni dalla seriale del DFPlayer mini mp3 puoi visualizzarle richiamando la funzione printDetail() che incontri alla linea 67;

linea 62: richiama la funzione printDetail() passandogli il risultato dei due metodi: myDFPlayer.readType() e myDFPlayer.read();

linea 66: è ridefinita la funzione printDetail() che accetta i due valori come type e value;

linea 67: se il primo valore, type, è

  • TimeOut
  • WrongStack
  • DFPlayerCardInserted
  • DFPlayerCardRemoved
  • DFPlayerCardOnline
  • DFPlayerPlayFinished

scrivi sul monitor seriale le frasi scritte nello sketch;

linea 90: se il valore di type è DFPlayerError dovrai valutare anche il contenuto della value che può essere:

  • Busy
  • Sleeping
  • SerialWrongStack
  • CheckSumNotMatch
  • FileIndexOut
  • FileMismatch
  • Advertise

ed in funzione della tipologia di valore restituito scrivi sul monitor seriale il messaggio corrispondente.

Come funziona il DFPlayer mini mp3 sketch

Il funzionamento del DFPlayer mini mp3 sketch è semplice: parte dal primo brano presente nella sd card e cambia ogni 15 secondi.

la demo ti fa ascoltare solo i primi brani del DFPlayer mini mp3 sketch con Arduino Uno.

Cortesemente, prima di inserire i commenti leggi il regolamento

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

1 ping

  1. […] Centralina musicale DFPlayer mini mp3 […]

Lascia un commento

Your email address will not be published.

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