用ESP8266播放音樂

最近我們做一個(gè)項(xiàng)目需要在ESP8266中播放一段音樂,當(dāng)時(shí)一下就傻了,ESP8266可是沒有D/A輸出的! 一開始我們直接買了一塊D/A解碼的板子然后接上一個(gè)小功放來播放,但效果令人失望。聲音小不說其聲音有很大的干擾噪聲。而且這種做法無疑是難以產(chǎn)品化的,一個(gè)D/A解碼再加一個(gè)功放那成本已經(jīng)直接飆升了。

幾經(jīng)努力我們終于找到了一個(gè)非常實(shí)用的方案,根本不需要增加任何的附加硬件就以直接播放mp3!

這都?xì)w功于ESP8266Audio這個(gè)庫,將喇叭直接接到一個(gè)數(shù)字輸出口就可以直接播放MP3了,為了能有更大的功率加個(gè)普通三極管就可以完美推動一個(gè)小功率喇叭正常動作了。

 2N3904 (NPN)
                            +---------+
                            |         |     +-|
                            | E  B  C |    / S|
                            +-|--|--|-+    | P|
                              |  |  +------+ E|
                              |  |         | A|
ESP8266-GND ------------------+  |  +------+ K| 
                                 |  |      | E|
ESP8266-I2SOUT (Rx) -------------+  |      \ R|
                                    |       +-|
USB 5V -----------------------------+

這里我會放一個(gè)最簡單的示例來展示一下怎么來使用這個(gè)庫。

首先這個(gè)示例要使用SPIFFS來存儲音樂文件,關(guān)于SPIFFS的具體用法可以參考我以前發(fā)表的SPIFFS的使用一文。

將ESP8266Audio這個(gè)庫安裝好以后,要先引用以下幾個(gè)頭文件:

#include "AudioFileSourceSPIFFS.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"

這個(gè)庫使用起來非常簡單。首先是初始化

AudioGeneratorMP3 *mp3;
AudioFileSourceSPIFFS *file;
AudioOutputI2SNoDAC *out;

void setup()
{
  SPIFFS.begin();
  file = new AudioFileSourceSPIFFS("/test.mp3");
  out = new AudioOutputI2SNoDAC();
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
}

然后在主循環(huán)函數(shù)中判斷文件是否已經(jīng)播放完成

void loop()
{
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop(); 
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }
}

以下是全部代碼:

#include <Arduino.h>
#include "AudioFileSourceSPIFFS.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"

AudioGeneratorMP3 *mp3;
AudioFileSourceSPIFFS *file;
AudioOutputI2SNoDAC *out;
void setup()
{
  Serial.begin(115200);
  delay(1000);
  SPIFFS.begin();
  file = new AudioFileSourceSPIFFS("/jamonit.mp3");
  out = new AudioOutputI2SNoDAC();
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
}

void loop()
{
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop(); 
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }
}

參考閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,223評論 3 119
  • 今天中秋節(jié),決定堅(jiān)持一件事情。 一生就是一件事,就是很好地學(xué)習(xí)心理學(xué),我已經(jīng)讓很多人感知我的一部分性格是心理學(xué)。 ...
    牛油果和布丁閱讀 187評論 0 0
  • 1、聽《婷婷唱古詩》 2、看米卡視頻 3、指讀。指讀古詩,孩子要恐龍幣,說是想吃威化餅干。我說好啊,那咱就掙恐龍幣...
    馬行千里玥溢彩閱讀 234評論 0 0
  • 到了練習(xí)手抓力的時(shí)候了,媽媽把頭發(fā)貢獻(xiàn)出來,是不是就可以不用買曼哈頓球咯
    吉米麻麻511閱讀 200評論 0 0
  • 【最美山西·文化】 外儲說 ?左下(九) 文王自履 (韓非子) 原文: 文王伐崇,至鳳黃虛,襪...
    張梅霞?xì)g樂誦閱讀 805評論 0 1

友情鏈接更多精彩內(nèi)容