劉敬 李向陽



關鍵詞:一鍵幫助;睡眠監測;Json;數據分析;API
1研究的背景和意義
1.1 總體情況
農村居住比較分散,老人和小孩比較多,使用手機不熟練或者沒有手機,遇到危險或者需要幫助時很不方便[1]。特別是獨居老人,雖然鎮村干部可以定期走訪探視,及時幫助解決生活中存在的問題,但老人遇到緊急情況還是無法顧及,如果能在家安裝“一鍵幫助”產品,當老人發生跌倒、突發疾病或火情等意外時,可以一鍵求助或自動報警,平臺接到報警后第一時間為老人提供緊急救援服務。
睡眠是人體一個重要的生理過程,根據世界衛生組織研究,全世界人口中有35%的老人患有睡眠障礙,老年人在睡覺中因突發病死亡的概率也遠高于正常人[2,3]。本文計劃通過ZigBee技術、數據分析技術和云平臺技術,設計一款可以監測睡眠障礙的系統,系統可以監測床鋪上是否有人以及老人的睡眠狀況,如果老人長時間臥床,或者起夜次數變得頻繁,系統終端會自動預警,平臺可以派人上門查看。
2系統設計
2.1 方案設計
本設計中的數據需要在ZigBee 終端節點、協調器、ESP32網關云和平臺之間交換,系統設計如圖1所示。其中,涉及的關鍵技術有傳感器技術,ZigBee技術和數據通信技術。
2.2 關鍵技術
傳感器技術可以感知周圍環境或者特殊物質,比如氣體感知、光線感知、溫濕度感知、人體感知等,把模擬信號轉化成數字信號,給中央處理器處理。Zigbee 技術是一種應用于短距離和低速率下的無線通信技術,主要用于距離短、功耗低且傳輸速率不高的各種電子設備之間進行數據傳輸以及典型的有周期性數據、間歇性數據和低反應時間數據傳輸的應用[4,5]。在物聯網MQTT協議中,ESP32網關和云平臺之間的通信采用Json格式。為了方便,本設計中,ZigBee終端節點、協調器、ESP32 網關之間也將使用Json 格式。
3 系統硬件設計及器件選型
3.1 系統總電路
本系統的硬件連接相對簡單,不是很復雜,包含壓力傳感器、按鍵、ZigBee終端節點和協調器,以及網關。壓力傳感器通過分壓電路接入ZigBee終端I/O口的P0_5,根據測量電路的阻抗要求,分壓器后可以加一個運算放大器; 按鍵電路的輸出引腳接ZigBee終端的I/O口P0_0;ZigBee協調器的UART0接ESP32網關的UART2,即P0_2(協調器)接IO17(網關),P0_3(協調器)接IO16(網關),系統總電路圖如圖2所示。
3.2 薄膜壓力傳感器
RP-C電阻式壓敏傳感器是電阻值隨著作用于感應區上的壓力增大而減小的柔性薄膜傳感器。壓敏傳感器頂層是柔性薄膜和復合在上面的壓敏層,底層是柔性薄膜和復合在上面的導電線路,兩者通過雙面膠貼合以及隔離感應區域。當感應區受壓時,在底層彼此斷開的線路會通過頂層的壓敏層導通,端口的電阻輸出值隨著壓力變化。RP-C電阻式壓敏傳感器可用于本設計的在床離床監測或者睡眠狀態監測,經過拓展還可以用于:智能跑鞋,記錄受壓的強度和頻率;智能開關,設置力度識別,防止誤操作;計數器,記錄受壓的次數;醫療設備上檢測人體受壓程度[6,7]。
4 ZigBee 無線傳感網絡設計
無線傳感器網絡是大量的靜止或移動的傳感器以自組織和多跳的方式構成的無線網絡,目的是協作地探測、處理和傳輸網絡覆蓋區域內感知對象的監測信息,并報告給用戶。它的英文是Wireless SensorNetwork,簡稱WSN。完整的ZigBee協議棧由應用層、應用匯聚層、網絡層、數據鏈路層和物理層組成。Zig?Bee網絡系統的軟件設計主要包括建立Profile,初始化和編寫應用層代碼。本設計主要完成“一鍵幫助”應用層代碼編寫和“睡眠監測”無線傳感網絡應用層代碼編寫。
4.1“一鍵幫助”無線傳感網絡
按鍵引腳接到ZigBee終端節點的P0_0上,實驗使用SampleApp.eww工程來進行[8],采用中斷方式檢測按鍵是否按下。需要將默認的輪詢方式檢測改為中斷方式檢測,修改HalKeyConfig()函數將參數DIS?ABLE改為ENABLE。另外,還需編寫中斷服務函數HAL_ISR_FUNCTION ()函數,和按鍵處理函數halPro?cessKeyInterrupt ()函數。
終端節點無線發送給協調器,協調器通過串口發送給ESP32網關的數據,與接下來的睡眠分析部分類似,這里不再描述。協調器發出的字符串是:”{"De?vice":60,"Help":1}”加上回車換行符。
4.2“睡眠監測”無線傳感網絡
當發生ZDO_STATE_CHANGE(網絡狀態改變)事件時,會添加周期性發送事件到用戶層(任務ID=SampleApp_TaskID),事件名SAMPLEAPP_SEND_PE?RIODIC_MSG_EVT,也就是說5秒后,通過OSAL輪詢機制,將會調用用戶層事件處理函數SampleApp_Pro?cessEvent() 處理SAMPLEAPP_SEND_PERIOD?IC_MSG_EVT 事件。事件處理函數功能:測量壓力值,調用點播函數發送數據包;再次添加事件;返回未處理的事件。
數據包接收事件的處理,仍然在用戶層事件處理函數SampleApp_ProcessEvent() 里面,通過Sample?App_MessageMSGCB( MSGpkt )將接收到的數據包進行處理,并通過串口發送壓力值給網關,采用Json格式格式為{"Device":50,"Pre":3200},供網關解析。
5 網關設計
網關設計包括。網關串口數據接收,“一鍵幫助”網關設計,“睡眠監測”網關設計和下發協調器網關程序設計。當協調器通過串口將無線傳感網絡數據發送到網關后,網關會在接收完一個數據包后進行解析。下發協調器網關程序設計,主要的工作是在回調函數中解析云端下發命令,然后轉發到協調器。
網關程序將無線傳感網絡發來的傳感數據即按鍵值,整理成與物模型虛擬調試時一樣內容和主題的消息進行上報。網關上報消息的整理,通過連接符“+”,實際上報的payload為:{"id":12345“, params”:{"Button1":1},"method":"thing.event.property.post"},與后面云平臺虛擬調試時觀察的payload的"params"字段完全一致。網關程序將無線傳感網絡發來的傳感數據即壓力值,整理成與物模型虛擬調試時一樣內容和主題的消息進行上報,與一鍵幫助網關程序設計類似。
6 云臺設計
云端設計包括物模型設計、屬性上報功能、自動下發命令(reply)功能和手動下發命令功能,以及圖表展示(設備數據源),數據特征提取和數據分析制作等環節。
6.1“一鍵幫助”云端設計
“一鍵幫助”云端設計包括物模型設計,屬性上報功能,自動下發命令(reply)功能和手動下發命令功能。物模型設計是通過前面的網關設計和該云端設計,實現與傳感器節點和協調器節點的打通,實現最終功能。在軟硬件設計部分,考慮到養老場景需要傳感器節點長期工作,為了降低功耗,需要改造“一鍵幫助”產品,允許云端下發關閉按鈕對應的指示燈指令。也就是說,當服務臺發現老人請求后,通過電話溝通確認后進入后續流程包括送飯、保潔、維修、答疑等,Led不再需要通過閃爍提示了,即可云端由接線人員手動下發關閉命令。
6.2“睡眠監測”云端設計
睡眠監測如采用自動采集數據,數據量比較大的話,可以通過圖表的形式更好展示,進而從數據資產中提取出有價值的信息。然后用Web設計的圖表組件進行展示,通過數據分析服務制作自己的數據分析接口(API),如圖3所示。在組件中,調用“數據分析服務”接口,并使用JavaScript語言編程,對接口返回數據進行解析處理,用于展示,比如圖3 中計算出20220322的入睡時間是12時18分。用同樣的方法可以實現計算起床時間、睡眠時長和午睡時間等。
在“健康監測”產品的數據表中,壓力值每天都會變化,壓力值比較大的時候正好就是在床上睡覺的時候。那么到底是幾點睡覺呢,分析出規則,然后就可以利用數據庫的知識,通過SQL語言編程實現了[9]。通過時間、壓力值等條件過濾,在剩余數據中找到一天中最早的一條數據,再排序即可實現。找出每天19:00:00后最開始出現壓力值>3000的時間,表示入睡時間。需要用到數據過濾和分組聚合:過濾壓力值>3000,時間>19:00:00;聚合,按日期分組取每組的時間最小記錄;倒序排序,方便對自定義接口數據解析。
7 實物與系統運行
完成軟硬件設計后,進行調試和運行,功能正常。圖4是平臺運行和系統照片,系統包含ZigBee終端節點、協調器和網關等設備。
8 結束語
本設計通過智能床帶采集壓力值,通過數據分析提取起床和入睡時間。進一步地,考慮到有的老人獨居養老,生活情況子女無法及時知道,通過場景聯動和數據分析,可以設計開發獨居監測系統。老人子女可以通過云平臺查看數據,如果數據異常,平臺也會主動推送預警信息。設計方案實現了傳感器數據無感采集、云平臺主動預警,產品整個工作過程完全不會干擾到老人的生活,也不需要老人操作任何智能設備。