故事
“WiFi传感”是智能家居的未来,还是仅仅是实验室里的一种新奇玩意儿?我花了数周时间,用ESP32搭建了一个人体检测阵列,想看看我们是否最终可以摆脱昂贵的传感器。
演示视频请前往Reddit观看。
引言:物联网“第六感”的崛起
在智能家居和物联网领域,我们一直在寻找完美的感应器。被动红外传感器(PIR)价格低廉,但无法探测静止目标。毫米波雷达精度高,但价格昂贵且集成复杂。摄像头功能强大,但存在严重的隐私问题。
但最近,“第四种选择”在开源社区获得了极大的关注:WiFi 传感。
一切始于我注意到乐鑫科技(Espressif Systems)的工程师们在名为esp-csi的 GitHub 代码库上异常活跃。这并非一次简单的更新,而是一次旨在解锁标准 ESP32 芯片信道状态信息(CSI)的全面尝试。社区几乎立刻做出了回应。我看到像espectre这样的项目涌现,它利用 CSI 进行频谱分析。我还看到研究人员发布了使用深度学习进行二维室内定位的代码。
这些说法近乎科幻。乐鑫的文档甚至包含一个名为“手指手势追踪”的演示,esp-crab声称仅使用WiFi信号就能实现精准的手指手势追踪。
这引起了我的好奇。如果这项技术真的存在,它就能让空间感知技术普及化。我们不再需要30美元的雷达模块;一个5美元的微控制器就能胜任。但它可靠吗?可复制吗?或者它只是一个脆弱的演示装置,只能在屏蔽的射频室中运行?
为了回答这个问题,我从我的工作室里收集了一些 Seeed Studio XIAO ESP32 开发板,并决定从头开始构建一个房间规模的传感阵列。
理论:CSI究竟是什么?
在深入构建之前,我们需要了解我们实际关注的是什么。大多数人都熟悉接收信号强度指示器 ( RSSI )。RSSI 就像测量声音的“音量”;它告诉你信号有多强,但除此之外就没什么信息了。它的波动很大,而且几乎无法提供关于环境的信息。
CSI(信道状态信息)则不同。如果说RSSI代表“音量”,那么CSI代表声音的“质感”。
在现代WiFi(OFDM)中,数据通过多个子载波(不同频率)同时传输。当这些无线电波从发射器(TX)传播到接收器(RX)时,它们会从墙壁、家具和人体反射回来。这些反射会导致无线电波到达接收器的时间略有不同,从而产生干扰。
CSI(信道状态信息采集)技术能够捕捉到每个子载波的振幅和相位信息。当人体在房间内移动时,会改变这些波的反射和散射方式。通过分析这些变化在整个频谱范围内的“形状”,理论上我们可以检测到人体的存在、运动,甚至特定的手势。
第一阶段:“Hello World”和最初的挫败感
我的旅程始于一个最简单的目标:将 CSI 数据可视化。
我为这项任务选择了 Seeed Studio XIAO ESP32S3。我喜欢这些开发板,因为它们体积非常小巧,功能强大到足以处理数学运算,而且易于在实际部署中隐藏。
我将csi_send示例程序烧录到两块XIAO开发板上。我的设置非常简单:我把标准的 FPC(柔性贴片)天线贴到开发板上,然后把它们平放在桌面上,两块板子相距约 50 厘米。之后,我运行 Python 脚本,在我的笔记本电脑上渲染数据流。csi_recvcsi_data_read_parse.py
结果令人沮丧。
我原本以为会看到一个清晰的正弦波,能够随着我的手部动作而变化。结果,我看到的却是一团乱麻般的锯齿状线条。图表看起来就像静电噪声。我在电路板上挥动手——没有任何变化。我又跳了起来——图表依然模糊不清。

我花了整整两天时间,怀疑是不是固件刷错了,或者小米的硬件不兼容。我调整了各种参数,更换了WiFi信道,甚至重写了Python解析器。但所有方法都无效。我基本上只能对着无线电信号发呆。
第二阶段:一切都与物理有关
在重新阅读文档并深入研究射频理论后,我意识到我的错误不是软件问题,而是物理问题。
- 天线问题:大多数开发板附带的FPC天线是全向的,但增益很低。将它们平放在桌面上,会导致天线旁边的桌面产生严重的反射。我测量的是桌面,而不是房间。
- 菲涅尔区:无线电波并非沿激光线传播,而是在两根天线之间一个橄榄球形状的区域内传播,这个区域被称为菲涅尔区。由于我的设备放在桌子上,桌子阻挡了菲涅尔区的下半部分。
解决方案:
我搭建了一个合适的测试平台。我将XIAO电路板安装在三脚架上,离地1.4米。关键是,我断开了FPC天线,并连接了外部偶极(杆状)天线。

