太棒了!你现在已经有:
✅ ESP32-S3
✅ VS1053 音频解码模块
✅ SD 卡模块
✅ PAM8403 功放(放大 VS1053 输出)
✅ 无源喇叭(连接 PAM8403)
我们现在就可以开始写一个完整的 MP3 播放系统,流程如下:
🔧 系统架构(数据流)
less复制编辑[ESP32-S3] 
   |
   ├── 读取 MP3 文件(来自 SD 卡)
   └── SPI 发送 MP3 数据 →
         [VS1053 解码模块] → 模拟音频输出 →
             [PAM8403 放大] → [无源喇叭]
🧰 所需库(使用 Arduino 开发方式)
确保在 Arduino IDE 或 PlatformIO 中装好以下库:
cpp复制编辑Adafruit_VS1053
SD
SPI
🖧 引脚定义建议(可根据你实际接线修改)
| 模块功能 | 引脚名称 | ESP32-S3 推荐引脚 | 
|---|---|---|
| VS1053 SPI MOSI | MOSI | GPIO 23 | 
| VS1053 SPI MISO | MISO | GPIO 19 | 
| VS1053 SPI CLK | SCK | GPIO 18 | 
| VS1053 Control CS | XCS | GPIO 5 | 
| VS1053 Data CS | XDCS | GPIO 16 | 
| VS1053 DREQ | DREQ | GPIO 4 | 
| SD 卡 CS | SD_CS | GPIO 15 | 
✅ 完整 Arduino 示例代码(MP3 播放)
cpp复制编辑#include <SPI.h>
#include <SD.h>
#include <Adafruit_VS1053.h>
// VS1053引脚配置
#define VS1053_RESET   -1      // 如果模块没有连接 RESET 引脚,则设置为 -1
#define VS1053_CS      5       // XCS
#define VS1053_DCS     16      // XDCS
#define VS1053_DREQ    4
// SPI 总线
#define CARDCS 15              // SD 卡的 CS 引脚
#define VS1053_MOSI 23
#define VS1053_MISO 19
#define VS1053_CLK  18
Adafruit_VS1053_FilePlayer musicPlayer = 
  Adafruit_VS1053_FilePlayer(VS1053_RESET, VS1053_CS, VS1053_DCS, DREQ, CARDCS);
void setup() {
  Serial.begin(115200);
  Serial.println("VS1053 + ESP32 音频播放启动");
  // 初始化 VS1053 解码器
  if (!musicPlayer.begin()) {
    Serial.println("❌ VS1053 初始化失败");
    while (1);
  }
  Serial.println("✅ VS1053 初始化成功");
  // 启用 SPI SD 卡
  if (!SD.begin(CARDCS)) {
    Serial.println("❌ SD 卡初始化失败");
    while (1);
  }
  Serial.println("✅ SD 卡初始化成功");
  // 检查文件是否存在
  if (!SD.exists("/test.mp3")) {
    Serial.println("❌ 没找到 /test.mp3 文件");
    while (1);
  }
  // 设置音量(0 = 最大,100 = 静音)
  musicPlayer.setVolume(20, 20);  // 左右声道音量
  // 播放 MP3 文件
  Serial.println("🎵 开始播放 /test.mp3");
  musicPlayer.startPlayingFile("/test.mp3");
}
void loop() {
  if (!musicPlayer.playingMusic) {
    Serial.println("✅ 播放完成");
    delay(2000);
    musicPlayer.startPlayingFile("/test.mp3"); // 重复播放
  }
}
🔌 硬件连接(简略图)
sql复制编辑ESP32           VS1053
-----           ------
GPIO 23  <-->   MOSI
GPIO 19  <-->   MISO
GPIO 18  <-->   SCK
GPIO 5   <-->   XCS(CS)
GPIO 16  <-->   XDCS(DCS)
GPIO 4   <-->   DREQ
ESP32           SD卡模块
-----           ---------
GPIO 23  <-->   MOSI
GPIO 19  <-->   MISO
GPIO 18  <-->   SCK
GPIO 15  <-->   CS
VS1053           PAM8403
-------           -------
LOUT / ROUT  --> 输入(L / R)
GND            --> GND
VCC(3.3~5V)   --> VCC
PAM8403          喇叭
-------          ------
OUT+ / OUT-  --> 无源喇叭
📝 文件准备
- 将 MP3 文件重命名为 test.mp3
- 拷贝到 SD 卡根目录
- 确保卡格式为 FAT32
- 不要用超长文件名或子目录(VS1053 模块解析能力有限)
🎯 下一步建议
- 添加多个音频文件,加入按钮切歌功能
- 改用 musicPlayer.playFullFile()播放完整音频(阻塞式)
- 将音频文件从 Wi-Fi 或 BLE 下载后播放(高级功能)
- 加入 OLED 屏幕、旋钮控制音量等 UI