DFPlayer PRO MP3播放器模块

简介

您是否在寻找一款简单又强大的MP3播放模块?看这里!这款MP3播放模块支持arduino、AT指令、板载按键和AD按键四种控制方式。通过板载按键即使在没有微控制器的情况下也能进行音乐播放和切换。模块搭载了128MB的存储空间,通过USB线您可以很容易的将您喜欢的音乐拷贝到模块中。该模块可作为电脑或Raspberry Pi声卡,用USB数据线将模块和电脑连接,电脑播放音乐即可通过该模块输出。DFPlayer PRO还带有双声道5W功放,接上喇叭即可使用。 在硬件上,DFplayer PRO相比DFPlayer Mini,DFplayer PRO自带128MB存储空间,因此无需TF卡。同时DFplayer PRO带有Type C座子,拷贝音乐更加简单,双声道输出音乐效果更好。 在软件上,DFplayer PRO相比DFPlayer Mini,DFplayer PRO使用更加简单,功能更加强大,增加了快进、快退、指定时间点播放等功能。

特性

应用场景

技术规格

引脚说明

序号 丝印 功能描述
1 VIN 电源正极
2 GND 电源负极
3 RX UART接收
4 TX UART发送
5 DACR DAC输出
6 DACL DAC输出
7 L+ 喇叭左声道输出
8 L- 喇叭左声道输出
9 R+ 喇叭右声道输出
10 R- 喇叭右声道输出
11 PLAY 功能按钮
12 KEY 功能按钮

使用教程

准备

关于如何安装库文件,点击链接

接线图

按键控制

点击PLAY按钮播放或暂停(播放时蓝灯常亮,暂停时蓝灯慢闪)
长按PLAY两秒切换下一首(切换时蓝灯闪烁两次)

软件控制

  /**
   * @brief 设置音量
   * @param vol:0-30
   * @return true or false
   */
  bool setVol(uint8_t vol);

  /**
   * @brief 设置播放模式
   * @param ePlayMode_t:SINGLECYCLE,ALLCYCLE,SINGLE,RANDOM,FOLDER
   * @return true or false
   */
  bool setPlayMode(ePlayMode_t mode);

  /**
   * @brief 播放
   * @return true or false
   */
  bool start();

  /**
   * @brief 暂停播放
   * @return true or false
   */
  bool pause();

  /**
   * @brief 下一曲
   * @return true or false
   */
  bool next();

  /**
   * @brief 上一曲
   * @return true or false
   */
  bool last();

  /**
   * @brief 使当前播放歌曲快进
   * @param second  快进的时间(单位:S)
   */
  bool fastForward(uint16_t second);

  /**
   * @brief 使当前播放歌曲后退
   * @param second  后退的时间(单位:S)
   */
  bool fastReverse(uint16_t second);

  /**
   * @brief 使当前播放歌曲从固定时间点开始播放
   * @param second  固定时间点
   */
  bool setPlayTime(uint16_t second);

  /**
   * @brief 获取文件编号
   */
  uint16_t getCurFileNumber();

  /**
   * @brief 获取可播放文件的个数
   */
  uint16_t getTotalFile();

  /**
   * @brief 获取当前歌曲播放到的时间
   */
  uint16_t getCurTime();

  /**
   * @brief 获取当前歌曲播放的总时间
   */
  uint16_t getTotalTime();

  /**
   * @brief 获取播放文件的文件名
   */
  String   getFileName();

  /**
   * @brief 播放指定路径文件
   * @param 指定路径
   */
  void playSpecFile(String str);

  /**
   * @brief 播放指定编号文件,编号根据文件拷贝进入U盘先后顺序排列
   * @param 文件编号,可通过getCurFileNumber()获取
   */
  void playFileNum(int16_t num);

  /**
   * @brief 删除当前播放文件
   * @return true or false
   */
  bool delCurFile();

样例代码 - 播放

上电后进入音乐模式,开始播放音频文件,串口会打印当前的操作

/*!
 *@file play.ino
 *@brief Music Playing Example Program
 *@details  Experimental phenomenon: control MP3 play music, obtain song information
 *@copyright  Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 *@license     The MIT license (MIT)
 *@author [fengli](li.feng@dfrobot.com)
 *@version  V1.1
 *@date  2021-10-15
 *@url https://github.com/DFRobot/DFRobot_DF1201S
*/


#include <DFRobot_DF1201S.h>
#include <SoftwareSerial.h>

SoftwareSerial Serial1(2, 3);  //RX  TX

DFRobot_DF1201S DF1201S;
void setup(void){
  Serial.begin(115200);
  Serial1.begin(115200);
  while(!DF1201S.begin(Serial1)){
    Serial.println("初始化失败,请检查接线!");
    delay(1000);
  }
  /*设置音量为20*/
  DF1201S.setVol(/*VOL = */20);
  Serial.print("VOL:");
  /*获取音量*/
  Serial.println(DF1201S.getVol());
  /*进入音乐模式*/
  DF1201S.switchFunction(DF1201S.MUSIC);
  /*等待提示音播放完*/
  delay(2000);
  /*设置播放模式为全部循环*/
  DF1201S.setPlayMode(DF1201S.ALLCYCLE);
  Serial.print("PlayMode:");
  /*获取播放模式*/
  Serial.println(DF1201S.getPlayMode());

  //设置波特率为115200(需断电重启,掉电保存)
  //DF1201S.setBaudRate(115200);
  //打开指示灯(掉电保存)
  //DF1201S.setLED(true);
  //打开提示音(掉电保存)
  //DF1201S.setPrompt(true);
  //使能功放芯片
  //DF1201S.enableAMP();
  //失能功放芯片
  //DF1201S.disableAMP();
}

