2 有用
0 下载

在Arduino中使用DFMini Player MP3模块

文件列表(压缩包大小 3.63K)

免费

概述

需要的元件

  • Arduino UNO

  • 旋转电位计10Kohm

  • LCD1602显示屏

  • 开关按钮

  • DFPlayer迷你MP3模块

  • 面包板

  • 插针

  • 杜邦线

  • Arduino IDE

原理及流程

介绍

一些项目需要声音再现以添加某种功能。在这些项目中,我们强调:例如视觉障碍者,MP3音乐播放器的可访问性以及机器人执行语音声音的能力。

在所有这些系统中,我们需要一个MP3声音再现设备才能连接到Arduino。

因此,在本文中,我们将学习以下几点:

  • DFMini Player MP3的基本操作电路;
  • 存储卡上声音文件的组织和配置;
  • Arduino的音乐控制。

什么是DF Mini Player MP3模块

DFMini Player模块是一种小型音乐播放器,成本低,功耗低其目的是再现存储卡中存储的声音

基于此,可以通过独立模式来控制该模块,即在该模式下,将只有DFMini模块,一个电池供电,扬声器,控制它的按钮以及带有歌曲的SD卡。

控制它的另一种方法是使用Arduino或其他控制设备。例如,Arduino将通过与DFMini Player模块的串行通信发送命令。DFMini Player模块如下图所示。

dfmini_YSxlLVh49X

DFMini Player模块。

要对其进行控制,使用基本的独立电路非常重要。该电路如图所示。

circuitostandalone_4xsAxVYrKj

DFMini Player模块的独立电路

上面电路中显示*的两个按钮***用于改变音乐曲目和控制声音的音量。

连接到引脚IO1的按钮用于转到上一个音轨并减小音量

快速触摸一下,系统将返回上一首歌曲,但是,如果你按下按钮1秒钟以上,系统将减小歌曲的音量。

连接到引脚IO2的按钮用于转到下一个音轨并增大音量

快速触摸,系统将前进到下一首歌曲,但是,如果你按下按钮1秒钟以上,则系统会增加歌曲的音量。

在这种独立方法中,歌曲必须保存在存储卡中,如图所示。

sdcard_0pGv39EGEQ

SD卡中的歌曲文件。

这样,每按一次按钮,系统将按升序或降序播放每首歌曲。

但是,当使用Arduino或其他控制设备时,我们必须修改在SD卡上组织音乐文件的方式

现在,我将解释如何通过串行通信使用Arduino控制DFMini Player

用Arduino控制DFMini Player

在此步骤中,音量控制,范围控制,均衡命令和其他功能将由Arduino发送。

Arduino必须通过串口与DFMini Player通信并发送控制命令。控制电路的电子方案如图所示。

arduinomusic_vTmxulRDli

Arduino的电子原理图

首先,我们必须组装下图所示的电路。

组装完该电路后,必须将歌曲添加到存储卡中。例如,在此步骤中,歌曲应重命名为01、02、03。

你无法将歌曲保留其名称,因为当Arduino发送命令执行特定音轨时会出现问题。因此,你必须按如下所示进行配置。

sdcardard_cFmxjS5ffi

用数字命名的歌曲

命名文件后,在Arduino上编写以下代码。

#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 command;
int pausa = 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("Initializing DFPlayer module ... Wait!"));

if (!myDFPlayer.begin(mySoftwareSerial))
{
Serial.println(F("Not initialized:"));
Serial.println(F("1. Check the DFPlayer Mini connections"));
Serial.println(F("2. Insert an SD card"));
while (true);
}

Serial.println();
Serial.println(F("DFPlayer Mini module initialized!"));

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

