Procurando um módulo MP3 para o seu projeto? O módulo MP3 DFPlayer Mini é compacto, tem baixo consumo de energia e se saiu muito bem nos testes, mostrando ser uma ótima alternativa para você que pretende utilizar música ou efeitos sonoros de forma simples e eficiente.

Módulo MP3 DFPlayer Mini Arduino

Com este módulo você pode criar sistemas de som, avisos, alarmes inteligentes e outros projetos na área maker, automação industrial e IoT (Internet das Coisas). Utilize por exemplo para emitir um aviso sonoro quando um sensor atingir determinada temperatura, tocar uma música quando determinada tarefa for finalizada ou executar comandos de voz para guiar o usuário em ações que devem ser executadas.

O Módulo MP3 DFPlayer Mini

O módulo é muito parecido (fisicamente) com o WTV020-SD, que já vimos aqui no Arduino e Cia, mas o DFPlayer Mini tem dois grandes diferenciais, na minha opinião: a possibilidade de conexão de um alto-falante de até 3W sem que você precise utilizar um amplificador, e a capacidade de executar arquivos MP3 sem nenhum tipo de conversão.

Na imagem abaixo temos a pinagem do módulo, onde vemos as conexões RX/TX para comunicação serial e controle utilizando um microcontrolador como Arduino ou outro microcontrolador/placa que tenha interface serial/UART, pinos ADKEY para utilização de um teclado analógico, saída para alto falante (SPK_1  e SPK_2) e também os pinos DAC, se você preferir ligar o seu DFPlayer Mini em um amplificador. Você pode alimentar o módulo com tensões entre 3.2 e 5VDC.

Pinagem DFPlayer Mini

O DFPlayer Mini suporta sampling rates de 8/11.025/12/16/22.05/24/32/44.1/48 KHz, tem saída DAC de 24 bits, suporta cartões micro SD de até 32GB nos formatos FAT16 e FAT32, reconhece até 100 pastas com 255 músicas cada uma, e tem também 30 níveis de volume e 6 formatos de equalização, além de um “modo propaganda”, que você pode usar para pausar a música quando precisar emitir algum aviso, e assim que o aviso terminar a música continua de onde parou.

Usando o módulo no modo standalone

Vimos acima que temos 3 modos de controlar o DFPlayer Mini: teclado analógico, botões e interface serial, sendo que neste post vamos mostrar como utilizar as duas últimas opções.

No circuito abaixo, utilizamos botões tipo push-button para executar as funções de PLAY NEXT/Volume- e PREV/Volume+. Um toque curto no botão da esquerda avança para a próxima música. Mantenha esse botão pressionado para diminuir o volume do som. No botão da direita, um toque curto retorna para a música anterior e mantendo pressionado você aumenta o volume.

Módulo com botôes

Depois de montado, o seu circuito vai ficar mais ou menos assim:

DFPlayer Mini com botôes

Não esqueça, claro, de conectar a alimentação e o alto-falante. 🙂

DFPlayer Mini com Arduino

Para usar o módulo MP3 DFPlayer Mini com Arduino, utilize as conexões abaixo:

Circuito Arduino e Módulo MP3 DFPlayer Mini

O resistor de 330 ohms no pino RX do módulo eliminou um ruído no alto-falante causado, segundo eu pesquisei, pela alimentação do Arduino. Uma outra opção é você utilizar alimentação externa para o DFPlayer Mini.

Vamos controlar a execução das músicas pela serial do Arduino. Carregue o programa abaixo, que utiliza a biblioteca DFPlayer Mini. Essa biblioteca você pode instalar à partir da própria IDE do Arduino. Vá em Sketch => Incluir Biblioteca => Gerenciar Bibliotecas e procure por DFPlayer Mini, da DFRobot:

Biblioteca DFRobot

Após a instalação da biblioteca, carregue o programa abaixo:

//Programa: Modulo MP3 DFPlayer Mini com Arduino
//Autor: Arduino e Cia

/***************************************************
  DFPlayer - A Mini MP3 Player For Arduino
 ***************************************************
  Created 2016-12-07
  By [Angelo qiao]([email protected])

  GNU Lesser General Public License.
  See <http://www.gnu.org/licenses/> for details.
 ****************************************************/

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

