絡(luò)收音機(jī):YoRadio 快速上手完整指南)
用 ESP32 從零搭建一臺網(wǎng)絡(luò)收音機(jī)YoRadio 快速上手完整指南【免費(fèi)下載鏈接】yoradioWeb-radio based on ESP32-audioI2S library項(xiàng)目地址: https://gitcode.com/GitHub_Trending/yo/yoradio家里躺著一塊 ESP32想讓它收網(wǎng)絡(luò)電臺、把歌曲信息投到屏幕上還能用手機(jī)遠(yuǎn)程切臺卻又不想從零寫底層驅(qū)動(dòng)ESP32 YoRadio 就是為這件事準(zhǔn)備的把 ESP32 變成一臺可聯(lián)網(wǎng)、可顯示、能接入智能家居的網(wǎng)絡(luò)收音機(jī)支持 MP3、AAC、FLAC 流媒體播放。下面按先跑起來再接入最后定制的順序帶你走完一遍。能力速覽它到底能做什么先看結(jié)論再?zèng)Q定要不要折騰。YoRadio 的核心能力如下能力維度你實(shí)際能得到的音頻解碼I2S DAC 與 VS1053b 兩種模塊二選一可播 MP3、AAC、FLAC 網(wǎng)絡(luò)流顯示20 余種屏幕驅(qū)動(dòng)單色 OLED、彩色 TFT、高分辨率大屏不接屏也可用DSP_DUMMY控制按鍵、旋轉(zhuǎn)編碼器、搖桿、觸摸屏、紅外遙控可混用聯(lián)網(wǎng)配置內(nèi)置 Web 服務(wù)器 WiFi瀏覽器里完成配網(wǎng)、加臺、調(diào)參智能家居原生支持 MQTT 與 Home Assistant電臺列表最多 65535 個(gè)電臺可導(dǎo)入 KaRadio 的WebStations.txt播放列表附加功能mDNS 發(fā)現(xiàn)、屏幕保護(hù)、OTA 升級、SD 卡本地播放、中英文界面它同時(shí)支持聯(lián)網(wǎng)WEB模式和 SD 卡本地SD模式可以互相切換斷網(wǎng)時(shí)也能播卡內(nèi)音樂。把硬件跑起來從源碼到點(diǎn)亮的五步第一步獲取源碼并確認(rèn)環(huán)境把倉庫克隆到本地git clone https://gitcode.com/GitHub_Trending/yo/yoradio環(huán)境有兩個(gè)硬要求先核對省得后面卡住使用Arduino IDE 1.8.19暫不支持 2.x 系列。ESP32 core 版本 ≥ 2.0.0。主工程在yoRadio/目錄下入口是yoRadio.ino。第二步生成并修改硬件配置硬件全部由一個(gè)文件決定examples/myoptions.h。把它復(fù)制到y(tǒng)oRadio.ino同級目錄只打開你需要的行來覆蓋默認(rèn)值。項(xiàng)目還提供了一個(gè)可視化的引腳表生成工具畫好接線就能導(dǎo)出這份文件省去手查引腳有兩個(gè)宏最容易踩坑務(wù)必二選一// 用 I2S DAC 時(shí) #define I2S_DOUT 27 #define VS1053_CS 255 // 255 表示該模塊不啟用 // 用 VS1053b 時(shí) #define I2S_DOUT 255 #define VS1053_CS 27再按實(shí)接屏幕設(shè)定#define DSP_MODEL DSP_ST7735不接屏就填DSP_DUMMY。其余旋鈕、按鍵、I2C、紅外等引腳也都在這一個(gè)文件里。第三步替換字體文件把yoRadio/fonts/glcdfont.c覆蓋到 Arduino 的Adafruit_GFX_Library/glcdfont.c。這一步是為了讓界面里的天氣、WiFi 信號、音量等新圖標(biāo)正常顯示替換后重啟一次 Arduino IDE。第四步上傳數(shù)據(jù)與固件在 Arduino IDE 里分兩步順序別反工具 →ESP32 Sketch Data Upload先把yoRadio/data/里的網(wǎng)頁和配置寫進(jìn) SPIFFS再點(diǎn)上傳把固件燒進(jìn) ESP32。第五步配網(wǎng)并加入第一臺電臺上電后 ESP32 會(huì)自建熱點(diǎn)yoRadioAP密碼12345987用手機(jī)或電腦連上訪問http://192.168.4.1/填入家里 WiFi。連上后設(shè)備會(huì)拿到局域網(wǎng) IP訪問http://設(shè)備IP/在播放列表里加電臺或?qū)?KaRadio 的WebStations.txt。想省掉這一步也可以提前把SSIDTAB密碼寫進(jìn)yoRadio/data/data/wifi.csv再上傳數(shù)據(jù)。接入你的家MQTT 與 Home Assistant接進(jìn)智能家居后YoRadio 從臺面上的播放器變成可以被調(diào)度的設(shè)備。兩條路徑MQTT 直連或走 Home Assistant。只開 MQTT 就夠用時(shí)把examples/mqttoptions.h復(fù)制到y(tǒng)oRadio/目錄填上 broker 地址、端口和主題前綴。四個(gè)主題分工很清晰ROOT/command下發(fā)指令如next、prev、toggle、stop、vol 80、play 3ROOT/status回報(bào)播放狀態(tài)ROOT/volume回報(bào)當(dāng)前音量ROOT/playlist回報(bào)播放列表地址。也就是說你發(fā)一條play 3就能讓設(shè)備播第 3 臺發(fā)vol 80直接定音量而不必碰機(jī)器。用 Home Assistant 做自動(dòng)化項(xiàng)目自帶 HA 組件。步驟把HA/custom_components/yoradio復(fù)制到.homeassistant/custom_components/在configuration.yaml里按HA/example_configuration.yaml加一個(gè)media_player實(shí)體填name和root_topic重啟 Home Assistant在 Lovelace 里加一張 Media Player 卡片即可。接進(jìn)來之后能玩出具體場景舉幾個(gè)能直接抄的每天早上 7 點(diǎn)自動(dòng)化觸發(fā)play并把音量提到 40有人回家時(shí)切換到新聞臺離家時(shí)stop把它和燈聯(lián)動(dòng)播放開始時(shí)開小夜燈停止后延時(shí)關(guān)燈。因?yàn)?HA 組件支持遠(yuǎn)程媒體播放本地媒體、Radio Browser、TTS你甚至能語音讓 YoRadio 播一段文本播報(bào)。按硬件定制外觀與手感同一套固件換不同的屏、不同的輸入、不同的音頻模塊成品氣質(zhì)完全不同。按預(yù)算和擺放位置來選。顯示單色、彩色、大屏單色 OLEDSSD1306、SH1106、N5110 等功耗低、對比高適合信息型收音機(jī)床頭、書桌都夠看。彩色 TFTST7735、ILI9341、ST7789、GC9106 等支持 VU 表、位深和主題配色視覺反饋更足是多數(shù)人的默認(rèn)選擇。高分辨率大屏ILI9488、ST7796480×320信息密度高適合客廳、遠(yuǎn)距離觀看。每種屏在yoRadio/src/displays/都有獨(dú)立驅(qū)動(dòng)配套默認(rèn)布局放在yoRadio/src/displays/conf/下的displayXXXconf.h想改界面布局就從這里入手。不接屏也可以填DSP_DUMMY后設(shè)備照常出聲靠網(wǎng)頁或 MQTT 控制??刂瓢存I、旋鈕、搖桿、觸摸、紅外控制方式按使用場景選且可以混用按鍵3 個(gè)起步左/中/右加上下鍵共 5 個(gè)操作最直觀旋轉(zhuǎn)編碼器一個(gè)旋鈕就能同時(shí)管音量和選臺手感最好是臺機(jī)常見配置搖桿一個(gè)器件頂替 5 個(gè)按鍵布線更省觸摸屏橫向滑是音量、縱向滑是選臺、點(diǎn)按播放/選臺更像手機(jī)紅外遙控在網(wǎng)頁設(shè)置里錄制按鍵碼最多綁 3 個(gè)遙控器適合客廳沙發(fā)場景。各輸入的引腳都寫在myoptions.h具體每個(gè)鍵的行為見倉庫根目錄的Controls.md。音頻模塊I2S DAC 還是 VS1053bI2S DAC接法簡單、解碼交給 ESP32適合求穩(wěn)的入門方案VS1053b板載解碼額外支持左右平衡和圖形均衡器且對 SD 卡播放更友好少數(shù)綠色板無聲音時(shí)在myoptions.h里加#define VS_PATCH_ENABLE false即可。兩者在固件里互斥就是前面I2S_DOUT/VS1053_CS那對宏。進(jìn)階與二次開發(fā)源碼結(jié)構(gòu)與插件機(jī)制想深挖時(shí)按目錄找就能定位不必通讀全量代碼yoRadio/src/core/核心邏輯player播放、display顯示調(diào)度、netserverWeb、mqtt、network、controls各管一攤yoRadio/src/audioI2S/與yoRadio/src/audioVS1053/兩套音頻解碼含 MP3/AAC/FLAC 解碼子模塊yoRadio/src/displays/屏幕驅(qū)動(dòng) conf/各屏布局widgets/界面組件yoRadio/src/pluginsManager/插件基類與事件調(diào)度yoRadio/src/plugins/放你自己的插件。插件怎么寫插件就是繼承Plugin基類只重寫你關(guān)心的事件例如on_setup、on_start_play、on_stop_play、on_track_change、on_btn_click、on_ticker每秒一次。寫好后把整個(gè)文件夾復(fù)制到y(tǒng)oRadio/src/plugins/MyPlugin即被識別同一事件可以掛多個(gè)插件。倉庫給了三個(gè)能直接照抄的樣例都在examples/plugins/helloWorld把每個(gè)事件都打印一遍適合先看事件流backlightControls按播放狀態(tài)開關(guān)背光deepsleep停止播放時(shí)讓 ESP32 進(jìn)入深度睡眠省電。插件機(jī)制的完整事件清單見yoRadio/src/pluginsManager/pluginsManager.h里的注釋。此外主題配色在examples/mytheme.h界面語言在yoRadio/locale/EN / RU都是低風(fēng)險(xiǎn)的自定義點(diǎn)。上手清單動(dòng)手前逐項(xiàng)核對Arduino IDE 是 1.8.19ESP32 core ≥ 2.0.0myoptions.h已放到y(tǒng)oRadio.ino同級I2S_DOUT與VS1053_CS只啟用了一個(gè)DSP_MODEL與實(shí)接屏幕一致無屏則填DSP_DUMMY已用yoRadio/fonts/glcdfont.c覆蓋 Adafruit_GFX 庫的同名文件先傳 Sketch DataSPIFFS再傳固件通過yoRadioAP完成配網(wǎng)并加入至少一臺電臺需要遠(yuǎn)程控制時(shí)已復(fù)制并填好mqttoptions.h或裝好 Home Assistant 的 yoradio 組件有 SD 卡/RTC 需求時(shí)相關(guān)引腳已在myoptions.h里配好照這份清單走完絕大多數(shù)第一次不響的問題都能在上傳前被攔下。剩下的就是選一塊你喜歡的屏把它掛上墻或擺上桌了。【免費(fèi)下載鏈接】yoradioWeb-radio based on ESP32-audioI2S library項(xiàng)目地址: https://gitcode.com/GitHub_Trending/yo/yoradio創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考