做物联网硬件这么多年,我越来越觉得“超低功耗 Wi-Fi 平台”是个被低估的方向。很多人一听 Wi-Fi 就摇头,觉得它天生耗电,只适合插电设备。但这两年芯片厂商把 Wi-Fi 的睡眠电流做到微安级,唤醒时间压缩到几毫秒,再加上云端的 MQTT、OTA 链路打通之后,电池供电的 Wi-Fi 传感器、资产追踪器、智能门锁已经可以做成真实落地的产品。我自己从 802.11b/g 时代一路做过来,踩过不少坑,这篇就拿一个实际项目来拆解,讲讲 Ultra-Low Power Wi-Fi Platform for IoT Applications 到底应该怎么选、怎么设计、怎么把功耗调下来,以及那些文档里不会明说的坑。

这篇内容适合三类人:一类是正在评估低功耗 Wi-Fi 方案的硬件工程师,一类是写固件但总被“电流下不去”困扰的嵌入式开发者,还有一类是想把产品从有线供电改成电池供电的产品经理。我会把从芯片选型、硬件设计、固件调优到实测验收的全过程讲清楚,所有数据都来自真实可用的方案,你照着做基本能少走一半弯路。

1. 为什么物联网场景需要重新定义 Wi-Fi 平台

1.1 传统 Wi-Fi 在电池设备上的“水土不服”

传统 Wi-Fi 模块如果只是拿来跑 TCP 收发,待机功耗非常难看。原因是 Wi-Fi 协议比 BLE 复杂得多,它要维持与 AP 的关联、定期监听信标、响应 probe、处理重传,还要保持 IP 栈和 TCP 连接状态。早期模块哪怕开了省电模式,DTIM=1 的情况下待机电流也在 0.8mA 到 1.5mA 之间,这个数对插电设备无所谓,放在电池供电的温湿度传感器上,一节 CR2032 两三个月就空了。

更麻烦的是启动阶段。传统 Wi-Fi SoC 从深度睡眠到恢复连接,往往要经历“唤醒 → 启动 RTOS → 扫描信道 → 重新关联 AP → DHCP → 建立 TCP/TLS → 发数据”这一长串流程。一次完整的连接+发送可能要几百毫秒甚至一两秒,期间平均电流 80mA 到 150mA。你要是每天上报多次,再省电的睡眠电流都扛不住“频繁重连”这个开销。

1.2 超低功耗 Wi-Fi 到底省在哪几个环节

理解低功耗 Wi-Fi 平台,不要只看“睡眠电流”一个数。真正省电体现在三个层面:

第一是保持连接时的待机电流。新一代平台引入硬件加速的省电机制,让 Wi-Fi MAC 层在无需 CPU 参与的情况下自主睡眠和唤醒。上层的应用处理器可以进入 retention sleep,只保留少量 SRAM 和 RTC 工作。这类方案在 AP 关联状态下能保持几微安到十几微安。

第二是唤醒和重连的耗时。比如某些平台支持“保持连接”的快速唤醒,从 sleep 到发包只需 1ms 到 2ms;而传统方案要重新连接 AP,需要几十毫秒甚至更久。这里的功耗差距是数量级的。

第三是协议栈的裁剪。IoT 平台不再背负完整浏览器和多媒体栈,只留下 IPv6/IPv4、TCP/UDP、TLS、MQTT、HTTP 这些必要组件,每个功能都能按需编译,内存占用和唤醒后的 CPU 负载都大幅降低。

所以你看,一个真正面向 IoT 的超低功耗 Wi-Fi 平台,本质上是“低功耗射频 + 轻量协议栈 + 快速唤醒 + 云连接 SDK”这四部分的集成。单看哪一块都不稀奇,但集成得好的平台和单纯把工规模块贴上去,最终的整机平均功耗能差出 5 到 10 倍。

2. 核心能耗指标与选型思路

2.1 先看懂这四个参数再选型

芯片选型阶段,别只盯着供应商 PPT 上的“sleep current 0.8µA”激动。你要关注的参数至少有四个:

参数 含义 选型参考值 坑点提醒
TX 峰值电流 发射瞬间电流,通常以 0dBm/11b/11n 分别标注 100mA~350mA 不同速率和功率档位差异很大
RX 电流 始终监听状态下的电流 10mA~60mA 高灵敏度往往以更高电流为代价
连接待机电流 与 AP 保持关联但无数据收发时的平均电流 5µA~50µA 依赖 DTIM 周期和协议栈优化
深度睡眠电流 射频关闭、仅 RTC 保留 0.5µA~5µA 注意整板漏电会覆盖这个数

