張勇
(黃岡職業技術學院,湖北黃岡,438002)
近些年來,無線傳感器網絡的發展非常迅速,多種傳感設備在生活中的應用正變得越來越廣泛。和以往的無線傳輸技術相比,傳感器的節點有著結構簡單、成本低的特征。但是,物聯網中的ZigBee協議和互聯網中的TCP/IP協議不兼容?,F階段,物聯網領域正研究如何將ZigBee協議接入到TCP/IP協議中去,以便能通過互聯網監控環境,管理好接入點。物聯網網關是連接異構的重要設備,加強對網關技術的研究非常重要。
物聯網這一發展概念于20世紀90年代提出,但是由于受到技術手段的多方面限制,并未形成系統化、生態化、產業化鏈接,在近十年才真正得以快速發展。在互聯網信息技術基礎之上,推動了物聯網技術的延伸及逐步拓展,最終實現的技術目標,達到了全面化感知及智能化信息傳輸處理。物聯網技術協議明顯差異于傳統互聯網協議,傳統互聯網主要是基于TCP/IP協議構建形成。在物聯網網絡中則主要可以借助M2M協議,或者基于Zigbee協議完成網絡信息節點之間的數據傳輸。不同數據傳輸達到了近距離、數據量較小,但是整體數據傳輸節點密度相對較高。絕大多數的物聯網系統架構,并非所有物聯網節點都需要實現以太網接入,通常是部分代理節點實現類似網關功能,實現了節點內部非TCP/IP協議轉換,之后傳輸至遠端服務器。遠程服務器設備實現對來自物聯網數據的存儲、持久化分析及ETL,由于物聯網單節點之間的信息量相對較小,但是普遍存在了較高的節點密度,需要代理階段針對數據轉發能力相對較好,具備較高可靠性,便于更加完整及時的接受相關節點數據。而針對智能化節點傳輸,每一個物聯網傳輸網絡節點,都可能作為一個數據傳輸發送節點,要求服務器設備能夠更加可靠的接收到智能化終端數據,且實現了每一個不同數據的合理標定,避免出現數據信息混淆情況。
現階段,物聯網網關實現技術有多種。第一,是通過通道機制實現。接收到無線傳感器數據時,不經解封就作為以太網載荷,加上TCP/IP的包頭傳輸到IP網絡主機上去。主機收到數據后,對其進行解析。這種通道機制實現技術有著一定的不足之處,因為數據中的一些內容并不是必要的,帶來了帶寬上的浪費。第二種方式是遠程過程調用RPC方式[1]。使用REST或SOAP將待發送數據轉換成XML格式發送。同樣的,這種方式也會帶來帶寬的浪費。另外,物聯網實現技術還有協議轉換機制等方式。
物聯網具有三個特征,一是全面感知功能,能使用RFID、傳感器等獲取到物體的信息。二是能實現電信網絡融合互聯網,將物體的信息準確及時的傳送出去。三是能用大量的數據和信息作出處理,其中用到了大數據等多種先進技術。通常情況下,物聯網被分成三個層次。由上到下分別是應用層、網絡層、感知層。物聯網感知層中有傳感器、傳感器網絡等。感知層是物聯網的基礎部分,其中涉及到了RFID技術、控制技術和傳感技術等[2]。感知層中主要采集數據的設備包括傳感器、攝像頭等。物聯網中的網絡層是建立在互聯網基礎上,通過接入多種設備實現和通訊網和互聯網的連接。網絡層的功能非常多,如信息存儲查詢,實施網絡管理等。物聯網是以數據為中心網絡層中心,網絡層中的感知數據處理技術是物理網中的核心技術,包括了對數據的查詢、分析、理解等。物聯網網絡層中有記憶存儲數據的云計算平臺,同時也為應用層應用存儲奠定了基礎。應用層是物聯網發展的目的,利用分析處理過的數據,為用戶提供相應的服務。物聯網應用非常廣泛,分為很多種類型,可用于監控,如對物流、污染狀況作出監控;也可用于查詢,如進行智能的檢索等;也能用于控制智能家居、智能路燈等;還能用在掃描方面,如高速公路不停車收費等。物聯網的網關位于中間的網絡層中,連接著傳感器以及傳統的通信網絡,有著協議轉換、數據收發等多種功能。
2.2.1 協議轉換
實現不同協議之間的轉換是物聯網網關最基礎的功能。當網關受到來自ZigBee節點數據后。網關會按照ZigBee協議的規范去掉PHY層、網絡層包頭、MAC層,并對應用層的數據作出處理,之后物聯網網關會根據TCP/IP協議的標準重新封裝數據,并通過以太網發送出去。所以,網關功能的實現,要同時具有ZigBee和TCP/IP協議棧[3]。如圖1所示,是協議轉換的過程。

