今天將介紹ESP32如何"一芯兩用",既做人體檢測傳感器也做Wi-Fi數據傳輸模塊;
對于使用ESP32做Wi-Fi數據通訊,相信玩ESP32的基本上都知道怎么玩了,但是如何使用ESP32來做人體檢測傳感器,對我來說還是挺新鮮的事兒,對你來說是否有也一樣呢?接下來我會重點來展開說說如何通過ESP32來實現,這里我用的的是ESP32C3模組;
0、前言
之前看過樂鑫演示了他們家的ESP-CSI智能人體感知檢測方案,覺得很有意思,居然可以使用Wi-Fi來檢測人體移動等一系列檢測,其中能夠檢測到的狀態有:有人/無人、運動/靜止;
ESP-CSI檢測
于是就想著自己動手實踐一下這個方案的實際效果;
最后通過修改參考代碼,實現了一個基于ESP-CSI方案的ESP32C3人體檢測傳感器,同時接入到了HomeAssistant平臺,可以通過HomeAssistant來觀察整個檢測的過程;
“
一句話:本文基于ESP32C3實現了一個人體檢測方案,讓ESP32C3既做人體檢測傳感器也做Wi-Fi數據傳輸模塊,并且接入到了HomeAssistant平臺。
1、一些關于ESP-CSI基礎知識介紹
CSI:Channel Sstate Information,信道狀態信息,是描述無線信道特性的重要參數,包括信號的幅度、相位、信號延遲等指標。在Wi-Fi通信中,CSI用于測量無線網絡的信道狀態。
通過分析和研究CSI的變化,可以推斷引起信道狀態變化的物理環境變化,實現非接觸式智能傳感。
CSI對環境變化非常敏感。它不僅能感知人或動物的行走、奔跑等大動作引起的變化,還能捕捉靜態環境中人或動物的細微動作,如呼吸、咀嚼等。這些能力使得 CSI 在智能環境監測、人體活動監測、無線定位等應用中具有廣泛的應用前景。
2、一些Wi-Fi CSI的有趣例子
網上還有很多關于CSI的有趣例子,這里羅列幾個有趣的例子,就當為了提升你對CSI的興趣吧。
通過CSI檢測人的運動姿態
- CSI檢測人的運動姿態
人在檢測
- 人在檢測
通過以上的例子,讓我們了解到CSI的應用方向還是挺多的,而樂鑫通過對CSI數據進行一系列的處理,最終封裝為一個esp-radar庫,讓我們無需再進行復雜的技術分析,只需要會調用esp-radar相關的APi即可,即可完成檢測到有人/無人、運動/靜止這些情況。
所以利用ESP-CSI我們本質上是理解相關API的作用和使用流程;
3、ESP-CSI相關API介紹
我并沒有看到樂鑫有對這個庫的API做比較詳細的說明,其作用我都是通過看源碼注釋理解進行說明,如果有不正確的歡迎留言指出,一起交流;
通過打開esp_radar.h文件,可以看到總共提供了11個API,通過API名稱其功能大概也能猜出個7,8成,具體的API如下
#設置Wi-Fi radar配置,相關配置可以通過wifi_radar_config_t結構體查看
esp_err_tesp_radar_set_config(constwifi_radar_config_t*config);
#獲取Wi-Fi radar配置
esp_err_tesp_radar_get_config(wifi_radar_config_t*config);
#啟動Wi-Fi radar
esp_err_tesp_radar_start(void);
#停止Wi-Fi radar
esp_err_tesp_radar_stop(void);
#初始化Wi-Fi radar
esp_err_tesp_radar_init(void);
#釋放Wi-Fi radar 初始化
esp_err_tesp_radar_deinit(void);
#訓練Wi-Fi radar 相關配置,主要用于自主校準,校準之后可以獲取相關的參數,如有無人的閾值
esp_err_tesp_radar_train_start(void);
#移植訓練Wi-Fi radar后相關的配置,一般用于需要重新校準的情況,不然上一次校準的數據可能會影響本次的結果
esp_err_tesp_radar_train_remove(void);
#停止訓練,可以通過入參獲取訓練后的兩個結果 wander和jitter這兩個閾值
esp_err_tesp_radar_train_stop(float*wander_threshold,float*jitter_threshold);
#獲取模組的增益
esp_err_tesp_radar_get_rx_gain(uint8_t* agc_gain,int8_t*fft_gain);
#設置模組的增益
esp_err_tesp_radar_set_rx_gain(uint8_tagc_gain,int8_tfft_gain);
4、ESP-Radar編程實現=>人體檢測連接到HomeAssistant
通過對esp-radar庫api和相關工程流程的理解,接下來就是編程實現文章開頭說的,功能: 基于ESP-CSI方案例程connect_rainmaker,使用ESP32C3實現人體檢測傳感器,同時接入到了HomeAssistant平臺;
4.1、工程配置;
- 檢查SDK是否啟動CSI:Menuconfig>Components config>Wi-Fi>Wi-Fi CSI (Channel State Information)
- 由于我們要添加把檢測到的狀體有人/無人、運動/靜止,上報到HA平臺,所以我定義了兩個實體,一個是人在實體,一個是移動實體,然后通過MQTT接入到HA,所以我們需要在工程中添加mqtt模塊,我們在idf_component.yml添加mqtt,如下圖
4.2 整體程序主要CSI邏輯
image 4
4.3 通過MQTT協議鏈接到HomeAssistant
我們通過MQTT協議來把監聽到的數據上報到HA,具體如何通過MQTT來聲明設備的屬性服務以及如何上報可以參考我之前寫的文章
- HomeAssistant|【入門篇】基于MQTT的零代碼、少配置,設備高效接入方法
- HomeAssistant|【高級篇】基于MQTT的零代碼、少配置,設備高效接入方法
- HomeAssistant|【實戰篇】基于MQTT的零代碼、少配置,設備高效接入方法
5、工程效果展示
- 通過ESP-RainMkaker APP 把設備配置網絡
- 通過在APP上校準設備,校準設備過程需要確保沒有人在房間,整個校準過程60秒
- 通過通過HomeAssistant顯示捕捉到:有人/無人、運動/靜止
- 同時我們通過HA的歷史記錄也可以更好的觀察過去一段時間的檢測情況
- 具體的編程實現可以參考我添加的代碼ha_mqtt
我們使用了使用了樂鑫的例程實踐,直觀感受到了esp32既可以做傳統的數據傳輸模塊也可以用來同時做人在和移動檢測傳感器,最后通過加入自己的代碼,實現把檢測到的狀態也上報到了HA平臺;工具安利最后給大家推薦我做的一個無線串口數據采集工具,感興趣的童鞋可以點擊看看一種讓你的MCU日志可無線查看和實時記錄跟蹤的方法
-
傳感器
+關注
關注
2551文章
51192瀏覽量
754405 -
數據傳輸
+關注
關注
9文章
1915瀏覽量
64661 -
ESP32
+關注
關注
18文章
971瀏覽量
17348
發布評論請先 登錄
相關推薦
評論