ESP32(1) : ESP32接DFPlayer Mini随机播放Mp3音乐

📅 发布时间:2026/7/5 4:30:36 👁️ 浏览次数:
ESP32(1) : ESP32接DFPlayer Mini随机播放Mp3音乐
1.前言1.1.开发IDEArduino IDE 2.3.71.2.版本开发板 :esp32 by Espressif Systems : 2.0.17库 :DFRobotDFPlayerMini : 1.0.61.3.TF卡内容根目录创建 01 文件夹, 里面放mp3文件, 编号从 0001.mp3 0002.mp3 ...歌曲信息如下:2.接线DFPlayer Mini 引脚ESP32 引脚说明VCC3.3V我这边测试独立5V播放, 只能3.3V(推荐 5V供电更稳部分模块 3.3V 也可工作)GNDGND共地必须接TXGPIO16 (RX2)ESP32 接收 DFPlayer 数据DFPlayer TX → ESP32 RXRXGPIO17 (TX2)ESP32 发送指令给 DFPlayerESP32 TX → DFPlayer RX需串 1kΩ 电阻SPK / SPK-扬声器正负极接 8Ω/0.5W 小喇叭或接功放输入3.调试3.1.播放第一首歌#include Arduino.h #include DFRobotDFPlayerMini.h HardwareSerial dfpSerial(2); DFRobotDFPlayerMini dfPlayer; void setup() { // 波特率 Serial.begin(115200); dfpSerial.begin(9600, SERIAL_8N1, 16, 17); // RX16, TX17 // 上电等2秒让DFPlayer完全启动 delay(2000); if (dfPlayer.begin(dfpSerial)) { Serial.println(初始化成功播放0001.mp3); dfPlayer.volume(25); dfPlayer.outputDevice(DFPLAYER_DEVICE_SD); dfPlayer.play(1); // 固定播放第一首不随机 } else { Serial.println(初始化失败); } } void loop() { // 只监听播放完成不做任何操作 if (dfPlayer.available()) { if (dfPlayer.readType() DFPlayerPlayFinished) { Serial.println(第一首播放完); // 不切换下一首测试单首是否能完整播放 } } delay(100); }3.2.随机播放, 拔电再通电需要按复位键才能播放第一次测试播放几首后会停第二次烧绿测试可以一直播放, 但是拔电重新插不会自动播放, 需要按下rest键才能能播放#include Arduino.h #include DFRobotDFPlayerMini.h HardwareSerial dfpSerial(2); DFRobotDFPlayerMini dfPlayer; // 配置参数根据你的实际歌曲数修改 const int VOLUME 25; const int TOTAL_FILES 3; // 你01文件夹下的歌曲总数1/2/3 const int POWER_ON_DELAY 2000; void setup() { Serial.begin(115200); dfpSerial.begin(9600, SERIAL_8N1, 16, 17); delay(POWER_ON_DELAY); if (dfPlayer.begin(dfpSerial)) { Serial.println(✅ 初始化成功上电随机播放); dfPlayer.volume(VOLUME); dfPlayer.outputDevice(DFPLAYER_DEVICE_SD); // 上电随机播放第1首和你能播放的逻辑一致 playRandomSong(); } else { Serial.println(❌ 初始化失败); } } void loop() { // 监听播放完成自动切歌只在播放完后发1次指令 if (dfPlayer.available()) { if (dfPlayer.readType() DFPlayerPlayFinished) { Serial.println( 当前曲目播放完随机切歌); // 播放完后只发1次随机切歌指令避免频繁操作 playRandomSong(); // 给3.3V模块响应时间避免指令过快导致冲突 delay(500); } } delay(100); } // 封装随机播放函数只发1次指令极简逻辑 void playRandomSong() { int randomTrack random(1, TOTAL_FILES 1); dfPlayer.play(randomTrack); // 用你验证过的play(n)指令 Serial.print( 播放物理排序第); Serial.print(randomTrack); Serial.println(首歌); }4.随机播放(最终方案)代码使用 3.2 , 接EN引脚到微动开关, 另一边接GND, 通电后一会儿按下微动开关启动随机播放TF开根目录创建名字为 01 的文件夹, mp3文件发放里面变量说明 :VOLUME : 设置 DFPlayer Mini 的播放音量, 范围是0 ~ 30,0 静音, 30 最大音量, 数值越大音量越高线性调节TOTAL_FILES : 歌曲数量