miércoles, 30 de agosto de 2017

Arduino: Reproducir MP3 con DFPlayer Mini

Buenas a todos!!!
Esta vez vamos a ver como reproducir música con un pequeño reproductor MP3 llamado DFPlayer Mini que podemos encontrar en cualquier página a un precio muy económico como en Ebay.com o Amazon.com






Como siempre, este tipo de módulos tiene un costo bastante reducido alrededor de unos 2€ y nos ofrece:
  • Frecuencias de muestreo (kHz): 8/11.025/12/16/22.05/24/32/44.1/48.
  • Salida de 24Bits con soporte para rango dinámico 90dB, SNR apoyo 85dB.
  • Soporta microSD en FAT16, FAT32, y tarjetas de 32GB norflash.
  • Modos de control I/O , Serial, AD.
  • Amplificador incorporado para conectarlo directamente a un altavoz.
  • Modulo de decodificación para los formatos MP3, WAV y WMA
  • Soporta hasta 100 carpetas y cada carpeta puede contener hasta 255 canciones.
  • Sonido ajustable en 30 niveles. 
  • 6 niveles de Ecualización.
  • Amplificador de 3W.
Los pines del DFPLAYER MINI vienen distribuidos de la siguiente manera:




Este módulo viene preparado para poder ser utilizado tanto con Arduino como independientemente de el. 
Hay varias maneras de hacer esto, mediante un control analógico y una matriz de resistencias conectadas en los pines ADKEY_1 y ADKEY2 o mediante los IO veamos como:

Control mediante ADKEY:

Este el diagrama para conectar los pulsadores a los pines ADKEY_1 y ADKEY_2:

Control mediante I/O:

Con este diagrama podemos controlar del DFPLAYER MINI con apenas 4 pulsadores:


Reproducción mediante comandos seriales:

Para usar el reproductor mediante comunicación serial tendremos primero que configurar el puerto serial de la siguiente manera:

  • Comunicación serial asincrona vía PC a una velocidad de 9600 baudios
  • Data bits: 1
  • Checkout: none
  • Flow Control: none

Comandos de control serial:



Evidentemente todo esto se puede simplificar mediante librerías como DFplayer_mini_mp3 DFRobotDFPlayerMini.

Para nuestro ejemplo utilizaremos la primera librería  DFplayer_mini_mp3 
Asignaremos letras para los comandos de reproducción:
  • P = Play
  • S = Stop
  • N = Siguiente
  • F = Anterior
  • + = Subir Volumen
  • -  = Bajar Volumen

Diagrama de conexiones:





Estructura de la tarjeta SD:

Para que todo esto funcione bien los archivos alojados en la tarjeta SD tienen que tener una estructura determinada. La carpeta se tiene que llamar mp3 y los archivos alojados tienen que empezar con 4 dígitos tipo "0000.mp3".  Lo que si podemos hacer para identificar mejor los sonidos es añadir el nombre o descripción después de esos dígitos, "0000Cancion1.pm3" "0001OtraCancion.mp3"


NOTA: Después de realizar unas pruebas, me di cuenta de que el reproductor hacia un ruido un poco molesto y que el sonido no salia limpio. Investigando un poco he descubierto que el modulo internamente trabaja a 3,3V y que al conectar directamente el RX de modulo a la patilla, hace que el sonido no salga todo lo bien debería. 
La solución esta en colocar una resistencia de 1K como aparece en el diagrama (actualizado).

Una vez lo tengamos todo conectado solo tenemos que cargar el Sketch Arduino DFPlayer Serial
Recordad que tenéis que tener instalada la librería DFplayer_mini_mp3 

Un pequeño vídeo de como funciona:



Un saludo y espero que os guste!!!!

4 comentarios :

  1. hola, gracias. queria comprar este modulo igual me puedes indicar.
    si queiro utilizar tres pulsadores:
    1. next (pulsación larga vol+) (io2)
    2. previous (pulsación larga vol-) (io1)
    el pulsador de play/pause dónde se colocaría?

    en el Control mediante I/O que indicas entiendo que no hace falta arduino.
    simplemente colocando cuatro pulsadores...
    habria que poner el S3 que indicas como si fuera el adkey1 con un pulsador de 33k para que haga el playpause?
    gracias.

    ResponderEliminar
    Respuestas
    1. Buenas, puse la foto para que se pudiera ver qué también puede conectarse de manera que no necesite Arduino. Imagino que haciendo una búsqueda en Google tiene que salir información más completa sobre esta manera de conectarlo, siento no ser de más ayuda, saludos!!

      Eliminar
  2. Hola! gracias por este post.
    Estoy haciendo esto con un Arduino UNO, y aunque puse la resistencia de 1K me sigue haciendo un ruido molesto. ¿A qué podría deberse?
    Gracias

    ResponderEliminar
    Respuestas
    1. Debes usar los pines digitales 10 y 11 en lugar de TX y RX

      Eliminar