圖1 協議的轉換過程
2.2.2 數據收發
物聯網網關起到溝通傳感網和通信網絡的重要作用。ZigBee網絡上傳數據經過網關處理后到IP網絡主機中。IP網絡中的數據和命令能通過網關到達ZigBee節點中去。物聯網網關既要實現接受互聯網終端和傳感器終端發送數據的功能,也要能向兩者發送數據,實現數據轉發[4]。
2.2.3 管理控制
物聯網網關還要具有管理控制的功能,對象是傳感器的節點。物聯網網關對來自應用層的命令作出處理,并下達到傳感器節點上,完成對網關下層傳感器網絡的管理。

圖2 物聯網網關的硬件系統設計
物聯網網關硬件系統部分包括了ARM開發板、GPRS無線通信和Sink節點,這三個部分是組成物聯網網關系統的三大模板。硬件系統結構如圖2所示。本次設計中使用到了ARM9架構的處理器,用CC2420作為感知節點的無線通信模塊。無線收發模塊中,用ZigBee芯片作為基礎。GPRS的無線通信模塊中使用EM310,完成物理世界和傳感器之間的網絡聯系。使用到sink,將節點收到的數據發送,網關和sink節點用網關進行連接,形成上傳數據和下達命令的通道[5]。
物聯網網關軟件架構有BootLoader程序、LINUX內核、根文件系統和應用程序四個部分。BootLoader程序是系統的初始化程序,功能是加載軟件環境和操作系統內核的數據。SD-Boot是網關啟動BootLoader程序時首要任務,使用SD卡燒寫方式,對引導程序進行移植和編譯。物聯網網關的應用程序設計方面,分為三個部分,ZigBee部分、TCP部分和web應用程序部分[6]。
3.2.1 ZigBee應用程序的設計
物聯網網關的主要功能是對感知層的數據作出采集分析和處理。軟件模塊也相應的分成主動上報、查詢和控制三個方面[7-8]。主動上報方面,數據格式以無線通訊協議的16進制為主,實現上調用接收程序nodedataproe.e,監聽程序listenfile.e以及節點狀態程序nodestatus.c。節點接收程序調用函數組能滿足內存間交互,通過調用/exc/gateway/map.txt文件能將內存表初始化,對串口打開和設置時,調用串口函數int serial_init,創建fork進程。數據采集功能的實現,需用到3個系統函數,它們分別是wait、wifexited和wtermsig。監聽程序的作用是監聽一些較為重要的文件,通過調用組函數inotify_能將監聽功能初始化,inotify_add_watch能添加監聽事件,設置相應的屬性。網關正常情況下,inotify_rm_watch(fd,wd)不會被調用,節點狀態程序用來完成采集節點狀態信息。關于傳感器上報時間,設計中采集間隔為10s,系統函數有signal、alarm和pause()。
3.2.2 WEB應用程序設計
用戶應用程序和物聯網網關進行交互時,通訊方式使用TCP/IP方式。在對WEB應用程序進行設計時,會使用CGI的方式,融合HTML以及C語言,使得應用層能順利訪問,組網程序主要有zigbee.cgi程序實現,能對頻點和ID參數進行設置。獲取新節點數據時,使用到newnode_list.cgi,且調用fprintf函數。使用Map.cgi程序對節點編號、額定掉線時間等作出配置。
綜上所述,隨著網絡技術和傳感技術的發展,物聯網在生活中的應用變得越來越廣泛。物聯網網關中,使用較為廣泛的協議的ZigBee協議,和傳統的TCP/IP協議存在著不兼容的現象。在物聯網網關設計中,如何實現ZigBee協議和TCP/Ip協議的融合非常關鍵。文章簡要分析了物聯網應用體系架構,探討了物聯網網關系統的需求,并對物聯網網關作出了設計,以為同行工作者提供相關參考資料。