我第一次选型时吃过亏。某模块 datasheet 写了 sleep 1.4µA,整板实测却是 45µA。后来逐个排查发现,模块内部虽然睡了,但模块配套的电源管理芯片和电平转换芯片一直在跑,板子上的 LED 指示灯、传感器上拉电阻也在白白耗电。所以选型一定要结合整板设计,你买的不是一个芯片,而是一个电源域管理方案。

2.2 用公式估算平均功耗,别凭感觉

平均功耗的核心公式是:

I_avg = (Q_boot + Q_connect + Q_tx + Q_rx + Q_sleep) / T_period

其中 Q_tx = I_tx × t_tx,Q_sleep = I_sleep × T_sleep。你可以拿一个每天上报 12 次的场景算一笔账:

  • 深度睡眠 23.9 小时,电流 4µA → 约 95.6µAh
  • 每小时醒一次,每次唤醒+连接 10ms,平均 40mA → 12 次 × 40mA × 10ms = 0.00133mAh ≈ 1.33µAh
  • 每次发 200 字节数据,TX 平均 150mA,持续 20ms → 12 次 × 150mA × 20ms = 0.01mAh = 10µAh
  • 整日累计约 107µAh

如果电池是 2000mAh 的锂亚电池,理论上可以用 2000 / 0.107 ≈ 18691 天。当然这是理想值,电池自放电、温度变化、重传率、AP 掉线后的重连都会打折扣,但你会立刻发现,超低功耗 Wi-Fi 真正的耗电大头已经从“通信”转移到了“睡眠漏电”和“电芯自放电”,这个结论很关键。

2.3 主流超低功耗 Wi-Fi 平台横向对比

我实际评估过几款代表性平台,列个表供参考:

平台方案 核心特点 连接待机电流参考 适合场景 需要留意的点
Dialog DA16200 VirtualZero 技术,片内自带 PMU,支持 TLS/MQTT 硬件加速 1µA 级 温湿度传感、门锁、电池供电网关 模组生态相对小众,封装设计要仔细看
Silicon Labs RS9116 WiSeConnect 协议栈,双核 Wi-Fi 基带,支持多协议 几微安到几十微安 智能家居、工业传感 固件更新节奏一般,调试需要额外时间
ESP32-C6 Wi-Fi 6 + 802.15.4,适合 Thread/Zigbee/Wi-Fi 混合网络 连接待机约 10µA 以上 低成本原型验证、混合网关 要舍得花时间调功耗管理,默认状态功耗偏高
NXP RW61x 三频段 Wi-Fi 6 + 蓝牙,面向工业/汽车级 几微安到几十微安 车联网、工业设备 成本较高,开发资料偏专业
STM32WBA 系列 集成式低功耗无线 MCU,BLE + Wi-Fi 6 共存 依配置浮动 医疗、可穿戴 Wi-Fi 部分能力较传统模块弱,吞吐场景慎选

选平台前,强烈建议先把你的使用场景分类:是“长时间睡眠+偶尔上报”(传感器),还是“保持长连接+低频控制”(门锁),还是“持续音视频/大包传输”(摄像头)。这三类对 Wi-Fi 平台的要求完全不一样。传感器类最看重深度睡眠电流和快速重连;门锁类看重保持连接待机电流和实时下行;摄像头类就别想超低功耗了,老老实实考虑电源供电和 PoE 或者大电池。

3. 硬件设计上的低功耗要点

3.1 电源路径设计决定整机待机电流

很多 Wi-Fi 模块待机电流优秀,但整机功耗惨不忍睹,问题多半出在电源路径。你要理清一个原则:处理器和 Wi-Fi 射频的供电路径要能“单独切断或进入低功耗态”,而不是让所有器件都挂在一条 3.3V 上。

我用过的方案里,比较推荐两级电源架构:前端用一颗高效率 DCDC 把电池电压降到 3.3V 或 3.0V,后端给不同外设加独立的负载开关。MCU 睡眠时,负载开关可以把传感器、指示灯、电平转换全部断电,只给 RTC 和 Wi-Fi 模块供电。这里的 DCDC 要用静态功耗低、轻载效率高的型号,例如 TPS62740、TPS62742 这类,20µA 负载时效率还能有 80% 以上。

