Icono del sitio ELECTROALL

Modulo DFplayer mini Reproductor mp3 para arduino, tutorial completo

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub

Hace meses atrás había publicado un video donde enseñaba a cómo reproducir música con el módulo lvc125A. Si bien es cierto este módulo podía reproducir sonido. sin embargo, el sonido era muy distorsionado, aparte de ello, el sonido no se amplificaba cuando se conectaba a un amplificador de sonido. Por último, este no podía reconocer formatos .mp3. A consecuencia de esto me puse a buscar dispositivos que me pudieran dar mejores resultados y, me encontré con módulo llamado DFplayer. Este nuevo dispositivo realmente me a sorprendido, primeramente porque el sonido es totalmente claro. En segundo lugar, cuando se conecta a un amplificador el sonido es amplificado sin perder la calidad. Por otro lado, este módulo es capaz de reconocer formatos .mp3 y . Wav. Finalmente, lo que más me encanta de este dispositivo es que el sonido lo podemos controlar desde un microcontrolador; para esta ocasión usaremos la tarjeta de arduino.

ESPECIFICACIONES DE REPRODUCCIÓN
    1. frecuencias de muestreo soportadas (kHz): 8/11.025/12/16/22.05/24/32/44.1/48
    2. Salida DAC de 24 bits, soporte para rango dinámico 90dB, soporte SNR 85dB
    3. totalmente compatible con FAT16, sistema de archivos FAT32, soporte máximo 32G de la tarjeta TF, soporte 32G de disco U, 64M bytes NORFLASH
    4. una variedad de modos de control, modo de control de E/S, modo serie, modo de control de botón AD
    5. función de espera de sonido de publicidad, la música se puede suspender. cuando la publicidad ha terminado en la música siguen reproduciéndose
    6. datos de audio ordenados por carpeta, soporta hasta 100 carpetas, cada carpeta puede contener hasta 255 canciones
    7. Volumen ajustable de 30 niveles, ecualizador de 6 niveles ajustable
ESPECIFICACIONES TÉCNICAS
APLICACIONES
  1. Transmisión de voz de navegación del coche;
  2. Inspectores de transporte por carretera, señales de voz de las estaciones de peaje;
  3. Estación de tren, indicaciones de voz de inspección de seguridad de autobuses;
  4. Electricidad, comunicaciones, indicaciones de voz de la sala de negocios financieros;
  5. El vehículo dentro y fuera del canal verifica que la voz indica;
  6. Las indicaciones de voz del canal de control fronterizo de seguridad pública;
  7. Alarma de voz multicanal o voz de guía de funcionamiento del equipo;
  8. El coche turístico eléctrico seguro conducción avisos de voz;
  9. Alarma de falla del equipo electromecánico;
  10. Indicaciones de voz de alarma de incendio;
COMO SUBIR AUDIO Ó MÚSICA .mp3, .wav A “SD” / “USB”

Este pequeño modulo es capaz de reproducir audio en formato .mp3 y .wav; Sin embargo, al nombre de la canción previamente se tiene que agregar un numero de 4 digitos; ejemplo: “0001futurehousetypical.mp3”. Por otro lado, este dispositivo puede leer carpetas, no obstante, también al nombre de la carpeta previamente se tiene que agregar un numero de 2 dígitos; ejemplo: “01 instrumentales”. Finalmente, tenemos que tener en cuenta que este reproductor soporta hasta 100 capetas y cada carpeta tiene que tener un máximo de 225 canciones o audios.

PRÁCTICAS CON EJERCICIOS DEMOSTRATIVOS
PRACTICA N° 1: TEST NIVEL BÁSICO

Para este ejercicio solo necesitaremos unos cuantos dispotivos: 4 pulsadores, 1 micro SD, speaker de 3W y propiamente el modulo DFplayer.

PRACTICA N° 2: REPRODUCIR MÚSICA CON USB

En este ejercicio reproduciremos música desde nuestro USB, para ello se tiene que hacer las siguientes conexiones al jack USB hembra.

PRACTICA N° 3: REPRODUCIR MÚSICA/AUIDIO DESDE ARDUINO 

La tienda de DFrobot a preparado una librería lo cual nos facilita muchísimo a hora de programar en el IDE de arduino. Para poder tener acceso a toda la programación primero debemos descargar la librería y añadir al IDE de arduino.

DESCARGAR LIBRERÍA==>

A continuación se muestra la programación general donde se aprecia todas funciones que se puede realizar en el IDE de arduino.

