1、功耗优化的核心思想:理解物联网设备为什么需要休眠,以及休眠与唤醒的基本模型
做物联网硬件这几年,我见过太多产品死在「电池焦虑」上。明明功能都调通了,一测整机功耗,几十毫安下不去。用户换电池换到崩溃,产品口碑直接崩盘。
说白了,物联网设备跟手机不一样。手机你天天充电,没人抱怨。但一个温湿度传感器、一个智能门锁、一个资产追踪器,用户希望它「装上去就别管了」。一年、两年、甚至五年不换电池,这才是物联网该有的样子。
那怎么做到?核心就四个字:没事就睡。
1.1 为什么必须休眠?—— 一个简单的数学题
咱们算笔账。假设你用的是 CR2032 纽扣电池,容量大概 220mAh。你的设备平时工作电流 20mA,休眠电流 5μA。
- 不休眠:220mAh ÷ 20mA = 11 小时。一天都撑不住。
- 休眠,每小时醒来 1 秒:平均电流 ≈ (20mA × 1s + 5μA × 3599s) ÷ 3600s ≈ 5.6μA。220mAh ÷ 5.6μA ≈ 4.5 年。
你看,差了三个数量级。这就是休眠的意义。我在项目里见过太多人把精力花在「优化工作电流」上,费了半天劲从 20mA 降到 15mA,结果休眠电流没管,整体续航还是惨不忍睹。其实真正的大头在休眠时间占比上。
核心公式:平均功耗 = (工作电流 × 工作时间 + 休眠电流 × 休眠时间) ÷ 总时间
工作时间越短、休眠电流越低,续航越长。这是所有功耗优化的出发点。
1.2 休眠与唤醒的基本模型
我习惯把物联网设备的生命周期画成三个状态:工作态、休眠态、唤醒过渡态。你想想看,设备不可能瞬间从 20mA 掉到 5μA,中间有个「下台阶」的过程;醒来也一样,得先「上台阶」才能干活。
一个常见的误区:很多人只盯着工作电流和休眠电流,忽略了过渡态的能耗。我曾经在一个 NB-IoT 项目里踩过这个坑——设备每 10 分钟上报一次数据,每次唤醒后初始化外设花了将近 2 秒,这 2 秒的电流比正常工作还高。算下来,过渡态能耗占了总能耗的 30% 以上。
所以,完整的功耗模型应该是这样的:
1.3 三种常见的唤醒方式
设备怎么从休眠中醒来?我归纳了三种主流方式,你在项目里大概率都会遇到。
| 唤醒方式 | 触发源 | 典型场景 | 功耗影响 |
|---|---|---|---|
| 定时唤醒 | RTC / 低功耗定时器 | 温湿度传感器定时上报 | 极低,RTC 通常 < 1μA |
| 外部中断唤醒 | GPIO 电平变化 | 门磁开关、人体感应 | 极低,仅需引脚监听 |
| 通信唤醒 | 射频信号 / 数据包 | Wi-Fi DTIM、LoRa CAD | 较高,需保持部分射频电路工作 |
注意:通信唤醒是功耗陷阱的重灾区。比如 Wi-Fi 的 DTIM 监听,虽然比一直开着省电,但每隔几百毫秒就要醒来听一下 Beacon,平均电流轻松上 mA 级。我见过一个项目,用 ESP8266 做低功耗,开了 DTIM=1,结果休眠电流 1.2mA,电池一个月就废了。后来改成 DTIM=10,才降到 200μA 左右。
1.4 休眠深度的选择——不是越深越好
嗯,这里要注意。MCU 的休眠模式通常有好几级:浅度休眠、深度休眠、甚至掉电模式。是不是直接选最深的就对了?
不一定。深度休眠虽然电流低,但唤醒时间长,而且很多外设和 RAM 内容会丢失。你得权衡:
- 浅度休眠:μA 级电流,μs 级唤醒,RAM 保持。适合需要频繁响应、快速恢复的场景。
- 深度休眠:nA 级电流,ms 级唤醒,RAM 可能丢失。适合长时间不干活、可以接受冷启动的场景。
- 掉电模式:几乎零电流,但唤醒后相当于复位。适合极低功耗、且不关心历史状态的场景。
我个人的习惯是:能用浅度休眠就别用深度休眠。因为深度休眠带来的那点电流节省,往往被唤醒时的初始化开销抵消了。尤其是那些需要重新配置外设、重新建立网络连接的场景,唤醒能耗可能比多睡几分钟还高。
经验法则:如果设备休眠时间超过 10 秒,可以考虑深度休眠;如果休眠时间在 1~10 秒之间,浅度休眠更划算;如果休眠时间小于 1 秒,干脆别睡了,保持工作态反而更省电。
1.5 一个简单的功耗估算模板
最后,我分享一个我在项目里常用的估算模板。每次画板子之前,我都会先填这张表,心里就有底了。
| 阶段 | 电流 (mA) | 持续时间 (s) | 单周期能耗 (mAs) | 占比 |
|---|---|---|---|---|
| 工作态 | 20 | 0.5 | 10 | 0.03% |
| 唤醒过渡态 | 10 → 0.005 | 0.01 | ≈ 0.05 | 0.00015% |
| 休眠态 | 0.005 | 3599.49 | ≈ 18 | 99.97% |
| 合计 | 3600 | ≈ 28.05 | 100% |
你看,休眠态虽然电流极低,但因为时间占比接近 100%,它的能耗反而和工作态差不多。所以优化休眠电流和优化工作电流同样重要。别只盯着一个维度。
好了,这一章的核心就这些。记住一句话:物联网功耗优化的本质,就是让设备在正确的时间睡觉,在需要的时候快速醒来,然后把活干完继续睡。 后面的章节,我们会一步步拆解这个「睡觉」和「醒来」的每个细节。