还有一点经验:Wi-Fi 发射瞬间会有 200mA 级别的电流跳变,如果 DCDC 瞬态响应差或输出电容不足,电压会瞬间跌落导致模块复位。这个问题在干电池供电时尤其明显。解决办法是在模块电源引脚附近加 22µF 到 47µF 的陶瓷电容,也可以在电池正极并联一个 100µF 左右的钽电容或超级电容做能量缓冲。

3.2 天线设计直接影响发射功耗

天线不是玄学,它直接决定链路预算。实测中,如果板载天线的辐射效率从 50% 掉到 30%,意味着链路损耗增加约 2.2dB,模块在同样距离下要发射更高功率才能保持与 AP 的通信速率。你算一下,发射功率每增加 3dB,TX 电流大致上升 20% 到 30%。天线设计好坏最终会反映到整机平均功耗上。

如果是内置 PCB 天线,必须保证天线下方净空区足够,周边不要铺地、不要走高频信号,匹配网络预留 π 型焊盘,方便调试时微调。如果是外置天线,IPEX 座子要远离高噪声的 DCDC 电感和走线。我调试过一台设备,天线旁边刚好走了一根 SPI 总线,导致 RSSI 掉 6dB,重传率飙升,功耗涨了一倍。后来把 SPI 走线绕开,问题立刻消失。

3.3 容易被忽略的外围漏电

低功耗设计最折磨人的就是“暗电流”。以下几类漏电我都实际遇到过:

  • IO 口上拉电阻直接接到电池电压:MCU 睡眠时,外部器件的灌电流会顺着上拉电阻持续流走。
  • 电平转换芯片未关断:双向电平转换器在未启用时,如果一侧有电压,另一侧可能通过内部二极管漏电,实测漏几百微安的都有。
  • 传感器默认开启:很多传感器上电默认就是测量模式,电流一下就上到几十微安。
  • 指示灯的限流电阻没断电:一个红色 LED+1k 限流电阻,就是 3.3mW 的功耗,合 1mA 左右,绝对不能忍。

我的做法是画一张“睡眠模式功耗预算表”,把每个外围器件的睡眠电流、是否允许断电、断电方式都列出来。然后在样板阶段逐个飞线测量,一旦整机电流超过预期,就按表格逐项断开排查。

4. 固件与协议栈层面的功耗调优

4.1 用好 DTIM 与 TWT 参数

Wi-Fi 省电的核心是“按照约定的周期醒来收数据”。AP 会定期发送 beacon,其中 DTIM 字段告诉关联设备,多大的周期内会有组播/广播缓存数据。DTIM=1 表示每个 beacon 都可能有下行数据,设备必须每个 beacon 都醒;DTIM=3 表示三个 beacon 才可能有下行数据,设备可以睡更久。

对电池设备,我会建议:

  • 若下行及时性要求不高,设置 DTIM=1 反而可能更省电,因为模块可以在每个 DTIM 之后立刻再睡,而不是等待多个 beacon。
  • 若下行实时性要求高,建议启用 802.11ah 或 Wi-Fi 6 的 TWT(Target Wake Time),让模块和 AP 协商一个确切的唤醒窗口,比被动监听 beacon 更高效。

这里有个经验:不同 AP 对省电模式的支持差异很大。有些家用路由器的省电实现有 bug,设备只要 sleep 超过几秒,路由就会从关联表里把它踢出去。你在家里测试没问题,到客户现场就频繁掉线。稳妥做法是固件里做“定时轻量探活”,比如每 30 秒用空数据帧保活,或者客户端检测到丢关联后快速重连。

4.2 数据上报协议别一上来就跑 MQTT/TLS

如果你用的是资源受限的设备,直接跑 MQTT+TLS 会吃掉不少唤醒时间和内存。我的建议是分级处理:

  • 简单场景:用 UDP 上报,服务器端收包后落库,可靠性靠应用层重发。
  • 中等场景:MQTT over TCP,但 QoS 用 0 或 1,不要用 QoS 2,它在低功耗设备上是灾难。
  • 安全敏感场景:TLS 会话复用(TLS session resumption)比每次重新握手省一大截流量和功耗。

我实测过一组数据:同样上报 100 字节,直接 MQTT over TCP 且保持长连接,每次唤醒耗时约 30ms;如果每次冷启动都重新建立 TCP+TLS+MQTT 连接,耗时约 300ms 到 800ms,功耗相差 5 倍以上。所以超低功耗 Wi-Fi 平台的协议栈最好支持长连接、断线快速恢复和 TLS 会话复用,这是省电的关键能力。

