基于ESP32+Wi‑Fi CSI的开源项目ESPectre

ESPectre 是基于 ESP32 + Wi‑Fi CSI(信道状态信息)无摄像头、无麦克风、纯无线无感运动检测系统,主打隐私保护、低功耗、Home Assistant 深度集成,适合智能家居、安防、老人看护等场景。

仓库地址: https://github.com/francescopace/espectre


一、项目定位与核心价值

1. 项目定位

ESPectre = ESP32 + CSI + 数学算法 + Home Assistant = 全屋无感运动 / 存在感知

2. 核心优势

|--------|-----------------|-------------------------------------|
| 方案 | 摄像头 / PIR | ESPectre |
| 隐私 | ❌ 暴露画面 / 声音 | ✅ 仅分析无线信号,无图像 / 音频 |
| 覆盖 | ❌ 有死角、需正对 | ✅ 穿墙 / 绕障,覆盖整个房间 |
| 功耗 | ❌ 较高(PIR / 摄像头) | ✅ ESP32 低功耗,可电池供电 |
| 安装 | ❌ 布线 / 供电麻烦 | ✅ 无线部署,即插即用 |
| 输出 | ❌ 仅 "有人 / 无人" | ✅ 输出 Movement Score(运动强度)+ 阈值触发 |

3. 核心输出

  • Movement Score:0--100 量化运动强度(越大越剧烈)
  • Threshold:可配置触发阈值(如设为 20,Score > 20 判定 "运动")

二、技术原理(核心)

1. 底层:Wi‑Fi CSI 采集

  • 硬件:ESP32‑S3 / ESP32‑C6 / ESP32‑C3(需支持 CSI 采集)
  • 原理:Wi‑Fi 信号在空间传播会被人体 / 物体反射 / 散射,CSI 记录每个子载波的幅度 + 相位变化
  • 数据:ESP32 实时抓取 Wi‑Fi 信道的 CSI 数据流(无需连接目标 AP,仅监听)

2. 算法:纯数学模型(无 ML/AI)

  • 提取 10 个特征:时域、频域、统计、空间特征
  • 核心算法:MVS(移动方差分割) + 自适应阈值(P95 × 1.1)GitHub
  • 流程:
  1. 采集 CSI → 2. 滤波降噪 → 3. 特征计算 → 4. 计算 Movement Score → 5. 与 Threshold 比较 → 6. 输出 "运动 / 静止"
  • 优势:端侧实时处理、低延迟、无需云端、开箱即用

3. 架构与集成

  • 固件:基于 ESPHome(ESP32 主流智能家居框架),易配置、易部署
  • 通信:MQTT 上报状态到 Home Assistant / 任意 MQTT Broker
  • HA 集成:
    • 二进制传感器:motion_detected(运动触发)
    • 数值传感器:movement_score(强度)
    • 可调参数:threshold(实时修改灵敏度)
  • 多设备:支持多 ESPectre 节点组网,实现全屋覆盖

三、项目结构(GitHub 核心目录)

复制代码
espectre/
├── components/espectre/    # ESPHome 核心组件(算法+CSI处理)
├── docs/                   # 文档、安装、调优指南
├── examples/               # ESPHome 配置模板(C3/S3/C6)
├── images/                 # 硬件/界面截图
├── TUNING.md               # 阈值/窗口/滤波调优手册(关键)
└── README.md               # 快速开始

四、双平台战略

该项目采用了双平台方法,以在创新速度和生产稳定性之间取得平衡:

1.ESPectre- 生产平台

目标:终端用户、智能家居爱好者、Home Assistant用户

  • ESPHome component 带有原生Home Assistant集成的ESPHome组件
  • YAML配置 - 无需编程
  • 自动发现 - 设备会在Home Assistant中自动显示
  • 可投入生产 - 稳定、经过测试、易于部署
  • 演示性 - 以用户友好的形式展示研究成果

2.Micro ESPectre研发平台

https://github.com/francescopace/espectre/tree/main/micro-espectre

目标:研究人员、开发人员、学术/工业应用

  • Python/MicroPython 快速原型开发实现
  • 基于MQTT - 灵活集成(不限于Home Assistant)
  • 快速迭代 - 以秒而非分钟为单位测试新算法
  • 分析工具 - 用于CSI数据分析的综合套件
  • 用例:学术研究、工业传感、算法开发

3.Development Flow 开发流程

复制代码
┌─────────────────────┐     Validated      ┌─────────────────────┐
│   Micro-ESPectre    │ ─────────────────► │      ESPectre       │
│   (R&D Platform)    │    algorithms      │ (Production Platform)│
│                     │                    │                      │
│ • Fast prototyping  │                    │ • ESPHome component  │
│ • Algorithm testing │                    │ • Home Assistant     │
│ • Data analysis     │                    │ • End-user ready     │
│ • MQTT flexibility  │                    │ • Native API         │
└─────────────────────┘                    └─────────────────────┘

