我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


一個夥伴傳來一個用esp8266播放mp3的架構,要我幫忙改成ESP32版本,原本我一直以為它是用dfplayer的,沒想到竟然是直接接在esp8266的rx腳位播放,除了SD卡外,沒有外加任何裝置,靠著的是軟體Lib dac做mp3解碼。
查了一下是採用esp8266audio這個lib(這個lib同時適用esp32),在此借花獻佛先提供8266的程式碼及接線方式。
一、材料準備
1.ESP8266任意版本皆可
2.SPI界面SD讀卡機及一片SD卡,像這款: https://goods.ruten.com.tw/item/show?21652913575950

3.內建擴大器喇叭,像是一般的電腦用喇叭即可,主要是因為rx腳位本身沒有電壓輸出,所以不能使用8歐姆那種沒有內建擴大器的speaker
4.各式杜邦線數條
二、硬體接線
1.先將SD讀卡機接在ESP8266的SPI腳位(CS, MISO, MOSI, SCK)
2.將擴大器喇叭的音源正負極同時接在rx上
3.再次提醒,要使用有擴大器的喇叭,將喇叭接上電源

image

三、程式設計

首先至github下載esp8266audio函式庫: https://github.com/earlephilhower/ESP8266Audio

點選右上角Clone or download/Download Zip

image

下載完畢後,選擇草稿碼/匯入程式庫/加入.Zip程式庫

image

在開啟視窗中選擇剛剛下載的ESP8266Audio-master.zip,再選開啟即可完成匯入功能。

image

完成程式庫匯入後,我們將一首mp3檔案複製到sd卡根目錄中進行測試,並命名為「TRACK0.mp3」,後續使用者可自行於程式中更改檔案名稱。

以下範例程式修改於範例程式,開機後會直接開啟TRACK0.mp3進行播放。

結論是:音效品質普,小聲不暴音,但偶爾會有雜音


#include "AudioFileSourceSD.h"
#include "AudioFileSourceID3.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"
#include "SD.h"
#include "SPI.h"

AudioGeneratorMP3 *mp3;
AudioFileSourceSD *file;
AudioOutputI2SNoDAC *out;
AudioFileSourceID3 *id3;
uint32_t Size = ESP.getFreeHeap();
void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.print("Initializing SD card...");
  if (!SD.begin(D3))
  {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  delay(100);
  file = new AudioFileSourceSD("/TRACK0.mp3");

  out = new AudioOutputI2SNoDAC();
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);  

}

void loop() {
  if (mp3->isRunning()) {
    if (!mp3->loop()) {
        mp3->stop();
        delete file;
        delete mp3;
        mp3 = new AudioGeneratorMP3();
        file = new AudioFileSourceSD("/TRACK0.mp3");
        mp3->begin(file, out);
        Serial.println(Size);
    }
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }

}


 

arrow
arrow

    夜市 小霸王 發表在 痞客邦 留言(0) 人氣()