4.3 OTA 升级要设计成“后台慢速任务”

OTA 是功耗调优里最容易被忽视的一环。如果你把几百 KB 固件包一次性拉到设备里,瞬时电流会持续几十秒,功耗非常可观。更合理的做法是:利用低功耗平台的 OTA 机制,把固件包拆成小块,在设备原本就会周期性唤醒的上报窗口里“顺带下载”。例如每小时上报一次数据,每次从服务器拉 4KB 到 8KB 的固件分片,慢慢把新固件攒到外部 flash 或 OTA 分区。

我做过一个实际案例:设备每天上报 12 次,固件包 400KB,按每次 8KB 的速度,差不多 50 次上报,约 4 天完成升级。用户觉得慢,但整个升级过程对整机功耗几乎无感,而且可以随时暂停,网络不稳定也不会导致半途失败。

这里提一句 AWS IoT OTA 或类似云端 OTA 服务,它们提供的分片下发接口天然适合这种“低功耗慢下载”模式。你只需要在设备端实现断点续传和校验,云端的策略反而不是核心难点。

4.4 实测功耗的工具与方法

调低功耗不能靠猜,必须上仪表。我常用的设备有 Joulescope、Nordic Power Profiler Kit,预算少的话也可以用并联采样电阻加示波器的方式。测的时候要把握几个关键节点:

  • 开机瞬间的峰值电流和时长。
  • 入网重连过程的电流曲线,确认有没有反复扫描。
  • 睡眠状态的平均电流,稳定后至少测 60 秒。
  • 上报一个完整数据包的电流与时长。
  • 长时间运行的“平均电流漂移”,因为某些 bug 会导致设备偶尔全速运行几分钟。

实测时把 Wi-Fi 模块、MCU 和传感器分开供电,分别接采样电阻,这样能定位是哪部分在耗电。很多问题(比如 SPI 外设引脚配置错误导致模块反复唤醒)就是在多通道实测中才暴露出来的。

5. 项目实战:电池供电的冷链温度记录仪

5.1 需求与规格定义

我之前做过一个冷链运输场景的温湿度记录仪,要求是:每 5 分钟记录一次温湿度,每 1 小时通过 Wi-Fi 上报一次数据到云端;运输周期最长 30 天;电池用两节 AA 锂亚电池(合计约 4000mAh);环境温度范围 -20℃ 到 50℃。这个项目最适合用超低功耗 Wi-Fi 平台。

选型我用了 DA16200 主控方案,因为它集成了 PMU,芯片内部的 3.3V/1.8V 电源管理自己做得很细,外部只需要一个宽压 DCDC,整板器件数量少,可靠性高。传感器选了 SHT40,待机电流只有 0.2µA,完全满足低功耗要求。整板只有三部分:MCU/Wi-Fi 模块、温湿度传感器、唤醒用的 RTC 定时器。

5.2 固件处理的几个关键决策

固件架构上我做了三件事:

第一,把“记录”和“上报”拆成两个低功耗状态。记录阶段 MCU 每小时醒来一次,从 SHT40 读数据写入外部 flash,整个过程 5ms 完成,然后立刻回睡。上报阶段每 24 小时把 flash 里的数据打包,通过 MQTT 上传。

第二,设置“断网缓存”模式。列车在运输中经常穿过隧道或无信号区域,模块如果反复尝试连接 AP,会白白消耗大量电量。我在固件里加了连接失败退避逻辑:第一次连接失败等 30 秒,第二次等 1 分钟,之后递增到最长 10 分钟,最多重试 5 次,之后放弃本轮上报,等下一轮周期。这样能避免在信号盲区做无用功。

第三,用 TLS 会话复用。云端用 AWS IoT Core,设备端启用 TLS session resumption,每次上报只做一次 TLS 握手,后面的会话直接复用密钥。实测下来,每次上报从唤醒到进入睡眠,总共约 120ms,平均电流约 90mA,单次上报耗电约 3µAh。一天 24 次上报,通信耗电 72µAh,加上传感器采样、flash 写入,整机日均耗电约 150µAh。

5.3 实际续航与问题记录

这个设备在实验室跑测试,4000mAh 电池按日均 150µAh 算,理论续航约 26000 天,当然这是理想情况。但实际跑下来,30 天运输周期内电池电压下降非常小,整机功耗完全可以接受,真正的瓶颈反而是电池低温容量衰减和长寿命锂亚电池的电压平台。

