劉 康 楊立身 王 磊 張安偉
(河南理工大學計算機科學與技術(shù)學院 河南 焦作 454003)
?
基于SNMP的無線傳感網(wǎng)網(wǎng)關(guān)的研究
劉康楊立身王磊張安偉
(河南理工大學計算機科學與技術(shù)學院河南 焦作 454003)
為了解決無線傳感網(wǎng)與互聯(lián)網(wǎng)異構(gòu)通信以及實現(xiàn)無線節(jié)點的有效管理問題,考慮SNMP協(xié)議的簡單、通用、安全等特性,設(shè)計一種基于SNMP的無線傳感網(wǎng)網(wǎng)關(guān)。該網(wǎng)關(guān)實現(xiàn)無線傳感網(wǎng)與互聯(lián)網(wǎng)的數(shù)據(jù)通信,并基于SNMP協(xié)議實現(xiàn)對無線節(jié)點的管理。硬件部分,該網(wǎng)關(guān)以STM32F103VCT6為核心微處理器,使用SPI接口配合ENJ28C60以太網(wǎng)控制器實現(xiàn)以太網(wǎng)通信接口,使用USART串口配合無線傳感芯片cc2530實現(xiàn)無線傳感網(wǎng)通信接口;軟件部分設(shè)計基于LwIP協(xié)議棧的私有SNMP代理。測試結(jié)果表明,該網(wǎng)關(guān)運行穩(wěn)定可靠,具有一定的實用價值。
SNMPSTM32cc2530串口通信無線傳感網(wǎng)
無線傳感網(wǎng)是由大量傳感器節(jié)點組成的自組織網(wǎng)絡(luò),現(xiàn)已廣泛應用到智能家居、工業(yè)監(jiān)控、車聯(lián)網(wǎng)及環(huán)境監(jiān)控等眾多領(lǐng)域[1]。無線傳感網(wǎng)網(wǎng)關(guān)實現(xiàn)了無線傳感網(wǎng)與互聯(lián)網(wǎng)的互聯(lián)互通,使管理端可以遠程監(jiān)控無線傳感網(wǎng)中的節(jié)點,并及時獲取節(jié)點信息與應用層數(shù)據(jù),實現(xiàn)了對無線傳感網(wǎng)的遠程監(jiān)控和管理。
目前,部分學者設(shè)計了一些無線傳感網(wǎng)網(wǎng)關(guān),主要分為兩類,一類是網(wǎng)絡(luò)層網(wǎng)關(guān),即對無線傳感網(wǎng)與其他網(wǎng)絡(luò),如GPRS[2]、3G[3]、4G[4]及WIFI[5]等,進行網(wǎng)絡(luò)層數(shù)據(jù)包格式轉(zhuǎn)換,實現(xiàn)無線傳感網(wǎng)與其之間的數(shù)據(jù)通信,此類網(wǎng)關(guān)缺點是未實現(xiàn)對無線傳感網(wǎng)的遠程監(jiān)控及管理功能;另一類是應用層網(wǎng)關(guān), 如文獻[6]提出了基于嵌入式Web技術(shù)實現(xiàn)的物聯(lián)網(wǎng)終端節(jié)點管理的方案,文獻[7]設(shè)計了基于Modbus協(xié)議的無線傳感網(wǎng)網(wǎng)關(guān),該網(wǎng)關(guān)實現(xiàn)了無線傳感網(wǎng)與ModbusTCP/IP網(wǎng)絡(luò)的互聯(lián)互通,并支持管理端對無線傳感網(wǎng)的遠程監(jiān)控及管理功能,但此類網(wǎng)關(guān)的缺點是管理技術(shù)與傳統(tǒng)互聯(lián)網(wǎng)SNMP管理技術(shù)不兼容且安全性差。
本文考慮了SNMP協(xié)議的廣泛應用、簡單、安全等特征,設(shè)計了一種基于SNMP協(xié)議的無線傳感網(wǎng)網(wǎng)關(guān)。不僅實現(xiàn)了無線傳感網(wǎng)與互聯(lián)網(wǎng)之間的數(shù)據(jù)通信,而且使管理端可以通過SNMP協(xié)議查詢無線傳感網(wǎng)的節(jié)點信息及傳感器數(shù)據(jù),設(shè)置無線傳感網(wǎng)節(jié)點變量及獲取無線傳感網(wǎng)異常報警信息,實現(xiàn)了SNMP管理端對無線傳感網(wǎng)的遠程監(jiān)控和管理。
本文設(shè)計了一種基于SNMP的無線傳感網(wǎng)網(wǎng)關(guān),實現(xiàn)了互聯(lián)網(wǎng)與無線傳感網(wǎng)的數(shù)據(jù)通信功能。如圖1所示,該網(wǎng)關(guān)共分為三層,包括硬件層、軟件支持層及應用層。硬件層包括以太網(wǎng)接口、微處理器及ZigBee網(wǎng)絡(luò)接口。以太網(wǎng)接口負責實現(xiàn)與互聯(lián)網(wǎng)的通信功能;微處理器負責將互聯(lián)網(wǎng)數(shù)據(jù)包與ZigBee網(wǎng)絡(luò)數(shù)據(jù)包進行數(shù)據(jù)格式轉(zhuǎn)換;ZigBee網(wǎng)絡(luò)接口為協(xié)調(diào)器類型節(jié)點,負責組織建立ZigBee網(wǎng)絡(luò)。軟件支持層包括LwIP協(xié)議棧和Z-Stack協(xié)議棧,為實現(xiàn)上層數(shù)據(jù)通信提供支持。應用層包括私有SNMP代理和Z-Stack應用層任務(wù)。私有SNMP代理負責響應管理端發(fā)送的請求報文,將接收到的請求報文進行轉(zhuǎn)換,然后傳遞給Z-stack應用層任務(wù);Z-Sstack應用層任務(wù)實現(xiàn)該請求后將消息返回給私有SNMP代理,私有SNMP代理將其轉(zhuǎn)換為SNMP協(xié)議消息后發(fā)送給管理端。
圖1 無線傳感網(wǎng)網(wǎng)關(guān)總體結(jié)構(gòu)圖
硬件部分采用模塊化設(shè)計,如圖2所示,由以太網(wǎng)接口模塊、微控制器模塊及ZigBee協(xié)調(diào)器模塊組成。以太網(wǎng)接口模塊選取使用ENC28J60控制器,該控制器提供10/100M的傳輸速率,采用SPI接口與微控制器通信;微控制器選擇基于CORTEX-M3內(nèi)核的STM32F103VCT6微控制器,該控制器具有高性能、低功耗及經(jīng)濟實惠的特點[8];ZigBee網(wǎng)絡(luò)接口模塊選取TI公司的cc2530芯片,該芯片集成高性能8051內(nèi)核、USART接口及ZigBee射頻前端等[9],支持Z-Stack協(xié)議棧中各種節(jié)點類型,采用USART接口與微控制器通信。
圖2 硬件結(jié)構(gòu)圖
3.1總體設(shè)計
軟件部分采用組件化設(shè)計方法設(shè)計,如圖3所示,主要包括LwIP協(xié)議棧、私有SNMP代理及Z-Stack協(xié)議棧。LwIP協(xié)議棧是由瑞典科學院實現(xiàn)的嵌入式網(wǎng)絡(luò)協(xié)議棧,開放源代碼且功能穩(wěn)定[10];私有SNMP代理負責響應管理端數(shù)據(jù)及控制請求,將收到的數(shù)據(jù)請求報文或控制報文轉(zhuǎn)換數(shù)據(jù)格式后,通過串口交由ZigBee網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點;Z-Stack協(xié)議棧是TI公司推出的遵從ZigBee2007規(guī)范的無線傳感網(wǎng)絡(luò)協(xié)議棧,本文基于Z-Stack協(xié)議棧[11]實現(xiàn)了ZigBee網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點,負責組織搭建無線傳感網(wǎng)絡(luò)。接收到私有SNMP代理的數(shù)據(jù)請求或控制報文后,從終端節(jié)點收集到數(shù)據(jù)后發(fā)送給私有SNMP代理,或執(zhí)行控制報文內(nèi)的操作,并向私有SNMP代理發(fā)送確認消息。ZigBee網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點發(fā)現(xiàn)網(wǎng)絡(luò)異常后向私有SNMP發(fā)送報警消息,私有SNMP代理收到消息后,根據(jù)異常類型做相應轉(zhuǎn)換后向SNMP管理端發(fā)送SNMPTrap報文。
3.2LwIP協(xié)議棧
為實現(xiàn)無線傳感網(wǎng)網(wǎng)關(guān)的互聯(lián)網(wǎng)接口,移植LwIP協(xié)議棧到STM32F103VCT6微控制器上,移植步驟如圖4所示。STM32F103VCT6微處理器端USART串口使用中斷方式接收數(shù)據(jù),串口初始化過程如圖5所示。
圖4 LwIP協(xié)議棧移植流程圖 圖5 串口初始化流程圖
LwIP協(xié)議棧移植步驟詳細介紹如下:
Step1初始LwIP協(xié)議棧所用的基本數(shù)據(jù)類型
Step2初始化以太網(wǎng)SPI接口
調(diào)用微處理器的庫文件,初始化SPI接口。
Step3初始化systick定時器
初始化微處理器的systick定時器,用于定時輪詢輸入或給LwIP協(xié)議棧提供定時。
Step4初始化協(xié)議棧
調(diào)用lwip_init()函數(shù),初始化LwIP協(xié)議棧,為LwIP協(xié)議棧所使用的數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存,如網(wǎng)卡結(jié)構(gòu)體鏈表、內(nèi)存池、pbuf數(shù)據(jù)結(jié)構(gòu)。
設(shè)置netif結(jié)構(gòu)體中各屬性,如ip、netmask、gw等網(wǎng)絡(luò)接口設(shè)置;再調(diào)用netif_add()函數(shù)完成LwIP協(xié)議棧對網(wǎng)卡結(jié)構(gòu)體enc28j60屬性的調(diào)用,如數(shù)據(jù)包發(fā)送函數(shù)和數(shù)據(jù)包接收函數(shù)。
使用底層網(wǎng)卡初始化low_level_init()函數(shù)完成MAC地址、最大傳輸單元等網(wǎng)卡基本屬性的設(shè)置。
再使用netif_set_default()函數(shù)將enc28j60設(shè)置為默認網(wǎng)卡,然后使用netif_setup()函數(shù)使能enc28j60網(wǎng)卡接口。
Step5輪詢
使用無限循環(huán)調(diào)用數(shù)據(jù)包接收函數(shù)完成對網(wǎng)絡(luò)接口的監(jiān)聽,即采用輪詢方式接收數(shù)據(jù)包。
3.3Z-Stack協(xié)議棧
Z-Stack協(xié)議棧中自帶有實現(xiàn)串口通信的MT層,調(diào)用該層中相關(guān)API實現(xiàn)串口初始化,以實現(xiàn)Z-Stack協(xié)議棧與LwIP協(xié)議棧通信。Z-Stack協(xié)議棧輪詢到串口中斷后,調(diào)用相應的串口回調(diào)函數(shù)處理接收到的串口數(shù)據(jù),根據(jù)接收到的串口數(shù)據(jù)包類型進行處理。若是查詢信息類串口數(shù)據(jù)包,則根據(jù)數(shù)據(jù)包中變量信息進行查詢,查詢到該變量信息后封裝成串口數(shù)據(jù)包發(fā)送給LwIP協(xié)議棧。若查詢失敗,發(fā)送查詢錯誤串口消息。若是設(shè)置變量類串口數(shù)據(jù)包,串口回調(diào)函數(shù)根據(jù)串口數(shù)據(jù)包的變量信息向目標變量節(jié)點發(fā)送設(shè)置消息,設(shè)置成功后發(fā)送設(shè)置成功串口消息,否則發(fā)送設(shè)置失敗消息。詳細流程如圖6所示。
圖6 Z-Stack串口數(shù)據(jù)處理流程圖
3.4私有SNMP代理
LwIP協(xié)議棧中已實現(xiàn)SNMP協(xié)議,但為實現(xiàn)對無線傳感網(wǎng)網(wǎng)絡(luò)管理的需求,如查詢、設(shè)置、異常監(jiān)控,需在LwIP協(xié)議棧實現(xiàn)私有SNMP代理,以響應管理端對無線傳感網(wǎng)的上述管理需求。實現(xiàn)無線傳感網(wǎng)網(wǎng)關(guān)私有SNMP代理共分為3個部分,即:
(1) 擴展私有MIB庫,在私有MIB庫中定義無線傳感網(wǎng)中需要管理的變量,并實現(xiàn)相關(guān)數(shù)據(jù)結(jié)構(gòu);
(2) 實現(xiàn)對私有SNMP代理MIB庫變量的查詢、設(shè)置操作;
(3) 實現(xiàn)Trap變量異常報警程序。
3.4.1私有MIB庫
限于嵌入式系統(tǒng)有限的存儲資源,私有MIB庫數(shù)據(jù)結(jié)構(gòu)需要重新使用C語言編碼實現(xiàn),本網(wǎng)關(guān)采用樹形結(jié)構(gòu)定義私有MIB庫,如圖7所示。使用mib_array_node表示樹節(jié)點,主要存儲其子節(jié)點地址及其子節(jié)點數(shù)目;mib_scalar_node表示普通標量葉子節(jié)點,主要存儲變量OID、讀寫權(quán)限及對該變量的get、set操作函數(shù)指針;mib_external_node表示外部節(jié)點,主要存儲著表格葉子變量鏈表頭節(jié)點指針、表格葉子變量讀寫權(quán)限及對該變量的get、set操作函數(shù)指針;mib_list_root_node用以表示表格葉子變量鏈表head節(jié)點,head節(jié)點包含表格葉子節(jié)點鏈表頭指針、尾指針及鏈表長度等信息;mib_list_node表示表格葉子變量節(jié)點,其中包括變量OID及該節(jié)點前后指針等信息。
圖7 私有MIB庫數(shù)據(jù)結(jié)構(gòu)圖
3.4.2變量查詢
如圖8所示,當SNMP管理端需要查詢無線傳感網(wǎng)某變量信息時,發(fā)送封裝有SNMPGet消息的IP數(shù)據(jù)包給網(wǎng)關(guān)。網(wǎng)關(guān)通過LwIP協(xié)議棧接收IP數(shù)據(jù)包,將SNMPGet消息交由上層私有SNMP代理進行處理,私有SNMP代理在私有MIB庫中查找該變量。然后調(diào)用該變量的get函數(shù)向ZigBee協(xié)調(diào)器節(jié)點發(fā)送串口數(shù)據(jù)請求報文,ZigBee協(xié)調(diào)器依據(jù)報文中的節(jié)點ID和變量名對該報文中的操作進行處理,獲取數(shù)據(jù)后封裝成串口回應報文發(fā)送給私有SNMP代理,若獲取失敗,發(fā)送查詢錯誤串口回應報文。私有SNMP代理收到串口響應報文后將其轉(zhuǎn)換成SNMP協(xié)議回應消息通過LwIP協(xié)議棧返回給SNMP代理管理端。
圖8 數(shù)據(jù)查詢協(xié)作圖
3.4.3變量設(shè)置
如圖9所示,當SNMP管理端需要設(shè)置無線傳感網(wǎng)中某變量信息時,發(fā)送封裝有SNMPSet消息的IP數(shù)據(jù)包給網(wǎng)關(guān)。網(wǎng)關(guān)通過LwIP協(xié)議棧接收IP數(shù)據(jù)包,將SNMPSet消息交由上層私有SNMP代理進行處理,私有SNMP代理在私有MIB庫中查找該變量。然后調(diào)用該變量的set函數(shù)向ZigBee協(xié)調(diào)器節(jié)點發(fā)送串口設(shè)置請求報文,ZigBee協(xié)調(diào)器依據(jù)報文中的節(jié)點ID、變量名及變量值對該變量執(zhí)行設(shè)置操作,設(shè)置變量成功后封裝成串口回應報文發(fā)送給私有SNMP代理,若失敗,發(fā)送設(shè)置錯誤串口回應報文。私有SNMP代理收到串口響應報文后將其轉(zhuǎn)換成SNMP協(xié)議回應消息通過LwIP協(xié)議棧返回給SNMP代理管理端。
圖9 設(shè)置協(xié)作圖
3.4.4異常報警
如圖10所示,當ZigBee協(xié)調(diào)器發(fā)現(xiàn)ZigBee網(wǎng)絡(luò)中異常時,發(fā)送串口異常報警報文給私有SNMP代理。私有SNMP代理根據(jù)串口異常報警報文中的異常信息查找MIB庫中Trap變量。然后將變量名、異常信息封裝到SNMPTrap消息中并向管理端發(fā)送該SNMPTrap報警消息。
圖10 異常報警寫作圖
本網(wǎng)關(guān)在實驗室中搭建網(wǎng)絡(luò)進行測試,測試環(huán)境如圖11所示。首先在實驗室搭建測試環(huán)境,開發(fā)板使用雙絞線與PC相連,開發(fā)板自帶有使用cc2530的ZigBee模塊。通過不定向天線與ZigBee網(wǎng)絡(luò)中溫濕度、燈開關(guān)節(jié)點進行通信,測試方案主要包括網(wǎng)絡(luò)連通性測試和核心部件SNMP協(xié)議測試兩個模塊 。
圖11 測試環(huán)境圖
在命令終端上輸入ping網(wǎng)關(guān)的IP地址的命令,網(wǎng)關(guān)及時返回icmpechoreply報文以確認收到ping報文。測試結(jié)果如圖12所示。
圖12 網(wǎng)絡(luò)連通性測試
在上位機上運行監(jiān)控軟件,該軟件基于VisualC++及SNMP++[12]開發(fā),如圖13所示。配置SNMP代理的IP地址及認證名,然后點擊“刷新”按鈕,即可通過無線傳感網(wǎng)網(wǎng)關(guān)獲得測試環(huán)境內(nèi)的溫度及濕度。通過點擊“開燈”、“關(guān)燈”按鈕即可實現(xiàn)對燈節(jié)點的開關(guān)控制。監(jiān)控軟件若收到SNMP代理發(fā)送的SNMPTrap報警消息,報警欄會顯示報警信息。
網(wǎng)關(guān)測試結(jié)果表明,本文設(shè)計的網(wǎng)關(guān)能夠穩(wěn)定地實現(xiàn)現(xiàn)有互聯(lián)網(wǎng)與無線傳感網(wǎng)之間的數(shù)據(jù)通信,并穩(wěn)定地實現(xiàn)了SNMP管理端對無線傳感網(wǎng)的查詢、設(shè)置、異常報警等管理需求。
本文設(shè)計了一種基于SNMP的無線傳感網(wǎng)網(wǎng)關(guān),該網(wǎng)關(guān)軟硬件采用組件化設(shè)計方法設(shè)計。一方面,該網(wǎng)關(guān)實現(xiàn)了無線傳感網(wǎng)與互聯(lián)網(wǎng)的互聯(lián)互通;另一方面,該網(wǎng)關(guān)使管理端可以通過SNMP協(xié)議直接監(jiān)控和管理無線傳感網(wǎng),實現(xiàn)了基于SNMP協(xié)議的互聯(lián)網(wǎng)及無線傳感網(wǎng)的網(wǎng)絡(luò)管理體系,減少了不必要的中間件的開發(fā)。測試結(jié)果表明該網(wǎng)關(guān)運行穩(wěn)定可靠,具有實時性、低功耗、成本低、通用性強等特點,具有一定的實用價值。
[1] 錢志鴻.面向物聯(lián)網(wǎng)的無線傳感器網(wǎng)絡(luò)綜述[J].電子與信息學報,2013,35(1):215-227.
[2] 陳輝.基于ZigBee與GPRS的溫室番茄遠程智能灌溉系統(tǒng)的研究與實現(xiàn)[D].浙江大學,2013.
[3] 劉亮.基于3G的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計[D].大連理工大學,2011.
[4] 王志超,劉波,花於鋒.基于移動4G與ZigBee無線傳感網(wǎng)的網(wǎng)關(guān)設(shè)計[J].計算機測量與控制,2014,22(3):863-865,878.
[5] 李寶森.醫(yī)院智能空間網(wǎng)絡(luò)搭建及其定位系統(tǒng)設(shè)計與應用[D].山東大學,2012.
[6] 胡亦萬.基于Cortex-M3的LwIP移植以及嵌入式WEB的應用研究[D].南昌大學,2013.
[7] 葉欣,陳文藝,趙健.基于Matlab物聯(lián)網(wǎng)網(wǎng)關(guān)的Modbus協(xié)議實現(xiàn)[J].測控技術(shù),2013,32(2):77-80.
[8] 李冬霞,張雪慶.基于Cortex-M3的智能卡USB讀卡器設(shè)計[J].計算機工程與設(shè)計,2010,31(12):2729-2732.
[9] 王威,李春杰,張圣,等.一種無線傳感網(wǎng)與現(xiàn)場總線通信網(wǎng)關(guān)的設(shè)計與實現(xiàn)[J].測控技術(shù),2014,33(1):109-111.
[10] 胡亦萬.基于Cortex-M3的LwIP移植以及嵌入式WEB的應用研究[D].南昌大學,2013.
[11] 劉偉超.基于ZigBee無線傳感網(wǎng)實驗系統(tǒng)的設(shè)計與實現(xiàn)[D].華中科技大學,2012.
[12] 劉穎.基于SNMP技術(shù)的網(wǎng)絡(luò)音頻處理系統(tǒng)的設(shè)計[D].哈爾濱理工大學,2013.
STUDYONWIRELESSSENSORNETWORKGATEWAYBASEDONSNMP
LiuKangYangLishenWangLeiZhangAnwei
(School of Computer Science and Technology,Henan Polytechnic University,Jiaozuo 454003,Henan,China)
InordertosolvetheproblemofheterogeneouscommunicationbetweenwirelesssensornetworksandtheInternetandtheproblemofeffectivemanagementofwirelessnodes,consideringthefeaturesofSNMPprotocolsuchassimple,universalandsecure,etc.,wedesignedanSNMP-basedwirelesssensornetworkgateway.ThegatewayrealisesthedatacommunicationbetweenwirelesssensornetworksandtheInternet,andachievesthemanagementofwirelessnodesbasedonSNMP.Inhardwarepart,thegatewayusesSTM32F103VCT6ascoremicroprocessor,usesSPIinterfaceinconjunctionwithENJ28C60EthernetcontrollertoimplementEthernetcommunicationinterface,andusesUSARTserialportinconcertwithwirelesssensorchipcc2530toimplementwirelesssensornetworkcommunicationinterface.Insoftwarepart,wedesignanLwIPstack-basedprivateSNMPagent.Testresultsshowedthatthegatewayranstablyandreliably,andhadcertainpracticalvalue.
SNMPSTM32cc2530SerialportcommunicationWirelesssensornetwork
2014-08-16。劉康,碩士生,主研領(lǐng)域:網(wǎng)絡(luò)管理。楊立身,教授。王磊,副教授。張安偉,碩士生。
TP3
ADOI:10.3969/j.issn.1000-386x.2016.03.036