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