高 麗,王 楊,趙 翼,張 鑫
(1.安徽師范大學皖江學院,安徽 蕪湖 241008;2.安徽師范大學 計算機與信息學院,安徽 蕪湖 241002)
隨著嵌入式技術、無線傳感網絡的不斷發(fā)展,物聯網(internet of things,IoT)開始覆蓋生活的方方面面。物聯網正被廣泛地應用在家居、物流倉儲、城市交通、醫(yī)療等領域[1]。對于人體數據的實時監(jiān)測和健康狀態(tài)的可視化,傳統(tǒng)的醫(yī)療方法很難做到。體域網(body area network,BAN)的出現,對于解決這一問題起到了很大的作用。
體域網由一套可移動、外型小且靈便、能夠采集并可以傳輸信息的傳感器和BAN協(xié)調器組成[2],是一種附著在人身體上的網絡[3]。網絡中的傳感器,既可以隨身攜帶,也可以植入體內[4]。在體域網系統(tǒng)中,具備無線通信功能的采集設備能夠同時具有更大的流動性、靈活性[5]。體域網的數據工作過程一般分成兩個階段:一是體域網內部數據傳輸,二是體域網與互聯網之間的數據傳輸[6]。在階段一中,通常采用ZigBee技術。ZigBee是一種無線通信技術,其低成本、低功耗、低復雜度的特點非常適用于體域網這一特殊的應用環(huán)境[7-9]。在階段二中,通常采用Wi-Fi實現無線聯網,以滿足體域網實時傳輸數據的需要。由于大量的體域網數據存在數據冗余、噪聲大等不足,所以需要對其進行清洗。除此之外,鑒于STM32計算能力不足,需要將采集的數據傳送至云平臺進行處理[10]。
可以看出,無線體域網能夠將不同的傳感器節(jié)點采集到的數據進行匯聚、傳輸,如圖1所示。
圖1 無線體域網
為了可以讓用戶能夠隨時隨地地看到自身的身體狀況,必須將傳感器采集的數據進行存儲、傳輸及可視化。在此處理過程中需要用到Zigbee、Wi-Fi等無線技術。由于不同的技術之間存在差異性,數據處理過程中多協(xié)議轉換網關是解決異構網絡間信息共享的關鍵設備之一[11]。針對多協(xié)議轉換網關,已有多位學者對其進行研究。文獻[12]用ZigBee和Wi-Fi完成了對家庭網關的設計,并且提供簡單靈活的用戶界面和對系統(tǒng)的遠程訪問請求。另外此系統(tǒng)還對在兩種協(xié)議下的設備響應的時延做了比較,完成了系統(tǒng)時延測試。文獻[13]提出了一種基于ZigBee的心率監(jiān)測系統(tǒng)的跌倒檢測和身體定位系統(tǒng),可以通過安卓APP看到人體的信息。當用戶跌倒時或者心率不正常時可以直接通知醫(yī)療機構和用戶的家人。文獻[14]在基于3G/Wi-Fi的協(xié)議下加強體域網的服務質量,保證體域網的高效性。
對于公共服務的網關研究,文獻[15]設計了一種基于ZigBee和Wi-Fi的鐵路監(jiān)視優(yōu)化系統(tǒng)。文獻中提出了分層優(yōu)化的思想,巧妙利用了ZigBee和Wi-Fi的優(yōu)點設計了整個系統(tǒng),減少了網關傳感器節(jié)點和中間的無線傳感器節(jié)點的不平衡負載。文獻[16]提出了一種基于ZigBee和Wi-Fi網絡的建筑火災監(jiān)控系統(tǒng)設計。通過ZigBee定位火災現場,通過Wi-Fi上傳現場信息,給建筑安保人員制定救援方案。文獻[17-18]提出了一種多協(xié)議的智能物聯網安全網關,不僅可以將多協(xié)議(Wi-Fi、ZigBee、Bluetooth等)設備與以太網互聯,還能夠將傳感器采集的數據上傳到云端,進行數據分析并且提供本地數據存儲功能,以便審計分析。
文中主要針對體域網這一特殊的應用場景,在綜合前期相關研究的基礎上,設計一種基于體域網的多協(xié)議網關,實現數據實時、有效傳輸。
基于IoT的體域網從上至下可以分為應用層、網絡層、感知層。其中網絡層的網關既為下層提供接口,也為上層提供服務,是整個系統(tǒng)的中樞。本系統(tǒng)利用ZigBee協(xié)議模塊,將傳感器采集的數據發(fā)送給網關,通過網關將數據上傳到云平臺,實現數據的可視化。系統(tǒng)網絡結構如圖2所示。
圖2 系統(tǒng)網絡結構
對體域網的各個ZigBee感知節(jié)點而言,網關起到了接收各個節(jié)點采集的數據并且上傳到云端的作用。云端接收到數據后,進行數據融合并將實時數據反饋到用戶端。用戶可以通過登錄網頁來查詢自身的身體狀況,還可以瀏覽歷史記錄來獲取更多的信息。
網關的硬件模塊部分主要對其由主控模塊、無線通信(ZigBee模塊、Wi-Fi模塊)部分進行設計。
2.2.1 主控模塊
主控模塊是整個網關的核心,主要負責數據的接收、存儲、轉發(fā),同時還要完成各個協(xié)議之間的轉換,是網關設計的核心部分。本系統(tǒng)利用的主控器是基于Cortex-M3的STM32F107處理器。
圖3為網關的設計框圖。核心處理器利用串口接收ZigBee匯聚節(jié)點收到的傳感器數據,然后通過Wi-Fi模塊將數據發(fā)送至云平臺,完成ZigBee與WiFi之間的協(xié)議轉換。網關實際接線時,需要將ZigBee匯聚節(jié)點的UART0_TX接口通過杜邦線直連STM32的USART1_RX接口,實現設備間的相互通信。
圖3 網關硬件設計框圖
2.2.2 ZigBee模塊
ZigBee模塊是BAN進行無線數據傳輸的必需設備,作用是將BAN中傳感器采集的數據傳輸到匯聚節(jié)點。經過篩選,選用了TI公司的CC2530芯片實現ZigBee協(xié)議。CC2530與F107可以通過串口進行通信。CC2530集成了兩個USART,F107集成了五個串口,完全可以實現設備之間的相互通信。
2.2.3 Wi-Fi模塊
無線通信部分主要是Wi-Fi,選擇的Wi-Fi模塊是ESP8266。采用的ESP8266是ALIENTEK推出的一款高性能的UART-Wi-Fi模塊ATK-ESP8266,該模塊通過FCC,CE認證,可直接用于產品出口歐美地區(qū)。ESP8266采用LVTTL與MCU(也可以是其他串口設備)完成通信,串口與WI-FI之間的協(xié)議轉換主要由內置TCP/IP協(xié)議棧完成。ATK-ESP8266模塊,傳統(tǒng)的串口設備只是需要簡單的串口配置,就可以讓設備使用互聯網傳輸數據。
體域網中的設備通過ZigBee與網關連接。在網關模型設計中將體域網分為感知層、網絡層、應用層。感知層的主要功能是完成各個傳感器的驅動,使每個傳感器都可以正常工作。網關層的主要作用是將感知層傳輸的數據上傳到云端,為上層提供數據支撐。應用層為用戶提供專門的服務和管理平臺,為用戶提供數據可視化服務。硬件模塊設計并完成搭建后需要對其相關軟件部分進行設計。
2.3.1 系統(tǒng)軟件工作流程設計
由于UC/OS-II是一款極其優(yōu)秀的開源的嵌入式實時操作系統(tǒng),本系統(tǒng)開發(fā)工具選用UC/OS-II的操作系統(tǒng)。因為體域網(BAN)中的每個數據都至關重要,所以網關的工作是系統(tǒng)的核心。
圖4為網關系統(tǒng)主控流程。上電或者復位后,立即啟動Flash中的代碼,開始執(zhí)行各種硬件資源及UC/OS-II的初始化,包括創(chuàng)建空閑任務、統(tǒng)計任務、定時器任務,然后創(chuàng)建第一個用戶任務Task1,設置優(yōu)先級及堆棧大小,之后運行多任務,等待匯聚節(jié)點傳過來的數據,并將數據放到設置的任務中,從設置的任務及定時器任務、統(tǒng)計任務和空閑任務中找到優(yōu)先級最高的任務去執(zhí)行,當執(zhí)行結束后,會重復上述動作。由于UC/OS-II是基于優(yōu)先級調度的搶占式實時內核,當接受到來自不同的采集節(jié)點采集的數據時UC/OS-II會根據設置的優(yōu)先級進行調度并上傳數據到云端,保證數據的完整性、實時性。
圖4 系統(tǒng)主控流程
2.3.2 云端數據格式設計
數據上云是未來的趨勢之一,不僅能夠解決大數據難以在個人用戶端上存儲的問題,更能省去搭建服務器以及后期維護的時間。通過對比,選擇阿里云平臺作為系統(tǒng)數據存儲解析的工具。在整個系統(tǒng)的運行中,數據上云是整個網關的功能之一。從匯聚節(jié)點發(fā)送數據到數據傳輸至云端主要按照如下四個步驟進行:
Step0:匯聚節(jié)點發(fā)送數據對傳感器的匯聚節(jié)點發(fā)送數據進行判斷。若正確,直接進行USART1中斷;否則需要在任務調度器進行任務的重新調度;
Step1:開啟USART1中斷后,對接收的數據進行存儲,直至存儲完畢,中斷結束;
Step2:等待任務調度器調度此次任務,并將存儲的數據放入UART2A—>DR中;
Step3:數據正確存儲過后,實現云端傳輸。
為了解決體域網中不同傳感器傳輸的數據類型不同的問題,需要對其進行分類。在底層設計數據報文格式,將得到的傳感器數據加上幀首部表示不同的數據類型,云端數據設計格式如表1所示。圖中字段依次表示開始、數據長度、標識碼、地址、數據格式、檢驗序列。對于異種類型的傳感器,主要表現在其標識位、網絡地址、數據位的不同。
表1 云端數據格式設計
2.3.3 服務調度模式設計
為減輕CPU負擔及避免數據的重復上傳,需要對網關的任務優(yōu)先級進行設計,以適應體域網環(huán)境的特殊應用。在uC/OS-II的操作系統(tǒng)中,可以在創(chuàng)建任務的同時設置當前任務的堆棧、任務優(yōu)先級等參數。為了提高CPU利用率,需要將任務的優(yōu)先級在初始化時進行一定的設置;為了提高系統(tǒng)的實時性,任務的優(yōu)先級需要做調整并且在數據上云結束后將任務的優(yōu)先級更改為原來的優(yōu)先級。部分偽代碼設計如下所示:
Input:Data collected by the sensor
Output:The data is uploaded to the cloud platform
Function:Upload the data collected by the sensor to the cloud
Step0: Create task x and set the priority to TaskxPrio
Step1: Perform the following operations on the received data:
Step1.0:if each data received is the same as each data previously saved; Flag=0;
Step1.1:if each data received is different from each data previously saved; Save every data; Flag=1;
Step2:When Flag=1, perform the following operations:
Step2.1:Change the priority of task to TaskxPrio1(TaskxPrio1>TaskxPrio);
Step3:When Flag=1, perform the following operations:
Step3.1: Data is uploaded to the cloud platform;
Step4:Delay of 1 second
Step5:When Flag=0, perform the following operations:
Step5.1:Change the priority of task to TaskxPrio;
網關在接收匯聚節(jié)點傳輸的多種傳感器采集的數據之前,可以設置各個任務的優(yōu)先級,并按照數據的重要程序更改對應任務的優(yōu)先級和延時,保證重要的數據及時傳輸。
網關的實際測試是在本地win7環(huán)境下進行的,其丟包率、時延均通過XCOM串口調試助手和網絡調試助手完成測試。另外,網關的有效性在阿里云平臺進行測試。調試工具抓取數據如圖5所示。
圖5 調試工具抓取數據
數據在網絡傳輸過程中,通常會發(fā)生網關丟包的現象。對于本系統(tǒng)中網關數據丟包主要發(fā)生在網關接收數據與通過Wi-Fi發(fā)送數據時。其中,網關通過Wi-Fi發(fā)送數據,經過實際多次對5 000個數據包的測試,基本無丟包現象。
當匯聚節(jié)點將數據傳輸給網關,網關接收數據時,測試了30輪次數據,每輪分別測試了500和2 000個數據包,測試結果如圖6所示。對測試結果進行統(tǒng)計計算,30輪次數據接收,每輪次2 000個,實際平均丟包率為1.42%;每輪次500個,實際平均丟包率為0.53%。所以后期測試均采用每輪次500個數據包進行實驗。
圖6 丟包數統(tǒng)計
當然在此測試過程中,由于網關是異構網絡間信息共享的關鍵設備之一,因此需要長時間有效、穩(wěn)定的運行,所以穩(wěn)定性成為了網關性能中的重要一環(huán)。經過測試,網關在連續(xù)運行24小時內并未出現系統(tǒng)死機、丟包率急劇上增等現象。
網關工作時,其時延包括發(fā)送、處理、傳播、排隊四種時延。根據網關數據實時性的需要,系統(tǒng)主要計算網關的總時延以及發(fā)送時延。總時延不僅包括以上4點,還包括處理器處理時間以及任務調度的時間。發(fā)送時延主要發(fā)生在數據從發(fā)送器發(fā)送到完全進入信道上,影響到信道的利用率。如圖7所示,實驗測試的是30輪網關的總時延和發(fā)送時延并對其進行計算統(tǒng)計,每輪接收500個數據包。
圖7 網關總時延統(tǒng)計
其中,橫坐標展示為30個實驗輪數,縱坐標展示為對應輪次時延值大小,單位為ms。經計算,30輪次的平均總時延為23.734 ms,發(fā)送時延為2.433 ms??傮w來說時延值較低,網關能夠滿足一定條件下的實時性需要。
數據在網絡中傳輸需要能量,而節(jié)能一直是網關研究的一個熱點。因此在丟包率、時延良好的情況下,對本系統(tǒng)發(fā)熱能耗進行測試分析,圖8為系統(tǒng)能耗統(tǒng)計圖。其中,橫坐標是實驗次數,測試時長為1小時;縱坐標是消耗的能量,單位為J。對系統(tǒng)進行30輪次實驗,每次數據包大小為500,從圖中可以看出,每輪次的能耗為20 J至25 J,能耗較低且平穩(wěn),說明網關具有低能耗的特點。
圖8 能耗統(tǒng)計
傳感節(jié)點采集的數據通過設計的網關發(fā)送到阿里云服務器端,通過云服務器的計算處理,對數據進行可視化處理并展示,其中采集用戶心率和血氧的數據計算可視化后如圖9所示。雖然傳感器自身精度以及人為檢測時的不正當操作會導致數據有一定的誤差,但圖9的折線圖基本符合人體心率和血氧的標準。說明網關數據在不同協(xié)議之間的轉換后能夠正常運行。
圖9 用戶身體數據測試
文中利用STM32核心組件,通過ZigBee模塊、串口與WiFi通信,設計了一種低能耗多協(xié)議網關,實現異構網絡的數據相互操作。通過對軟硬件的詳細設計,傳感器不僅能夠采集異種類型的數據,同時也能將采集到的數據通過網絡上傳到云平臺,進行集中處理存儲。最后對數據的各項性能指標進行測試分析,并對云端的用戶身體數據進行可視化展示,測試結果良好。該設計雖在網關的研究上具有一定的重復性,但是在體域網這一特殊的應用場景中仍具有一定的應用價值,能夠對網關的各種性能參數進行實驗分析,體現了良好的應用指標。發(fā)掘網關的特色與提升網關的性能將是下一步的研究方向。