3、间歇计算基础:间歇性供电的概念、能量采集(太阳能、振动、射频)与能量缓冲(电容、电池)技术
TinyML 设备部署于极端边缘环境时,最根本的约束往往不是算力或内存,而是供电连续性。传统嵌入式系统假设电源稳定,而能量采集驱动的视觉节点必须面对"有电就算、没电就停"的现实。间歇计算(Intermittent Computing)正是为这种非连续供电场景设计的软硬件协同范式。本章从能量来源、缓冲机制到系统设计策略,建立间歇视觉节点的完整供电知识框架。
3.1 间歇性供电的核心原理
间歇计算的前提是理解"能量可用性"与"计算任务需求"之间的时间错配。能量采集源的输出功率通常远低于视觉推理的瞬时功耗(例如树莓派级别需要 1~3W,而太阳能板在室内仅提供 100μW~1mW),因此系统必须采用"采集-存储-突发执行"的工作模式。
从系统角度看,间歇供电带来三个关键挑战:
- 能量碎片化:采集到的能量以微小增量进入缓冲器,不足以支撑一次完整的图像采集+推理+通信流程。
- 状态易失性:当缓冲能量耗尽,MCU 掉电,RAM 中的中间计算结果(如特征图、模型中间层输出)全部丢失。
- 时间不确定性:能量恢复时间受光照、振动频率等外部因素影响,无法像实时系统那样保证截止时间。
因此,间歇计算系统的设计目标不是"维持持续运行",而是在能量可用窗口内最大化有效计算进度。这要求硬件上具备快速启动能力(从掉电到恢复运行不超过毫秒级),软件上具备断点续算机制(将计算状态定期保存到非易失存储)。
3.2 能量采集技术对比与选型
针对 TinyML 视觉节点,三种主流能量采集技术各有适用场景。下表从功率密度、稳定性、部署约束和典型应用四个维度进行对比:
| 采集技术 | 典型功率密度 | 稳定性 | 部署约束 | 适用场景 |
|---|---|---|---|---|
| 太阳能(光伏) | 室外:10~15 mW/cm² 室内:10~20 μW/cm² |
受光照周期影响大,昼夜波动 | 需要透光窗口或户外安装 | 农业监测、户外野生动物视觉追踪 |
| 振动(压电/电磁) | 0.01~1 mW/cm³ | 取决于机械振动频率与幅度 | 需固定于振动源(电机、桥梁) | 工业设备状态视觉监测 |
| 射频(RF) | 0.1~100 μW/cm² | 依赖发射源距离与功率 | 需近距离RF源(<10m) | 仓库、室内设备标签视觉识别 |
| 热电(TEG) | 0.01~1 mW/cm² | 依赖温差,工业环境较稳定 | 需冷热两端接触 | 管道、发动机表面温度视觉检测 |
选型时需注意:功率密度不等于可用功率。实际可用功率还要乘以 DC-DC 转换效率(通常 70~90%)和最大功率点跟踪(MPPT)效率。例如,一块 5cm × 5cm 的太阳能板在室外可产生 375 mW 理论功率,但经过升压和充电管理后,实际存入缓冲器的功率可能只有 250~300 mW。
3.3 能量缓冲技术:电容与电池的协同
能量缓冲是间歇计算系统的"蓄水池",其设计直接影响视觉任务的可持续性。缓冲器需要同时满足两个矛盾的需求:高能量密度(存储足够能量完成一次完整任务)和高功率密度(在推理瞬间提供大电流)。
超级电容(EDLC)具有极高的功率密度(可达 10 kW/kg),但能量密度较低(5~10 Wh/kg);锂电池能量密度高(150~250 Wh/kg),但瞬时放电能力受内阻限制,且充电管理复杂。因此,工程实践中普遍采用混合缓冲架构:
- 一级缓冲(电容):直接连接采集源,吸收微小能量碎片,电压随充放电波动(如 0.5V~4.2V)。
- 二级缓冲(电池):通过 PMIC 从一级缓冲取电,维持稳定电压输出(如 3.3V),为 MCU 和摄像头供电。
- 能量调度策略:当电容电压达到阈值(如 3.0V)时,PMIC 开启二级充电;当电压跌落到安全阈值(如 2.7V)时,系统执行状态保存并进入休眠。
3.4 间歇计算的软件策略:检查点与能量感知调度
硬件缓冲只能缓解供电中断,无法完全消除。因此,软件层面必须实现检查点(Checkpoint)机制。对于 TinyML 视觉任务,检查点策略需要针对推理流程定制:
// 伪代码:间歇视觉推理的检查点策略
void vision_task() {
// 阶段1:图像采集(高功耗,约50ms)
if (energy_level < 30%) { save_state(0); sleep(); }
capture_image_to_SRAM();
// 阶段2:预处理+推理(中等功耗,约200ms)
if (energy_level < 20%) { save_state(1); sleep(); }
preprocess_and_inference();
// 阶段3:结果发送(低功耗,约20ms)
if (energy_level < 10%) { save_state(2); sleep(); }
send_result_via_lora();
// 完成,进入深度睡眠
deep_sleep();
}
检查点保存的位置需要权衡:保存到 Flash 或 FRAM 会消耗额外能量(写入 1KB 约需 10~50 μJ),但能避免重新执行整个推理流程。对于典型的 MobileNet 模型(约 4MB 权重),完整推理需要 1~2 秒,而保存中间特征图(约 100KB)只需 10ms 和 5mJ 能量,节省了约 90% 的重算开销。
3.5 案例拆解:太阳能供电的野外鸟类识别节点
背景与约束:某生态监测项目需要在野外部署 20 个视觉节点,用于识别珍稀鸟类。部署点无电网,年平均日照约 4 小时/天,冬季阴雨天可能连续 3 天无直射光。节点需每 30 分钟拍摄一张图像并完成本地推理,结果通过 LoRa 发送。
初始目标与参数:
- 图像传感器:OV2640,200 万像素,JPEG 输出(约 50KB/张)
- MCU:ESP32-S3,推理功耗约 300mW(含摄像头)
- 单次任务能量需求:采集 50ms×300mA + 推理 300ms×300mA + 发送 50ms×100mA ≈ 120mJ
- 太阳能板:6V/200mA(峰值),实际有效面积 20cm²
分析判断过程:单次任务 120mJ 的能量需求,若采用 100F 超级电容,从 3.0V 充到 4.2V 可存储能量为 ½×100×(4.2²-3.0²) = 432J,理论上可支持 3600 次任务。但实际需考虑 PMIC 效率(85%)、电容漏电流(每天约 5%)、以及连续阴雨天的能量赤字。
实际操作步骤:
- 选用 6V/200mA 太阳能板 + CN3791 MPPT 充电模块,为 100F/5.5V 超级电容充电。
- 电容输出经 TPS62742 超低功耗降压芯片稳定至 3.3V,为 ESP32-S3 供电。
- 软件采用两级检查点:图像采集完成后立即将 JPEG 数据存入 SPI Flash;推理每完成 25% 保存一次中间状态到 FRAM。
- 能量感知调度:当电容电压低于 3.2V 时,跳过本次拍摄,延长休眠时间至 60 分钟。
结果对比与复盘:部署 3 个月后,节点在晴天平均每天完成 42 次有效识别(目标 48 次),阴雨天降至 8~12 次。通过分析日志发现,主要能量损耗来自电容自放电和 PMIC 静态电流(约 15μA)。优化措施包括:选用低漏电流的超级电容(自放电率从 5%/天降至 2%/天),并在夜间完全断开 PMIC 输出(静态电流降为 0)。
3.6 常见误区与设计要点总结
在间歇视觉系统设计中,以下误区容易导致项目失败:
- 误区一:只关注采集源功率,忽略缓冲器设计。实际上,缓冲器的容量和充放电效率往往比采集源本身更关键。一个 1mW 的采集源配合高效缓冲,可以稳定驱动 100mW 的脉冲负载;反之,10mW 采集源若缓冲不当,也无法支撑摄像头启动瞬间的 500mA 电流需求。
- 误区二:检查点过于频繁。每次保存状态都消耗能量和时间。对于 50ms 的采集阶段,如果每 10ms 保存一次,保存开销可能超过重算开销。应根据任务阶段设置 2~3 个关键检查点即可。
- 误区三:忽略 PMIC 的静态功耗。高性能 PMIC 的静态电流可能达到 50~100μA,在能量采集系统中相当于每天消耗 2.4~4.8mAh,可能占系统总能耗的 30% 以上。应选择静态电流低于 5μA 的 PMIC(如 BQ25570、ADP5091)。
- 误区四:将电池和电容简单并联。直接并联会导致电容电压被电池钳位,无法利用电容的高功率特性。必须通过二极管或理想二极管控制器隔离,实现"电容优先放电、电池补充"的混合策略。