创新周期:新功能和算法首先在Micro-ESPectre(Python)中开发并验证,一旦证明有效,就会移植到ESPectre(C++)中。

四、部署与使用(极简流程)

1. 硬件准备

  • ESP32‑S3 / ESP32‑C6 / ESP32‑C3 开发板
  • 5V 电源(USB 或电池)

2. 软件步骤

  1. 安装 Home Assistant , ESPHome
  2. 下载bin文件(https://github.com/francescopace/espectre/releases/tag/2.7.0
  3. 烧录到 ESP32(可使用web.esphome.io在线下载)
  1. 接入 Wi‑Fi( ESP32 进入配网热点模式 )
  • 给 ESP32 通电
  • 它会自动发射一个 WiFi 热点: ESPectre Fallback
  • 用手机 / 电脑连接这个热点 ,在自动打开的网页里配置你的家庭 WiFi ( 手动方式,浏览器访问:http://192.168.4.1
  1. 打开Home Assistant ,会自动搜索到ESPectre 设备,添加这个设备到系统中**。**

3.关键校准操作

  1. 把房间彻底没人、不动(风扇、窗帘、宠物全固定)
  2. 在 HA 点开「校准 Calibrate 开关」→打开
  3. 静置10~15 秒,设备自动完成、开关回弹关闭
  4. 日志看到 Calibration completed 就成功( 作用:设备记住当前房间 "安静基线",过滤固定干扰)

4.建议与路由器的距离

  1. 最佳范围:3-8米

|-----------|--------|---------|---------|--------|----------|
| 距离 | 信号 | 多路径 | 灵敏度 | 噪音 | 建议 |
| < 2m | 太强 | 最小 | 低 | 低 | ❌ 距离过近 |
| 3-8m | 强 | 良好 | 高 | 低 | ✅ 最佳 |
| > 10-15m | 弱 | 可变的 | 低 | 高 | ❌ 太远 |

  1. 放置技巧

将传感器放置在需要监控的区域 (不一定与路由器在同一直线上)
高度:距地面1-1.5米 (书桌/餐桌高度)
外置天线 :使用IPEX连接器以获得更好的接收效果
避免路由器和传感器之间出现金属障碍物 (冰箱、金属柜)
避开角落或封闭空间(会减少多径分集)


五、亮点与局限

1.亮点

  • 隐私至上:无图像 / 音频,仅分析无线信号
  • 低成本:ESP32 几十元,无需额外传感器
  • 低功耗:ESP32 待机电流低,可电池长期运行
  • 开箱即用:纯算法,无需训练,上电即工作
  • 可扩展:预留 ML 接口,未来可做人数统计、手势识别

2.局限

  • 依赖 Wi‑Fi 环境:强干扰(多 AP、蓝牙)可能影响精度
  • 无法区分 "人 / 宠物 / 风扇":仅检测运动,不识别对象
  • 穿墙能力有限:厚墙 / 金属会大幅衰减信号
  • 需手动调参:不同房间 / 路由器需微调阈值

六、适合人群与场景

适合

  • 智能家居爱好者(Home Assistant 用户)
  • 重视隐私的安防 / 老人看护场景
  • 不想布线、追求极简部署的用户
  • 嵌入式 / ESP32 开发者(可二次开发算法)

典型场景

  • 无人时关灯 / 关空调(节能)
  • 老人跌倒 / 长时间静止告警
  • 安防:无人时异常运动触发通知
  • 全屋存在感知,联动灯光 / 窗帘

相关推荐
_深海凉_2 小时前
LeetCode热题100-LRU 缓存
算法·leetcode·缓存
Via_Neo2 小时前
今天是周六,两天后是周几?
java·数据结构·算法
伟大的车尔尼2 小时前
广度优先搜索和深度优先搜索的概念
数据结构·算法·并查集·深度优先搜索·广度优先搜索
keep intensify3 小时前
最小覆盖子串
算法
仟濹3 小时前
【算法打卡day35(2026-03-31 周二)】DFS专项训练2(今日算法:DFS & 记忆化搜索 & 回溯)
c++·算法·蓝桥杯·深度优先
三万棵雪松3 小时前
【Linux 物联网网关主控系统-Linux主控部分(四)】
linux·物联网·嵌入式linux
炽烈小老头3 小时前
【每天学习一点算法 2026/04/02】最长递增子序列
学习·算法
IronMurphy3 小时前
【算法三十五】22. 括号生成
算法
liuyao_xianhui3 小时前
优选算法_岛屿的最大面积_floodfill算法_C++
java·开发语言·数据结构·c++·算法·leetcode·链表