Objetivos

 

  • Usaremos nuestro Arduino uno para controlar el DFplayer.
  • Presentaremos un par de comandos para manejar el player.
  • Haremos el armazón básico de un programa que utilice este dispositivo.

 

Material Requerido

 

 

 

mp3 player sencillo Un DFPlayer Mini

Power Supply Una fuente de protoboard

Tamaño completo Cables y protoboard de 830 pines

  Vista principal Arduino UNO

Reproduciendo MP3 con Arduino UNO

 

En la última sesión vimos cómo usar el DFPlayer para reproducir mp3 desde una tarjeta SD y usamos una serie de botones externos para subir y bajar el volumen o saltar de canción, lo que está muy bien, pero era un ejercicio para fontaneros, no para programadore curtidos como nosotros, porque si os fijasteis no escribimos una sola línea de código… y ni siquiera usamos un Arduino, algo inaudito en esta vuestra página.

Por eso y antes de que los críticos se den cuenta, vamos a ver como podemos mejorar ese reproductor, aprovechando nuestro amplio dominio sobre los Arduinos y equivalentes, para construir una pequeña maquina no nos permita controlar todos los aspectos de la reproducción desde un humilde Arduino uno que pueda serviros como base a futuros proyectos que incluyan sonidos, voces y todo eso.

Para ello descargaremos antes de nada la librería del fabricante del DFmini que nos permitirá controlar mediante comandos e DFPlayer. Podéis encontrar la última versión de la librería aquí,y podeís instalarla siguiendo el procedimiento habitual

 

Esquema de montaje

 

Antes de nada, necesitas saber que el DFPlayer dispone de un pequeño procesador interno y que podemos comunicarnos con él a través de un puerto serie que trae estándar y usar comandos para activar las funciones que necesitemos.

Bien, tenemos que conectar los pines de RX y TX del DFPlayer a un par de pines de nuestro Arduino UNO. Pero, recuerda que vamos a tener que usar la librería Softwareserial ya que el uno solo tiene un puerto Serie que no queremos usar (Es el de programación)
SI no tienes instalada la librería SoftwareSerial.h, puedes descargarla directamente desde el administrador de bibliotecas o descargarla de Github y a continuación hacer las conexiones parecido a esto:

Esquema de conexiones Arduino UNO a DFplayer mini mp3

 

Hemos conectado los Pines RX y TX del player a los pines del Arduino 11 y 10 respectivamente y los usaremos para mandar ordenes al player ¿Vale?

 

 

Programa de control

 

El ejemplo que vamos a ver ahora, es una modificación simple del programa original de el fabricante, que puede resultar un tanto confuso para novicios, pero que es una tontería, y espero que la mini versión que usaremos aquí será más fácil de comprender. Aquí os dejo el programa completo: Playing_Mp3_from_Arduino

Empezamos con las librerías como siempre:

#include "DFRobotDFPlayerMini.h"
#include <SoftwareSerial.h>

Incluimos la librería de control de DFRobot y la librería SoftwareSerial.h, una vieja conocida, que nos permite definir mas puertos Serial en Arduino en un par de pines cualquiera, y una vez hecho crearemos un par de objetos, uno este puerto serie en los pines 10 y 11 y otro objeto que representa a nuestro player:

SoftwareSerial FPSerial(10,11);  // TX, RX
DFRobotDFPlayerMini myDFPlayer;

Ahora tenemos que instanciarlos objetos que acabamos de crear, desde la función setup():

FPSerial.begin(9600);
Serial.begin(115200);

Configuramos el puerto serie normal de nuestro Arduino a 115.200 baudios, pero por defecto el puerto serie del player bien a 9600 baud, así que nosotros a cumplir. Ahora tenemos que comprobar antes de nada que el player nos responde. Para ello hacemos la condición de que si la puerta serie no nos devuelve OK, al hacer el inicio que se resetee. No hay nada difícil aquí, simplemente es la forma como ha diseñado el fabricante la instrucción de inicio, el resto solo son mensajes informativos, antes de bloquear la secuencia posterior:

if (!myDFPlayer.begin(FPSerial, true, true))
   {  Serial.println("Unable to begin:);
      Serial.println("1.Please recheck the connection!");
      Serial.println("2.Please insert the SD card!");
      while(true)
         delay(0);
   }

En caso de que la respuesta sea positiva, sacamos un mensaje informando del éxito, y ajustamos el volumen a 15 sobre 30 y le ordenamos reproducir la primera grabación de la tarjeta SD:

Serial.println("DFPlayer Mini online.");
myDFPlayer.volume(15);             //Set volume value. From 0 to 30
myDFPlayer.play(1);                    //Play the first mp3

Para el loop() solo tenemos que hacer alguna estupidez como pedirle que reproduzca la siguiente cancion cada digamos 5 segundos:

void loop()
{ static unsigned long timer = millis();
  if (millis() - timer > 5000)
    {  timer = millis();
       myDFPlayer.next();  //Play next mp3 every 3 second.
    }
}

Si corremos este programa veras, que reproduce la primera canción del disco al arrancar y que va saltando a la siguiente canción cada 5 segundos. Aquí va un mini vídeo para que veas que no te miento: