如何将 DFMini player MP3 模块与 Arduino 结合使用

要创建此项目,您将使用:


DFPlayer迷你MP3模块
10kΩ电阻
开关按钮 
面包板 
Arduino UNO 

杜邦线
 

现在,我们将学习如何构建该项目。

什么是DF Mini Player MP3模块

DFMini Player 模块是一个小型音乐播放器。它成本低、功耗低,可再现存储卡上存储的声音。

基于此,模块可以通过独立模式进行控制,即在该模式下,只有DFMini模块、供电电池、扬声器、控制它的按钮以及存储歌曲的SD卡。

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

dfmini_YSxlLVh49X.jpg

图 1 - DFMini 播放器模块。

为了控制它,使用基本的独立电路非常重要。该电路如图 2 所示。

Circuitostandalone_4xsAxVYrKj.jpg

 DFMini 播放器模块的独立电路。

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

连接到引脚 IO1 的按钮用于转到上一曲目并降低音量。

快速触摸,系统将返回上一首歌曲,但是,如果按下按钮超过 1 秒,系统将降低歌曲的音量。

连接到引脚 IO2 的按钮用于转到下一曲目并增加音量。

快速触摸,系统将前进到下一首歌曲,但是,如果按下按钮超过 1 秒,系统将增加歌曲的音量。

在这种独立方法中,歌曲必须保存在存储卡上。

这样,每次按下按钮时,系统都会按升序或降序播放每首歌曲。

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

现在,我将介绍如何使用 Arduino 通过串行通信来控制 DFMini Player。

使用 Arduino 控制 DFMini 播放器

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

Arduino 必须通过串口与 DFMini Player 进行通信并发送控制命令。控制电路的电子原理图如图4所示。

arduinomusic_vTmxulRDli.jpg

使用 Arduino 的电子原理图。

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

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

#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
//Stopif (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
//Stopif (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
//Stopif (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 进行音乐控制。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/695840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP ssm 房屋中介管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 房屋中介管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采…

woffice– 内部网和外部网WordPress高端资讯主题

下载地址&#xff1a;https://m.gx.cn/site/3046.html 完全灵活&#xff0c;与最新的WordPress品牌兼容 翻译语言超过15种 使用最新技术设计快速web应用程序 所有这些都以谷歌材料设计为灵感&#xff0c;采用易于定制的设计&#xff0c;给人一种优美的现代感和易于导航的用户…

企业为什么需要HTTPS

一.什么是HTTPS HTTPS &#xff08;全称&#xff1a;Hyper Text Transfer Protocol over SecureSocket Layer&#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL&a…

01-02-2

1、typedef的使用 a.语法 typedef 原名 别名&#xff1b;。 ​ typedef struct student {int num;char name[20];char sex; }stu,*pstu;//stu相当于struct student这个类型&#xff0c;*pstu相当于struct student * 别名的理解方法&#xff1a;若是字母前面有符号&#xff0…

安全设备篇——日志审计系统

日志审计是企业网络安全建设中重要的一环。 其实日志审计在结构上和部分原理上和态势感知很相近&#xff0c;都进行数据采集&#xff0c;都需要强调规则&#xff0c;老规矩先放百度解释&#xff1a; “日志审计系统是用于全面收集企业IT系统中常见的安全设备、网络设备、数据库…

微信小程序的设计与实现

微信小程序的设计与实现 目录 1.系统简述&#xff1a; 2.开发工具及相关技术&#xff1a; 2.1 HTML、WXSS、JAVASCRIPT技术 2.2 Vanilla框架 2.3 uni-app框架 2.4 MYSQL数据库 3.工程结构及其说明&#xff1a; 4.主要功能展示 4.1登录 4.2 注册 4.3 首页…

怎么把图片大小缩小到1M?教你几招图片你压缩

当我们的图片数量越来越多的时候&#xff0c;占用的内存也就越来越多&#xff0c;时间长了之后&#xff0c;会导致我们空间不足或者设备比较卡顿&#xff0c;为了缓解这个问题&#xff0c;很多人会选择去删除一些不必要的图片文件&#xff0c;其实还有个方法就是利用图片压缩的…

视频号小店怎么做?五个步骤教会你,快来学习吧!

大家好&#xff0c;我是电商糖果 今年关于视频号小店真的很火&#xff0c;不少朋友都找糖果咨询过关于做店的方法。 糖果做小店已经快两年了&#xff0c;对小店运营方面可以说比较了解。 这里就把小店的整体做店流程分为五步&#xff0c;一步步讲解给大家。 第一步&#xff…

js图片回显的方法

直接上代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body>// HTML部分<input type"file" id"fileInput"><button onclick"show…

【重装系统】U盘制作软件——Rufus

Rufus 是一款格式化和创建 USB 启动盘的辅助工具。 本软件适用于以下场景&#xff1a; 需要将可引导 ISO (Windows、Linux、UEFI 等) 刻录到 USB 安装媒介的情况 需要处理未安装操作系统的设备的情况 需要在 DOS 环境下刷写 BIOS 或其他固件的情况 需要运行低级工具的情况 官…

二叉树之左叶子的和

题目&#xff1a; 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24示例 2: 输入: root […

Android Studio开发之路(十)app中使用aar以及报错记录

书接上文&#xff1a;Android Studio开发之路&#xff08;九&#xff09;创建android library以及生成aar文件 五、app中使用aar文件的方法 先复制一下上面生成的aar文件。然后在你要添加到的app左上角选择“project”模式&#xff0c;然后找到libs文件夹&#xff0c;点击右键…