ESP32 + TEF6686 便携式 DSP 收音机完全制作指南

发布时间:2026/9/24 2:53:26
ESP32 + TEF6686 便携式 DSP 收音机完全制作指南 说实话现在玩收音机的人越来越少了但把一颗 TEF6686 塞进 ESP32 控制的掌机里、在一堆底噪里突然抓到一个清晰的电台时那种“工业浪漫”还是很难替代的。这个项目说白了就是用 ESP32 当大脑通过 I2C 去控制 NXP 那套高性能 DSP 收音机芯片再配上 OLED 屏幕、旋转编码器和锂电池做出一台能揣进兜里的高性能 DSP 电台。TEF6686 这枚芯片经常出现在高端车载音响里FM 灵敏度、选择性、抗干扰能力都不是十几块钱的 SI4703、RDA5807 能比的。ESP32 这边则负责一切用户交互调台、搜台、音量、显示、菜单未来还能靠 WiFi/蓝牙做很多延伸。整机做出来之后你拿到的不是一台“会响的玩具”而是一台真正能收 FM/AM 甚至 DRM 信号的数字接收机信号弱的时候它能解出清晰的声音隔壁设备打手台也不至于把整段频率全盖掉。这篇内容适合所有玩 ESP32、玩 Arduino、对收音机有执念的硬件爱好者。无论你是第一次接触 TEF6686还是已经攒了一抽屉开发板我都尽量把原理、接线、代码、坑位一次性讲透。1. 项目全貌与整体思路1.1 这个项目到底是什么做一个便携式收音机市面上有很多现成方案但大多思路是“买一颗收音机 Si4735 芯片接上单片机调台响”。TEF6686 的玩法完全不同它是真正的 DSP 收音机天线进来的高频信号先经过片内低噪声放大器LNA然后直接送进一组高性能 ADC 进行数字化。后续的混频、中频滤波、解调、去加重、噪声抑制全部由 DSP 算法完成。主机这里就是 ESP32只负责通过 I2C 发送控制指令和读取状态参数比如频率、RSSI、SNR、RDS 数据。换句话说TEF6686 自己就是一个高度集成的软件无线电前端。它的中频滤波器带宽可以软件配置甚至能做到 100kHz 以内的窄带接收这对于 FM 邻频干扰严重的城市环境很有价值。相比传统模拟收音机需要一堆分立的中周、陶瓷滤波器DSP 方案在体积、一致性、性能上都有明显优势。本项目最终形态是一台掌上接收机OLED 显示频率和信号强度旋转编码器调台长按进入功能菜单内置锂电池和功放可以插耳机也可以外放。整机只有一个普通充电宝大小非常适合随身携带、在嘈杂频率中寻找信号。1.2 为什么选 TEF6686 而不是 SI4735 或 RDA5807如果只看“能不能听收音机”市面上那些几块钱的 RDA5807 其实就够了但一旦你把它和 TEF6686 放一起收同一批弱台区别立刻出来。我把几颗常见芯片的体验放在一起对比芯片架构解调能力抗镜像干扰带宽可调典型价格RDA5807单芯片模拟/数字混合FM 基本解调一般固定几块钱SI4703数字低中频FM 基本解调较好固定/可选十几块SI4735DSP 低中频AM/FM/SSB 等好有限可调二十多TEF6686宽频段 DSPAM/FM/DRM 等非常好软件自定义模块 50-100TEF6686 的接收性能在车规芯片里属于很能打的梯队尤其在城市里高楼反射、多径干扰严重的环境下它的多路径抑制和动态范围表现会让你明显感觉到“原来收音机也可以这么干净”。价格方面一颗 TEF6686 裸片不好买更常见的是某宝上的成品模块外形类似邮票引脚已经引出两三根线就能接到 ESP32 上省去画 PCB 的功夫。模块价格大概在几十块钱对于这种量级的接收机项目来说是完全可以接受的因为它的性能可以直接媲美几百元的成品车载收音头。1.3 为什么主控选 ESP32 而不是 STM32 或 Arduino UNO驱动 TEF6686 其实任何 I2C 外设都能干AVR 芯片一样可以。但整个项目要做得完整、便携、好扩展ESP32 的优势就体现出来了性能余量大ESP32 是双核 240MHz跑收音机控制和 OLED 刷新简直是杀鸡用牛刀。就算同时把 WiFi、蓝牙、RDS 解析、旋转编码器响应全部拉满CPU 占用也不会成为瓶颈。WiFi/蓝牙是额外资产原版项目只做收音机但加上了 ESP32后续能玩出网络流媒体混合、手机遥控、TTS 语音播报等功能。这些在 STM32 上不是做不了而是开发复杂度完全不同。生态太成熟TEF6686 的 Arduino 库在 GitHub 上一搜就是一堆编码器库、OLED 库随便装。VS Code PlatformIO 或者 Arduino IDE 都可以零门槛启动。与 STM32 的对比STM32 的省电控制和稳定性其实更强但开发时你需要自己处理更多的底层细节。DIY 一台收音机ESP32 的“开箱即用”体验更符合项目调性。唯一要吐槽的是 ESP32 的 ADC这几乎是社区共识。它非线性严重、受温度影响大模拟量检测做不到高精度。所以这台收音机如果要显示电池电压我不会用 ESP32 内置 ADC 去搞而是选择外置 INA226 或者只在菜单里做粗略的低电压报警避免把余量判断错。1.4 便携式外壳与整机形态规划便携性不只是在说“小”而是要综合考虑握持手感、屏幕可视、旋钮操作、天线引出位置、充电口位置。我最终选择的是 100mm x 65mm x 25mm 左右的 3D 打印外壳正面放一块 0.96 寸 OLED右侧一个旋转编码器左侧留 SMA 天线座和一个 3.5mm 耳机口充电使用 Type-C。这个尺寸比绝大多数车载收音头模块都小手感接近以前那种小型数显收音机。如果你不想 3D 打印直接用亚克力板或者成品塑料盒开孔也行只是开孔精度要靠自己慢慢修。整机结构上最好把天线座放在设备顶部ESP32 的 PCB 天线放在底部让两个射频系统离得尽可能远这个问题后面专门讲。2. 核心硬件设计与连线2.1 元器件清单与采购建议下面是我实际用到的配置所有器件基本都能在电商平台买到器件型号/规格作用备注主控ESP32 DevKitC V1整机大脑也可以用 ESP32-S3注意引脚不同收音模块TEF6686 V3 模块射频接收与 DSP 解调模块自带引脚无需画板显示屏SSD1306 0.96 寸 OLED显示频率/菜单I2C 接口地址通常 0x3C旋钮EC11 旋转编码器调台/音量/菜单操作带开关长按短按区分功能功放PAM8403 数字功放模块驱动喇叭或耳机3W3W适合便携箱体电池18650 或聚合物锂电池供电容量 1500-2500mAh 均可充电TP4056 模块锂电池充电Type-C 输入带过放保护稳压HT7833 或 XC6206P332MR3.3V 稳压LDO 压差低静态电流小天线SMA 接口拉杆天线/软天线接收 FM 信号长度约 30-50cm 便携款TEF6686 模块各家的引脚定义基本一致但买的时候还是先看清楚卖家给的原理图。有的模块集成了音频放大电路有的只是裸引出 I2C 音频输出引脚预算和后期接线方式完全不同。我买的是不带功放的裸模块方便自己控制整个音频链路。关于 TEF6686 的模块版本V3 比 V2 多了一些滤波和引脚保护价格差距不大建议直接选 V3 或者更新的版本。AM 接收需要磁棒天线这个在便携方案里不是必须如果只做 FM 可以忽略。2.2 ESP32 与 TEF6686 的 I2C 接线TEF6686 模块通过标准 I2C 协议和主控通信典型地址为 0x66。不同模块可能不同但绝大多数默认是这个地址。以下是完整接线表ESP32 引脚目标器件说明GPIO21TEF6686 SDAI2C 数据线GPIO22TEF6686 SCLI2C 时钟线GPIO18OLED SDA或者与 TEF6686 共用 I2C需确认地址冲突GPIO19OLED SCL分开走总线更稳GPIO26EC11 CLK编码器 A 相GPIO27EC11 DT编码器 B 相GPIO14EC11 SW编码器按键3.3VTEF6686/OLED/编码器供电VIN/5VTEF6686 模块如果有 5V 输入优先按模块要求供电GND所有地共地射频接地很重要实际接线时有两点容易栽跟头I2C 上拉电阻TEF6686 模块通常自带 4.7kΩ 上拉但如果你用杜邦线拉得比较长建议在 ESP32 附近再并一组 2.2kΩ 或 4.7kΩ 上拉。我试过不加额外上拉、线长超过 20cm 时初始化失败的频率明显变高。复位引脚部分模块有一个 RESET 脚最好接一个 GPIO 而不是直接硬接高电平方便软件里做复位时序。我的模块就没有复位脚靠 I2C 一条指令软复位这个问题不大但有复位脚时别浪费。OLED 如果和 TEF6686 共用一条 I2C 总线地址不会冲突但总线上设备多了、线长了容易出波形畸变。我的做法是直接把 OLED 挂在独立 I2C 引脚上GPIO18/19软件里用两条 Wire 实例分别控制代码稍微多一点稳定性换来值。2.3 音频输出路径模拟放大还是 I2S 数字功放TEF6686 模块通常会提供两种音频输出方式模拟音频输出和 I2S 数字输出。这个选择直接影响整机音质和接线复杂度方案优点缺点适用场景模拟输出 PAM8403接线简单模块直接出音频功放便宜模块模拟输出会叠加少量底噪供电不干净时更明显快速做出来先听个响I2S 输出 MAX98357A数字链路从芯片直接到功放抗干扰强底噪低ESP32 或功放需要接 I2S 三根线软件要选对引脚追求音质和稳定性的完整方案我自己一开始用的模拟输出方案声音能响但把音量调到最低时能听到轻微电流声。后来改成 I2S 输出到 MAX98357A底噪明显下降尤其在小音量下差距很大。TEF6686 模块上的 I2S 引脚一般标注为 DATA、BCLK、LRCLK接到 MAX98357A 对应的 DIN、BCLK、LRC三者分别是 GPIO25、GPIO26、GPIO27。注意这组引脚需要重新规划因为编码器用掉了 GPIO26/27。我最后把编码器挪到 GPIO16/17把 I2S 信号安排到 GPIO25/26/27。所以选型时一定要先把 GPIO 全盘规划好不然后期挪线非常痛苦。如果你对外放音量要求高MAX98357A 最大输出约 3W8Ω 喇叭PAM8403 有 3W3W 的双声道。收音机单声道节目居多3W 足够在房间里听得很清。2.4 供电与功耗设计锂电池方案便携设备最怕的就是供电设计翻车。TEF6686 模块、ESP32、OLED、功放这些加在一起满音量外放时电流能到 300-500mA用锂电池必须算好账。电池电压3.7V 锂电池标称电压充满 4.2V放完 3.0V 左右。ESP32 供电开发板上面通常有板载 AMS1117-3.3直接从 VIN 输入 5V 或电池电压都能工作。但如果想低功耗建议电池直接经 HT7833 这类低压差 LDO 稳压到 3.3V再接 ESP32 的 3.3V 引脚绕开板载的线性稳压能省掉稳压器空载时的额外电流。TEF6686 供电模块有些标 3.3V 输入有些标 5V。买模块时看清楚如果标 5V 就由充电模块的 BAT/5V 路径供电如果标 3.3V 就接 LDO 输出。功放供电PAM8403 或 MAX98357A 一般直接用锂电池电压供电这样功放输出功率更足工作电压范围 2.5-5.5V 都支持。功耗估算例子ESp32 开启 WiFi 时平均电流约 100-150mA不开 WiFi 跑收音机大约 60-100mAOLED 亮屏约 20mATEF6686 芯片大约 80-120mA功放小音量约 50mA。合计约 250-350mA。用 18650 的 2500mAh 电池中等音量下能跑 6-8 小时够用。省电技巧方面收音时不用的 WiFi/蓝牙直接关掉OLED 亮度调到 40%-60%不操作时 10 秒后自动降为低亮度模式旋钮一转动立刻恢复。这样可以再把续航拉长至少 20%。2.5 天线与射频设计比你想的更影响体验天线的效果好坏直接影响这台机器的收听体验。TEF6686 再强天线喂给它的信号不干净DSP 也救不回来。FM 频段常用 87-108MHz四分之一波长在 98MHz 大约是 76cm。机盒里塞不下这么长的天线所以便携方案一般用加感天线或软鞭天线长度做到 50cm 内也能获得不错的接收效果。推荐做法使用 SMA 接口的外接天线盒顶装一个 SMA 母座外部接一个 30-50cm 的拉杆天线或软天线。收听时拉出来收工缩回去效果远好于裸导线。如果不想带天线出门可以利用耳机线做天线。3.5mm 插座的 L 声道和 GND 之间做一个小电感耦合让耳机线兼做 FM 天线听到的声音还能兼顾天线的长度。很多成品便携收音机也是这么干的。天线座要尽量远离 ESP32 的 PCB 天线和 USB 充电口。我踩过的坑是天线放在设备底部刚好贴着 ESP32 的 WiFi 天线区域FM 底噪立刻上来一个数量级。如果做 AM 接收需要额外接磁棒天线。磁棒在盒子里摆放方向会影响接收尽量水平放置远离功放模块。3. 固件编写与 DSP 收音机实现3.1 开发环境与依赖库固件部分我还是用 Arduino 框架严格来说是 Arduino ESP32 内核。你也可以用 VS Code PlatformIO但我必须说实话如果只想把收音机先跑起来Arduino IDE 的配置成本最低装好 ESP32 开发板包之后直接烧录。需要准备的库TEF6686 驱动库搜 GitHub 上找 star 较多的比如 potodo/TEF6686或 petl/TEF6686Adafruit SSD1306 和 Adafruit GFX用来驱动 OLED编码器库比如 Encoder 或 Rotary我用的是 Rotary 库省去自己写消抖IRremote 可选如果后面要加红外遥控把 TEF6686 库放进 Arduino 的 libraries 目录后直接编译烧录。务必要注意一点不同版本的 TEF6686 库 API 存在差异有的用radio.setFrequency(98700)有的用radio.setFreq(98.7)烧录前先看一眼库自带 example别照搬网上老代码。3.2 ESP32 驱动 TEF6686 的核心代码以下是一段最小可用的初始化与调台代码#include Wire.h #include TEF6686.h TEF6686 radio; void setup() { Serial.begin(115200); // 指定 I2C 引脚SDA21SCL22 Wire.begin(21, 22); Wire.setClock(400000); if (!radio.begin()) { Serial.println(TEF6686 init failed); while (1); } // 设置为 FM 频段起始频率 87.5MHz步进 100kHz radio.setBand(FM_BAND); radio.setFrequency(98700); // 98.7MHz单位 kHz radio.setVolume(60); } void loop() { printf(RSSI%d dBuV SNR%d dB\n, radio.getRSSI(), radio.getSNR()); delay(1000); }这段代码逻辑并不复杂但有几个隐藏重点radio.begin()要完成芯片上电后的初始化序列包括系统时钟配置、内部校准、复位等。如果这里失败基本就是 I2C 没通或者供电不对可以先用 I2C 扫描工具确认 0x66 地址是否出现。setBand(FM_BAND)会重置芯片的频段、带宽、去加重等参数。调完之后不要马上重新设置频率让芯片等几十毫秒。setVolume(60)的设置范围因库而异有的是 0-100 百分数有的是 0-63 的寄存器值。用之前看一下库源码否则音量会莫名奇妙的偏大或偏小。在接收弱信号时可以读取getSNR()做静噪判断一般 SNR 小于 10dB 时听起来已经有明显噪声小于 5dB 基本不可听。我的静噪阈值设置在 12-15dB。如果你用的是 I2S 输出方案TEF6686 模块还需要通过 I2C 配置音频输出模式。库一般会提供radio.setAudioOutput(I2S)或类似接口具体参数看模块供应商给的示例代码。这里不建议自己手动改寄存器TEF6686 寄存器手册相当厚库封装得已经够好直接调库接口最省事。3.3 旋钮交互、OLED 显示与搜台逻辑整机用户体验靠三个东西撑起来旋转编码器、OLED 显示、合理的状态机。我整理出的交互逻辑如下旋转编码器默认在收音模式下旋转一格改变 100kHz 步进FM按住编码器开关进入菜单旋转选择菜单项短按确认长按 1 秒进入音量调节模式再旋转调音量。OLED 显示界面第一行用大字号显示当前频率比如“98.7 FM”第二行显示信号强度条根据 RSSI 转成 0-10 级第三行显示 RDS 电台名或当前时间第四行是音量图标和电池电压。自动搜台短按 SW 键启动自动搜索TEF6686 会从当前频率向上扫描直到找到一个 SNR 高于阈值的台然后停下来。这个功能实现起来很简单因为芯片本身有 seek 功能只需要调用radio.seekUp()或radio.seekDown()。旋转编码器做步进控制时要注意 FM 频点的步进设置。中国 FM 频点的信道间隔是 100kHz步进设为 100kHz 最符合习惯有些模块默认是 50kHz你会在 98.65 这种频率上停住手动调也是可以的但扫台时会觉得节奏不对。我自己在菜单里加了“步进 100/200/50kHz”可选项用起来更灵活。VOL 和频率的反馈我建议在调台时做个“频率跳变提示音”比如调用功放输出一个短促的 1kHz 方波这样旋转编码器时有咔嚓感。但不是必须有看个人喜好。3.4 音质优化与底噪处理TEF6686 的解调质量本来就不错但很多 DIY 做出来声音还是发闷或者有底噪问题往往出在周边AGC 设置强信号附近容易出现“大台压小台”适当降低 AGC 增益或者选择“弱信号优先”模式能明显改善。带宽调节FM 立体声需要更大带宽但邻频干扰严重时切换到窄带宽能救回可懂度。TEF6686 支持 110kHz/171kHz/180kHz 等带宽我的经验是城市里默认用 171kHz边缘地区再切到 180kHz。去加重中国 FM 使用 50μs 去加重TEF6686 可通过 I2C 配置。如果设置错成 75μs声音会变得闷暗。库函数里通常有radio.setDeemphasis(50)之类的接口。模拟输出滤波如果走模拟方案可以在 LINOUT/ROUT 输出端各串一个 1kΩ 电阻并联 47nF 电容到地做一阶低通滤波滤掉数字部分的高频泄漏。这个电路非常便宜但对听感改善很明显。功放模块位置PAM8403 这类数字功放开关频率会通过电源线辐射必须尽量远离 TEF6686 模块或者在功放电源脚加磁珠和 100μF 电解电容。这个问题在结构上没解决好的话声音越大越容易听到“沙沙”的高频噪声。4. 常见问题与排查实战从能响到好听4.1 ESP32 侧的高频坑ADC、蓝牙 WiFi 与 I2C先回应一个大家常问的点ESP32 蓝牙和 WiFi 可以一起用吗可以ESP32 内部有共存协议栈能同时开启 WiFi 和蓝牙。但在收音机项目里开 WiFi 或蓝牙时射频天线会在 2.4GHz 频段工作大家频率不共道影响不是直接阻塞而是板内高频数字信号耦合进模拟音频路径导致听感底噪升高。实测下来开机 WiFi 后 FM 底噪会从“很干净”变成“依稀可闻”这在便携设备上很难完全消除只能尽量通过布局和屏蔽缓解。再强调一次 ADC 问题。ESP32 的 ADC 在低电压区间非线性严重做电池电压检测误差可以到 200mV 以上。我的方案是外接一块 INA226 电压/电流监测芯片通过 I2C 读取电池电压和整机电流精度高还能顺便监视功耗。如果你不想加芯片那就做粗略校准分压后用几组已知电压的电池做线性插值至少能显示 25%/50%/75%/100% 四档电量。I2C 初始化失败也是高频问题。TEF6686 上电后如果立刻发指令芯片可能还在内部初始化直接返回无应答。解决办法是在radio.begin()之前加 200ms 延时同时把 I2C 时钟从默认的 100kHz 提到 400kHz 反而更稳因为总线上挂 OLED 之类的设备响应慢时时钟太慢容易出现时序竞争。这里要提到网上很多人给 “ESP32 接 LAN8720 以太网模块” 排错时总结的一个通用经验芯片初始化不成功八成是电源时序和复位时序问题不是协议问题。TEF6686 同理模块供电要稳定复位脚如果在时序上缺一个低脉冲芯片就处于异常状态。先确认供电电压、再测复位波形、最后考虑换杜邦线这个排查顺序能省很多时间。4.2 TEF6686 初始化失败或无声音归纳我在实际调试中遇到过的现象供你对症下药现象可能原因解决方法I2C 扫描不到 0x66模块供电不足用外部 5V/3.3V 稳压单独供电别靠 ESP32 稳压喂begin() 返回 false时序问题模块未完成上电上电后延时 200ms 再初始化寄存器能读但不出声音频输出引脚接错或模式错误检查 LEDOUT/ROUT/I2S 引脚定义确认库配置信号条满格但声音沙哑AGC 过强或 FM 频带设置过窄调低 AGC把带宽切到 171kHz/180kHz声音正常但偶发爆音软件音量调节产生 pop 声I2C 写音量前先静音改完恢复同步扫描一直找不到台静噪阈值设置太高把 SNR 阈值从 20dB 降到 10-12dB 再试“能读寄存器但不出声”是我遇到过最烦的问题。有一次是模块的 I2S 引脚上本来就挂了 MCLK而我的功放不需要 MCLK结果忘了接导致音频始终没数据。这个问题如果不看模块原理图基本发现不了。所以模块到手第一件事就是把卖家给的 datasheet 或原理图完完整整看一遍把每个引脚干什么、需不需要 MCLK 标清楚。4.3 便携设备的射频干扰之谜手持设备里面塞着一块 ESP32、一块功放板、一堆 DC-DC 电路射频接收灵敏度想做好比台式机难得多。我的教训是开关电源是最大噪声源如果供电用了 DC-DC 模块比如 MP1584、TPS5430即使在模块上加滤波开关频率的谐波仍然会辐射到 FM 频段。便携场景下电池电压和芯片电压之间用 LDO 是更稳的选择牺牲一点效率换取射频干净。USB 充电线的噪声也很大手机充电头插上 Type-C 给机器充电时底噪会比电池供电大一个数量级。充电时的开关电源纹波会沿着电源线传导到收音机电路。我后来在充电输入到主供电之间加了一颗大电流磁珠和 470μF 电解电容改善不少。天线靠近屏幕排线SSD1306 OLED 在刷新时数据线上有 400kHz 甚至更高的跳变如果天线离屏幕排线太近这些数字噪声会被直接接收。我的外壳里天线走线和屏幕排线尽可能垂直交叉而且拉开距离实测底噪降低明显。想彻底排除射频干扰最土但最有效的方法是先把机器放在金属屏蔽盒里测试天线从 SMA 口引出来看接收是否变好。如果变好说明问题在盒内辐射逐块取下屏幕、功放、ESP32 做排除法。4.4 疑难杂症速查表最后整理成一张速查表方便在现场调试时对照症状第一排查点第二排查点第三排查点开机黑屏OLED 电压是否 3.3VI2C 地址扫描OLED 引脚是否和收音机冲突旋钮乱跳编码器供电不稳GPIO 中断没做消抖编码器型号和库不匹配频率偏移TEF6686 未校准OLED 显示格式溢出晶振频率异常自动搜台不停SNR 阈值过高天线太短信号弱AGC 设置太激进叫声/自激功放增益过高电源地回路太长喇叭线与天线平行遇到疑难杂症不要盲目换件先用示波器把 I2C 波形、I2S 的 BCLK/LRCLK、电源纹波一个个测过去基本能锁死问题。5. 进阶玩法不只是一台收音机5.1 接入 RDS 信息显示TEF6686 内置 RDS 解码能解出 PI、PS、RT、CT 等数据。Arduino 库一般提供类似radio.getRDSPS()、radio.getRDSRT()的接口。国内部分省市级电台会开 RDS至少能拿到节目类型或台名。我通常在 OLED 第三行滚动显示 RT 文本配合一个 30 秒的定时刷新显示“正在播放的歌曲名/主持人”之类的信息整个机器的信息含量立刻提升。RDS 数据解析时有两点麻烦一是信号弱时文本中间会夹错字符二是中文编码往往不是标准 Character Set 0很多台直接是 GBK/UTF-8 扩展需要自己映射。我的妥协做法是非 ASCII 字符一律显示为“”保证可读性优先。5.2 打造 FM 与网络流媒体混合播放器ESP32 连上 WiFi 之后可以把这台机器做成“混合收音机”FM 信号弱时同一电台如果有网络流媒体就自动切换去播放网络流本地空白频率段也可以手动收藏网络电台。音频路径我用一个继电器或模拟开关 CD4052 做切换FM 解调输出和 ESP32 从网络拉取的音频流共用同一路功放。实现上ESP32 通过 Audio 库解码网络流但这会让 CPU 占用上升同时 WiFi 持续工作也会增加功耗。所以我的策略是默认不开 WiFi需要网络流时才手动打开用完自动关闭。这样既保留了混合播放能力又不会牺牲续航和射频纯净度。5.3 语音播报、蓝牙音箱与其他扩展ESP32 自带蓝牙可以做 A2DP 音源接收把手机音乐传到这台设备上外放。用 GPIO 控制音频通道切换后机器就成了“收音机 蓝牙音箱”二合一设备实用价值高很多。如果再加一个 SV17F 之类的语音模块调台时还能语音播报当前频率或电台名效果非常“赛博朋克”。不过这属于锦上添花不是必须的功能建议先把基础收音机做扎实再动这些念头。写在最后的小体会这个项目从最初“看别人玩 TEF6686”到我真正把它做成稳定握在手里的成品前前后后折腾了快两个星期。最大的感受是这颗芯片的硬件上限非常高但 DIY 时真正决定成败的往往不是代码而是供电和布局。供电干净了、天线位置对了TEF6686 的表现会让你惊讶这两点没做好再贵的模块也救不回满屏底噪。如果你从零开始做我建议路线是先拿面包板验证 I2C 能驱动、能出声然后再考虑便携化和外壳。不要一步到位否则很容易踩进“能响但噪声大”的调试地狱。我个人目前还在继续优化这台机器的 AM 接收部分和电池续航后续打算再加一组数字电位器做音量控制把整机的交互再打磨一遍。你可以从 FM 版本起步一步一步往想要的方向扩展这也是 DIY 最有意思的地方。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询