测试中遇到最典型的问题是:设备在低温环境下(-10℃ 以下)模块的 TX 电流会上升,同时电池电压在发射瞬间跌落可能触底复位。后来我在电池端并联了 200µF 的钽电容,并且在固件里把“低电压复位”做成了“延迟重试”,问题就消停了。

6. 常见问题与排查技巧实录

6.1 典型问题速查表

现象 可能原因 排查思路 解决办法
模块标称 sleep 1µA,整板实测 40µA 电源路径未切断、外围漏电 逐项断开外设供电 加负载开关或 IO 电平控制
设备睡眠后偶尔会自己醒来 RTC/GPIO 外部中断配置错误、噪声干扰 用逻辑分析仪抓唤醒源 加去抖、检查唤醒引脚电平
连接 AP 后频繁掉线 省电模式下 AP 不维护关联表 查看路由器日志,确认踢出间隔 开启定期空数据保活或降低 sleep 时长
上报时功耗异常高 重传率过高、信道拥塞 抓 RF 日志、看 RSSI 更换信道、优化天线、降低发射速率
瞬时大电流导致复位 电池 ESR 高、电容不足 用示波器抓 VDD 跌落 并联大电容、降低 TX 功率档位
OTA 升级过程中功耗飙升 一次性下载大包 看电流曲线确认下载时长 改为分片下载、低速后台

6.2 调试低功耗电路的三个独家心得

第一个心得是“从大往小砍”。当整机功耗偏高时,不要一开始就纠结 10µA 的差异,先看是不是有某个外设根本没有进入低功耗模式。先把设备拆成“模块+核心板”和“外设板”两部分分别供电,基本能定位大头。大头砍完之后再上高精度电流表处理微安级问题。

第二个心得是“警惕调试接口”。我在多个项目里发现,SWD 调试器、UART 调试口即使不接设备,只要板上的调试芯片还供电,就会拖累整机电流。量产设计时务必给调试接口加一个“量产跳线”或“不可焊接选项”,调试完成后彻底断开。

第三个心得是“善用电流记录仪做长时间跟踪”。低功耗问题不一定在刚上电时暴露,可能运行几小时后才出现。我会用 Joulescope 连续记录 24 小时电流,然后对比协议日志,找到异常唤醒的时间点,再定位固件逻辑。这个习惯帮我抓到了很多偶发 bug。

7. 一个容易被忽略的坑:平台生态与应用框架

这里想单独聊一下“Platform”这个词。低功耗 Wi-Fi 平台不止是芯片,还包括软件生态、云连接 SDK、开发工具链。我见过有人买了一颗指标很漂亮的芯片,结果 SDK 只有裸机示例,整个 MQTT/TLS 栈都要自己写,最后项目延期三个月。选平台时一定要评估:

  • 官方 SDK 是否内置低功耗框架(比如自动电源管理、动态调频、连接保活)。
  • 是否有可视化功耗配置工具,能直接改 DTIM、TWT、扫描参数并生成配置。
  • 云连接层是否支持 AWS IoT Core、Azure IoT Hub、阿里云 IoT 等主流平台,是否支持 OTA、设备影子、远程配置。
  • 社区案例是否足够多,遇到诡异问题能搜到答案。

从“平台”角度来说,我认为 2025 年的趋势不是拿一个 Wi-Fi 模块去拼电路,而是选一个“从射频到云端”都帮你封装好的整体平台。设备端只需要把数据和事件抛给 SDK,SDK 负责选择合适的低功耗策略,这会大幅缩短量产周期。

但要注意,平台封装深了也有代价:出问题时黑盒难排查。我建议在项目初期就让研发团队完整读一遍 SDK 的电源管理源码,至少知道底层用了哪些 802.11 特性,免得遇到功耗异常时两眼一抹黑。

写到这里,想到去年冬天在冷链客户现场调试的场景。设备贴在运输箱里,客户经理催着要数据,我在仓库里拿着笔记本看实时电流曲线,从“每小时异常唤醒 3 次”到“彻底睡稳”用了整整两天。最后发现是 RTC 中断和传感器 I2C 总线的上拉电阻配置冲突,导致 MCU 每隔十几秒就被唤醒一次。当时我就在想,低功耗调试的尽头,其实是对每个外设、每段代码的掌控力。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