/***************************************************
 DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/index.php?route=product/product&product_id=1121>

 ***************************************************
 This example shows the all the 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.setTimeOut(500); //Set serial communictaion time out 500ms

  //----Set volume----
  myDFPlayer.volume(10);  //Set volume value (0~30).
  myDFPlayer.volumeUp(); //Volume Up
  myDFPlayer.volumeDown(); //Volume Down

  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
//  myDFPlayer.EQ(DFPLAYER_EQ_POP);
//  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
//  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
//  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
//  myDFPlayer.EQ(DFPLAYER_EQ_BASS);

  //----Set device we use SD as default----
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);

  //----Mp3 control----
//  myDFPlayer.sleep();     //sleep
//  myDFPlayer.reset();     //Reset the module
//  myDFPlayer.enableDAC();  //Enable On-chip DAC
//  myDFPlayer.disableDAC();  //Disable On-chip DAC
//  myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15

  //----Mp3 play----
  myDFPlayer.next();  //Play next mp3
  delay(1000);
  myDFPlayer.previous();  //Play previous mp3
  delay(1000);
  myDFPlayer.play(1);  //Play the first mp3
  delay(1000);
  myDFPlayer.loop(1);  //Loop the first mp3
  delay(1000);
  myDFPlayer.pause();  //pause the mp3
  delay(1000);
  myDFPlayer.start();  //start the mp3 from the pause
  delay(1000);
  myDFPlayer.playFolder(15, 4);  //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255)
  delay(1000);
  myDFPlayer.enableLoopAll(); //loop all mp3 files.
  delay(1000);
  myDFPlayer.disableLoopAll(); //stop loop all mp3 files.
  delay(1000);
  myDFPlayer.playMp3Folder(4); //play specific mp3 in SD:/MP3/0004.mp3; File Name(0~65535)
  delay(1000);
  myDFPlayer.advertise(3); //advertise specific mp3 in SD:/ADVERT/0003.mp3; File Name(0~65535)
  delay(1000);
  myDFPlayer.stopAdvertise(); //stop advertise
  delay(1000);
  myDFPlayer.playLargeFolder(2, 999); //play specific mp3 in SD:/02/004.mp3; Folder Name(1~10); File Name(1~1000)
  delay(1000);
  myDFPlayer.loopFolder(5); //loop all mp3 files in folder SD:/05.
  delay(1000);
  myDFPlayer.randomAll(); //Random play all the mp3.
  delay(1000);
  myDFPlayer.enableLoop(); //enable loop.
  delay(1000);
  myDFPlayer.disableLoop(); //disable loop.
  delay(1000);

  //----Read imformation----
  Serial.println(myDFPlayer.readState()); //read mp3 state
  Serial.println(myDFPlayer.readVolume()); //read current volume
  Serial.println(myDFPlayer.readEQ()); //read EQ setting
  Serial.println(myDFPlayer.readFileCounts()); //read all file counts in SD card
  Serial.println(myDFPlayer.readCurrentFileNumber()); //read current play file number
  Serial.println(myDFPlayer.readFileCountsInFolder(3)); //read fill counts in folder SD:/03
}

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;
  }
}
PRACTICA N° 4: REPRODUCIR MÚSICA/AUDIO DESDE ARDUINO  USANDO PULSADORES

En este ejercicio reproduciremos música desde una tarjeta microSD.
cada vez que presionemos un pulsador reproducirá un sonido o una música específica de acuerdo a lo programado en el IDE de arduino. Además, encenderemos un led.

CODIGO

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

//Pulsadores
const int s1 = 2; // pulsadores
const int s2 = 3;

const int led = 13; // led

int state1 = 0; // estados para las entradas digitales
int last1 = 1;
int state2 = 0;
int last2 = 1;

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.setTimeOut(500); //Set serial communictaion time out 500ms

  //----Set volume----
  myDFPlayer.volume(10);  //Set volume value (0~30).
  myDFPlayer.volumeUp(); //Volume Up
  myDFPlayer.volumeDown(); //Volume Down

  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);

  //----Set device we use SD as default----
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);

  pinMode(s1, INPUT_PULLUP);
  pinMode(s2, INPUT_PULLUP);

  pinMode(led, OUTPUT);

}

void loop()
{
  state1 = digitalRead(s1);
  state2 = digitalRead(s2);

  if (state1 != last1) {
    if (state1 == HIGH) {
      myDFPlayer.play(1);
      Serial.print(state1);
      digitalWrite(led, 1);
      delay(1000);
    }
  }
  last1  = state1;

  if (state2 != last2 ) {
    if (state2 == HIGH) {
      myDFPlayer.play(2);
      digitalWrite(led, 0);
      delay(1000);
    }
  }
  last2  = state2;

}
PRACTICA N° 5: REPRODUCIR UN AUDIO DESDE ARDUINO  Y ENCENDIENDO UNA LAMPARA DE 220VAC

En realidad el código para este proyecto es el mismo del anterior ejercicio lo unico que cambia es el esquematico electrónico ya que se ha añadido un un relé, esto con la finalidad de controlar cargas de corriente alterna.

VIDEO
Salir de la versión móvil