






摘 要:隨著物聯網技術的快速發展,各類智能家居不斷發展創新。為解決夏季居家老人、戶外工人等高中暑風險人群的監測及預警問題,設計了一套基于STM32的便攜式中暑預防監測及遠程警示系統。該系統主要分為設備佩戴端及監護人的預警接收端,通過采集佩戴者與中暑相關的各項參數,綜合判斷中暑的風險程度。配置阿里云ECS服務器并通過MQTT協議將采集的數據發布至監護人的微信小程序客戶端。經實際測試,系統可以成功運行并實現目標參數的監測,當存在中暑風險時設備端發出警示并成功向監護人推送該設備佩戴者的中暑風險預警通知。
關鍵詞:物聯網技術;智能家居;STM32;中暑監測;ECS服務器;MQTT協議
中圖分類號:TP273;TP855 文獻標識碼:A 文章編號:2095-1302(2024)08-0-04
DOI:10.16667/j.issn.2095-1302.2024.08.026
0 引 言
夏季中暑頻發,甚至存在未及時發現中暑進而演化為更嚴重的熱射病等現象[1]。在已有病例當中,多數都是工作在惡劣環境中的戶外工人、車間工人以及獨居的年邁老人。而當前的中暑檢測方式主要存在兩個缺點:第一是事后檢測,即人員覺察中暑后才有意識地去檢測;第二是檢測設備的非便攜性,即大多數人都需要到醫院檢測,或者使用不便攜帶的檢測儀檢測。因此,如何在不影響工人勞動、子女工作的前提下通過對目標人群進行實時中暑指標監測并及時預警尤為重要。
為解決此問題,文中提出了一種便攜式中暑預防及遠程預警的系統方案,該系統可以實時監測目標身體的各項指標(如心率、體溫)及其所處環境(如光照強度、空氣濕度)中與中暑相關的參數,根據各項指標數據判斷是否存在中暑先兆并及時向被監測者發出中暑風險預警,同時通過小程序向其監護人發出預警通知,以避免中暑的發生。
1 系統方案
該系統依托于物聯網技術,主要實現數據的采集、發布及預警推送功能,佩戴的設備可以實時監測佩戴者的心率、體溫以及所處環境的光照強度、相對濕度,并將監測的參數與閾值參數對比,根據超出閾值的大小使佩戴設備端的警示燈進行不同頻次的閃爍。與此同時,為避免佩戴者忽略警報而導致危險情況發生,還將中暑風險按低、中、高三種等級通過小程序[2]同步向其監護人的手機客戶端發出預警。圖1所示為該系統的網絡結構。
系統可以分為兩部分,即被監測目標者的設備佩戴端[3]和監護人的手機客戶端,使用阿里云ECS云服務器作為數據傳輸的中轉平臺,使用EMQX的MQTT消息代理實現數據的訂閱與轉發。系統通信結構如圖2所示。設備佩戴端與監護人的小程序客戶端均采用MQTT協議[4]與阿里云服務器通信,該消息傳輸協議具有輕量級、異步通信等優點,消息間的傳遞通過發布/訂閱的Topic即可實現[5]。監護人的手機客戶端采用微信小程序開發工具制作,用于接收監測數據和預警信息。
2 系統硬件設計
本次選用的主控芯片為STM32F103ZET6,使用MAX30102與MAX30205傳感器分別采集設備佩戴者的心率和體溫數據,通過BH1750與HTS221傳感器分別采集所處環境的光照強度和相對濕度數據,采用OLED顯示屏顯示所有監測數據,使用紅色LED燈作為設備端的風險警示燈。系統總體硬件結構如圖3所示。
2.1 微控制器模塊
STM32F103ZET6是意法半導體公司出品的32位ARM Cortex-M3內核的微控制器,該控制器的工作電壓為2.0~
3.6 V,具有64 KB的SRAM以及512 KB的FLASH[6]。該控制器具有多通道的12位ADC以及多個I2C接口,3個USART接口足以滿足在使用ESP8266模塊入網的同時進行串口的調試與打印,豐富的I/O接口也為后續設備的擴展提供了支持,因此該芯片完全滿足設計要求。
2.2 MAX30205體溫采集模塊
系統采用MAX30205作為體溫采集模塊。該模塊內置高精度的溫度傳感器,通過專有算法和精確校準實現可靠的體溫測量。它能夠提供0.1 ℃的測量精度,滿足對體溫監測的高精度要求。此外,該模塊具有低功耗特性,能夠在微功耗模式下工作,并提供多種待機模式以延長電池的使用壽命,緊湊的尺寸等優點使其非常適合在便攜穿戴設備中使用[7]。該模塊通過I2C與主控器通信,根據不同的應用需求可以調整模塊的測量分辨率、采樣速率以及測量模式等參數。
2.3 MAX30102心率采集模塊
采用MAX30102作為系統的心率采集模塊。該模塊內部集成了紅外光源、LED和光電檢測器,采用高速信號處理技術和先進的光學濾波算法可對心率信號進行快速捕捉和分析,能在幾秒鐘內提供實時心率測量結果[8]。模塊內置的專用算法和數據處理引擎能夠對獲取的原始數據進行濾波、校正與處理,保證數據結果的準確性[9]。小尺寸與低功耗特性使得該模塊被普遍應用于物聯網設備中。
2.4 HTS221空氣濕度采集模塊
系統采用的空氣濕度采集模塊是ST公司出品的HTS221數字濕度傳感器[10]。該傳感器內置了16位ADC,直接將采集的模擬信號處理為數字信號輸出,極大簡化了數據解析的編程難度。使用時應注意此傳感器在計算采集的濕度時并非直接依據H_OUT輸出端的數據,而是應讀取預先保存在傳感器內部校準寄存器中的兩組濕度及對應的H_OUT,將二者經線性插值計算得到對應的濕度數據。此外,該傳感器采用了低功耗設計,在連續測量模式下功耗僅為1.5 μA,極低功耗以及超小封裝滿足了我們選型的要求。
2.5 BH1750光照強度采集模塊
系統采用的是數字型光強度傳感器BH1750,此傳感器內部由光敏二極管、運算放大器以及ADC模數轉換模塊組成,可以直接將采集的光照強度模擬信號轉換為數字信號,極大簡化了數據接收的編程復雜度。供電電源為3~5 V,使用I2C即可與微控制器通信,光照強度的檢測范圍可達
0~65 535 lx,低功耗等優點使其滿足選型要求[11]。
2.6 OLED顯示模塊
該系統使用的是OLED顯示模塊。該模塊無需背光源即可獨立發光,尺寸小、功耗低、響應快、清晰度高等特點使其廣泛應用于物聯網項目中。此模塊還具有大于160°的超大可視視角,可以使佩戴者在任何角度都能看清屏幕內容。此外,該模塊僅需4根線便可通過I2C通信接口實現與主控器通信,開發簡單且極大節省了I/O資源。
2.7 無線通信模塊
考慮到佩戴設備的低功耗及便攜性,該系統使用由樂鑫公司出品的ESP8266 WiFi無線通信模塊。該模塊由于其尺寸小、性能穩定、功耗低以及成本低等特點,被廣泛應用于物聯網領域。此外,其內部集成了超低功耗的Tensilica L106 32位RISC處理器,支持實時操作系統以及WiFi協議棧,可將高達80%的處理能力留給應用編程和開發[12]。
2.8 LED報警燈模塊
為了能更好地提醒檢測者預防中暑風險,采用紅色發光二極管作為設備警示燈,將LED的正極接入STM32單片機的I/O口,負極與GND連接。當檢測者的中暑風險等級達到中、高水平時,定義的bool Warn_Flag()警示標志位置1,此時與正極相連的I/O口間斷輸出高電平,實現警示燈閃爍。使用Delay_ms(int ms)延時函數控制LED燈閃爍的頻次,風險等級越高,延時的時間越短,閃爍的頻次越高。
3 系統軟件設計
系統硬件的工作離不開軟件的編寫,通過軟件調動各硬件按照設計目標工作,解決生活中的實際問題。系統軟件設計使用的開發環境為Keil5 MDK,主要包括對體溫、心率、光照強度、相對濕度等傳感器檢測數據的采集,通過ESP8266無線通信模塊入網并發布數據至阿里云平臺,借助MQTT協議的發布/訂閱Topic實現數據的接收與流轉,使用OLED顯示采集數據。首先需要編寫各模塊的驅動程序,其次在主程序中初始化并調用各模塊,實現最終的功能設計。主程序流程如圖4所示。
3.1 數據采集模塊軟件設計
使用Keil5開發環境編寫主程序時,首先要創建工程項目,并在項目中添加必要的內核文件、啟動文件startup_stm32f10x_hd.s、時鐘配置文件system_stm32f10x.c等。項目配置完成后,在項目中對各模塊分別創建c文件和h文件,單獨編寫各傳感器驅動程序并適時通過主程序以及USART對模塊分別進行調試,確保各模塊的驅動程序編寫正確。最后通過在主程序中對各模塊頭文件的相互調用實現各模塊的協同工作,完成數據采集并判斷是否存在中暑風險。利用MQTT傳輸協議實現采集數據的上下行傳輸[13]。設置波特率、中斷優先級、定時器中斷以及完成各模塊函數的初始化。
3.2 無線通信模塊軟件設計
首先對ESP8266無線模塊進行初始化操作,發送AT+CWMODE=1將無線模塊配置成客戶端模式,使用AT+CWJAP接入熱點,使用AT+CIPSNTPCFG、AT+MQTTUSERCFG、AT+MQTTCLIENTID、AT+MQTTCONN接入阿里云服務器,初始化完成后即成功接入阿里云[14]。模塊的初始化程序如下:
void ESP8266_Init(void)
{
ESP8266_Clear();
while(ESP8266_SendCmd(\"AT\r\n\", \"OK\"))
delay_ms(500);
while(ESP8266_SendCmd(\"AT+CWMODE=1\r\n\", \"OK\"))
//選擇模式
delay_ms(500);
while(ESP8266_SendCmd(ESP8266_CWJAP_INFO, \"GOT IP\"))
//連接熱點
delay_ms(500);
while(ESP8266_SendCmd(ESP8266_CIPSNTPCFG_INFO, \"OK\"))
//配置SNTP客戶端參數
delay_ms(500);
while(ESP8266_SendCmd(ESP8266_MQTTUSERCFG_INFO, \"OK\"))//客戶端用戶配置
delay_ms(500);
while(ESP8266_SendCmd(ESP8266_MQTTCLIENTID_INFO, \"OK\")) //CliendID
delay_ms(500);
while(ESP8266_SendCmd(ESP8266_MQTTCONN_INFO, \"OK\"))
//建立連接
delay_ms(500);
}
ESP8266無線模塊初始化完成并接入阿里云服務器后,為實時接收設備的檢測數據,需要在主程序中的while()函數中不斷調用傳感器的檢測函數,設置bool Rec_DataFlag()
數據接收標志位,當其為1時,表示接收到數據,使用AT+MQTTPUB將數據傳輸至阿里云MQTT Broker中特定的Topic。ESP8266與阿里云的串口調試結果如圖5所示。
3.3 小程序設計
微信小程序依托于微信環境,只要監護人的手機客戶端安裝微信即可接收監測的數據并及時推送預警通知,使用便捷[15]。JavaScript是小程序的邏輯開發語言,在JSON文件中編寫頁面的配置信息,在WXML文件中通過lt;Viewgt;、lt;Textgt;等標簽創建頁面的布局信息,在WXSS文件中可以對頁面中各模塊的大小、字體等樣式進行設計[16]等。使用微信小程序開發工具可以很方便地對小程序頁面、功能等進行設計。其具有豐富的API接口,完備的開發文檔[17],為程序開發提供了可靠保證。本次設計的微信小程序主要有2個
功能界面,首頁用于顯示當前天氣情況、用戶體溫和心率、光照強度、相對濕度數據并實現對報警器和消息通知按鈕的捆綁;第二頁是監測目標的歷史數據記錄。在App.json中使用tabBar對頁面跳轉導航欄進行全局配置,配置后便可通過頁面底部導航欄直接點擊跳轉至對應頁面。
4 設備測試及應用
設備設計完成后,為設備上電,此時設備的各傳感器依次運行,并將檢測的參數通過OLED顯示屏顯示出來。設備通過STM32向ESP8266無線模塊發送入網指令并接入阿里云服務器。當阿里云服務器接入成功后,傳感器通過MQTT協議將采集的數據發布至云服務器的特定Topic,阿里云服務器通過EMQX的消息代理將數據發送至訂閱此主題的小程序客戶端,此時打開微信小程序便可看到小程序首頁的各項檢測數據。設置中暑警示閾值,當超出閾值后微信小程序將推送該預警信息,并顯示依據當前檢測數值分析后的中暑風險等級。圖6所示為小程序首頁接收的各項檢測數據以及超出閾值后的警示消息。
身體監測歷史數據也能間接反映監測者身體是否健康,將其繪制成折線圖可以清晰看出各參數的變化。圖7所示為接收的某段時間的歷史數據。
5 結 語
面向夏季高中暑風險人群設計的基于STM32的便攜式中暑預防及遠程預警系統,通過對佩戴者心率、體溫以及所處環境的光照強度和相對濕度參數進行實時監測以判斷該佩戴者是否存在中暑風險。當存在中暑風險時,設備端報警燈閃爍并通過小程序向其監護人推送中暑風險通知。該系統通過建立阿里云ECS服務器,借助EMQX的MQTT消息代理實現客戶端與云平臺的數據通信。使用微信小程序開發框架設計小程序,接收風險預警通知并構建顯示采集數據界面。該系統的實用性較高,可以有效降低目標人群的中暑風險。該設計只對4種主要影響中暑的參數進行監測,后續可以增加更多傳感器,使得中暑風險的預警結果更準確。
注:本文通訊作者為解乃軍。
參考文獻
[1]黃曼捷,李艷忠,白鵬,等.中國東南部人口中暑風險暴露度空間演變特征及其驅動因素[J].地理研究,2023,42(8):2121-2134.
[2]劉宇濤,單宇飛,劉夢雄,等.基于MQTT協議的微信小程序控制的輔助騎行摔倒報警頭盔[J].電子制作,2022,30(23):57-61.
[3]田靜. 基于STM32的老年智能手環的設計與實現[D].南京:南京郵電大學,2021.
[4] AZIZ J M B,TARIQ M I,MOHSIN J,et al. Design and implementation of an open source IoT and blockchain based peer to peer energy trading platform using ESP32-S2,Node-Red and,MQTT protocol [J]. Energy reports,2021,7.
[5]成瀾.基于OneNET物聯網云平臺與MQTT協議的智能家居模型通用控制小程序設計[J].電腦與電信,2022,28(7):10-13.
[6]劉云,柳浩.基于STM32的心率體溫檢測系統設計[J].機電工程技術,2021,50(8):135-137.
[7]李兆千,李廣凱,姜紹君,等.物聯網可穿戴體溫監測系統設計
[J].物聯網技術,2023,13(1):51-52.
[8]吳全玉,賈恩祥,戴飛杰,等.便攜式低功耗可穿戴心率血氧監測系統的設計[J].江蘇理工學院學報,2020,26(4):53-61.
[9]丁瑩芝,畢凌志.基于STM32的無線心率實時監測裝置[J].云南化工,2020,47(12):160-161.
[10]楊森杰,林錦鋒,馬凱創,等.一種無線便攜式心率血氧檢測儀的設計[J].科技創新與應用,2020,20(28):47-49.
[11]岳駿,解乃軍.基于STM32的物聯網智能家居系統設計[J].工業儀表與自動化裝置,2022,52(2):27-31.
[12]張晟祺,解乃軍,紀有旺,等.基于STM32的老人跌倒檢測智能家居系統設計[J].工業儀表與自動化裝置,2023,53(1):35-39.
[13]孫友林.基于MQTT協議的物聯網云平臺設計與實現[J].物聯網技術,2023,13(6):71-73.
[14]楊成兵,丁昊,李明磊,等.基于ESP8266和微信小程序實現的數據中心雨水管井液位監測系統[J].綠色建造與智能建筑,2023,27(6):60-64.
[15]喬軍航,劉忠超.基于微信小程序的智能溫室監控系統設計[J].科學技術創新,2021,25(28):172-174.
[16]高興泉,徐德財.基于微信小程序監控的雙容水箱虛擬仿真平臺設計[J].吉林化工學院學報,2022,39(11):6-13.
[17]平欣. 基于微信小程序的智能輪椅監控系統的設計與實現[D].鹽城:鹽城工學院,2023.
收稿日期:2023-08-21 修回日期:2023-09-28
作者簡介:姜善英(1997—),男,碩士在讀,研究方向為物聯網通信、智能制造。
解乃軍(1968—),女,正高級工程師,研究生導師,研究方向為智能制造、增材制造。
殷冬年(1999—),女,碩士在讀,研究方向為嵌入式、智能制造。