用户工具

站点工具


侧边栏

索引

抱歉,您没有权限增加页面
传感器和模块:mp3音乐播放模块

1、 产品图片

2、产品购买地址

3、产品概述

MP3音乐播放器模块是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块可以通过串口控制,作为Arduino UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32 文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。

4、产品参数

  1. 支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
  2. 24位DAC输出,动态范围支持:90dB,信噪比支持:85dB
  3. 完全支持FAT16、FAT32文件系统,最大支持32G的TF卡,支持32G的U盘、64M字节的NORFLASH
  4. 多种控制模式可选。IO控制模式、串口模式、AD按键控制模式
  5. 广播语插播功能,可以暂停正在播放的背景音乐。广告播放完毕回到背景音继续播放
  6. 30级音量可调,6级EQ可调

5、引脚说明

可以用TF卡卡槽来判断引脚的位置

6、原理图

  • AD按键模式:

模块支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。

  • IO口按键模式:

7、接线方式

如果使用 Arduino 供电,切记需要在串口通信端口上增加两个 1K 电阻用来消除噪音!(如果喇叭是我们这边购买的,一般都会配送这个电阻。)

8、示例程序

//中贝斯特UltiRobot音乐播放器模块示例教程
//程序效果:MP3模块设定音量为15,模块上灯亮,播放第一首,6秒。播放下一首,6秒。播放上一首,6秒。播放第三首,6秒。
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com
//MP3模块供电接arduino的5V引脚,不能接3.3V,会造成异常。
//本示例于19年11月30日更新,原示例和原库文件都不兼容,需要下载底部最新的库文件。


#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("UltiRobot Mp3Player Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("MP3Player online."));
  
  myDFPlayer.volume(25);  //Set volume value. From 0 to 30

}

void loop()
{
  myDFPlayer.play(1);  //播放第一首
  delay(30000);        //播放30秒,如果需要播放整首歌,就设置整首歌等时长的延迟。
  myDFPlayer.next();  //播放下一首
  delay(30000);
  myDFPlayer.previous();  //播放上一首
  delay(30000);
  myDFPlayer.play(3);  //播放第三首
  delay(30000);
  myDFPlayer.loop(2);  //循环播放第二首
  delay(30000);
  myDFPlayer.pause();  //暂停播放
  delay(10000);
  myDFPlayer.start();  //从暂停处重新开始播放
  delay(30000);
  myDFPlayer.enableLoopAll(); //循环播放所有MP3文件
  delay(30000);
  myDFPlayer.disableLoopAll(); //停止循环播放所有MP3文件
  delay(30000);
  myDFPlayer.randomAll(); //随机播放所有MP3文件
  delay(30000);

  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
  
}

9、注意事项

  1. 注意:文件夹命名需要是mp3,放置在SD卡根目录下,而mp3文件命名需要是4位数字,例如”0001.mp3″,放置在mp3文件夹下。
  2. 如需中英文命名,可以添加在数字后,例如”0001hello.mp3″或者”0001后来.mp3″。
  3. 程序如果上传失败,大多原因是库文件没有按照,这个是基础问题,参阅本站的库文件安装教程。

10、FAQ

问:Arduino控制DFPlayer mini时,喇叭有杂音,如何处理?

答:在TX,RX与MP3模块的RX,TX之间连一个1k电阻。因为DFPlayer Mini模块工作电压应该是3.3V,而主控板传入电压为5V,因此需要1K左右电阻分压。不能直接把模块供电接3.3V,会造成异常。

问SD卡中的文件和文件夹名字有什么格式要求吗?

答:函mp3_play (1)播放文件的格式为”0001***.mp3(或支持其他格式)”. 您可能需要注意这些: 该音频文件的名称应该命名一个四位数字开始,如:

  • 0001.mp3
  • 0002Chasing The Sun.mp3
  • 0003.mp3
  • 0004Try.mp3
  • 0010FourFiveSeconds.mp3

该音频文件应该放在MP3它坐落在TF卡的“根目录”文件夹;

11、相关资料下载

百度网盘;解压密码:o94k

12、综合实验

传感器和模块/mp3音乐播放模块.txt · 最后更改: 2020/08/02 20:17 由 ultirobot