在智能家居领域,我们一直在寻找完美的人体存在传感器,但现有的方案各有痛点:
- PIR红外传感器:便宜,但检测不到静止的人。
- 毫米波雷达:精准,但价格昂贵且集成复杂。
- 摄像头:功能强大,但隐私问题让人望而却步。
最近,一种“第四选择”正在开源社区悄然兴起——WiFi感知技术。
没错,用我们身边无处不在的WiFi信号,就能检测房间里有没有人。不需要摄像头,不需要雷达,甚至不需要任何额外的专用传感器,一块成本仅几美元的ESP32开发板就可能实现。
今天,我们就来深入解析一个令人惊叹的开源项目——ESP-CSI,看看它是如何赋予WiFi“第六感”的。

核心原理:什么是CSI?
要理解这个项目,首先需要搞清楚一个关键概念:CSI(Channel State Information,信道状态信息)。
大多数人对WiFi信号的认知停留在RSSI(接收信号强度指示)。我们可以做个比喻:
- RSSI = 声音的“音量”:它只告诉你信号有多强,信息量很少,波动大,难以用于精细感知。
- CSI = 声音的“纹理”:它包含了信号在每个频率子载波上的振幅和相位等详细信息,就像声音的频谱,蕴含着丰富的环境信息。
WiFi信号的“指纹”
现代WiFi使用OFDM(正交频分复用)技术,数据通过多个不同频率的子载波同时传输。当这些无线电波从发射器(TX)传到接收器(RX)时,会经历墙壁反射、家具散射,以及人体干扰。
这些多径传播效应导致信号在不同时间以不同路径到达接收器,形成独特的干涉图案。
关键洞察在于:当人体在房间中移动或静止时,会改变这些无线电波的反射和散射方式。通过持续分析这些CSI数据变化的“形状”,我们就能推断出人体的存在、移动甚至姿态。

硬件清单
要实现这一技术,你需要准备以下硬件:
| 硬件 |
数量 |
用途 |
| Seeed Studio XIAO ESP32S3 Sense |
1 |
主控/接收器 |
| Seeed Studio XIAO ESP32C3 |
1 |
发射器 |
| Seeed Studio XIAO ESP32C6 |
1-2 |
扩展接收器 |
| 外部偶极天线 |
若干 |
提升信号质量,替换板载天线 |
| 三脚架/支架 |
若干 |
将设备架高到合适位置 |
开发历程:从失败到成功
第一阶段:Hello World与初期挫败
最初的设置非常简单:两块XIAO ESP32平放在桌上,相距约50厘米,使用板载的FPC贴片天线,然后运行官方示例代码。
结果令人沮丧:串口监视器里显示的几乎是杂乱无章的噪声,无论怎么挥手、跳跃,数据都没有任何有规律的反应。调试固件、修改参数花了两天时间,依旧无济于事。

第二阶段:物理学的觉醒
失败的原因不在软件,而在物理层面。
- 天线问题:板载的FPC贴片天线是全向低增益天线,当它平放在桌面上时,会产生大量来自桌面的反射干扰。你测量的其实是“桌子”的振动,而非整个“房间”的环境。
- 菲涅尔区:无线电波并非像激光笔一样是一条细线,它在两个天线之间会形成一个橄榄球形状的区域,即菲涅尔区。设备平放时,这个区域的绝大部分被桌面本身遮挡了,人体活动很难对其造成有效干扰。

解决方案:
- 将设备架高:使用三脚架,将发射器和接收器都架设到约1.4米的高度。
- 更换天线:断开板载FPC天线,焊接或使用IPEX连接器接上外部偶极(棒状)天线。
调整之后,效果天壤之别:无人时,CSI波形曲线平稳;当人迈出一步,波形立刻产生剧烈而明显的变化。终于,你能从数据中清晰地“看见”自己了。

第三阶段:从数据到检测
有了干净的数据,就可以使用乐鑫官方提供的 esp-radar/console_test 示例固件。这个固件内置了专有算法,能直接处理CSI数据并输出“有人/无人”的判断。
效果惊艳:当你走过架设在三脚架上的两个设备之间时,串口立刻打印出“Movement Detected”。这就像在空气中布置了一条隐形的“绊线”——没有镜头,没有移动部件。
但局限也很明显:
- 站在接收器后方2米处——检测不到。
- 坐在地板上——检测不到。
- 单对设备只能形成一条狭窄的“检测线”,无法覆盖整个区域。

第四阶段:构建感应阵列
为了实现对整个房间的覆盖,项目作者设计了一个4节点的阵列布局:
TX - XIAO ESP32-C3 RX1 - XIAO ESP32-S3
RX2 - XIAO ESP32-C5
RX3 - XIAO ESP32-C3
这个布局确保了无论人站在房间的哪个位置,都会干扰或穿过至少一对设备之间的菲涅尔区。
项目还配套了一个简洁的Web界面。用手机或电脑打开ESP32的IP地址,就能实时看到房间状态:“Presence”(有人静止)、“Motion”(检测到移动)或“Room Empty”(无人)。
实际测试结果:
- 走进房间:界面立刻显示“Motion”。
- 走到角落(传统单设备的盲区):状态能保持为“Presence”。
- 坐在沙发上保持静止:系统可能会短暂犹豫,但最终仍能判定为“Presence”。
成功了! 整个客厅变成了一个巨大的、无形的感知场。

