DFR1173

产品简介

体验智能语音提示的便捷与高效,这是一款智能 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控制器按照上方的连线图相连,当然你也可以配合扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • 下载并安装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				#运行对应示例

更多资料

产品手册