产品简介
体验智能语音提示的便捷与高效,这是一款智能 MP3 语音提示器模块以小巧的体积和亲民的价格,满足对音质和功能的需求。采用先进的智能芯片,集成式设计,搭配内置喇叭,提供纯净而动听的音质体验。
一键操作,即插即用:模块设计简洁,无需复杂设置,配合供电电池和按键,即可快速启动。
智能控制,灵活播放:通过串口指令,轻松实现音乐的指定播放、顺序播放和插播功能,操作简便,响应迅速。
硬解码技术,支持多种格式:完美支持MP3、WAV、WMA等音频格式的硬解码,确保音质纯正,播放流畅。
大容量存储,稳定可靠:16M内存,可存储大量音频文件,且MP3文件即使在断电情况下也能长期保持数据不丢失。
适用范围广泛,音质上乘:无论是商业广告、公共广播还是个人娱乐,这款模块都能提供卓越的音质表现,满足多样化需求。
尺寸信息

引脚定义

| No | 引脚名称 | 功能描述 | 备注 |
|---|---|---|---|
| 1 | 5V | DC 5V电源输入 | 输入电压不可超过5.2V |
| 2 | U+ | USB+ DP | USB接口 |
| 3 | U- | USB- DM | USB接口 |
| 4 | GND | GND | 电源地 |
| 5 | TX | 串行数据输出 | 如接5V TTL需串联电阻 |
| 6 | RX | 串行数据输入 | 如接5V TTL需串联电阻 |
| 7 | Busy | 输出状态引脚 | 播放时输出低电平 |
| 8 | P1 | 1路开关量触发接口 | 接地触发,功能为:短按,下一曲;双击,上一曲;长按,暂停/播放 |
Arduino使用教程
软硬件准备
- 硬件
- UNO R3 控制器 x1
-MP3 语音提示器 x1
- UNO R3 控制器 x1
- 软件
- Arduino IDE 点击下载Arduino IDE
- 下载并安装DFRobot_SerialMP3库
- 如何安装库?
接线图

样例代码(样例代码均为库文件提供的示例)
- 将模块与UNO控制器按照上方的连线图相连,当然你也可以配合扩展板使用,可以更方便、更快速的完成项目原型搭建。
- 下载并安装DFRobot_SerialMP3库。
- 打开Arduino IDE,将下面的代码上传到UNO控制器。
- 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
循环播放
/*!
*@file playAllMusic.ino
*@brief 这是一个循环播放内置音乐的Demo。
* ---------------------------------------------------------------------------------------------------------------
* board | MCU | Leonardo/Mega2560/M0 | UNO | ESP8266 | ESP32 | microbit |
* VCC | 3.3V/5V | VCC | VCC | VCC | VCC | X |
* GND | GND | GND | GND | GND | GND | X |
* RX | TX | Serial1 TX1 | 5 | 5/D6 | D2 | X |
* TX | RX | Serial1 RX1 | 4 | 4/D7 | D3 | X |
* ---------------------------------------------------------------------------------------------------------------
*
* @copyright Copyright (c) 2024 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [TangJie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-11-22
* @url https://github.com/DFRobot/DFRobot_SerialMP3
*/
#include "DFRobot_SerialMP3.h"
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_SerialMP3 mp3(/*s =*/&mySerial);
#else
DFRobot_SerialMP3 mp3(/*s =*/&Serial1);
#endif
void setup()
{
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(9600);
#elif defined(ESP32)
Serial1.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
Serial1.begin(9600);
#endif
Serial.begin(115200);
///<复位设备
mp3.reset();
delay(1000);
///<检测设备
while(mp3.getVersion() == 0){
Serial.println("not fount device !!!");
delay(100);
}
///<设置音量
mp3.volumeSet(10);
delay(10);
///<开始播放
mp3.startPlay();
delay(10);
}
void loop()
{
///<等待播放10秒
delay(10000);
mp3.next();
}
结果
正确连接设备后会循环播放设备中的音频文件
设置模块功能
/*!
*@file playMusicSet.ino
*@brief 这是一个设置模块的示例代码。
* ---------------------------------------------------------------------------------------------------------------
* board | MCU | Leonardo/Mega2560/M0 | UNO | ESP8266 | ESP32 | microbit |
* VCC | 3.3V/5V | VCC | VCC | VCC | VCC | X |
* GND | GND | GND | GND | GND | GND | X |
* RX | TX | Serial1 TX1 | 5 | 5/D6 | D2 | X |
* TX | RX | Serial1 RX1 | 4 | 4/D7 | D3 | X |
* ---------------------------------------------------------------------------------------------------------------
*
* @copyright Copyright (c) 2024 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [TangJie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-11-22
* @url https://github.com/DFRobot/DFRobot_SerialMP3
*/
#include "DFRobot_SerialMP3.h"
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_SerialMP3 mp3(/*s =*/&mySerial);
#else
DFRobot_SerialMP3 mp3(/*s =*/&Serial1);
#endif
void setup()
{
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(9600);
#elif defined(ESP32)
Serial1.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
Serial1.begin(9600);
#endif
Serial.begin(115200);
///<复位设备
mp3.reset();
delay(1000);
///<检测设备
while(mp3.getVersion() == 0){
Serial.println("not fount device !!!");
delay(100);
}
///<设置音量
mp3.volumeSet(10);
///<开始播放
mp3.startPlay();
delay(10000);
///<播放暂停
mp3.pausePlay();
delay(100);
///<设置单曲循环
mp3.specifyLoop(3);
delay(10);
}
void loop()
{
delay(1000);
}
读取模块当前版本设置信息
/*!
*@file playState.ino
*@brief 这是一个获取模块的示例代码。
* ---------------------------------------------------------------------------------------------------------------
* board | MCU | Leonardo/Mega2560/M0 | UNO | ESP8266 | ESP32 | microbit |
* VCC | 3.3V/5V | VCC | VCC | VCC | VCC | X |
* GND | GND | GND | GND | GND | GND | X |
* RX | TX | Serial1 TX1 | 5 | 5/D6 | D2 | X |
* TX | RX | Serial1 RX1 | 4 | 4/D7 | D3 | X |
* ---------------------------------------------------------------------------------------------------------------
*
* @copyright Copyright (c) 2024 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [TangJie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-11-22
* @url https://github.com/DFRobot/DFRobot_SerialMP3
*/
#include "DFRobot_SerialMP3.h"
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_SerialMP3 mp3(/*s =*/&mySerial);
#else
DFRobot_SerialMP3 mp3(/*s =*/&Serial1);
#endif
void setup()
{
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(9600);
#elif defined(ESP32)
Serial1.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
Serial1.begin(9600);
#endif
Serial.begin(115200);
///<复位设备
mp3.reset();
delay(1000);
///<检测设备
while(mp3.getVersion() == 0){
Serial.println("not fount device !!!");
delay(100);
}
///<设置音量
mp3.volumeSet(10);
delay(10);
///<设置单曲循环
mp3.specifyLoop(1);
delay(10);
}
void loop()
{
///<获取版本号
Serial.print("Version:");
Serial.println(mp3.getVersion());
///<获取播放状态
Serial.print("Play State:");
Serial.println(mp3.getState());
///<获取当前歌曲序列号
Serial.print("File number:");
Serial.println(mp3.getFileNumber());
///<获取内置空间总文件数量
Serial.print("All file number:");
Serial.println(mp3.getFile());
delay(1000);
}
结果

