以下是基于ESP32和DFPlayer Mini的蓝牙音乐播放器代码示例,ESP32通过蓝牙接收命令,控制DFPlayer Mini播放音频文件,并控制音量。
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
#include <BluetoothSerial.h>
// 蓝牙模块
BluetoothSerial SerialBT;
// DFPlayer Mini 控制引脚
#define DFPLAYER_RX 16
#define DFPLAYER_TX 17
SoftwareSerial mySoftwareSerial(DFPLAYER_RX, DFPLAYER_TX);
DFRobotDFPlayerMini myDFPlayer;
// 控制按钮
#define PLAY_BUTTON_PIN 12
#define PAUSE_BUTTON_PIN 14
#define VOL_UP_PIN 13
#define VOL_DOWN_PIN 15
void setup() {
// 初始化串口
Serial.begin(115200);
SerialBT.begin("ESP32_Bluetooth"); // 初始化蓝牙串口
// 初始化DFPlayer Mini
mySoftwareSerial.begin(9600);
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println("DFPlayer Mini not detected!");
while (true);
}
Serial.println("DFPlayer Mini online.");
// 初始化控制按钮
pinMode(PLAY_BUTTON_PIN, INPUT_PULLUP);
pinMode(PAUSE_BUTTON_PIN, INPUT_PULLUP);
pinMode(VOL_UP_PIN, INPUT_PULLUP);
pinMode(VOL_DOWN_PIN, INPUT_PULLUP);
// 播放器初始化设置
myDFPlayer.volume(15); // 设置音量(0-30)
myDFPlayer.play(1); // 播放第一首歌
}
void loop() {
// 监听蓝牙指令
if (SerialBT.available()) {
String btData = SerialBT.readString();
Serial.println("Received: " + btData);
// 根据蓝牙指令执行控制
if (btData == "PLAY") {
myDFPlayer.play();
}
if (btData == "PAUSE") {
myDFPlayer.pause();
}
if (btData == "NEXT") {
myDFPlayer.next();
}
if (btData == "PREV") {
myDFPlayer.previous();
}
if (btData == "VOL_UP") {
int volume = myDFPlayer.readVolume();
if (volume < 30) {
myDFPlayer.volume(volume + 1);
}
}
if (btData == "VOL_DOWN") {
int volume = myDFPlayer.readVolume();
if (volume > 0) {
myDFPlayer.volume(volume - 1);
}
}
}
// 检测按钮控制
if (digitalRead(PLAY_BUTTON_PIN) == LOW) {
myDFPlayer.play();
delay(500); // 防止抖动
}
if (digitalRead(PAUSE_BUTTON_PIN) == LOW) {
myDFPlayer.pause();
delay(500); // 防止抖动
}
if (digitalRead(VOL_UP_PIN) == LOW) {
int volume = myDFPlayer.readVolume();
if (volume < 30) {
myDFPlayer.volume(volume + 1);
}
delay(500); // 防止抖动
}
if (digitalRead(VOL_DOWN_PIN) == LOW) {
int volume = myDFPlayer.readVolume();
if (volume > 0) {
myDFPlayer.volume(volume - 1);
}
delay(500); // 防止抖动
}
}
代码解释
- 蓝牙控制:ESP32通过
BluetoothSerial
库接收蓝牙指令,控制音乐播放、暂停、音量调节等。 - DFPlayer Mini控制:通过
SoftwareSerial
与DFPlayer Mini进行通信,控制播放、暂停、音量、歌曲切换等。 - 按钮控制:通过接入按钮来控制播放、暂停、音量增减等功能。
- 蓝牙数据解析:接收到蓝牙指令后,根据指令执行相应的操作,例如播放、暂停、切歌、调节音量等。