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.mzph.cn/news/1174639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uv 与 pip:Python 包与依赖管理工具对比

当谈到 Python 的包管理工具时&#xff0c;开发者常常要在 uv 和 pip 之间做出选择。 如果你看重开箱即用、广泛的兼容性和成熟的生态系统&#xff0c;pip 依然是稳妥之选&#xff1b;而如果你更关注安装速度、环境可复现性、干净的卸载行为&#xff0c;或者希望为新项目建立高…

vscode+platformio+arduion 串口,wifi

1.开发环境vscodeplatformioarduionesp32 - s3 - n16r8&#xff08;小智的一套开发板&#xff09;2.编译3.烧录选择板子端口烧录程序&#xff0c;可以看到蓝灯闪烁4.串口代码串口运行时可以看到绿灯闪烁// 简单的串口测试程序 #include "Arduino.h"void setup() {// …

告别时间不同步:轻松掌握同步技术核心要点

在跨时区协作、自动化运维日益普及的今天,设备间的时间一致性变得至关重要。然而,许多用户仍被时间不同步问题所困扰。其实,只要掌握几个核心配置要点与排查逻辑,就能有效避免此类问题。本文将带你从零开始,轻松掌…

2026 年公交车体广告公司综合实力排行榜单及选择建议指南:2026年公交车体广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐

一、公交车体广告概述 公交车体广告作为一种移动户外媒体形式,以其独特的流动性、广泛性和视觉冲击力,成为城市中重要的广告传播载体。公交车每日穿梭于城市核心区域,覆盖通勤、商业区、居民区等多类人群,为品牌提…

提示工程架构师:玩转上下文工程跨模态信息融合技术

提示工程架构师&#xff1a;玩转上下文工程跨模态信息融合技术关键词&#xff1a;提示工程架构师、上下文工程、跨模态信息融合技术、信息处理、应用场景摘要&#xff1a;本文围绕提示工程架构师如何玩转上下文工程跨模态信息融合技术展开。先介绍相关背景知识&#xff0c;包括…

web入门71-80

web71 分析代码ob_get_contents():得到输出缓冲区的内容。 ob_end_clean():清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。 preg_replace():执行一个正则表达式的搜索和替换。所以最后的输出结果会全部替换为…

智能教育的“模块化”设计:架构师如何快速响应教育政策变化?

智能教育的“模块化”设计&#xff1a;架构师如何用“积木思维”应对政策变化&#xff1f; 一、标题选项 政策变了不用慌&#xff01;智能教育系统的模块化架构设计指南智能教育模块化实战&#xff1a;架构师如何用“积木”快速适配政策调整&#xff1f;从“牵一发而动全身”到…

学长亲荐9个AI论文写作软件,专科生轻松搞定毕业论文!

学长亲荐9个AI论文写作软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 专科生的论文救星&#xff0c;AI 工具如何改变你的写作方式 对于许多专科生来说&#xff0c;毕业论文既是一道门槛&#xff0c;也是一次挑战。尤其是在时间紧张、资料匮乏、写作经验不足的情况下&…

Hive索引使用指南:大数据查询加速的秘诀

Hive索引使用指南&#xff1a;大数据查询加速的秘诀 关键词 Hive索引、大数据查询优化、HQL性能调优、Compact索引、Bitmap索引、分桶表、MetaStore 摘要 当你面对TB级甚至PB级的Hive表&#xff0c;执行一条简单的SELECT查询却要等半小时时&#xff0c;Hive索引可能是解决问…

2026 年公交车身广告公司综合实力排行榜单及选择建议指南:2026年公交车身广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐

公交车身广告凭借其流动覆盖广、贴近消费人群的特点,成为品牌渗透城市市场的关键选择。以下为您推荐几家在公交车身广告领域实力突出的企业,它们在线路资源布局与全案服务能力上各有所长。 一、优质公交车身广告公司…

如何选择适合跨境电商的全球代理IP?

在跨境电商运营中&#xff0c;代理IP已经成为保障业务顺利运行的重要工具。无论是进行多账号管理、广告投放&#xff0c;还是接触地区限制&#xff0c;都离不开代理IP的帮助。然而&#xff0c;面对市场上种类繁多的代理IP&#xff0c;如何挑选最合适自己的产品呢&#xff1f;下…

如何下载安装App Store应用旧版本教程

如何下载安装App Store应用旧版本教程 来源 https://zhelin.me/post/2ad0bda53a4d7fdd/很多iOS用户在使用应用时会遇到这样的情况:新版应用更新后,反而失去了某些实用功能,或者在旧设备上运行卡顿,还有就是线上出现…

青少年CTF练习平台~Upload3

目录题目链接一、题目介绍二、上传.user.ini文件三、上传图片马&#xff08;shell.png&#xff09;四、访问首页文件五、连接蚁剑题目链接 https://www.qsnctf.com/ 一、题目介绍 这次我学聪明啦&#xff01;老板说要对上传点进行php的大小写过滤&#xff01;这下看你怎么办…

时序数据困局突围:从存储爆炸到实时分析,金仓多模融合方案的技术实践

一、时序数据三大神坑:谁用谁崩溃,说多了都是泪 时序数据这玩意儿,说直白点就是“带时间戳的数字”——比如设备几点几分的温度、汽车每秒的位置、交易发生的具体时间。看着简单吧?可一到实际用的时候,能把人逼疯…

基于 Flutter × OpenHarmony 的便签编辑功能实践解析

基于 Flutter OpenHarmony 的便签编辑功能实践解析 前言 在跨端应用开发中&#xff0c;“便签”类应用往往被视为入门级示例&#xff0c;但其背后却涵盖了状态管理、数据建模、UI 交互、用户输入校验以及平台适配等多个关键技术点。 本文将基于 Flutter OpenHarmony 的跨端开…

2026 年公交广告投放公司综合实力排行榜单及选择建议指南:2026年公交广告投放公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐

一、全国性公交广告投放公司 1. 艾迪亚控股集团核心优势:构建了 "全场景公交营销资源体系",涵盖城市主干线路公交冠名、车身全幅广告、车内灯箱、座椅靠背广告、公交站台灯箱、BRT 站台大屏、枢纽站广告位…

Python 使用 Chainlit + Ollama 快速搭建本地 AI 聊天应用

使用 Chainlit Ollama 快速搭建本地 AI 聊天应用 大家好&#xff01;今天分享一个超级简单的本地 AI 聊天界面实现方案&#xff1a;Chainlit Ollama。 无需部署复杂的后端&#xff0c;只需本地运行 Ollama&#xff0c;再用几行 Python 代码&#xff0c;就能拥有一个支持模型切…

AI应用架构师指南:AI驱动客户洞察系统的6层技术架构设计与实践

AI应用架构师指南:AI驱动客户洞察系统的6层技术架构设计与实践——从数据到决策的全链路构建方法论 一、引言:为什么需要AI驱动的客户洞察系统? 1.1 企业的“客户洞察痛点”:从数据爆炸到决策困境 今天的企业面临着前所未有的数据爆炸——线上商城的用户行为日志、线下门…