API函数
/**
* @fn next
* @brief 下一曲
* @return 0: 失败,1:成功
*/
uint8_t next(void);
/**
* @fn previou
* @brief 上一曲
* @return 0: 失败,1:成功
*/
uint8_t previou(void);
/**
* @fn specify
* @brief 播放指定曲目,
*/
uint8_t specify(uint16_t q);
/**
* @fn volumeAdd
* @brief 音量加
* @return NULL
*/
void volumeAdd(void);
/**
* @fn volumeSub
* @brief 音量减
* @return NULL
*/
void volumeSub(void);
/**
* @fn volumeSet
* @brief 音量设置
* @param vol 音量大小,范围0~30
* @return 0: 失败,1:成功
*/
uint8_t volumeSet(uint8_t vol);
/**
* @fn volumeGet
* @brief 获取当前音量
* @return 返回音量
*/
uint8_t volumeGet(void);
/**
* @fn specifyLoop
* @brief 单曲循环
* @param sp 循环曲目编号
* @return 0:失败,1:成功
*/
uint8_t specifyLoop(uint16_t sp);
/**
* @fn lPower
* @brief 设置低功耗模式
* @return 0:失败,1:成功
*/
uint8_t lPower(void);
/**
* @fn reset
* @brief 复位串口MP模块
* @return 0:失败,1:成功
*/
void reset(void);
/**
* @fn startPlay
* @brief 开始播放音乐
* @return 0:失败,1:成功
*/
uint8_t startPlay(void);
/**
* @fn pausePlay
* @brief 暂停播放
* @return 0:失败,1:成功
*/
uint8_t pausePlay(void);
/**
* @fn specifyTrask
* @brief 播放指定文件夹中的曲目
* @param folder 文件夹代号
* @param sp 歌曲代号
* @return 0:失败,1:成功
*/
uint8_t specifyTrask(uint8_t folder, uint8_t sp);
/**
* @fn loopAll
* @brief 循环播放全部歌曲
* @return 0:失败,1:成功
*/
uint8_t loopAll(void);
/**
* @fn stopPlay
* @brief 停止播放
* @return 0:失败,1:成功
*/
uint8_t stopPlay(void);
/**
* @fn randomAll
* @brief 随机播放全部歌曲
* @return 0:失败,1:成功
*/
uint8_t randomAll(void);
/**
* @fn currentLoop
* @brief 循环播放当前歌曲
* @return 0:失败,1:成功
*/
uint8_t currentLoop(void);
/**
* @fn playAudioMix
* @brief 组合播放指定歌曲
* @param buf 需要播放的歌曲
* @param number 组合的歌曲数量
* @return 0:失败,1:成功
*/
uint8_t playAudioMix(uint8_t* buf, uint8_t number);
/**
* @fn getState
* @brief 获取模块播放状态
* @return 返回播放状态,1:播放,2:暂停,3:停止, 0:错误
*/
uint8_t getState(void);
/**
* @fn getVersion
* @brief 获取当前版本
* @return 返回当前版本
*/
uint16_t getVersion(void);
/**
* @fn getFile
* @brief 获取内置空间总文件数量
* @return 返回文件数量
*/
uint16_t getFile(void);
/**
* @fn getFileNumber
* @brief 获取当前歌曲序列号
* @return 返回序列号
*/
uint16_t getFileNumber(void);
树莓派使用教程
硬件准备
软件准备
接线图

cd ~
git clone https://github.com/DFRobot/DFRobot_SerialMP3.git #下载库文件
cd DFRobot_SerialMP3/python/raspberry/examples #切换到examples目录
sudo python3 xxx.py #运行对应示例