智能家居这套东西玩久了,你会发现家里最难伺候的传感器不是温湿度计,也不是门磁,而是人体存在检测。前几年大家习惯用PIR红外传感器,结果晚上躺在沙发上看手机,只要不动,灯“啪”一下就灭了;去卫生间上厕所蹲久了,灯也灭了。后来有人换了摄像头方案,人是能识别了,可卧室、卫生间这种地方谁愿意放个摄像头盯着自己?我就是在这种来回折腾的过程中,把24G毫米波雷达列进了智能家居人体存在检测的首选方案。
这篇文章不是给你晒产品评测,而是把24G毫米波雷达在智能家居里到底怎么用、为什么能解决PIR解决不了的问题、接入Home Assistant和STM32时有哪些坑,一次性讲透。如果你正在折腾智能家居自动化,或打算自己做一个人体存在传感器,这篇应该能帮你少走不少弯路。
1. 为什么智能家居需要“人体存在检测”,而不是“人体感应”
先搞清楚一个概念:传统的人体感应和人体存在检测,根本不是一回事。
1.1 PIR太“能灭灯”,摄像头太“吓人”
PIR红外传感器的工作原理是探测人体发出的红外热辐射变化,它的本质是“动”,只有人移动时,热释电元件上的红外能量才会产生变化,才能触发信号。人一旦坐定、睡着、蹲坑不动,红外信号就消失了,传感器默认“无人”,于是灯灭、空调关、场景切换。这就是“躺着玩手机被关灯”的根源。
摄像头方案在“准”上确实没问题,能识别有没有人、人在哪个位置,甚至能识别姿态。但问题也很明显:隐私、存储、功耗、算力,每一样都是家庭场景的负担。尤其卧室、卫生间、更衣间,产品再安全,心理这关过不去就是不合适。我不是反对摄像头,而是说它不该是大面积铺在每个房间的选择。
1.2 24G毫米波雷达真正解决的是“静止的人”
24G毫米波雷达不一样。它发射毫米波频段的电磁波,通过检测人体反射波来判断目标是否存在。哪怕是坐在沙发上刷手机、躺在床上睡觉,人体胸腔依然会因为呼吸产生细微起伏,这个起伏足够被雷达捕捉到。也就是说,它能判断“房间里有人且相对静止”,这是PIR做不到的。
这也是“人体存在检测”和“人体感应”的本质区别。前者回答“人在不在”,后者回答“人动没动”。智能家居的自动化逻辑想要做得聪明,前提就是“人在不在”这个信号足够准、足够稳。
2. 24G毫米波雷达的原理与选型逻辑
聊原理不是为了掉书袋,而是因为你只有理解了它怎么工作,后面调试参数时才知道自己在调什么。
2.1 FMCW雷达是怎么“看见”人的
现在市面上做存在检测的24G雷达模块,大多采用FMCW体制,也就是调频连续波。简单说,雷达模块发射频率随时间线性变化的电磁波,遇到人体后反射回来,接收到的回波和当前发射信号之间会有一个频率差,这个差频大小与目标距离直接相关。通过计算差频,雷达就能知道“人离我多远”。
但在存在检测这个场景里,距离知道还不够,还得判断“这个目标是不是活的”。这里靠的是微多普勒效应。人体即便坐着不动,呼吸时胸腔也会产生毫米级位移,这个位移会让回波产生极其微小的相位变化,雷达通过分析相位变化提取出呼吸微动信号,于是得出结论:目标存在,且在微弱运动。
你可以把雷达想象成一个一直在喊“有人吗”的复读机,正常人会回答“有”,而PIR只有等你挥手时才会应一声。这就是24G雷达在原理层面领先PIR的地方。
2.2 运动能量、静止能量和目标状态怎么读
我建议你拿到一个24G存在检测模块后,先把这几个关键数据搞清楚:目标存在状态、运动能量、静止能量、目标距离。
- 目标存在状态:模块自己综合判断后给出的结果,通常是0或1,表示无人/有人。
- 运动能量:范围内目标的动态反射强度,人走动的摆动幅度越大,这个值越高。
- 静止能量:静止目标的微动反射强度,主要来自呼吸带来的胸腔起伏。
- 目标距离:检测到的目标离模块有多远,单位一般是厘米。
判断逻辑很多人搞反了。有人只看存在状态,发现误报后一头雾水。正确做法是看运动能量和静止能量的数值变化,结合距离去判断目标是否真实、是否在设定范围内。比如半夜没有人,但静止能量一直在40以上跳,可能是窗帘被风吹动,也可能是空调出风口扰流,而不是真的有人。
2.3 24G和60G怎么选
很多人在选型时纠结到底是24G还是60G。我的看法是:智能家居常规存在检测,24G足够,性价比也更高。
24G波段的波长约12.5mm,穿透性更好,对木墙、石膏板、塑料外壳都有不错的穿透能力,安装时可以藏在家具或装饰面板后面。60G波段的波长只有5mm,对微小动作的感知更细腻,适合做呼吸波形、心跳检测等更精细的医疗级应用,但探测距离相对受限,对遮挡更敏感,模块成本和设计难度也更高。
一句话总结:家庭自动化追求的是稳定、经济、易部署,24G是正解。60G强在精度,但也贵在精度,除非你有特殊需求,否则没必要上。
3. 核心优势:它比传统方案强在哪
把24G雷达的各项优势和传统方案放在一起看,差距非常直观。
| 对比维度 | PIR红外 | 摄像头视觉 | 24G毫米波雷达 |
|---|---|---|---|
| 能否检测静止人体 | 不能 | 能 | 能,通过呼吸微动检测 |
| 隐私风险 | 低 | 高,采集图像 | 低,不采集图像 |
| 光线影响 | 无 | 弱光环境表现差 | 无,完全不受光线影响 |
| 温度/水汽影响 | 受环境影响较大 | 一般 | 影响很小,卫生间可用 |
| 穿墙/遮挡 | 基本不穿墙 | 无法穿墙 | 对非金属薄墙有穿透性 |
| 设备体积与功耗 | 小 | 大 | 小,适合隐藏安装 |
| 成本 | 低 | 高 | 目前已经到可接受区间 |
这张表基本回答了“为什么智能家居会转向24G毫米波雷达”。三个关键词:静止检测、隐私、环境适应性。这些正是家庭自动化场景最看重的。
PIR在成本上确实还有优势,但它解决不了“人不动灯灭”的痛点。摄像头在性能上强悍,但隐私和部署成本劝退大部分家庭用户。24G雷达正好夹在中间,定位精准:做一个能感知人存在但又不“看见”人的传感器。
另外一个容易被忽视的优势是部署位置。PIR必须对着人活动的方向安装,摄像头更是对角度有硬性要求,而24G雷达可以藏进吊顶、藏在柜体里,甚至嵌在桌面上。这对追求室内美观的人来说是刚需。
4. 典型应用场景与自动化联动设计
雷达本身只是感知层,真正体现价值的是它和智能家居系统的联动。
4.1 灯光与空调:有人才开,无人即关
最常见的场景就是灯光和空调节能控制。传统PIR容易在“人静止阅读”时误关灯,24G雷达则稳定得多。我在书房做了一个自动化:雷达检测到有人,开桌灯和顶灯;人离开后,延时3分钟关灯。播放音乐时还会自动进入“离席暂停”逻辑,人走就暂停,回来继续播放,体验相当自然。
空调和地暖同理。晚上睡觉时人躺在床上基本不动,普通传感器根本撑不住,24G雷达则能持续判断“床上有人”。我在卧室的自动化逻辑是:晚上10点后检测到人上床,空调自动进入睡眠模式;彻底无人后,新风和除湿机自动关闭。
4.2 卫生间和书房:高隐私场景的“无人值守”
卫生间是摄像头的禁区,却是雷达的主场。洗澡时高湿度、高温环境会让摄像头起雾、PIR误报,24G雷达不受水汽影响,隔着磨砂玻璃门也能正常判定。
我家的浴霸换气和卫生间的灯是联动的:雷达无人后延时3分钟关换气扇,5分钟关灯。以前用PIR,洗澡不动的时候灯一会儿亮一会儿灭,换气扇还经常忘记关,现在全自动,实测几个月没有一次误触发。
书房场景更典型。以前我在书桌前写东西,只要脚不动,PIR就判定无人,灯灭了整个人在黑暗里凌乱。换雷达后,这个问题彻底消失了。因为人坐定后胸腔的呼吸起伏会被雷达识别为“有人”,整个时段灯光稳定如一。
4.3 老人看护中的边界和想象
很多人对雷达看护有期待,觉得能检测摔倒、能识别姿态。这里要泼一盆冷水:24G存在检测只能告诉你“房间有人没人”,不适合做跌倒检测和姿态识别。跌倒检测需要更高频段的雷达,配合多普勒特征分析和算法模型,已经超出存在检测的范畴。
不过它依然能在看护场景里做一些事。比如老人如果长时间在卫生间没有离开,可以设置一个“超时提醒”自动化,超过30分钟就推送到家人手机,既不打扰隐私,又给了家属一个安心感。你也可以配合其他传感器做交叉逻辑,比如雷达显示有人在,但门窗传感器和光照度传感器长时间没有变化,就判断可能异常。
这类应用不是雷达本身有多“聪明”,而是智能家居系统的联动逻辑赋予了它更多可能性。关键还是底层感知信号要足够准,否则后端自动化全是空中楼阁。
5. 把24G雷达接入Home Assistant的实操参考
说到智能家居开源系统,必然绕不开Home Assistant,简称HA。这里给出我实测可用的接入思路和配置示例。
5.1 模块选型建议
目前DIY社区最常用的是LD2410系列24G毫米波雷达模块,型号不同细节有差异。选型时注意三点:第一,选择支持串口输出的版本,方便接入MCU;第二,确认模块是真正的存在检测方案,而不是只支持高速移动检测的廉价微波多普勒模块;第三,尽量选择有上位机配置工具的型号,方便调门限和延时。
我个人不太建议用RCWL-0516这类微波多普勒模块去做存在检测,它本质上还是“动则触发,静则关闭”,和PIR的体验是一样的,白白浪费了毫米波雷达的名头。
5.2 使用ESPHome配置雷达传感器
把LD2410这类模块接入HA,最省事的方案是用ESP32开发板跑ESPHome,模块的TX、RX接到ESP32的串口,然后在YAML里声明。
esp32: board: esp32dev framework: type: arduino uart: rx_pin: GPIO16 tx_pin: GPIO17 baud_rate: 115200 sensor: - platform: ld2410 moving_distance: name: "Moving Distance" still_distance: name: "Still Distance" moving_energy: name: "Moving Energy" still_energy: name: "Still Energy" binary_sensor: - platform: ld2410 has_target: name: "Presence"烧录后,HA里会自动出现一个人体存在实体,这个实体就是自动化联动的核心。配置里我特别关注了moving_energy和still_energy两个值,它们是调试门限时最重要的依据。
5.3 自动化YAML:有人开灯、无人延时关灯
接入HA后,最基础的自动化是人在开灯、人走关灯。有一点要注意,关灯之前一定要有延时,并且要再确认一次无人状态,否则雷达信号短暂抖动就会造成误关灯。
automation: - alias: "书房无人延时关灯" trigger: platform: state entity_id: binary_sensor.presence to: "off" action: - delay: "00:02:00" - condition: state entity_id: binary_sensor.presence state: "off" - service: light.turn_off target: entity_id: light.study这个自动化的逻辑是先等2分钟,再确认雷达依然处于无人状态,最后才关灯。这样可以避免“人只是走出去拿杯水就又回来”时灯光频繁切。
HA里还能做更复杂的场景联动,比如结合时间条件、光照度条件、门窗状态做多条件自动化。核心思路是:雷达作为感知信号,HA作为决策大脑,不要让单一信号直接决定所有动作。
6. 基于STM32的雷达模块接入与数据解析
如果你不想用ESP32和HA,而是想基于STM32做一个独立的智能家居控制器,接入24G雷达也不难,核心就是处理串口数据。
6.1 硬件接线与电平问题
雷达模块和STM32之间通常走UART串口通信,接线很简单:模块的TX接STM32的RX,模块的RX接STM32的TX,GND共地,VCC供电。
这里有一个新手非常容易踩的坑:电平不匹配。有些雷达模块是5V供电,TX输出是5V电平,而STM32的GPIO耐压是3.3V,直连可能烧引脚。稳妥的做法是加电平转换电路,或者用支持5V容忍的引脚,再或者直接选3.3V供电的模块版本。我建议优先选3.3V模块,省掉额外的电平转换,电路更干净。
另外,雷达模块的电源要求一般比单片机的其他外设高,上电瞬间可能拉低电压,导致系统重启。实测下来,给雷达单独加一个100uF以上的电解电容并靠近模块放置,能显著减少供电波动。
6.2 UART数据帧解析思路
雷达模块输出的数据帧格式通常由帧头、长度、数据段和校验位组成,不同模块细节不一样,但解析思路是通用的。
以LD2410系列为例,数据帧以固定字节为帧头,后面跟着目标状态、运动距离、运动能量、静止距离、静止能量等字段,最后是校验字节。解析时不要一次性读完就解析,建议用状态机方式处理:
// 伪代码:简单帧头状态机 if (data == FRAME_HEAD_1) { state = WAIT_HEAD_2; } else if (state == WAIT_HEAD_2 && data == FRAME_HEAD_2) { state = WAIT_LENGTH; } else if (state == WAIT_LENGTH) { frame_len = data; state = WAIT_DATA; }用状态机的好处是即使串口数据流中间断了、多了、乱了,也能靠帧头重新同步,不会因为一次丢帧导致整条数据解析错误。工程上强烈不建议用阻塞式延时去等完整的帧,一旦数据量变大或者系统被中断打断,丢帧率会非常高。
6.3 工程化处理要点
如果只是做验证,串口中断里把数据丢进环形缓冲区,主循环里解析就够用了。如果要做成稳定产品,建议用DMA加空闲中断接收,接收效率高且不占用CPU。
雷达存在状态读取的周期不用太快。存在检测的物理过程本身就比较慢,100ms到200ms读一次一足够,没必要把系统时间耗费在串口读取上。读回来后可以做一次简单的滤波,连续几次都判定有人,才真正确认有人;连续几次都判定无人,才彻底认为离开。这个滞回逻辑可以减少很多边缘误判。
7. 调试实录:常见问题与排查技巧
这部分是我实际踩坑后的心得,比任何理论都值钱。
7.1 安装位置带来的误报
24G雷达有一定穿透性,安装位置直接影响误报率。我最初把雷达装在客厅角落,结果阳台有人走动、走廊有人经过时,客厅灯时不时亮一下。后来把检测距离缩短到3米以内,才压住了隔壁空间的人体信号。
雷达安装有几个基本原则:尽量不要正对门口、窗户和走廊;不要直接贴地安装,建议离地2米左右,安装在房间中央区域的高处;不要紧贴金属物体,金属会产生强反射干扰。安装后一定要实测各个角落,特别是门边和窗边。
7.2 灵敏度与门限调整节奏
很多人拿到模块,默认参数上去就用,结果要么人坐着灯灭,要么人走了灯还亮。核心问题是没调静止能量门限。
我的调试流程是:先让房间空置5分钟,记录无人状态下的运动能量和静止能量基线;再让人进入房间静止坐定,记录有人状态的静止能量。门限取两者中间偏上一点的数值。这样既能滤掉环境噪声,又能保留呼吸微动信号。
如果人走了灯还亮,多半是“无人确认延时”太短,或者静止门限太低,导致残留回波被当成目标。我的经验是宁可把延时调长到3分钟,也不要让灯在空房间里耗一晚上。
7.3 三个容易忽略的坑:金属、风机、窗帘
第一个是金属。雷达旁边放一个铁艺置物架或者金属垃圾桶,反射信号会异常,容易产生固定目标,造成“鬼影”。
第二个是风机和空调内机。空调的导风板在转动时会产生微动反射,静止能量可能会持续偏高。我遇到过半夜空调开着,雷达判定卧室一直有人的情况,排查了很久才发现是空调内机叶片抖动造成的。
第三个是窗帘。薄窗帘被风吹动时,反射面积很大,极容易被判断为目标。解决方式是限制检测距离,或者调整雷达朝向,避开窗户。
| 故障现象 | 可能原因 | 处理建议 |
|---|---|---|
| 人静止时灯光熄灭 | 静止门限过高或模块不支持存在检测 | 降低门限,更换真存在检测模块 |
| 无人房间偶尔点亮 | 窗边窗帘飘动、空调气流干扰 | 调整朝向,缩短检测距离 |
| 隔壁经过触发本房间 | 雷达穿墙或安装位置太靠门口 | 挪位置,缩小检测范围 |
| 金属物件导致的鬼影 | 雷达附近有金属反光体 | 移开金属物,或调整安装位置 |
| 上电后持续有人 | 供电不足或自动校准未完成 | 加电容,等待模块稳定后重新观察 |
最后说一个我自己的建议:如果你正在折腾智能家居人体存在检测,不必一上来就买很贵的设备。先买一个20块左右、支持串口输出的24G雷达模块,配合一块ESP32开发板,跑通HA接入,把书房落地灯自动化做起来,体验一圈之后你自然就知道家里哪些场景真正需要存在检测,哪些地方用门磁加PIR就足够了。
这套东西上手难度不算高,但玩明白之后,家里的自动化会从“能联动”变得“有感知”。很多你以前觉得智障的关灯逻辑、空调整夜运行、风扇忘关这些问题,都会开始自己消失。24G毫米波雷达,就是那个让智能家居从“会执行命令”进化到“知道你在不在”的关键拼图。