//Inicia a serial por software nos pinos 10 e 11
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX

DFRobotDFPlayerMini myDFPlayer;

char buf;
int pausa = 0;
int equalizacao = 0;

void setup()
{
  //Comunicacao serial com o modulo
  mySoftwareSerial.begin(9600);
  //Inicializa a serial do Arduino
  Serial.begin(115200);

  //Verifica se o modulo esta respondendo e se o
  //cartao SD foi encontrado
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini"));
  Serial.println(F("Inicializando modulo DFPlayer... (3~5 segundos)"));
  if (!myDFPlayer.begin(mySoftwareSerial))
  {
    Serial.println(F("Nao inicializado:"));
    Serial.println(F("1.Cheque as conexoes do DFPlayer Mini"));
    Serial.println(F("2.Insira um cartao SD"));
    while (true);
  }
  Serial.println();
  Serial.println(F("Modulo DFPlayer Mini inicializado!"));

  //Definicoes iniciais
  myDFPlayer.setTimeOut(500); //Timeout serial 500ms
  myDFPlayer.volume(5); //Volume 5
  myDFPlayer.EQ(0); //Equalizacao normal

  //Mostra o menu de comandos
  Serial.println();
  Serial.print("Numero de arquivos no cartao SD: ");
  Serial.println(myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD));
  menu_opcoes();
}

void loop()
{
  //Aguarda a entrada de dados pela serial
  while (Serial.available() > 0)
  {
    buf = Serial.read();
    
    //Reproducao
    if ((buf >= '1') && (buf <= '9'))
    {
      Serial.print("Reproduzindo musica: ");
      Serial.println(buf);
      buf = buf - 48;
      myDFPlayer.play(buf);
      menu_opcoes();
    }
    
    //Parada
    if (buf == 's')
    {
      myDFPlayer.stop();
      Serial.println("Musica parada!");
      menu_opcoes();
    }
    
    //Pausa/Continua a musica
    if (buf == 'p')
    {
      pausa = !pausa;
      if (pausa == 0)
      {
        Serial.println("Continua musica...");
        myDFPlayer.start();
      }
      if (pausa == 1)
      {
        Serial.println("Musica pausada...");
        myDFPlayer.pause();
      }
      menu_opcoes();
    }
    
    //Seleciona equalizacao
    if (buf == 'e')
    {
      equalizacao++;
      if (equalizacao == 6)
      {
        equalizacao = 0;
      }
      myDFPlayer.EQ(equalizacao);
      Serial.print("Equalizacao: ");
      Serial.print(equalizacao);
      Serial.println(" (0 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Classic, 5 = Bass)");
      menu_opcoes();
    }
    
    //Aumenta volume
    if (buf == '+')
    {
      myDFPlayer.volumeUp();
      Serial.print("Volume atual:");
      Serial.println(myDFPlayer.readVolume());
      menu_opcoes();
    }
    
    //Diminui volume
    if (buf == '-')
    {
      myDFPlayer.volumeDown();
      Serial.print("Volume atual:");
      Serial.println(myDFPlayer.readVolume());
      menu_opcoes();
    }
  }
}

void menu_opcoes()
{
  Serial.println();
  Serial.println(F("Comandos:"));
  Serial.println(F(" [1-9] Para selecionar o arquivo MP3"));
  Serial.println(F(" [s] parar reproducao"));
  Serial.println(F(" [p] pausa/continua a musica"));
  Serial.println(F(" [e] seleciona equalizacao"));
  Serial.println(F(" [+ or -] aumenta ou diminui o volume"));
  Serial.println();
}

Coloque um cartão SD com os arquivos MP3 no slot do módulo e abra o serial monitor. Será exibido o menu de opções para controlar a execução das músicas:

Módulo DFPlayer Serial Monitor

Na parte superior do serial monitor você deve digitar os comandos para controle. Digite números de 1 a 9 para escutar a música correspondente, + ou – para aumentar ou diminuir o som, “s” para parar a reprodução e “p” para pausar/continuar a música. Selecione “e”para escolher entre os 6 modos de equalização disponíveis: Normal, Pop, Rock, Jazz, Classic e Bass.

4.9/5 - (15 votes)