1. 项目概述与核心思路几年前我还在为书房里那台老旧的收音机只能收到几个本地电台而烦恼。后来接触到网络收音机发现世界各地的音乐、新闻和播客都能随时收听但市面上的成品要么价格不菲要么功能臃肿。作为一名喜欢折腾的嵌入式开发者我萌生了自己动手做一个的念头。核心需求很明确它得足够便宜让爱好者都能轻松尝试它得足够简单让刚入门的朋友也能成功复现同时它还得是个完整的、能日常使用的设备而不是一个躺在工作台上的半成品原型。经过一番搜寻和试验我找到了一个近乎完美的组合ESP32微控制器和Yoradio开源项目。ESP32以其内置的Wi-Fi和蓝牙、强大的处理能力以及极低的成本成为了物联网项目的明星。而Yoradio则是一个专为ESP32等平台优化的网络收音机固件它处理了从连接网络、解析流媒体地址到解码音频数据流这一系列复杂任务。我的思路是找一个集成了ESP32、触摸屏、音频放大器和电池管理功能的“一体化”模块作为硬件核心这样就能绕过复杂的电路设计和焊接把精力集中在软件和集成上。最终ELECROW的CrowPanel 2.8英寸ESP32 TFT触摸屏模块进入了我的视线它几乎就是为这个项目量身定做的。这个项目就是围绕它展开的一次低成本、高完成度的DIY实践。2. 硬件选型与核心模块解析2.1 为什么选择CrowPanel 2.8英寸ESP32模块在启动一个DIY项目时硬件选型往往是决定成败和体验的关键第一步。市面上ESP32的开发板种类繁多从最基础的ESP32-DevKitC到功能各异的集成模块选择很多。我最终锁定ELECROW的这款CrowPanel模块是基于以下几个核心考量首先是极高的集成度与便捷性。这个模块将ESP32-WROOM-32E微控制器、2.8英寸的ILI9341驱动IPS触摸屏、MAX98357A I2S数字音频放大器、TP4056锂电池充电管理芯片以及一个用于供电和程序下载的USB-C接口全部集成在了一块比信用卡略大的PCB上。这意味着你不需要为了连接屏幕而研究SPI引脚定义不需要为了驱动扬声器而额外搭建一个音频放大电路更不需要担心如何安全地给锂电池充电。所有基础功能“开箱即用”极大地降低了硬件层面的入门门槛和出错概率。其次是为便携设备而生的设计。模块背面预留了标准的JST-PH 2.0接口用于连接3.7V锂电池以及一个2Pin的螺丝端子用于连接扬声器。其功耗经过优化在正常播放网络音频时整机电流大约在120mA-180mA之间。这意味着搭配一块常见的2000mAh的18650锂电池可以轻松实现10小时以上的连续播放完全满足便携使用的需求。模块自身的厚度控制得也很好便于装入自制的外壳。最后是成本与社区支持的平衡。虽然其单价可能比一块裸ESP32开发板要高但当你把屏幕、音频放大器、充电模块的价格和为此花费的焊接、调试时间成本加起来这个一体化模块的总成本反而更具优势。更重要的是由于它采用了ESP32和常见的ILI9341MAX98357方案软件生态兼容性很好Yoradio等项目能直接适配网络上相关的驱动和调试资料也相当丰富。2.2 外围配件清单与选型要点除了核心模块我们还需要准备几样简单的配件来完成整机。清单如下3.7V锂电池推荐使用标称容量在1000mAh到3000mAh之间的锂电池例如常见的18650电池需搭配电池盒或扁平的锂聚合物电池。选择时需注意电池是否自带保护板这对于防止过充过放、确保安全至关重要。模块的TP4056充电芯片最大充电电流为1A选购时确认电池的充电速率C-rate能匹配即可。扬声器模块的MAX98357A放大器是D类放大器官方推荐负载为4Ω或8Ω功率在3W以下。我实验中发现一个0.25W到1W、阻抗8Ω的小型扬声器或喇叭效果就非常不错音量在室内足够清晰。你可以从旧手机、废旧笔记本电脑或便携收音机里拆一个也可以直接购买新的。如果对音质有更高要求可以选配一个稍大的、带有共鸣腔的喇叭。微型拨动开关用于控制整机电源。选择小型的、引脚间距能与模块上的焊盘或洞洞板匹配的即可。这是可选的但强烈建议加上否则你只能通过插拔电池来开关机很不方便。连接线少量杜邦线母对母、公对母用于临时连接和测试。最终组装时建议使用焊锡直接焊接或者用更可靠的连接器如JST线以确保稳定性。可选外壳可以使用3D打印外壳、利用现成的塑料盒改造或者甚至用厚卡纸和热熔胶制作一个简易外壳主要起保护和美观作用。注意在焊接开关或任何元件到模块上时务必先断开电池和USB电源。使用烙铁时温度不宜过高建议350°C左右并在焊盘上停留时间尽量短以免热量传递损坏敏感的触摸屏或芯片。3. 软件开发环境搭建与固件部署3.1 Arduino IDE环境配置Yoradio项目基于Arduino框架开发因此我们需要先配置好针对ESP32的开发环境。这里我强烈建议使用Arduino IDE 1.8.x版本因为某些库在最新的2.0版本上可能存在兼容性问题。我使用的是1.8.19版本整个过程非常顺利。第一步是让Arduino IDE认识我们的ESP32板卡。打开Arduino IDE依次点击文件(File) - 首选项(Preferences)。在“附加开发板管理器网址”框中填入以下ESP32的板卡支持地址https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json如果框中已有其他网址用逗号隔开即可。点击“好”保存。接着点击工具(Tools) - 开发板(Boards) - 开发板管理器(Boards Manager)。在弹出的搜索框中输入“esp32”你会看到由Espressif Systems提供的“esp32”包。点击并选择安装。这里有个关键点为了最大程度保证与Yoradio修改版代码的兼容性请安装2.0.3版本。你可以在版本下拉菜单中选择2.0.3然后点击安装。安装过程会下载一系列工具链和库需要几分钟时间请保持网络通畅。安装完成后再次点击工具(Tools) - 开发板(Boards)你现在应该能在列表里找到“ESP32 Arduino”分类。在其中选择“ESP32 Dev Module”。接下来我们需要针对CrowPanel模块进行一些关键设置Upload Speed: 设置为921600。这个较高的上传速度能显著缩短程序烧录时间。Flash Frequency: 设置为80MHz。Flash Mode: 设置为QIO。Partition Scheme: 选择Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)。SPIFFS分区用于存放网页界面、图标等文件这个大小正合适。Core Debug Level: 设置为无。PSRAM: 设置为Disabled本模块的ESP32不带PSRAM。其他设置保持默认即可。环境配置至此完成。3.2 获取并部署Yoradio固件原始的Yoradio项目需要根据不同的硬件进行大量配置修改。幸运的是原项目作者mircemk已经为我们适配好了CrowPanel模块的完整代码包。你需要下载这个修改版的压缩包通常包含一个.ino主程序文件、一个data文件夹以及若干必需的库文件。首先处理库文件。将压缩包中libraries文件夹里的所有子文件夹复制到你的Arduino库目录下。在Windows上这个目录通常是文档\Arduino\libraries\。如果里面已有同名库请先备份再覆盖以确保版本一致。接下来是关键一步安装ESP32文件系统上传工具。我们需要将data文件夹里的网页文件上传到ESP32的SPIFFS文件系统中。找到压缩包中的ESP32FS工具文件夹将其整个复制到Arduino IDE的tools目录下。例如我的路径是C:\Users\[你的用户名]\AppData\Local\Arduino15\packages\esp32\tools\。复制完成后重启Arduino IDE。现在用Arduino IDE打开压缩包里的主程序文件例如yoradio_crowpanel.ino。在**工具(Tools)**菜单下你应该能看到一个新的选项ESP32 Sketch Data Upload。先不要点击它。将CrowPanel模块通过USB-C线连接到电脑。在Arduino IDE的工具 - 端口中选择正确的COM口。然后首先点击ESP32 Sketch Data Upload。这个过程会将data目录下的所有文件写入ESP32的SPIFFS分区状态栏会显示上传进度。完成后状态栏会提示“SPIFFS Image Uploaded”。最后点击Arduino IDE左上角的上传按钮向右的箭头编译并上传主程序到ESP32。上传成功后模块可能会自动重启。实操心得务必遵循“先上传文件系统数据再上传程序”的顺序。如果顺序颠倒或者只上传了程序会导致设备启动后无法加载Web界面只能看到空白屏幕或错误提示。另外在上传过程中如果遇到“Timed out waiting for packet header”等错误可以尝试按住模块上的“BOOT”按钮不放点击上传待出现“Connecting...”提示后再松开按钮进入下载模式。4. 设备配置与网络连接4.1 初始启动与接入点模式第一次给组装好的设备上电连接电池或USB电源后屏幕会亮起并显示Yoradio的Logo随后很快会进入一个状态界面。此时注意屏幕上的文字提示最关键的一行是告诉你设备已经启动了一个Wi-Fi接入点Access Point通常名称是yoRadioAP。拿出你的手机或电脑打开Wi-Fi设置搜索并连接到名为yoRadioAP的网络。连接密码通常是12345678或12345987具体请以屏幕显示为准。连接成功后你的设备就与这台网络收音机处于同一个局域网了。4.2 Web界面基础配置打开手机或电脑上的浏览器在地址栏输入管理页面的IP地址。在接入点模式下这个地址通常是http://192.168.4.1。输入后你就能看到Yoradio的Web配置界面了。这个界面非常直观是后续所有设置的核心。首先需要配置的是Wi-Fi网络。设备需要知道如何连接到你的家庭路由器以便访问互联网。在Web界面中找到“Wi-Fi”或“Network”设置部分。这里你可以添加一个或多个Wi-Fi网络的SSID名称和密码。例如你可以添加家里的网络和公司的网络这样设备在任意地点都能自动连接。填写完毕后点击保存或应用设置。接下来建议设置时区Timezone这样屏幕右上角显示的时间才是准确的。在“System”或“General”设置里找到时区选项选择Asia/Shanghai如果你在国内。你还可以在“Display”设置里调整屏幕亮度、背光超时关闭时间等以节省电量。注意事项在接入点模式下配置Wi-Fi时确保你的手机/电脑只连接了yoRadioAP这一个Wi-Fi。如果手机同时开启了移动数据可能会导致浏览器无法正确访问192.168.4.1这个本地地址。一个简单的判断方法是连接yoRadioAP后手机应该会提示“此网络无法提供互联网连接”这是正常的。4.3 功能界面详解与电台管理配置完网络并重启后设备会自动连接到你设定的Wi-Fi。此时屏幕下方会显示设备在局域网中获取到的IP地址例如192.168.1.105。在同一网络下的任何设备浏览器中输入这个IP地址就能访问收音机的控制界面了。这个Web界面功能相当丰富播放控制大型的播放/暂停按钮以及上一曲/下一曲对于支持列表的流媒体。音量控制滑动条或按钮用于调节音量。均衡器提供预设的几种音效模式如流行、摇滚、古典等可以简单调整听感。电台列表管理这是核心功能。你可以通过“Add Station”手动添加网络电台。需要输入电台的名称Name和流媒体地址URL。流媒体地址通常是以.m3u或.pls结尾的播放列表文件地址或者是直接的音频流地址如以.aac,.mp3结尾的URL。你可以从一些网络电台聚合网站如streema.com上找到你喜欢的电台的流地址。导入播放列表Yoradio支持导入M3U格式的播放列表文件。你可以用文本编辑器自己编辑一个每行包含电台名称和URL也可以从其他软件导出。天气信息在“Weather”设置中你可以配置OpenWeatherMap的API密钥和城市ID这样收音机屏幕上就能显示当地的天气情况和温度。这是一个很贴心的功能。将常用的电台添加进去后你就可以通过触摸屏来操作了。在主屏幕左右滑动可以调节音量上下滑动可以进入电台选择列表点击即可切换。整个交互非常流畅媲美商业产品。5. 外壳制作与最终组装5.1 结构设计与布局规划当所有功能测试无误后我们需要给它一个“家”。一个好的外壳不仅能保护内部元件还能提升整体观感和使用体验。设计外壳时我主要考虑以下几点散热ESP32和音频放大器在工作时会有一定热量虽然不大但封闭空间内仍需考虑。可以在外壳顶部或背部设计一些通风孔。声学扬声器需要有一个共鸣腔来提升低音效果。设计时应在扬声器正前方留有足够的空间并避免完全密封最好能有一个导向孔。交互确保屏幕区域完全裸露触摸无遮挡。侧边或背面需要为USB-C充电口、电源开关开孔。固定内部需要考虑电池、主板和扬声器的固定方式防止晃动产生噪音。我采用了最简单的“三明治”结构一个前面板带屏幕开口、一个中间层用于固定主板和电池和一个后面板带扬声器孔和接口孔。你可以使用Fusion 360、Tinkercad等软件进行3D建模然后3D打印。如果没有3D打印机找一个尺寸合适的现成塑料盒如项目盒、眼镜盒进行改造也是极好的选择。5.2 组装步骤与技巧我的组装顺序如下这样操作起来最顺手固定核心模块使用M2或M2.5的尼龙螺丝和螺母将CrowPanel模块固定在中间层或前面板的内侧。注意螺丝不要拧得过紧以免压坏屏幕。可以在螺丝与PCB之间加一个小垫片。连接扬声器将扬声器的两根导线焊接到模块背面的“SPK”和“SPK-”焊盘上。注意正负极虽然接反了通常也能响但可能影响音质。焊接要牢固焊点圆润光滑避免虚焊。安装电源开关将微型拨动开关串联在电池的正极或负极线上。也就是说电池的一极先接到开关的一端开关的另一端再接到模块的电池输入焊盘。我选择串联在正极。开关本身可以用热熔胶固定在外壳预留的孔洞上。固定电池使用双面泡棉胶或尼龙扎带将锂电池牢固地固定在外壳的空余位置。确保电池的电极不会与任何金属部件短路。可以在电池表面贴一层绝缘胶带增加安全性。整体合盖与测试在合上外壳之前再次上电测试所有功能触摸、播放、充电、开关机。确认一切正常后小心地合上外壳拧紧螺丝。如果使用胶水注意不要将胶水弄到屏幕或扬声器振膜上。避坑技巧在最终封盖前强烈建议你用一小段双面胶或蓝丁胶将扬声器临时粘在预定位置然后播放一段音乐听听音质和是否有共振杂音。调整扬声器位置或在外壳内壁贴一些吸音棉如EVA泡棉可以显著改善音质减少“箱体”共振带来的嗡嗡声。6. 进阶优化与故障排查6.1 性能与功能优化基础功能实现后我们可以进行一些优化让设备更“聪明”更好用降低功耗在Yoradio的Web设置界面“Display”设置里可以调整“Backlight Timeout”背光超时。设置为30秒或1分钟可以在无操作后自动关闭背光大幅节省电量。如果不需要触摸操作甚至可以设置为“Always Off”仅通过物理按钮或Web界面控制。改善网络稳定性如果设备在播放时偶尔出现缓冲或断流可以尝试在路由器的管理界面中为ESP32分配的IP地址设置静态DHCP绑定并检查路由器Wi-Fi信道是否过于拥挤可以换到一个使用较少的信道如1、6、11。自定义UIYoradio的Web界面和屏幕显示的部分元素是可以自定义的。data文件夹下的index.html、style.css等文件决定了Web界面而config.h等配置文件中的宏定义可以调整屏幕布局。有一定前端或编程基础的朋友可以尝试修改打造独一无二的界面。6.2 常见问题与解决方案实录在制作和调试过程中你可能会遇到以下问题这里是我的排查记录问题现象可能原因解决方案上电后屏幕无任何显示1. 电池电量耗尽或接反。2. USB线仅用于供电数据线损坏或电脑USB口供电不足。3. 电源开关未打开或接线错误。1. 用万用表检查电池电压应高于3.5V确认正负极连接正确。2. 更换USB线或USB端口尝试使用手机充电器供电。3. 检查开关是否串联在回路中用万用表通断档测量开关是否导通。触摸屏完全失灵1. 触摸屏排线接触不良。2. 固件中触摸屏驱动配置错误。1. 小心地重新插拔模块上的触摸屏排线如有。2. 确认烧录的是针对CrowPanel修改的固件而非通用版Yoradio。能连接yoRadioAP但无法访问192.168.4.11. 手机/电脑的IP地址未自动获取。2. 浏览器缓存或代理问题。1. 检查手机Wi-Fi设置确认已成功获取到192.168.4.x网段的IP。2. 尝试使用浏览器无痕模式或输入http://192.168.4.1时清空地址栏自动补全。可以连接Wi-Fi但无法播放电台1. 电台流媒体地址失效或格式不支持。2. 网络防火墙或DNS问题。3. 音频输出硬件连接问题。1. 用电脑上的VLC播放器测试该电台URL是否有效。Yoradio主要支持MP3、AAC、OGG格式。2. 尝试在路由器设置中关闭高级安全功能如AP隔离或更换DNS服务器为114.114.114.114。3. 检查扬声器是否接好或用耳机插入模块的耳机孔如有测试是否有声。播放声音卡顿、断断续续1. Wi-Fi信号弱。2. 网络带宽不足或路由器性能瓶颈。3. 电台服务器距离远或负载高。1. 将设备移近路由器或调整路由器天线方向。2. 检查家庭网络是否有其他设备在大量占用带宽如下载、看视频。3. 尝试更换另一个不同地区的同类型电台看是否改善。电池耗电极快1. 屏幕背光常亮且亮度太高。2. Wi-Fi信号极差导致模块持续以高功率尝试连接。3. 电池本身老化容量下降。1. 在设置中调低背光亮度并设置自动关闭超时。2. 改善设备放置位置的信号强度。3. 更换一块新的、容量足的锂电池。这个基于ESP32和Yoradio的DIY网络收音机项目从构思到最终拿在手里把玩整个过程充满了动手的乐趣和解决问题的成就感。它不仅仅是一个能响的收音机更是一个融合了嵌入式开发、网络通信、UI交互和工业设计的综合实践案例。最重要的是它证明了开源硬件和软件的力量让我们能以极低的成本创造出功能丰富、体验优秀的个性化智能设备。如果你也完成了制作不妨试着修改一下代码增加一个闹钟功能或者让它能播放在线播客探索的边界由你定义。
基于ESP32与Yoradio打造低成本DIY网络收音机:从硬件选型到软件部署全攻略
发布时间:2026/6/8 6:14:11
1. 项目概述与核心思路几年前我还在为书房里那台老旧的收音机只能收到几个本地电台而烦恼。后来接触到网络收音机发现世界各地的音乐、新闻和播客都能随时收听但市面上的成品要么价格不菲要么功能臃肿。作为一名喜欢折腾的嵌入式开发者我萌生了自己动手做一个的念头。核心需求很明确它得足够便宜让爱好者都能轻松尝试它得足够简单让刚入门的朋友也能成功复现同时它还得是个完整的、能日常使用的设备而不是一个躺在工作台上的半成品原型。经过一番搜寻和试验我找到了一个近乎完美的组合ESP32微控制器和Yoradio开源项目。ESP32以其内置的Wi-Fi和蓝牙、强大的处理能力以及极低的成本成为了物联网项目的明星。而Yoradio则是一个专为ESP32等平台优化的网络收音机固件它处理了从连接网络、解析流媒体地址到解码音频数据流这一系列复杂任务。我的思路是找一个集成了ESP32、触摸屏、音频放大器和电池管理功能的“一体化”模块作为硬件核心这样就能绕过复杂的电路设计和焊接把精力集中在软件和集成上。最终ELECROW的CrowPanel 2.8英寸ESP32 TFT触摸屏模块进入了我的视线它几乎就是为这个项目量身定做的。这个项目就是围绕它展开的一次低成本、高完成度的DIY实践。2. 硬件选型与核心模块解析2.1 为什么选择CrowPanel 2.8英寸ESP32模块在启动一个DIY项目时硬件选型往往是决定成败和体验的关键第一步。市面上ESP32的开发板种类繁多从最基础的ESP32-DevKitC到功能各异的集成模块选择很多。我最终锁定ELECROW的这款CrowPanel模块是基于以下几个核心考量首先是极高的集成度与便捷性。这个模块将ESP32-WROOM-32E微控制器、2.8英寸的ILI9341驱动IPS触摸屏、MAX98357A I2S数字音频放大器、TP4056锂电池充电管理芯片以及一个用于供电和程序下载的USB-C接口全部集成在了一块比信用卡略大的PCB上。这意味着你不需要为了连接屏幕而研究SPI引脚定义不需要为了驱动扬声器而额外搭建一个音频放大电路更不需要担心如何安全地给锂电池充电。所有基础功能“开箱即用”极大地降低了硬件层面的入门门槛和出错概率。其次是为便携设备而生的设计。模块背面预留了标准的JST-PH 2.0接口用于连接3.7V锂电池以及一个2Pin的螺丝端子用于连接扬声器。其功耗经过优化在正常播放网络音频时整机电流大约在120mA-180mA之间。这意味着搭配一块常见的2000mAh的18650锂电池可以轻松实现10小时以上的连续播放完全满足便携使用的需求。模块自身的厚度控制得也很好便于装入自制的外壳。最后是成本与社区支持的平衡。虽然其单价可能比一块裸ESP32开发板要高但当你把屏幕、音频放大器、充电模块的价格和为此花费的焊接、调试时间成本加起来这个一体化模块的总成本反而更具优势。更重要的是由于它采用了ESP32和常见的ILI9341MAX98357方案软件生态兼容性很好Yoradio等项目能直接适配网络上相关的驱动和调试资料也相当丰富。2.2 外围配件清单与选型要点除了核心模块我们还需要准备几样简单的配件来完成整机。清单如下3.7V锂电池推荐使用标称容量在1000mAh到3000mAh之间的锂电池例如常见的18650电池需搭配电池盒或扁平的锂聚合物电池。选择时需注意电池是否自带保护板这对于防止过充过放、确保安全至关重要。模块的TP4056充电芯片最大充电电流为1A选购时确认电池的充电速率C-rate能匹配即可。扬声器模块的MAX98357A放大器是D类放大器官方推荐负载为4Ω或8Ω功率在3W以下。我实验中发现一个0.25W到1W、阻抗8Ω的小型扬声器或喇叭效果就非常不错音量在室内足够清晰。你可以从旧手机、废旧笔记本电脑或便携收音机里拆一个也可以直接购买新的。如果对音质有更高要求可以选配一个稍大的、带有共鸣腔的喇叭。微型拨动开关用于控制整机电源。选择小型的、引脚间距能与模块上的焊盘或洞洞板匹配的即可。这是可选的但强烈建议加上否则你只能通过插拔电池来开关机很不方便。连接线少量杜邦线母对母、公对母用于临时连接和测试。最终组装时建议使用焊锡直接焊接或者用更可靠的连接器如JST线以确保稳定性。可选外壳可以使用3D打印外壳、利用现成的塑料盒改造或者甚至用厚卡纸和热熔胶制作一个简易外壳主要起保护和美观作用。注意在焊接开关或任何元件到模块上时务必先断开电池和USB电源。使用烙铁时温度不宜过高建议350°C左右并在焊盘上停留时间尽量短以免热量传递损坏敏感的触摸屏或芯片。3. 软件开发环境搭建与固件部署3.1 Arduino IDE环境配置Yoradio项目基于Arduino框架开发因此我们需要先配置好针对ESP32的开发环境。这里我强烈建议使用Arduino IDE 1.8.x版本因为某些库在最新的2.0版本上可能存在兼容性问题。我使用的是1.8.19版本整个过程非常顺利。第一步是让Arduino IDE认识我们的ESP32板卡。打开Arduino IDE依次点击文件(File) - 首选项(Preferences)。在“附加开发板管理器网址”框中填入以下ESP32的板卡支持地址https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json如果框中已有其他网址用逗号隔开即可。点击“好”保存。接着点击工具(Tools) - 开发板(Boards) - 开发板管理器(Boards Manager)。在弹出的搜索框中输入“esp32”你会看到由Espressif Systems提供的“esp32”包。点击并选择安装。这里有个关键点为了最大程度保证与Yoradio修改版代码的兼容性请安装2.0.3版本。你可以在版本下拉菜单中选择2.0.3然后点击安装。安装过程会下载一系列工具链和库需要几分钟时间请保持网络通畅。安装完成后再次点击工具(Tools) - 开发板(Boards)你现在应该能在列表里找到“ESP32 Arduino”分类。在其中选择“ESP32 Dev Module”。接下来我们需要针对CrowPanel模块进行一些关键设置Upload Speed: 设置为921600。这个较高的上传速度能显著缩短程序烧录时间。Flash Frequency: 设置为80MHz。Flash Mode: 设置为QIO。Partition Scheme: 选择Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)。SPIFFS分区用于存放网页界面、图标等文件这个大小正合适。Core Debug Level: 设置为无。PSRAM: 设置为Disabled本模块的ESP32不带PSRAM。其他设置保持默认即可。环境配置至此完成。3.2 获取并部署Yoradio固件原始的Yoradio项目需要根据不同的硬件进行大量配置修改。幸运的是原项目作者mircemk已经为我们适配好了CrowPanel模块的完整代码包。你需要下载这个修改版的压缩包通常包含一个.ino主程序文件、一个data文件夹以及若干必需的库文件。首先处理库文件。将压缩包中libraries文件夹里的所有子文件夹复制到你的Arduino库目录下。在Windows上这个目录通常是文档\Arduino\libraries\。如果里面已有同名库请先备份再覆盖以确保版本一致。接下来是关键一步安装ESP32文件系统上传工具。我们需要将data文件夹里的网页文件上传到ESP32的SPIFFS文件系统中。找到压缩包中的ESP32FS工具文件夹将其整个复制到Arduino IDE的tools目录下。例如我的路径是C:\Users\[你的用户名]\AppData\Local\Arduino15\packages\esp32\tools\。复制完成后重启Arduino IDE。现在用Arduino IDE打开压缩包里的主程序文件例如yoradio_crowpanel.ino。在**工具(Tools)**菜单下你应该能看到一个新的选项ESP32 Sketch Data Upload。先不要点击它。将CrowPanel模块通过USB-C线连接到电脑。在Arduino IDE的工具 - 端口中选择正确的COM口。然后首先点击ESP32 Sketch Data Upload。这个过程会将data目录下的所有文件写入ESP32的SPIFFS分区状态栏会显示上传进度。完成后状态栏会提示“SPIFFS Image Uploaded”。最后点击Arduino IDE左上角的上传按钮向右的箭头编译并上传主程序到ESP32。上传成功后模块可能会自动重启。实操心得务必遵循“先上传文件系统数据再上传程序”的顺序。如果顺序颠倒或者只上传了程序会导致设备启动后无法加载Web界面只能看到空白屏幕或错误提示。另外在上传过程中如果遇到“Timed out waiting for packet header”等错误可以尝试按住模块上的“BOOT”按钮不放点击上传待出现“Connecting...”提示后再松开按钮进入下载模式。4. 设备配置与网络连接4.1 初始启动与接入点模式第一次给组装好的设备上电连接电池或USB电源后屏幕会亮起并显示Yoradio的Logo随后很快会进入一个状态界面。此时注意屏幕上的文字提示最关键的一行是告诉你设备已经启动了一个Wi-Fi接入点Access Point通常名称是yoRadioAP。拿出你的手机或电脑打开Wi-Fi设置搜索并连接到名为yoRadioAP的网络。连接密码通常是12345678或12345987具体请以屏幕显示为准。连接成功后你的设备就与这台网络收音机处于同一个局域网了。4.2 Web界面基础配置打开手机或电脑上的浏览器在地址栏输入管理页面的IP地址。在接入点模式下这个地址通常是http://192.168.4.1。输入后你就能看到Yoradio的Web配置界面了。这个界面非常直观是后续所有设置的核心。首先需要配置的是Wi-Fi网络。设备需要知道如何连接到你的家庭路由器以便访问互联网。在Web界面中找到“Wi-Fi”或“Network”设置部分。这里你可以添加一个或多个Wi-Fi网络的SSID名称和密码。例如你可以添加家里的网络和公司的网络这样设备在任意地点都能自动连接。填写完毕后点击保存或应用设置。接下来建议设置时区Timezone这样屏幕右上角显示的时间才是准确的。在“System”或“General”设置里找到时区选项选择Asia/Shanghai如果你在国内。你还可以在“Display”设置里调整屏幕亮度、背光超时关闭时间等以节省电量。注意事项在接入点模式下配置Wi-Fi时确保你的手机/电脑只连接了yoRadioAP这一个Wi-Fi。如果手机同时开启了移动数据可能会导致浏览器无法正确访问192.168.4.1这个本地地址。一个简单的判断方法是连接yoRadioAP后手机应该会提示“此网络无法提供互联网连接”这是正常的。4.3 功能界面详解与电台管理配置完网络并重启后设备会自动连接到你设定的Wi-Fi。此时屏幕下方会显示设备在局域网中获取到的IP地址例如192.168.1.105。在同一网络下的任何设备浏览器中输入这个IP地址就能访问收音机的控制界面了。这个Web界面功能相当丰富播放控制大型的播放/暂停按钮以及上一曲/下一曲对于支持列表的流媒体。音量控制滑动条或按钮用于调节音量。均衡器提供预设的几种音效模式如流行、摇滚、古典等可以简单调整听感。电台列表管理这是核心功能。你可以通过“Add Station”手动添加网络电台。需要输入电台的名称Name和流媒体地址URL。流媒体地址通常是以.m3u或.pls结尾的播放列表文件地址或者是直接的音频流地址如以.aac,.mp3结尾的URL。你可以从一些网络电台聚合网站如streema.com上找到你喜欢的电台的流地址。导入播放列表Yoradio支持导入M3U格式的播放列表文件。你可以用文本编辑器自己编辑一个每行包含电台名称和URL也可以从其他软件导出。天气信息在“Weather”设置中你可以配置OpenWeatherMap的API密钥和城市ID这样收音机屏幕上就能显示当地的天气情况和温度。这是一个很贴心的功能。将常用的电台添加进去后你就可以通过触摸屏来操作了。在主屏幕左右滑动可以调节音量上下滑动可以进入电台选择列表点击即可切换。整个交互非常流畅媲美商业产品。5. 外壳制作与最终组装5.1 结构设计与布局规划当所有功能测试无误后我们需要给它一个“家”。一个好的外壳不仅能保护内部元件还能提升整体观感和使用体验。设计外壳时我主要考虑以下几点散热ESP32和音频放大器在工作时会有一定热量虽然不大但封闭空间内仍需考虑。可以在外壳顶部或背部设计一些通风孔。声学扬声器需要有一个共鸣腔来提升低音效果。设计时应在扬声器正前方留有足够的空间并避免完全密封最好能有一个导向孔。交互确保屏幕区域完全裸露触摸无遮挡。侧边或背面需要为USB-C充电口、电源开关开孔。固定内部需要考虑电池、主板和扬声器的固定方式防止晃动产生噪音。我采用了最简单的“三明治”结构一个前面板带屏幕开口、一个中间层用于固定主板和电池和一个后面板带扬声器孔和接口孔。你可以使用Fusion 360、Tinkercad等软件进行3D建模然后3D打印。如果没有3D打印机找一个尺寸合适的现成塑料盒如项目盒、眼镜盒进行改造也是极好的选择。5.2 组装步骤与技巧我的组装顺序如下这样操作起来最顺手固定核心模块使用M2或M2.5的尼龙螺丝和螺母将CrowPanel模块固定在中间层或前面板的内侧。注意螺丝不要拧得过紧以免压坏屏幕。可以在螺丝与PCB之间加一个小垫片。连接扬声器将扬声器的两根导线焊接到模块背面的“SPK”和“SPK-”焊盘上。注意正负极虽然接反了通常也能响但可能影响音质。焊接要牢固焊点圆润光滑避免虚焊。安装电源开关将微型拨动开关串联在电池的正极或负极线上。也就是说电池的一极先接到开关的一端开关的另一端再接到模块的电池输入焊盘。我选择串联在正极。开关本身可以用热熔胶固定在外壳预留的孔洞上。固定电池使用双面泡棉胶或尼龙扎带将锂电池牢固地固定在外壳的空余位置。确保电池的电极不会与任何金属部件短路。可以在电池表面贴一层绝缘胶带增加安全性。整体合盖与测试在合上外壳之前再次上电测试所有功能触摸、播放、充电、开关机。确认一切正常后小心地合上外壳拧紧螺丝。如果使用胶水注意不要将胶水弄到屏幕或扬声器振膜上。避坑技巧在最终封盖前强烈建议你用一小段双面胶或蓝丁胶将扬声器临时粘在预定位置然后播放一段音乐听听音质和是否有共振杂音。调整扬声器位置或在外壳内壁贴一些吸音棉如EVA泡棉可以显著改善音质减少“箱体”共振带来的嗡嗡声。6. 进阶优化与故障排查6.1 性能与功能优化基础功能实现后我们可以进行一些优化让设备更“聪明”更好用降低功耗在Yoradio的Web设置界面“Display”设置里可以调整“Backlight Timeout”背光超时。设置为30秒或1分钟可以在无操作后自动关闭背光大幅节省电量。如果不需要触摸操作甚至可以设置为“Always Off”仅通过物理按钮或Web界面控制。改善网络稳定性如果设备在播放时偶尔出现缓冲或断流可以尝试在路由器的管理界面中为ESP32分配的IP地址设置静态DHCP绑定并检查路由器Wi-Fi信道是否过于拥挤可以换到一个使用较少的信道如1、6、11。自定义UIYoradio的Web界面和屏幕显示的部分元素是可以自定义的。data文件夹下的index.html、style.css等文件决定了Web界面而config.h等配置文件中的宏定义可以调整屏幕布局。有一定前端或编程基础的朋友可以尝试修改打造独一无二的界面。6.2 常见问题与解决方案实录在制作和调试过程中你可能会遇到以下问题这里是我的排查记录问题现象可能原因解决方案上电后屏幕无任何显示1. 电池电量耗尽或接反。2. USB线仅用于供电数据线损坏或电脑USB口供电不足。3. 电源开关未打开或接线错误。1. 用万用表检查电池电压应高于3.5V确认正负极连接正确。2. 更换USB线或USB端口尝试使用手机充电器供电。3. 检查开关是否串联在回路中用万用表通断档测量开关是否导通。触摸屏完全失灵1. 触摸屏排线接触不良。2. 固件中触摸屏驱动配置错误。1. 小心地重新插拔模块上的触摸屏排线如有。2. 确认烧录的是针对CrowPanel修改的固件而非通用版Yoradio。能连接yoRadioAP但无法访问192.168.4.11. 手机/电脑的IP地址未自动获取。2. 浏览器缓存或代理问题。1. 检查手机Wi-Fi设置确认已成功获取到192.168.4.x网段的IP。2. 尝试使用浏览器无痕模式或输入http://192.168.4.1时清空地址栏自动补全。可以连接Wi-Fi但无法播放电台1. 电台流媒体地址失效或格式不支持。2. 网络防火墙或DNS问题。3. 音频输出硬件连接问题。1. 用电脑上的VLC播放器测试该电台URL是否有效。Yoradio主要支持MP3、AAC、OGG格式。2. 尝试在路由器设置中关闭高级安全功能如AP隔离或更换DNS服务器为114.114.114.114。3. 检查扬声器是否接好或用耳机插入模块的耳机孔如有测试是否有声。播放声音卡顿、断断续续1. Wi-Fi信号弱。2. 网络带宽不足或路由器性能瓶颈。3. 电台服务器距离远或负载高。1. 将设备移近路由器或调整路由器天线方向。2. 检查家庭网络是否有其他设备在大量占用带宽如下载、看视频。3. 尝试更换另一个不同地区的同类型电台看是否改善。电池耗电极快1. 屏幕背光常亮且亮度太高。2. Wi-Fi信号极差导致模块持续以高功率尝试连接。3. 电池本身老化容量下降。1. 在设置中调低背光亮度并设置自动关闭超时。2. 改善设备放置位置的信号强度。3. 更换一块新的、容量足的锂电池。这个基于ESP32和Yoradio的DIY网络收音机项目从构思到最终拿在手里把玩整个过程充满了动手的乐趣和解决问题的成就感。它不仅仅是一个能响的收音机更是一个融合了嵌入式开发、网络通信、UI交互和工业设计的综合实践案例。最重要的是它证明了开源硬件和软件的力量让我们能以极低的成本创造出功能丰富、体验优秀的个性化智能设备。如果你也完成了制作不妨试着修改一下代码增加一个闹钟功能或者让它能播放在线播客探索的边界由你定义。