技术优缺点分析
在实际部署使用约一周后,可以得出一个相对客观的评价:
优点
| 优势 |
说明 |
| 成本低廉 |
核心ESP32芯片仅需5美元左右,远低于商用毫米波雷达模块。 |
| 无隐私问题 |
不采集任何图像或声音,只分析无线电波的物理变化,隐私友好。 |
| 穿透性好 |
2.4GHz/5GHz WiFi信号可穿透薄墙、木板、玻璃等非金属障碍物。 |
| 覆盖范围大 |
单对设备在理想条件下可覆盖2-3米距离,阵列可实现房间级覆盖。 |
| 完全开源 |
硬件设计、固件代码、算法原理全部公开,可深度定制和修改。 |
缺点
| 劣势 |
说明 |
| 功耗巨大 |
WiFi射频需要持续高频发包以获取CSI,无法用于电池供电场景。 |
| 校准繁琐 |
环境改变(如移动家具、开窗)后,可能需要重新采集“空房间”基线数据。 |
| 准确率有限 |
与成熟的商用毫米波雷达相比,检测准确率和稳定性(约80%)仍有差距。 |
| 部署复杂 |
需要在房间多个角落布置设备并连接电源线,影响美观。 |
| 环境敏感 |
对环境中其他移动物体(如宠物、飘动的窗帘)比较敏感,可能误报。 |
关键问题:功耗
功耗是目前最大的实用化障碍。不同于Zigbee或LoRa设备可以长时间深度休眠,CSI感知要求WiFi射频持续保持全功率运行,每秒需要发送/接收数百个探测数据包。
实测中,XIAO ESP32在持续工作时会发热明显。想用纽扣电池供电几乎不可能,几分钟就会耗尽。这意味着你必须为房间每个角落的传感节点拉设USB-C电源线,这严重影响了“隐形传感器”的理想美感。
代码架构
项目代码结构清晰,非常便于学习和二次开发:
XIAO_esp-csi/
├── examples/
│ ├── get-started/
│ │ ├── csi_send/ # 发射端固件
│ │ └── csi_recv/ # 接收端固件
│ └── room_presence_detection/ # 房间级检测方案(含Web界面)
├── tools/
│ └── csi_data_read_parse.py # Python数据分析与可视化脚本
└── docs/
└── ...

核心工作流程:
- 发射器(TX):持续广播特定格式的WiFi空数据包(Null Data Packet)。
- 接收器(RX):接收数据包,并从底层驱动中提取高精度的CSI信息(振幅、相位)。
- 算法处理:计算CSI数据(尤其是相位信息)的方差或进行其他变换,与校准后的基线比较,判断是否有人体引入的干扰。
- 结果输出:通过串口打印日志,或通过WebSocket将状态推送到前端界面显示。
未来展望:深度学习的可能性
项目当前使用的检测算法相对简单直接,本质上是一个阈值判断:if (数据方差 > 阈值) then (有人)。
但这项技术真正的潜力在于与深度学习结合:
- 将实时CSI数据流喂给树莓派或NVIDIA Jetson等边缘计算设备上运行的神经网络。
- 训练AI模型识别不同活动对应的独特波形模式。
- 最终实现更精细的行为识别,例如区分“走路”、“坐下”、“跌倒”等不同场景。
这需要构建大规模的数据集和更高的技术门槛,但其想象空间巨大,是无线感知的一个重要研究方向。
适用场景
基于以上分析,这项技术目前最适合以下场景:
| 适合的场景 |
不适合的场景 |
| 技术研究和学习无线感知原理 |
追求即插即用、免调试的智能家居产品 |
| 原型验证与概念演示 |
需要电池供电的移动或临时性场景 |
| 可接受固定布线、供电的场所(如办公室、教室) |
家具布局频繁变动的环境 |
| 对隐私安全要求极高的场合 |
需要接近100%检测准确率的关键应用 |
| 成本非常敏感且能接受一定调试工作的方案 |
需要极简部署、对美观度要求高的项目 |
结论
ESP-CSI能取代毫米波雷达吗?目前还不能。
如果你只是想做一个稳定可靠的卫生间自动灯控,直接购买一个成熟的毫米波雷达模块(约20美元)是更省心省力的选择。
但如果你是一名热爱探索的Maker、一位希望了解射频感知前沿技术的工程师,或正在为某个项目寻找隐私友好的非视觉传感方案——那么ESP-CSI是一个绝佳的、令人兴奋的实践项目。
WiFi感知技术目前还不是一个完美的成品,它更像是一种等待被充分发掘和驯服的“超能力”。科技的迷人之处恰恰在于:今天的实验室玩具,很可能就是明天的标配功能。
回想一下,十年前语音助手还是科幻电影的专属桥段。或许几年之后,“WiFi感知”会成为智能路由器或物联网设备的标配功能。到那时,你可以自豪地说:“嘿,我早在2026年就亲手实现过这个技术了。”
免责声明:本篇内容基于开源项目及技术社区分享编译整理,旨在用于学习交流。项目原作者为 limengdu,原文发布于 Hackster.io。如涉及版权问题,请联系我们。
项目原文地址:https://www.hackster.io/limengdu0117/esp-csi-diy-wifi-human-presence-detection-f80508