当前位置: 首页 > news >正文

esp32实现在线音频播放

环境

vscode+platformio+arduion && 串口,wifi-CSDN博客

代码

// Welcome to www.LingShunLAB.com #include "Arduino.h" #include "WiFiMulti.h" #include "Audio.h" // Digital I/O used #define I2S_DOUT 7 #define I2S_BCLK 15 #define I2S_LRC 16 Audio audio; WiFiMulti wifiMulti; // config your wifi String ssid = "0000"; String password = "000"; void setup() { Serial.begin(115200); delay(1000); Serial.println("\n\nESP32-S3 Audio Streamer Starting..."); // 初始化 WiFi WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); // 添加 WiFi 网络 wifiMulti.addAP(ssid.c_str(), password.c_str()); Serial.println("Connecting to WiFi..."); Serial.print("SSID: "); Serial.println(ssid); // 尝试连接 WiFi,最多重试10次 int retryCount = 0; while (wifiMulti.run() != WL_CONNECTED && retryCount < 20) { delay(500); Serial.print("."); retryCount++; } if (WiFi.status() == WL_CONNECTED) { Serial.println("\nWiFi Connected!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); Serial.print("Signal Strength: "); Serial.print(WiFi.RSSI()); Serial.println(" dBm"); } else { Serial.println("\nWiFi Connection Failed!"); Serial.println("Possible causes:"); Serial.println("1. Wrong SSID or password"); Serial.println("2. WiFi network not in range"); Serial.println("3. Network requires special authentication"); Serial.println("4. Hardware issue"); // 继续执行,音频库可能会重试 } // 初始化音频 audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); audio.setVolume(12); // 0...21 // 只有在WiFi连接成功后才尝试连接音频流 if (WiFi.status() == WL_CONNECTED) { Serial.println("Connecting to audio stream..."); audio.connecttohost("http://ngcdn001.cnr.cn/live/zgzs/index.m3u8"); // 128k mp3 } } void loop() { audio.loop(); // 定期检查WiFi状态 static unsigned long lastCheck = 0; if (millis() - lastCheck > 10000) { // 每10秒检查一次 lastCheck = millis(); if (WiFi.status() != WL_CONNECTED) { Serial.println("WiFi disconnected! Attempting to reconnect..."); wifiMulti.run(); } } if(Serial.available()){ // put streamURL in serial monitor audio.stopSong(); String r=Serial.readString(); r.trim(); if(r.length()>5) audio.connecttohost(r.c_str()); log_i("free heap=%i", ESP.getFreeHeap()); } } // optional callback functions (same as before) void audio_info(const char *info){ Serial.print("info "); Serial.println(info); } void audio_id3data(const char *info){ Serial.print("id3data ");Serial.println(info); } void audio_eof_mp3(const char *info){ Serial.print("eof_mp3 ");Serial.println(info); } void audio_showstation(const char *info){ Serial.print("station ");Serial.println(info); } void audio_showstreamtitle(const char *info){ Serial.print("streamtitle ");Serial.println(info); } void audio_bitrate(const char *info){ Serial.print("bitrate ");Serial.println(info); } void audio_commercial(const char *info){ Serial.print("commercial ");Serial.println(info); } void audio_icyurl(const char *info){ Serial.print("icyurl ");Serial.println(info); } void audio_lasthost(const char *info){ Serial.print("lasthost ");Serial.println(info); } // 添加WiFi事件处理回调 void WiFiEvent(WiFiEvent_t event) { switch(event) { case ARDUINO_EVENT_WIFI_STA_GOT_IP: Serial.println("WiFi Connected! Got IP: " + WiFi.localIP().toString()); break; case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: Serial.println("WiFi Disconnected. Attempting to reconnect..."); wifiMulti.run(); break; default: break; } }
http://www.jsqmd.com/news/259273/

相关文章:

  • uv 与 pip:Python 包与依赖管理工具对比
  • vscode+platformio+arduion 串口,wifi
  • 告别时间不同步:轻松掌握同步技术核心要点
  • 提示工程架构师:玩转上下文工程跨模态信息融合技术
  • 2026 年公交车体广告公司综合实力排行榜单及选择建议指南:2026年公交车体广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • web入门71-80
  • 智能教育的“模块化”设计:架构师如何快速响应教育政策变化?
  • 学长亲荐9个AI论文写作软件,专科生轻松搞定毕业论文!
  • Hive索引使用指南:大数据查询加速的秘诀
  • 2026 年公交车身广告公司综合实力排行榜单及选择建议指南:2026年公交车身广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 如何选择适合跨境电商的全球代理IP?
  • 如何下载安装App Store应用旧版本教程
  • 青少年CTF练习平台~Upload3
  • 时序数据困局突围:从存储爆炸到实时分析,金仓多模融合方案的技术实践
  • 基于 Flutter × OpenHarmony 的便签编辑功能实践解析
  • [吾爱大神原创工具] AI 提示词管理软件,具有高频词云 词云筛选 收录提醒 标签 颜色 等多种功能
  • 2026 年公交广告投放公司综合实力排行榜单及选择建议指南:2026年公交广告投放公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 学习记录260117
  • Python 使用 Chainlit + Ollama 快速搭建本地 AI 聊天应用
  • AI应用架构师指南:AI驱动客户洞察系统的6层技术架构设计与实践
  • 以翼为盾,以爱为刃—中国猎鹰特卫队友招募令
  • 巴菲特的焦点投资策略
  • linux驱动之led(合众恒跃RK3506平台)
  • 2026 年公交广告公司综合实力排行榜单及选择建议指南:2026年公交广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 2026 年公交广告公司综合实力排行榜单及选择建议指南:2026年公交广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 音程知识
  • 210_尚硅谷_继承的深入讨论(1)
  • 2026 年高铁广告公司综合实力排行榜单及选择建议指南:2026年高铁广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐
  • 提示工程架构师指南:如何用上下文工程提升Agentic AI的任务完成率
  • 5D影院带来的视觉震撼与娱乐投资价值分析以及球幕影院设备价格揭秘