本节摘要:传感器把物理量变成可处理的电信号,而读得准、读得省是两门手艺。本节按原理把温湿度、压力、振动、气体、光学等常用传感器过一遍,讲清 ADC 精度、采样率与能耗的关系,以及接口选型与抗干扰的工程技巧,并给出一段以事件驱动的采样流程示例。
上一节的硬件总览里,传感单元只是匆匆带过。这一节我们专门看看"读出世界一卦"这件小事里藏着多少学问与能省的潜力。
| 传感器 | 测什么 | 常见原理 | 输出 | 典型接口 |
|---|---|---|---|---|
| 温湿度 | 温度/相对湿度 | 热敏电阻/电容 | 模拟或数字 | I2C/模拟 |
| 气压/海拔 | 气压 | 压阻/MEMS | 数字 | I2C/SPI |
| 加速度/振动 | 加速度、震动 | MEMS 电容 | 数字 | I2C/SPI |
| 光学/光照 | 光强度 | 光电二极管 | 模拟 | 模拟/ADC |
| 气体 | 特定气体浓度 | 电化学/半导体 | 模拟 | 模拟/ADC |
| 红外热释电 | 人体/热源移动 | 热电 | 模拟脉冲 | GPIO/ADC |
多数 MEMS 数字传感器内部已经集成 ADC 与校准,直接输出数字量、功耗极低;一些模拟器件(光敏、气体)需要节点自己配 ADC。选数字传感器的省心,选模拟的更可控,也更容易踩通电噪声的坑。
读得准不等于读得勤。传感器能耗很大程度上取决于采样频率和ADC 的有效位:
核心账本逻辑:采样不是免费课。每个触发一次 ADC、读一次总线都要花毫瓦秒级能量。把"该读的时候读、不该读的时候让它睡"做好,是感知侧省电的头号手段。
与其像打点计时器一样不分青红皂白地规律采样,不如让"变化"来叫醒节点。下面这段伪代码展示了"平时睡、有事件才加强采样"的思路:
传感器配置为阈值比较模式 主循环: 节点进入低功耗睡眠 等唤醒源(定时器 或 传感器阈值中断) 若为定时唤醒: 读一次慢速趋势值 → 存本地 → 睡 若为阈值中断: 切换高频率采样 10 次 → 本地判事件 → 触发上报 → 睡
这段流程的价值在于把"常开的感知"换成"间歇的感知",是应对高密度采集最直接的省电姿势,也呼应了第四章数据融合里"只传有变化"的思想。
⚠️ 常见坑:把传感器满速率常开、24 小时不间断采样,是新手最普遍的耗电操作。多数监测只需低频轮询 + 事件触发,二者搭配能把采样能耗降一个数量级。
假设你要监测一台水泵的异常振动。采样要点是:平时每 10 秒读一个低频"健康值";一旦加速度越过阈值,立刻切到每秒上万次的突发采样抓住振动波形,判断是不是轴承故障,然后马上睡回去。这样既抓到关键信息,又不会因 24 小时高频采样把电池一天干涸。
💡 关键直觉:多数 WSN 感知不是"越多越好",而是"该读才读"。把采样频率当成一页会花钱的账目去管理,收益立竿见影。
挑传感器别只看"测什么",我的顺序是:口径对不对(量程与精度是否匹配场景)、能不能数字输出(内部带 ADC 的省心、走 I2C/SPI 直接把数读回)、功耗怎么算(采样电流、待机电流、预热时间)。同规格的两款,常常就因为"待机电流差几微安"而寿命差出不少。弄清楚这三条,比堆参数更能选出"又准又省"的那颗。
练习一下:室内温湿度网,目标是"趋势够用、节点跑一年"。你设置了每 10 分钟一次慢采样,事件阈值触发时短暂加密。粗略估算年耗:慢采样耗电可忽略,大头在通信与偶尔的突发事件上报——这种"低频 + 触发"组合,就是本章反复强调的"该读才读"的落地。反过来说,如果你图省事设成每秒采样并常开,即使传感器芯片很省,一年后你会发现电池被"多采的那几十万次"悄悄掏空。这通常不是传感器的问题,而是采样策略的问题。
拿到任何传感器数据手册,先看功耗三档,别被"平均功耗"糊弄:
记住一点:平均功耗是厂家把三种状态按比例揉出来的"面子数",单独看会低估"预热"和"待机"两项暗流。 把三档抄下来再结合你的采样节奏算,才是能信的真账。
常见两种认知偏差,顺手纠正一下:其一,"数字传感器永远比模拟省电"——未必。数字传感器内部多了 ADC 与通信接口,待机未必更省;省不省要看三档数字,而不是"数字"两个字。其二,"采样越频繁越准"——多数场景真值变化远慢于你的采样率,过度采样只会把噪声与电量一起采进来。看到这里你大致有了判断:先算需求的"时间分辨率",再反推采样率,而不是反过来。
下一节看处理这一环——微控制器与存储器怎么把"算"这份活干得又省又快。