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