ESP32 CSI 人体检测:一套经过标定的实用做法
2026-10-11 · 约 2 分钟
ESP32 CSI 人体检测是拿到可用 Wi-Fi 感知演示最便宜的路子。难点不在采集,而在标定与门控。 下面这套做法能撑过真实房间。
1. 采集
| 路线 | 工具 | 输出 |
|---|---|---|
| 最小示例 | espressif/esp-csi 示例 [2] |
通过 UART 或 Wi-Fi 输出 CSR/CIR 数据 |
| 面向数据集 | ESP32-CSI-Tool [3] |
逐子载波幅度/相位的 CSV |
| 智能家居 | ESPectre(ESPHome)[4] |
直接产出存在/运动实体 |
让一块 ESP32 当发送端(以固定速率发 UDP 包),另一块当接收端;有独立的 Wi-Fi 流量会让测量率忽高忽低。
广告位(上线后接入 AdSense/Ezoic)
2. 真正有用的特征
import numpy as np
# H: (时间, 子载波) 幅度矩阵(ESP32 上是 30–64 个子载波)
detail = np.abs(np.diff(H, axis=0)).mean(axis=1) # 包间变化
var = H.var(axis=1) # 逐包方差
motion = 0.5 * detail + 0.5 * var # 廉价的融合指标
不要把原始 CSI 直接喂给阈值——先逐子载波归一化,否则单个噪声大的子载波会主导结果。 这类幅度方差特征在 CSI 活动识别里是标准做法 [1]。
3. 用滞回做标定(演示最常跳过的一步)
ENTER, EXIT = 3.0, 1.5 # 每个房间单独调;ENTER > EXIT
state, hold = False, 0
for m in motion:
if not state and m > ENTER:
state, hold = True, 0
elif state and m < EXIT:
hold += 1
if hold > 5: # 约 0.5 秒的安静才判定离开
state = False
else:
hold = 0
先记录每个房间的安静基线与活动基线,再设 ENTER ≈ 安静均值 + 4σ、EXIT ≈ 安静均值 + 2σ。
4. 演示在真实房间里为什么会失败
| 失败现象 | 原因 | 修法 |
|---|---|---|
| 办公室能用,家里不行 | 多径基线不同 | 每个房间重新标定 |
| 没人动也误报 | 空调、窗帘、宠物 | 拉长窗口 + 提高 ENTER |
| 静止的人漏检 | 没有微动 | 加呼吸检测,或加一个 mmWave 传感器 |
| 随机掉数 | ESP32 与家用 Wi-Fi 抢信道 | 固定发送端 + 规划信道 |
5. 什么时候该换路由器
如果你想要全屋覆盖又不想到处摆 ESP32,一台支持 CSI 的路由器能做同样的事, 而且是 80MHz / 256 子载波 / 8 条链——见路由器复现教程与 ESP32 vs 路由器对比。
相关:接入 Home Assistant · 对比 mmWave 雷达 · Wi-Fi CSI 雷达
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。
- A 级 · 标准/综述
WiFi Sensing with Channel State Information: A Survey
W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
doi:10.1145/3310194 · 被引 857 · 核实: CrossRef API, 2026-10-11 · 领域内最常被引用的 CSI 感知综述(被引 857 次,核实于 CrossRef)。 - C 级 · 官方资料
espressif/esp-csi — Applications based on Wi-Fi CSI
Espressif Systems
github.com/espressif/esp-csi · 核实: GitHub API 2026-10-11 (stars 1,679) · 官方 README 原文:“All ESP32 series support CSI, including ESP32 / ESP32-S2 / ESP32-C3 / ESP32-S3 / ESP32-C5 / ESP32-C6 / ESP32-C61.” - C 级 · 官方资料
StevenMHernandez/ESP32-CSI-Tool — active/passive CSI extraction for ESP32
S. M. Hernandez
github.com/StevenMHernandez/ESP32-CSI-Tool · 核实: GitHub API 2026-10-11 (stars 571, MIT, last push 2024-07-16) - C 级 · 官方资料
francescopace/espectre — Wi-Fi CSI motion sensing for ESP32 (ESPHome)
F. Pace
github.com/francescopace/espectre · 核实: GitHub API 2026-10-11 (stars 9,505)
本页含联盟链接(rel="sponsored"),你通过链接购买不会增加成本,本站可获得少量佣金。