本帖最后由 麦壳maikemaker 于 2025-4-29 20:55 编辑
前面写了小白避坑,收集资料学习的过程中,有人做esp32网络收音机,于是让大模型写了一个demo。
首先准备网络音频链接
安装浏览器插件“猫爪” ,教程https://cat-catch.bmmmd.com/
打开蜻蜓FM:https://www.qtfm.cn/播放你喜欢的广播或者有声书等

安装Arduino库

代码
- #include <Arduino.h>
- #include <WiFi.h>
- #include <WiFiMulti.h>
- #include "Audio.h" // 使用ESP32-audioI2S库
-
- // 硬件配置(匹配MAX98357A模块)
- #define I2S_BCLK 45 // 位时钟
- #define I2S_LRC 46 // 左右声道时钟
- #define I2S_DOUT 42 // 数据输出
-
- // 网络配置
- const char* ssid = "waoo2111280";
- const char* password = "waoo2111280";
-
- Audio audio;
- WiFiMulti wifiMulti;
-
- void setup() {
- Serial.begin(115200);
-
- // 初始化I2S引脚
- audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
- audio.setVolume(12); // 音量范围0-21
-
- // 连接WiFi
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("\nWiFi connected");
-
- // 播放网络音频(示例URL)
- audio.connecttohost("https://lhttp-hw.qtfm.cn/live/1947/64k.mp3"); // 替换为你的音频流URL
- }
-
- void loop() {
- audio.loop(); // 必须持续调用以处理音频流
-
- // 通过串口输入新URL(可选功能)
- if (Serial.available()) {
- audio.stopSong();
- String url = Serial.readString();
- url.trim();
- if (url.length() > 5) {
- audio.connecttohost(url.c_str());
- }
- }
- }
-
- // 可选:音频事件回调函数
- void audio_info(const char *info) {
- Serial.print("Audio Info: "); Serial.println(info);
- }
复制代码
修改音频链接:
编译并上传即可。
|