我重新启用了脚本。效果简直天壤之别。
图表呈现出稳定的节奏。当我静止不动时,线条平坦。我迈出一步的瞬间,波形便迸发出美丽而清晰的图案。我终于能在数据中看到“我”的影子。这是一个转折点——这项技术真的有效。
第三阶段:从数据到检测(“绊线”)
现在我有了干净的数据,我想用它做些有用的事情。我切换到了esp-radar/console_test示例程序。该固件包含乐鑫科技的专有算法,用于过滤噪声并做出判断:“有人在这里”或“房间是空的”。
我在客厅里架设了两个相距 2 米的三脚架。
它的性能出乎意料地灵敏。它就像一根无形的绊线。当我径直走到两个三脚架之间时,串口控制台立刻发出“检测到移动”的警报。这感觉太神奇了——一个没有镜头、没有移动部件、只有空气的传感器。

然而,这些局限性很快就显现出来。如果我站在接收器两米远的地方,它就检测不到我。如果我坐在地板上,它也无法探测到我。一对设备只能形成一条“检测线”,而不是一个“检测场”。要监控一个真实的房间,我需要更大的覆盖范围。
第四阶段:构建“传感阵列”
为了解决盲区问题,我决定扩大规模。我制定了一个使用 4 个 Seeed Studio XIAO ESP32 的多设备阵列方案。
我使用了针对 XIAO 生态系统优化的修改版代码库。该代码允许多个接收器向中央节点报告数据。
布局策略:
我将这些设备排列成一个传感区域网:
- 发射器(TX):位于房间的东北角。
- 接收器 1 (RX1):位于西南角(对角线方向)。覆盖主要步行道。
- 接收器 2 和 3:放置在相邻墙壁的中点。

这种布局确保无论我站在房间的哪个位置,我都能干扰至少一对设备的菲涅尔区。
用户界面:
该项目包含一个运行在主 ESP32 上的简单 Web 服务器。我在手机上打开了该 IP 地址。界面很简单:一个状态指示器显示“存在”、“无信号”或“运动”,以及一个滚动显示信号变化的图表。
我走进房间。状态立即变为“正在移动”。
我走到拐角处,那里通常是信号盲区。状态仍然显示为“在线”。
我坐在沙发上,尽量保持静止。系统犹豫了一下,但状态仍然显示为“在线”。
成功了。我成功地把整个客厅变成了一个传感器。

最终结论:它是否已准备好迎接现实世界的挑战?
使用这套“WiFi阵列”一周后,我对它的优缺点有了更清晰的了解。虽然它的“炫酷程度”确实爆表,但实际情况却远比这复杂得多。
1. 功耗问题
这是最大的障碍。与 99% 的时间都处于休眠状态的 Zigbee 或 LoRa 传感器不同,CSI 传感需要 WiFi 无线电完全处于活动状态,每秒发送数百个数据包。
XIAO ESP32 芯片发热量很大。它们不能用电池供电,几分钟就能耗尽一枚纽扣电池的电量。你需要把 USB-C 线缆拉到房间的每个角落,除非插座位置恰到好处,否则这会破坏“隐形”美感。
2. “校准地狱”
这套系统对环境很敏感。如果我移动咖啡桌,反射图案就会改变。如果我打开窗户,图案也会改变。
要让这套系统正常工作,需要一个“校准”阶段,此时房间必须完全空无一物。如果添置了新的家具,通常需要重新校准基准值。与即插即用的PIR传感器相比,这套系统需要大量的维护工作。
3. 复杂性与准确性
与我的商用 24GHz 毫米波雷达相比,我的 4 设备阵列达到了约 80% 的精度。
讽刺的是,为了获得更高的精度,你需要更多的设备(更多的接收节点)。但是,增加设备数量会加剧网络拥塞,使校准过程更加繁琐。这就是典型的收益递减规律。
4. 未开发的潜力:深度学习
我搭建的这套系统运用了基本的统计逻辑(如果方差大于阈值,则判定为人类操作)。真正的未来在于深度学习。
理想情况下,我们会将这些CSI数据输入到运行神经网络的树莓派或NVIDIA Jetson中。有了足够的训练数据,人工智能就能学习到“波形A”代表“行走”,“波形B”代表“坐在沙发上”。然而,这会大幅增加成本和所需的技术水平,使其超出简单的DIY家庭自动化范畴。
结论
那么,ESP-CSI 能取代雷达吗?目前还不能。
如果你想要一个可靠的传感器来控制浴室灯的开关,那就买一个20美元的毫米波传感器。它更方便、更省电、更精准。
然而,如果你是一位黑客、创客或工程师,想要探索射频技术的尖端领域,那么这个项目绝对不容错过。我们能够从像 Seeed Studio XIAO 这样一款售价仅 5 美元的芯片中提取出如此丰富的数据,这充分证明了 Espressif 和开源社区的卓越工程技术。它目前还不是一个产品——而是一项等待被驾驭的强大力量。










暂无评论内容