基于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 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:雷达安装
c++·算法·贪心·csp·信奥赛·区间贪心·雷达安装
elseif1233 分钟前
分组背包1
c++·学习·算法
im_AMBER6 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
狐璃同学10 分钟前
数据结构(1)三要素
数据结构·算法
列星随旋16 分钟前
拓扑排序(Kahn算法)
算法
Hello!!!!!!23 分钟前
C++基础(六)——数组与字符串
c++·算法
山半仙xs29 分钟前
基于卡尔曼滤波的人脸跟踪
人工智能·python·算法·计算机视觉
智者知已应修善业1 小时前
【51单片机调用__TIME__无法实时时间】2023-7-10
c++·经验分享·笔记·算法·51单片机
做时间的朋友。1 小时前
算法-最大单入口空闲区域
算法
千寻girling1 小时前
机器学习 | 逻辑回归 | 尚硅谷学习
java·人工智能·python·学习·算法·机器学习·逻辑回归