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% 以上。

所以,完整的功耗模型应该是这样的:

物联网设备休眠与唤醒基本模型 工作态 Active 休眠态 Sleep 唤醒过渡态 Wake-up Transition 进入休眠 (下台阶) 唤醒事件 (上台阶) 初始化完成 工作态特征 • 电流:10~100mA • 时间:ms~s 级 休眠态特征 • 电流:μA~nA 级 • 时间:s~h 级 过渡态特征 • 电流:斜坡变化 • 时间:ms 级 优化目标:缩短工作态 + 过渡态时间,降低休眠态电流 让设备 99% 以上的时间都待在休眠态

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%,它的能耗反而和工作态差不多。所以优化休眠电流和优化工作电流同样重要。别只盯着一个维度。

好了,这一章的核心就这些。记住一句话:物联网功耗优化的本质,就是让设备在正确的时间睡觉,在需要的时候快速醒来,然后把活干完继续睡。 后面的章节,我们会一步步拆解这个「睡觉」和「醒来」的每个细节。