模擬收音機在這個數字世界中逐漸消失,因為今天從電影到歌曲的所有內容都直接從互聯網流式傳輸。讓我們看看如何通過利用一些簡單的數字電子設備、編碼和有效的互聯網連接來制作互聯網收音機。
互聯網收音機可以創建為通過互聯網運行的獨立設備,也可以創建為通過與互聯網連接的計算機運行的軟件。在這里,我們將制作一個獨立的設備,它將連接到 Wi-Fi,訪問互聯網,最后播放音頻。為了構建我們的ESP32 網絡廣播,我們選擇了 ESP32 開發板(顯然)和 MAX98357A I2S 放大器。如果您正在尋找可以離線工作的簡單 FM 收音機,那么您應該查看鏈接的文章。
構建 ESP32 網絡收音機所需的組件
您將需要以下組件來使用 ESP32 構建我們的網絡收音機。大多數零件應該很容易獲得。
ESP32 開發套件
MAX98357A
8 歐姆揚聲器,額定功率為 0.5W 至 1W。
USB電纜
5V 1A充電器
活躍的互聯網連接
ESP32 和 I2S 通信
正如我們大多數人所知,ESP32 是一款成本極低、低功耗的片上系統微控制器,集成了 Wi-Fi 和雙模藍牙。我們之前已經構建了很多ESP32 項目,有興趣的可以去看看。但是,我們不會在這里使用 ESP32 的藍牙功能,但我們仍然選擇了 ESP32,原因如下所列。
它有Wi-Fi模塊
成本低
它具有 I2S 外設支持。
現在,為什么 I2S 很重要?
集成 IC間聲音總線 (I2S)是一種串行總線接口標準,用于連接數字音頻設備。它由飛利浦半導體制造。此接口最常用于音頻 ADC 和 DAC 組件。
由于要運行收音機,我們需要使用揚聲器并需要產生模擬輸出,因此我們需要某種數模轉換器。這是該項目有趣的部分。MAX98357A 模塊。它提供了一個數字 D 類放大器,該放大器使用數字音頻接口或 I 2 S 與微控制器單元進行通信。
MAX98357A I2S模塊的優勢如下:
效率高達 92%
可在 5V 下向 4 歐姆負載提供 3.2W 輸出功率
點擊和彈出式降噪
短路和熱保護
支持左、右或(左/2 + 右/2)輸出
工作電壓為 2.5V 至 5.5V。
我們在這個項目中使用的 MAX98357A I2S 模塊如下圖所示。
MAX98357A I2S模塊與 ESP32接口的電路圖
原理圖很簡單。MAX98357 連接如下表所示。
由于增益引腳與 GND 相連,因此增益為 12dB。
ESP32 的網絡電臺代碼
嗯,這個項目使用了GitHub 上提供的ESP32-audioI2S 庫。在我們進入代碼之前,請確保從以下鏈接下載庫并將其添加到 Arduino IDE。
ESP32 音頻 I2S 庫
本頁底部提供了完整代碼,您可以直接復制和使用代碼,但如果您需要它的解釋,請進一步閱讀。?
首先,包含項目所需的庫,如下圖。
?
#include "Arduino.h" #include "WiFi.h" #include "Audio.h"
?
然后,指定 MAX98357A 的引腳排列。如果您使用的是與上面顯示的完全相同的模塊,則可以將其保留為如下所示。?
?
#define MAX98357A_I2S_DOUT 25 #define MAX98357A_I2S_BCLK 27 #define MAX98357A_I2S_LRC 26 音頻音頻;
?
輸入您的 Wi-Fi SSID 和密碼,這允許 ESP32 連接到互聯網。
?
String ssid = "你的用戶名"; 字符串密碼 = "您的密碼";
?
在設置中,正在設置 WiFi 密碼和 SSID,并啟動 WiFi。連接 Wi-Fi 后,選擇音頻引腳,音量也設置為最大。
?
audio.setPinout(MAX98357A_I2S_BCLK, MAX98357A_I2S_LRC, MAX98357A_I2S_DOUT); 音頻.setVolume(100);
?
在此處設置流媒體 URL,您可以選擇任何您選擇的流媒體 URL,如果需要,您還可以引入一個電位器在多個流媒體通道之間切換。
?
audio.connecttohost("http://vis.media-ice.musicradio.com/CapitalMP3"); }
?
在所有這些之后,使用下面的代碼在 void 循環中連續播放音頻。
?
無效循環() { 音頻.循環(); }
?
測試我們的 ESP32 網絡廣播播放器
電路按照原理圖正確連接,并與 Wi-Fi 連接。一旦設置啟動,它就會連接到互聯網并開始從程序中提到的 URL 流式傳輸音頻。
#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
音頻音頻;
字符串 ssid = "Sourav";
字符串密碼 = "87654321";
無效設置(){
WiFi.disconnect();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid.c_str(), password.c_str());
而(WiFi.status()!= WL_CONNECTED)
延遲(1500);
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
音頻.setVolume(100);
audio.connecttohost(" http://vis.media-ice.musicradio.com/CapitalMP3 ");
}
評論
查看更多