
Wi-Fi 信号如何变成人体检测雷达ESP32 CSI 工具包完整上手指南【免费下载链接】esp-csiApplications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection项目地址: https://gitcode.com/GitHub_Trending/es/esp-csiesp-csi 是 Espressif乐鑫推出的开源工具包它让普通 ESP32 开发板读取 Wi-Fi 信道状态信息CSI从而在不安装摄像头的前提下实现人体检测、动作感知与室内定位。本文不堆术语先用一个生活化比喻讲透原理再手把手带你完成烧录固件、看到波形、四步跑通自己的第一个 CSI 应用。第一幕 · 开篇钩子凌晨亮起的灯和一场无摄像头的改造 独居老人的房间里家人想确认人是否安全在家。装摄像头隐私别扭装红外传感器位置刁钻还常被窗帘和宠物误触。于是冒出一个念头能不能让那台常年开着的路由器兼任哨兵别急着怀疑。Wi-Fi 信号在室内传播时本就会被墙壁、家具、人体反复反射和吸收而 CSI信道状态信息就是把这种反弹痕迹量化下来的数据。esp-csi 恰好把读取 CSI这件事做成了几行可烧录的固件让 ESP32 开发板直接变身无线感知雷达而且全系芯片通用——从 ESP32、ESP32-C3 到 ESP32-C5/C6都能玩。第二幕 · 通俗原理CSI 就是给房间拍了张 CT 把房间想象成一池静止的水路由器投下一颗石子水波向四周扩散撞到墙、沙发、还有你反弹出无数圈涟漪——这就是多径传播。人往池边挪一步涟漪图案立刻变化。RSSI 像音量旋钮只告诉你这声浪整体有多大CSI 像完整曲谱把每一圈涟漪每个子载波的幅度与相位都记了下来。人体含水量高、又会移动是改变涟漪图案最明显的变量。所以当 CSI 波形发生扰动基本等于房间里有活物在动甚至连呼吸引起的胸腔起伏都会在数据里留下痕迹。下图展示了信号从发射到信道估计的完整链路CSI 正是在信道估计环节被提取出来的。想深挖 OFDM、多径、相位这些概念仓库docs/目录下配有配套基础文档Signal-Processing-Fundamentals、OFDM-introduction、Wireless-Channel-Fundamentals 等新手也能顺着读下去。第三幕 · 从 0 到 1 实战四步跑通你的第一条 CSI 数据流 第 1 步 准备先想清楚数据从哪条路来拿到 CSI 之前得先确定发包的一方是谁。仓库提供了三条采集路线按部署成本从低到高排列路线一借道路由器一块板就能玩ESP32 向路由器发一个 Ping 请求路由器回复的响应包里就夹带着 CSI。整条链路只需一块 ESP32 加一个现成路由器最适合第一次上手。路线二设备对传两块板互相当靶子两块 ESP32 都连上路由器A 板接收 B 板发来的数据包并提取 CSI。它不依赖路由器摆在哪儿也不受路由器下挂其他设备的影响数据来路更纯粹。路线三专用发包机多设备集群定位首选一个专门设备不断切换信道广播数据包多块 ESP32 同时接收。精度与可靠性最高对网络环境打扰最小适合多人多设备联合的室内定位场景。建议第一次选路线二它对应仓库里现成的 csi_send csi_recv 两个工程硬件上只需两块 ESP32 开发板推荐 ESP32-C5 / ESP32-C6、两条数据线。为什么要强调天线尽量用外置 IPEX 天线PCB 天线方向性强、易受主板干扰两块板间距保持在 1 米以上太近时波形里全是直达波反而看不出人体扰动。第 2 步 安装配置搭好 ESP-IDF 并拉取代码CSI 固件需要 ESP-IDF 工具链编译建议使用 v5.0.0 及以上版本该版本起支持目的地址过滤采集效果更好。然后克隆仓库git clone https://gitcode.com/GitHub_Trending/es/esp-csi cd esp-csi为什么要这么做固件编译依赖完整的 ESP-IDF 环境提前装好能避免烧录阶段反复踩环境坑。第 3 步 首次运行烧录一收一发两块板先给发送端板 A烧 csi_sendcd examples/get-started/csi_send idf.py set-target esp32c3 idf.py flash -b 921600 -p /dev/ttyUSB0 monitor再给接收端板 B烧 csi_recvcd examples/get-started/csi_recv idf.py set-target esp32c3 idf.py flash -b 921600 -p /dev/ttyUSB1串口号按你电脑上的实际设备调整ls /dev/ttyUSB*可查看。为什么要先烧发送端接收端一开机就等着对端发包发送端先就位才能看到稳定的 CSI 数据流。烧录正常时两块板的串口会输出类似下图的日志第 4 步 效果验证让子载波波形活起来先关闭接收端的idf.py monitor再运行可视化脚本cd examples/get-started/tools pip install -r requirements.txt python csi_data_read_parse.py -p /dev/ttyUSB1为什么要关掉 monitorPython 脚本和 monitor 会抢同一个串口同时运行必然丢数据。脚本启动后会弹出一个实时绘图窗口一根根曲线就是各个子载波的 CSI 幅度/相位。这时让人在两块板之间走动曲线会明显抖动——看到这一幕说明你的第一条 ESP32 CSI 数据流已经打通。顺手认识一下原始数据串口里每行 CSI_DATA 结尾的方括号数组按虚部在前、实部在后的顺序存放每个子载波的复数信道响应前面的字段是元信息RSSI、速率、信道、噪声底等。看不懂没关系先跑通再回看csi_data_read_parse.py的解析逻辑会轻松很多。第四幕 · 亮点与延展从看得见波形到真能派上用场 亮点一esp-radar 可视化平台把 CSI 翻译成房间状态光看波形太原始examples/esp-radar/console_test提供了一个带图形界面的分析平台启动前先做一次无人校准让系统记住空房间的基线之后它就能持续输出有人/无人、运动/静止的判断还能按分钟/小时/天统计人员运动次数甚至把指定动作的 CSI 数据采集下来供机器学习使用。运行方式同样简单给接收板烧 console_test 固件然后执行python esp_csi_tool.py -p /dev/ttyUSB1注意走 UART 口而非 USB Serial/JTAG 口。对研究者来说这也是观察天线摆放、人体位置、设备朝向如何影响信号的最直观工具。亮点二wifi_sensing_demo自带状态灯和网页监控的最小传感方案examples/esp-radar/wifi_sensing_demo基于 esp_wifi_sensing 组件封装出更成品化的玩法板载 LED 直接反映检测状态浏览器打开 Web Serial 页面就能实时看诊断数据、在线调参无需另装桌面软件。想做智能家居人在感应原型的这条路线最省事。亮点三esp-crab把感知精度推近毫米级examples/esp-crab用两片 ESP32-C5 共享晶振做相位同步支持自发自收和单发双收两种模式通过对比信号相位差对近距离微小扰动做出毫米级响应。这是面向研究前沿的硬件方案双天线 PCB 与两种外壳形态均已开源适合对精度有执念的进阶玩家。谁适合玩以及三个常见坑这套工具包的受众很宽想给老宅做无感看护的智能家居玩家、研究 Wi-Fi 感知的学生、做安防或养老监护产品原型的工程师都能各取所需。但下手前记住三条经验天线决定上限优先外置 IPEX 天线PCB 天线方向性强信号容易听偏。测试要清场校准和采集最好在无人环境进行别人的走动会直接污染基线数据。卡顿先看串口Python 绘图很吃 CPU绘图卡顿导致串口丢包时试着调高波特率并确认没有其他程序占用串口。下一步沿着官方文档的台阶往上走想系统学透仓库docs/下的六篇基础文档已按难度排好先从 Signal-Processing-Fundamentals 入手理解信号再看 OFDM-introduction 弄清子载波接着用 Wireless-Channel-Fundamentals 学信道、Introduction-to-Wireless-Location 学定位、Wireless-indicators-CSI-and-RSSI 看指标差异最后读 CSI-Applications 纵览应用全景。实践路径建议按 get-started → esp-radar → esp-crab 的顺序递进。今天文章里讲到的三张架构图、两种固件、一个 Python 脚本已经足够让你在晚饭前跑通第一版人体检测雷达。剩下的事很简单插上板子走两步看看波形。【免费下载链接】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),仅供参考