今天将介绍ESP32如何"一芯两用",既做人体检测传感器也做Wi-Fi数据传输模块;
对于使用ESP32做Wi-Fi数据通讯,相信玩ESP32的基本上都知道怎么玩了,但是如何使用ESP32来做人体检测传感器,对我来说还是挺新鲜的事儿,对你来说是否有也一样呢?接下来我会重点来展开说说如何通过ESP32来实现,这里我用的的是ESP32C3模组;
之前看过乐鑫演示了他们家的ESP-CSI智能人体感知检测方案,觉得很有意思,居然可以使用Wi-Fi来检测人体移动等一系列检测,其中能够检测到的状态有:有人/无人、运动/静止;
ESP-CSI检测
于是就想着自己动手实践一下这个方案的实际效果;
最后通过修改参考代码,实现了一个基于ESP-CSI方案的ESP32C3人体检测传感器,同时接入到了HomeAssistant平台,可以通过HomeAssistant来观察整个检测的过程;
“
一句话: 本文基于ESP32C3实现了一个人体检测方案,让ESP32C3既做人体检测传感器也做Wi-Fi数据传输模块,并且接入到了HomeAssistant平台。
CSI:Channel Sstate Information ,信道状态信息,是描述无线信道特性的重要参数,包括信号的幅度、相位、信号延迟等指标。在Wi-Fi 通信中,CSI 用于测量无线网络的信道状态。
通过分析和研究CSI 的变化,可以推断引起信道状态变化的物理环境变化,实现非接触式智能传感。
CSI 对环境变化非常敏感。它不仅能感知人或动物的行走、奔跑等大动作引起的变化,还能捕捉静态环境中人或动物的细微动作,如呼吸、咀嚼等。这些能力使得 CSI 在智能环境监测、人体活动监测、无线定位等应用中具有广泛的应用前景。
网上还有很多关于CSI的有趣例子,这里罗列几个有趣的例子,就当为了提升你对CSI的兴趣吧。
通过CSI检测人的运动姿态
人在检测
通过以上的例子,让我们了解到CSI的应用方向还是挺多的,而乐鑫通过对CSI数据进行一系列的处理,最终封装为一个esp-radar库,让我们无需再进行复杂的技术分析,只需要会调用esp-radar相关的APi即可,即可完成检测到有人/无人、运动/静止这些情况。
所以利用ESP-CSI我们本质上是理解相关API的作用和使用流程;
我并没有看到乐鑫有对这个库的API做比较详细的说明,其作用我都是通过看源码注释理解进行说明,如果有不正确的欢迎留言指出,一起交流;
通过打开esp_radar.h文件,可以看到总共提供了11个API,通过API名称其功能大概也能猜出个7,8成,具体的API如下
#设置Wi-Fi radar配置,相关配置可以通过wifi_radar_config_t结构体查看
esp_err_t esp_radar_set_config(const wifi_radar_config_t *config);
#获取Wi-Fi radar配置
esp_err_t esp_radar_get_config(wifi_radar_config_t *config);
#启动Wi-Fi radar
esp_err_t esp_radar_start(void);
#停止Wi-Fi radar
esp_err_t esp_radar_stop(void);
#初始化Wi-Fi radar
esp_err_t esp_radar_init(void);
#释放Wi-Fi radar 初始化
esp_err_t esp_radar_deinit(void);
#训练Wi-Fi radar 相关配置,主要用于自主校准,校准之后可以获取相关的参数,如有无人的阈值
esp_err_t esp_radar_train_start(void);
#移植训练Wi-Fi radar后相关的配置,一般用于需要重新校准的情况,不然上一次校准的数据可能会影响本次的结果
esp_err_t esp_radar_train_remove(void);
#停止训练,可以通过入参获取训练后的两个结果 wander和jitter这两个阈值
esp_err_t esp_radar_train_stop(float *wander_threshold, float *jitter_threshold);
#获取模组的增益
esp_err_t esp_radar_get_rx_gain(uint8_t* agc_gain, int8_t *fft_gain);
#设置模组的增益
esp_err_t esp_radar_set_rx_gain(uint8_t agc_gain, int8_t fft_gain);
通过对esp-radar库api和相关工程流程的理解,接下来就是编程实现文章开头说的,功能: 基于ESP-CSI方案例程connect_rainmaker,使用ESP32C3实现人体检测传感器,同时接入到了HomeAssistant平台;
image 4
我们通过MQTT协议来把监听到的数据上报到HA,具体如何通过MQTT来声明设备的属性服务以及如何上报可以参考我之前写的文章
我们使用了使用了乐鑫的例程实践,直观感受到了esp32既可以做传统的数据传输模块也可以用来同时做人在和移动检测传感器,最后通过加入自己的代码,实现把检测到的状态也上报到了HA平台;工具安利最后给大家推荐我做的一个无线串口数据采集工具,感兴趣的童鞋可以点击看看一种让你的MCU日志可无线查看和实时记录跟踪的方法
全部0条评论
快来发表一下你的评论吧 !