2026-4-2 22:36:29 [显示全部楼层]
9浏览
查看: 9|回复: 0

[ESP8266/ESP32] 求助dfplayermini模块只有通电时有闪一下红灯不放音乐

[复制链接]
本帖最后由 huafff 于 2026-4-2 22:38 编辑

用的是esp32-cam,dfplayermini模块只有刚通电时亮了下红灯,后面都没亮过,喇叭有滋滋声
这是代码
#ifndef MP3_PLAYER_H
#define MP3_PLAYER_H

#include "esp32cam_config.h"
#include <HardwareSerial.h>
#include <DFRobotDFPlayerMini.h>

// 串口和对象定义
HardwareSerial Mp3Serial(2);
DFRobotDFPlayerMini myDFPlayer;

// 状态变量
bool mp3Initialized = false;
unsigned long lastMP3Heartbeat = 0;
int mp3FailCount = 0;

// 初始化MP3
bool mp3Init() {
  Serial.println("======== MP3初始化 ========");
  Serial.println("引脚: RX=12, TX=16");

  Mp3Serial.end();
  delay(100);
  Mp3Serial.begin(9600, SERIAL_8N1, MP3_RX, MP3_TX);
  delay(300);

  Serial.println("尝试连接DFPlayer...");

  if (myDFPlayer.begin(Mp3Serial, true, true)) {
    delay(200);
    myDFPlayer.volume(25);
    myDFPlayer.stop();
    mp3Initialized = true;
    Serial.println("✓ MP3初始化成功!");
    Serial.println("音量已设为: 25");
    return true;
  }

  Serial.println("✗ MP3初始化失败");
  Serial.println("请检查:接线/电源/SD卡");
  mp3Initialized = false;
  return false;
}

// 播放音频
void playAudio(uint8_t num) {
  if (!mp3Initialized) {
    Serial.println("MP3未初始化,无法播放");
    return;
  }

  Serial.print("播放音频 #");
  Serial.println(num);
  myDFPlayer.playMp3Folder(num);
}

// 停止播放
void stopAudio() {
  if (mp3Initialized) {
    Serial.println("停止播放");
    myDFPlayer.stop();
  }
}

// 设置音量 (0-30)
void setMP3Volume(int volume) {
  if (mp3Initialized) {
    volume = constrain(volume, 0, 30);
    myDFPlayer.volume(volume);
    Serial.print("音量设为: ");
    Serial.println(volume);
  }
}

// 打印状态
void printMP3Status() {
  Serial.println("=== MP3状态 ===");
  Serial.print("初始化: ");
  Serial.println(mp3Initialized ? "是" : "否");
  if (mp3Initialized) {
    Serial.print("音量: ");
    Serial.println(myDFPlayer.readVolume());
  }
}

// 健康检查
void mp3HealthMonitor() {
  static unsigned long lastCheck = 0;

  if (!mp3Initialized) {
    static unsigned long lastTry = 0;
    if (millis() - lastTry > 10000) {
      lastTry = millis();
      mp3Init();
    }
    return;
  }

  if (millis() - lastCheck > 30000) {
    lastCheck = millis();

    int vol = myDFPlayer.readVolume();
    delay(20);

    if (vol == 0 && myDFPlayer.available()) {
      mp3FailCount++;
      if (mp3FailCount >= 3) {
        Serial.println("MP3心跳失败,尝试重连");
        mp3Initialized = false;
      }
    } else {
      mp3FailCount = 0;
    }
  }
}

// 兼容性函数
void mp3Heartbeat() {
  mp3HealthMonitor();
}

#endif


573a81d65ebfa755ad241dafae83c3c8.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail