news 2026/8/20 20:51:24

不装摄像头,Wi-Fi 也能“看见“人影?ESP-CSI 实战指南:用 ESP32 把房间变成无感雷达

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不装摄像头,Wi-Fi 也能“看见“人影?ESP-CSI 实战指南:用 ESP32 把房间变成无感雷达

不装摄像头,Wi-Fi 也能"看见"人影?ESP-CSI 实战指南:用 ESP32 把房间变成无感雷达

【免费下载链接】esp-csiApplications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection项目地址: https://gitcode.com/GitHub_Trending/es/esp-csi

本文带零基础读者玩转乐鑫开源项目 ESP-CSI:不依赖摄像头,只用 ESP32 开发板和普通路由器,就能读取 Wi-Fi 信道状态信息(CSI),实现人体检测、室内定位等"无感感知"。全文涵盖硬件清单、十分钟跑通步骤、避坑要点与三条进阶路线,新手也能照着做。

一个真实痛点:不装摄像头,怎么知道房间里有没有人

深夜,父母独自在家,你想知道他们是否安全;客厅长时间没人,你想让空调自动关闭——但出于隐私,你不想在卧室、浴室装摄像头。有没有一种"看不见"的感知方式?

答案是:用你家里现成的 Wi-Fi 信号。Wi-Fi 不只是用来上网的,它还能像雷达一样感知环境。而这一切的入口,就是乐鑫开源的 ESP-CSI 项目——一块几十元的 ESP32 开发板,就能读取普通 Wi-Fi 信号中的信道状态信息(CSI),完成人体检测与室内定位。

先看效果:Wi-Fi 真的能"读懂"一个房间

先别急着搭环境,直接看成果。下图是 ESP-CSI 项目中 esp-radar 示例的"房间状态"界面:绿色曲线代表"有人"的特征信号,紫色虚线是判定阈值,一旦信号冲过阈值,系统立刻给出"无人、有人静止、有人运动"三种状态的实时判断。

为什么 Wi-Fi 信号能灵敏到这种程度?关键要分清两个概念:RSSI 与 CSI。RSSI 只告诉你信号"声音有多大",像音量表;而 CSI(信道状态信息)记录信号在传播过程中每个频率点的幅度、相位和延迟,像一张精细的心电图。人走动会改变信号反射路径,CSI 能精准捕捉这些"涟漪"。一句话概括:RSSI 是结论,CSI 是过程,过程里藏着更多细节

看懂一行数据,就懂了 CSI 的本质

在接收端串口里,你会看到类似这样的一行输出:

CSI_DATA,0,94:d9:b3:80:8c:81,-30,11,1,6,1,0,1,0,1,0,0,-93,0,13,2,2751923,0,67,0,128,1,"[67,48,4,0,...]"

它由两部分组成:逗号分隔的是元数据(MAC 地址、RSSI、速率、信道、时间戳等),最后引号里的数组才是 CSI 本体——每个子载波的复数信道值,先存虚部、再存实部

你可以把子载波想象成"像素点":像素越多,信道这张"照片"越清晰。这些子载波来自 OFDM 技术中的长训练序列(LTF),接收端用已知的训练符号反推出信道状态,这正是下图中"信道估计"环节在做的事。

十分钟跑通第一套系统:两块板子看实时波形

最小可用的系统只需要:两块 ESP32 开发板(推荐 ESP32-C5 或 ESP32-C6,射频性能最佳)、两台电脑端口、几根 USB 线。硬件上有三条硬性建议:优先外置 IPEX 天线(PCB 天线有方向性、易受主板干扰);两块板距离大于 1 米;电脑装好ESP-IDF v5.0.0 及以上版本。

第一步,把代码拉到本地:

git clone https://gitcode.com/GitHub_Trending/es/esp-csi

第二步,把发送端固件csi_send烧进板 A。这里idf.py是 ESP-IDF 的构建工具,set-target指定芯片型号,flash负责编译烧录,-b是波特率:

cd examples/get-started/csi_send idf.py set-target esp32c3 idf.py flash -b 921600 -p /dev/ttyUSB0 monitor

第三步,把接收端csi_recv烧进板 B(串口号换成/dev/ttyUSB1)。第四步,运行配套的 Python 解析脚本,实时子载波波形立刻出现在屏幕上——运行前记得关闭 idf.py monitor,避免串口被占用

cd examples/get-started/tools pip install -r requirements.txt python csi_data_read_parse.py -p /dev/ttyUSB1

避坑提醒:如果日志反复出现 "ESP-NOW 发送错误",通常是当前 Wi-Fi 信道太拥挤,换个信道或换到网络更安静的地方;如果 Python 工具报 "element number is not equal" 或数据错乱,多半是绘图占用 CPU 导致串口读取不及时,把波特率调高即可解决。

从入门到进阶:三种发送端怎么选

上面用的是"板间互发",其实获取 CSI 有三大流派,从省事到高精度依次排开:

  1. 路由器当发送端:ESP32 向路由器发 Ping,从回复包里提取 CSI。只需一块板加一个路由器,最省事,但受路由器位置和协议限制。
  2. 设备间直发:两块 ESP32 直接通信,不依赖路由器位置、不受邻居设备干扰,适合多设备协同实验。
  3. 专用广播设备:一台设备不停切换信道广播,多台 ESP32 同时接收,精度与可靠性最高,适合集群定位,代价是多一个发送设备。

选型建议:家用测试选路由器方案;多设备实验选板间直发;追求精度直接上广播方案。好消息是,三种方案的代码在examples/get-started下都已备好(csi_recv_routercsi_recvcsi_send)。

进阶玩法一:ESP-RADAR 人体检测与数据采集

拿到原始波形只是第一步,把波形变成"结论"才是价值所在。examples/esp-radar/console_test是一个完整的 CSI 测试平台,配套图形工具esp_csi_tool.py分为左右两块:左侧看原始子载波数据(Raw data),右侧跑雷达模型(Radar model),有人/无人、运动/静止的判断都在右侧完成。

上手要先做阈值校准:设置延迟时间(留出人离开房间的空档)和校准时长,点 start,让设备在"无人"状态下采样,自动算出判定阈值。校准越久,误触概率越低。

校准之后,这个示例还支持动作采集:给 move、sit 等动作分别录一段 CSI,数据自动存入tools/data目录,正好作为机器学习、神经网络的训练集。想做自己检测算法的朋友,从这里起步最合适。

进阶玩法二:从云端上报到毫米级相位感知

想让感知结果真正"用起来",项目还准备了更远的路:

  • connect_rainmaker:把 CSI 数据上传到乐鑫 RainMaker 云平台,手机上就能远程查看房间状态,适合快速搭建产品原型。
  • wifi_sensing_demo:基于 esp_wifi_sensing 组件,带 LED 状态反馈和浏览器端 Web Serial 调参页面,调试体验顺滑。
  • esp-crab:两片 ESP32-C5 共用一个晶振实现射频相位同步,自发自收模式可感知毫米级信号扰动,单发双收模式覆盖大范围空间——这是面向科研与前沿应用的高精度方案。

避坑清单:五个让效果翻倍的细节

把最容易翻车的点浓缩成一张清单,照着做就能少走弯路:

  1. 天线:优先外置 IPEX 天线,别用 PCB 天线,方向性差异很大。
  2. 环境:测试时尽量清场,他人走动会让数据"串味"。
  3. 距离:双板间距保持 1 米以上,感知效果更稳定。
  4. 信道:避开拥挤频段,选择相对空闲的 Wi-Fi 信道。
  5. 校准:在稳定环境中做基线校准,校准时长越长,误报越少。

从哪里开始?给你一条清晰的学习路线

想弄懂原理,项目docs/zh_CN目录下备好了六篇中文文档:信号处理基础、OFDM 介绍、无线信道基础、无线定位介绍、CSI 与 RSSI 对比、CSI 应用案例。按顺序读一遍,半小时就能把"子载波、信道估计、相位"这些词串成体系。

动手路径同样清晰:先跑通 get-started 拿到实时波形,再玩 esp-radar 做人体检测,最后按需挑战云上报或 esp-crab。无论你是物联网开发者还是刚入门的爱好者,这套从数据采集到应用落地的完整链路,都能让你少走很多弯路。下一步,克隆仓库、插上两块开发板,开始你的第一次"无线感知"吧。

【免费下载链接】esp-csiApplications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection项目地址: https://gitcode.com/GitHub_Trending/es/esp-csi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 20:49:34

基于SpringBoot+Vue.js商铺租赁管理系统(源代码+文档+PPT+调试+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华