void loop()
{

//Waits for data entry via serial
while (Serial.available() > 0)
{
command = Serial.read();

if ((command >= '1') && (command <= '9'))
{
Serial.print("Music reproduction");
Serial.println(command);
command = command - 48;
myDFPlayer.play(command);
menu_opcoes();
}

//Reproduction
//Stop

if (command == 's')
{
myDFPlayer.stop();
Serial.println("Music Stopped!");
menu_opcoes();
}

//Pausa/Continua a musica
if (command == 'p')
{
pausa = !pausa;
if (pausa == 0)
{
Serial.println("Continue...");
myDFPlayer.start();
}

if (pausa == 1)
{
Serial.println("Music Paused!");
myDFPlayer.pause();
}

menu_opcoes();
}


//Increases volume
if (command == '+')
{
myDFPlayer.volumeUp();
Serial.print("Current volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

if (command == '<')
{
myDFPlayer.previous();
Serial.println("Previous:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()-1);
menu_opcoes();
}

if (command == '>')
{
myDFPlayer.next();
Serial.println("next:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()+1);
menu_opcoes();
}

//Decreases volume
if (command == '-')
{
myDFPlayer.volumeDown();
Serial.print("Current Volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

}
}

void menu_opcoes()
{
Serial.println();
Serial.println(F("=================================================================================================================================="));
Serial.println(F("Commands:"));
Serial.println(F(" [1-3] To select the MP3 file"));
Serial.println(F(" [s] stopping reproduction"));
Serial.println(F(" [p] pause/continue music"));
Serial.println(F(" [+ or -] increases or decreases the volume"));
Serial.println(F(" [< or >] forwards or backwards the track"));
Serial.println();
Serial.println(F("================================================================================================================================="));
}

上面提供的代码非常简单,可以帮助你选择歌曲的编号,停止,暂停,控制音量并通过曲目

音乐控制包括将数据从Arduino IDE串行发送到我们的Arduino开发板。

最初,系统在设置中进行配置,并检查SD卡是否已插入模块中。如果未插入,系统会显示一条消息以提醒用户。

此外,系统还会显示带有系统配置选项的消息。

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("Initializing DFPlayer module ... Wait!"));

if (!myDFPlayer.begin(mySoftwareSerial))
{
Serial.println(F("Not initialized:"));
Serial.println(F("1. Check the DFPlayer Mini connections"));
Serial.println(F("2. Insert an SD card"));
while (true);
}

Serial.println();
Serial.println(F("DFPlayer Mini module initialized!"));

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

如果插入了存储卡,则代码流将进入循环功能。

void loop()
{

//Waits for data entry via serial
while (Serial.available() > 0)
{
command = Serial.read();

if ((command >= '1') && (command <= '3'))
{
Serial.print("Music reproduction");
Serial.println(command);
command = command - 48;
myDFPlayer.play(command);
menu_opcoes();
}

//Reproduction
//Stop

if (command == 's')
{
myDFPlayer.stop();
Serial.println("Music Stopped!");
menu_opcoes();
}

//Pausa/Continua a musica
if (command == 'p')
{
pausa = !pausa;
if (pausa == 0)
{
Serial.println("Continue...");
myDFPlayer.start();
}

if (pausa == 1)
{
Serial.println("Music Paused!");
myDFPlayer.pause();
}

menu_opcoes();
}


//Increases volume
if (command == '+')
{
myDFPlayer.volumeUp();
Serial.print("Current volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

if (command == '<')
{
myDFPlayer.previous();
Serial.println("Previous:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()-1);
menu_opcoes();
}

if (command == '>')
{
myDFPlayer.next();
Serial.println("next:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()+1);
menu_opcoes();
}

//Decreases volume
if (command == '-')
{
myDFPlayer.volumeDown();
Serial.print("Current Volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

}
}

用户可以发送以下控制字符:

  • 数字1到3:选择要播放的歌曲;
  • 字母s:停止播放歌曲;
  • 字母p :暂停歌曲;
  • 发送+号:增加歌曲音量;
  • 发送-信号:降低歌曲音量;
  • 发送信号< :选择上一首歌曲;
  • 发送信号>:选择下一首歌曲;

通过这些信号,字母和数字,Arduino将通过串行接收它们并控制播放的音乐。

每个条件在下面以及内部及其相应的命令中进行介绍。

if ((command >= '1') && (command <= '3'))
{
Serial.print("Music reproduction");
Serial.println(command);
command = command - 48;
myDFPlayer.play(command);
menu_opcoes();
}

//Reproduction
//Stop

if (command == 's')
{
myDFPlayer.stop();
Serial.println("Music Stopped!");
menu_opcoes();
}

//Pausa/Continua a musica
if (command == 'p')
{
pausa = !pausa;
if (pausa == 0)
{
Serial.println("Continue...");
myDFPlayer.start();
}

if (pausa == 1)
{
Serial.println("Music Paused!");
myDFPlayer.pause();
}

menu_opcoes();
}


//Increases volume
if (command == '+')
{
myDFPlayer.volumeUp();
Serial.print("Current volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

if (command == '<')
{
myDFPlayer.previous();
Serial.println("Previous:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()-1);
menu_opcoes();
}

if (command == '>')
{
myDFPlayer.next();
Serial.println("next:");
Serial.print("Current track:");
Serial.println(myDFPlayer.readCurrentFileNumber()+1);
menu_opcoes();
}

//Decreases volume
if (command == '-')
{
myDFPlayer.volumeDown();
Serial.print("Current Volume:");
Serial.println(myDFPlayer.readVolume());
menu_opcoes();
}

}

因此,如果你应用了所介绍的所有步骤,则可以学习:

  • DFMini Player MP3的基本操作电路;
  • 存储卡上声音文件的组织和配置;
  • Arduino的音乐控制。

通过此代码,你可以开发需要将声音用作系统功能的其他项目。

最后

所有需要的文件在下载区均可找到。

via:https://www.hackster.io/325326/how-to-use-the-dfmini-player-mp3-module-with-arduino-f1f042

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250