void loop(){
  Serial.println("开始播放");
  /*开始播放*/
  DF1201S.start();
  delay(3000);
  Serial.println("暂停播放");
  /*暂停播放*/
  DF1201S.pause();
  delay(3000);
  Serial.println("播放下一曲");
  /*播放下一曲*/
  DF1201S.next();
  delay(3000);
  Serial.println("播放上一曲");
  /*播放上一曲*/
  DF1201S.last();
  delay(3000);
  Serial.println("开始播放");
  //快进10S
  DF1201S.fastForward(/*FF = */10);
  //快退10S
  //DF1201S.fastReverse(/*FR = */10);
  //从第10S开始播放
  //DF1201S.setPlayTime(/*Play Time = */10);

  Serial.print("文件号:");
  //获取文件号
  Serial.println(DF1201S.getCurFileNumber());

  Serial.print("可播放文件的个数:");
  //获取可播放文件的个数
  Serial.println(DF1201S.getTotalFile());

  Serial.print("当前歌曲播放到的时间:");
  //获取当前歌曲播放到的时间
  Serial.println(DF1201S.getCurTime());

  Serial.print("当前歌曲播放的总时间:");
  //获取当前歌曲播放的总时间
  Serial.println(DF1201S.getTotalTime());
  Serial.print("当前播放文件名:");
  //获取播放文件的文件名
  Serial.println(DF1201S.getFileName());
  delay(3000);
  //播放第一号文件,编号根据文件拷贝进入U盘先后顺序排列
  DF1201S.playFileNum(/*File Number = */1);
  //播放test文件夹下的test.mp3文件
  //DF1201S.playSpecFile("/test/test.mp3");

  while(1);
  /*删除正在播放的文件*/
  //DF1201S.delCurFile();
}

结果

DFR0745result2

AD按键控制

AD按键购买链接

按键 串联电阻 点击 长按
K0 0R 暂停&播放
K1 3K 上一曲 音量+
K2 6.2K 下一曲 音量-
K3 9.1K 播放模式切换
K4 15K 快进10S
K5 24K 暂停&播放 下一曲
K6 33K 音量- 音量-
K7 51K 音量+ 音量+
K8 100K 快退10S
K9 220K 播放第一首,音量设置为10

DFR0768AD控制

AT指令控制

注意:以下所有命令均省略了“\r\n”,实际使用时请添加在命令后面,例如“AT+VOL=5\r\n”,指定音量为5级

串口波特率默认115200

/**
 * @brief 测试连接
 */
AT  //测试连接

/**
 * @brief 音量控制(音量等级:0-30)(掉电保存)
 * @param -n:音量-n
 *        +n:音量加n
 *         n:指定音量为n
 *         ?:查询音量
 */
AT+VOL=-5  //音量-5

AT+VOL=?   //查询音量
返回:VOL = [10]   //当前音量为10

/**
 * @brief 播放模式控制
 * @param  1:单曲循环
 *         2:全部循环
 *         3:单曲播放完暂停
 *         4:随机播放
 *         5:文件夹循环
 *         ?:查询当前播放模式
 */
AT+PLAYMODE=1   //切换为单曲循环

AT+PLAYMODE=?   //查询当前的播放模式
返回:PLAYMODE =1  //当前播放模式为:单曲循环

/**
 * @brief 播放控制
 * @param    PP:播放&暂停
 *         NEXT:下一曲
 *         LAST:上一曲
 */
AT+PLAY=NEXT   //下一曲

/**
 * @brief 播放时间点控制
 * @param -n:快退n秒
 *        +n:快进n秒
 *         n:在n秒处开始播放
 */
AT+TIME=-5   //快退5秒

/**
 * @brief 播放模式控制
 * @param  1:查询当前播放的文件序号
 *         2:查询文件总数
 *         3:查询当前已播放时间
 *         4:查询当播放文件总时间
 *         5:查询当前播放文件名
 */
AT+QUERY=1   //查询当前播放的文件序号

AT+QUERY=5  //查询当前播放文件名
返回:test.mp3    //当前播放的是"test.mp3"


/**
 * @brief 播放指定序号文件
 * @param        n:播放文件序号为n的音乐文件,如果没有则播放第一个文件
 */
AT+PLAYNUM=5                       //播放第5号文件

/**
 * @brief 播放指定文件或文件夹
 * @param
 */
AT+PLAYFILE=/DF_REC/test.MP3        //播放DF_REC下的test.mp3一次

/**
 * @brief 功放开关指令
 * @param    ON、OFF
 */
AT+AMP=ON   //打开功放

/**
 * @brief 删除当前播放文件
 */
AT+DEL

/**
 * @brief 设置波特率(掉电保存,需再次上电生效)
 * @param    9600、19200、38400、57600、115200
 */
AT+BAUDRATE=115200  //设置波特率为115200

/**
 * @brief 提示音开关指令(掉电保存)
 * @param    ON、OFF
 */
AT+PROMPT=ON   //打开提示音

//LED提示开关指令(掉电保存)
/**
 * @brief LED提示开关指令(掉电保存)
 * @param    ON、OFF
 */
AT+LED=ON   //打开LED指示

常见问题

Q: FileNumber的命名规格是怎样的? A: 命名规则是按照文件写入DFPlayer PRO的顺序决定,如下图,箭头编号代表写入顺序。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接