一起玩儿物联网人工智能小车(ESP32)——66 Mini MP3 Player模块的使用

摘要:本文介绍Mini MP3 Player模块的使用方法

前面介绍了如何使用ESP32的DAC功能来播放声音,在使用的过程中,大家会觉得非常的麻烦,支持的声音时长和声音文件的数量非常有限,每次改变声音都需要重新编译和上传程序。当然通过将声音转存到SD卡上,似乎可以在一定程度上解决这个问题,但支持文件格式单一,数据采样频率的限制都会制约其使用的方便性。因此,在这一节通过一个MP3播放模块来实现常见声音文件的播放功能,从而在更大程序上满足大家对声音播放功能的需求。

Mini MP3 Player模块是一个支持串口通信协议指令的语音模块,其内部集成了MP3、WAV、WMA的硬解码,因此在播放声音文件时,不需要占用处理器去进行解码工作。同时该模块还内置TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便。该模块如下图所示:

该模块功能非常强大,可以说接上几个按键之后就是一个功能完备的MP3播放器了。因为在这里不是介绍如何使其变成一个MP3播放器,所以这里主要介绍的是,如何使用ESP32的UART接口去驱动Mini MP3模块,播放各种声音文件。至于其他的使用方法则可以参照该模块的使用手册。

下面来了解一下MP3模块的引脚定义说明,如下图所示。

每个引脚的具体功能如下表所示:

引脚

名称

功能描述

备注

1

VCC

模块电源输入

3.3V-5V,建议用5V,不可超过5.2V

2

RX

UART串行数据输入

3

TX

UART串行数据输出

4

DAC_R

音频输出右声道

驱动耳机、功放

5

DAC_L

音频输出左声道

驱动耳机、功放

6

SPK2

接小喇叭+

驱动小于3W喇叭

7

GND

电源地

8

SPK1

接小喇叭-

驱动小于3W喇叭

9

IO1

触发口

默认上一曲(长按音量-)

10

GND

电源地

11

IO2

触发口

默认下一曲(长按音量+)

12

ADKEY1

AD口1

当触发时是第一段(长按循环第一段)

13

ADKEY2

AD口2

当触发时是第五段(长按循环第五段)

14

USB+

USB+DP

接U盘或插电脑的USB口

15

USB-

USB-DM

接U盘或插电脑的USB口

16

Busy

播放指示

有音频输出低,无音频输出高

使用ESP32开发板驱动Mini MP3模块需要使用到UART通信协议,在这里的连接方法如下:

Mini MP3模块

ESP32扩展板

VCC

+5V

RX

P13——设置成UART TX

TX

P12——设置成UART RX

GND

GND

另外,还需要将SPK1和SPK2连接到播放声音的喇叭上,我采用的喇叭如下图所示。

在这里需要注意的是,Mini MP3模块驱动的喇叭功率不能大于3瓦。除了直接驱动喇叭,也可以使用耳机来播放声音,具体使用耳机的接法如下图所示:

连接好线路之后,就打开Mixly,选择“Arduino ESP32”开发板,与Mini MP3模块相关的功能位于“执行器”功能模块中。在使用Mini MP3模块时,需要首先进行串口的初始化,也就是指定与Mini MP3进行Uart通信所使用的GPIO引脚是哪些。然后对Mini MP3模块进行初始化的时候,则需要指定使用哪个串口进行Uart通信。然后还可以指定播放的声音文件是存储在什么地方的。以及播放的音量等参数。

具体的初始化过程如下所示:

初始化完成以后,就可以使用指令进行声音文件的播放了。在Mixly中提供了播放指定的文件的功能,以及播放指定目录中指定文件的功能,还可以循环播放指定目录中的文件。在这里就简单的播放一个文件,实现的方法如下所示:

然后编译、上传,应该就可以听到每秒的音乐了。

最后再来看一下程序的源代码。如下所示:

#include <HardwareSerial.h>

#include "Arduino.h"

#include "DFRobotDFPlayerMini.h"

DFRobotDFPlayerMini myPlayer;

void setup(){

  Serial.begin(115200);

  Serial1.begin(9600,SERIAL_8N1,25,26);

  myPlayer.begin(Serial1);

  myPlayer.outputDevice(DFPLAYER_DEVICE_SD);

  myPlayer.volume(15);

}

void loop(){

  myPlayer.play(1);

  delay(60000);

}

对于初始化部分的代码没啥解释的,都很简单。就是在loop()方法中,有一个60秒的延迟函数,其目的是为了让声音可以被播放60秒,因为loop()是被循环调用的。而Mini MP3的播放指令,只是一个UART指令,发送给Mini MP3之后,这个方法就返回了。因此,如果没有这个延迟函数,就会不停的给Mini MP3模块发送指令,而指令的间隔又非常的小,因此Mini MP3模块是没法播放出声音的,这个大家一定要注意。

前面举例使用了Mixly开发工具,如果使用Arduino IDE开发工具的,则需要先安装“DFRobotDFPlayerMini”库,如下图所示。

DFRobotDFPlayerMini库安装完成之后,上面的代码就可以到Arduino IDE中直接运行了。好了,Mini MP3播放模块就介绍到这里了。

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起玩儿科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值