这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【合宙ESP32C3开发板+Arduino】播放SD卡中的MP3音乐

共1条 1/1 1 跳转至

【合宙ESP32C3开发板+Arduino】播放SD卡中的MP3音乐

专家
2026-06-17 14:53:59     打赏

前面使用esp32c3开发板完成了播放wav文件的处理,本次实验在不改变线路的情况下测试播mp3音乐文件。

图片1.png

预先在SD卡中准备一个mp3音乐,名字为qingyi.mp3。

程序代码如下:

#include <SPI.h>
#include <SD.h>
#include "AudioTools.h"
#include "AudioTools/AudioCodecs/CodecMP3Helix.h"

// SD卡模块的SPI引脚
#define SCK_PIN  4
#define MISO_PIN 7
#define MOSI_PIN 6
#define CS_PIN   10

// 连接到MAX98357的I2S引脚
#define BCK_PIN  5   // 位时钟 (MAX98357的BCK)
#define WS_PIN   3   // 字时钟/左右声道选择 (MAX98357的LRC)
#define DATA_PIN 2   // 数据输出 (MAX98357的DIN)

I2SStream i2s; // final output of decoded stream
EncodedAudioStream decoder(&i2s, new MP3DecoderHelix()); // Decoding stream
StreamCopy copier; 
File audioFile;

void setup(){
  Serial.begin(115200);
  AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);  

  SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, CS_PIN);

  // 初始化 SD 卡
  if (!SD.begin(CS_PIN)) {
    Serial.println("SD 卡初始化失败,请检查接线!");
    return;
  }
  Serial.println("SD 卡初始化成功");
  audioFile = SD.open("/qingyi.mp3");

  // setup i2s
  auto config = i2s.defaultConfig(TX_MODE);
  config.pin_bck = BCK_PIN;   // MAX98357 的 BCLK
  config.pin_ws = WS_PIN;    // MAX98357 的 LRC
  config.pin_data = DATA_PIN;  // MAX98357 的 DIN
  i2s.begin(config);


  // setup I2S based on sampling rate provided by decoder
  decoder.begin();

  // begin copy
  copier.begin(decoder, audioFile);

}

void loop(){
  if (!copier.copy()) {
    stop();
  }
}

使用了AudioTools播放库,需要专门安装。因为无法从Arduino的管理库直接安装,需要从GitHub下载。下载以下两个文件:

arduino-audio-tools-main.zip

arduino-libhelix-main.zip

下载后,通过菜单“项目”-》“导入”-》“添加.ZIP库...”方式安装库。

烧录时,切记要使用Flash Mode :DIO方式。













关键词: 懒猫的学习笔记     ESP32C3     MP3    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]