劉 康 楊立身 王 磊 張安偉
(河南理工大學計算機科學與技術學院 河南 焦作 454003)
?
基于SNMP的無線傳感網網關的研究
劉康楊立身王磊張安偉
(河南理工大學計算機科學與技術學院河南 焦作 454003)
為了解決無線傳感網與互聯網異構通信以及實現無線節點的有效管理問題,考慮SNMP協議的簡單、通用、安全等特性,設計一種基于SNMP的無線傳感網網關。該網關實現無線傳感網與互聯網的數據通信,并基于SNMP協議實現對無線節點的管理。硬件部分,該網關以STM32F103VCT6為核心微處理器,使用SPI接口配合ENJ28C60以太網控制器實現以太網通信接口,使用USART串口配合無線傳感芯片cc2530實現無線傳感網通信接口;軟件部分設計基于LwIP協議棧的私有SNMP代理。測試結果表明,該網關運行穩定可靠,具有一定的實用價值。
SNMPSTM32cc2530串口通信無線傳感網
無線傳感網是由大量傳感器節點組成的自組織網絡,現已廣泛應用到智能家居、工業監控、車聯網及環境監控等眾多領域[1]。無線傳感網網關實現了無線傳感網與互聯網的互聯互通,使管理端可以遠程監控無線傳感網中的節點,并及時獲取節點信息與應用層數據,實現了對無線傳感網的遠程監控和管理。
目前,部分學者設計了一些無線傳感網網關,主要分為兩類,一類是網絡層網關,即對無線傳感網與其他網絡,如GPRS[2]、3G[3]、4G[4]及WIFI[5]等,進行網絡層數據包格式轉換,實現無線傳感網與其之間的數據通信,此類網關缺點是未實現對無線傳感網的遠程監控及管理功能;另一類是應用層網關, 如文獻[6]提出了基于嵌入式Web技術實現的物聯網終端節點管理的方案,文獻[7]設計了基于Modbus協議的無線傳感網網關,該網關實現了無線傳感網與ModbusTCP/IP網絡的互聯互通,并支持管理端對無線傳感網的遠程監控及管理功能,但此類網關的缺點是管理技術與傳統互聯網SNMP管理技術不兼容且安全性差。
本文考慮了SNMP協議的廣泛應用、簡單、安全等特征,設計了一種基于SNMP協議的無線傳感網網關。不僅實現了無線傳感網與互聯網之間的數據通信,而且使管理端可以通過SNMP協議查詢無線傳感網的節點信息及傳感器數據,設置無線傳感網節點變量及獲取無線傳感網異常報警信息,實現了SNMP管理端對無線傳感網的遠程監控和管理。
本文設計了一種基于SNMP的無線傳感網網關,實現了互聯網與無線傳感網的數據通信功能。如圖1所示,該網關共分為三層,包括硬件層、軟件支持層及應用層。硬件層包括以太網接口、微處理器及ZigBee網絡接口。以太網接口負責實現與互聯網的通信功能;微處理器負責將互聯網數據包與ZigBee網絡數據包進行數據格式轉換;ZigBee網絡接口為協調器類型節點,負責組織建立ZigBee網絡。軟件支持層包括LwIP協議棧和Z-Stack協議棧,為實現上層數據通信提供支持。應用層包括私有SNMP代理和Z-Stack應用層任務。私有SNMP代理負責響應管理端發送的請求報文,將接收到的請求報文進行轉換,然后傳遞給Z-stack應用層任務;Z-Sstack應用層任務實現該請求后將消息返回給私有SNMP代理,私有SNMP代理將其轉換為SNMP協議消息后發送給管理端。

圖1 無線傳感網網關總體結構圖
硬件部分采用模塊化設計,如圖2所示,由以太網接口模塊、微控制器模塊及ZigBee協調器模塊組成。以太網接口模塊選取使用ENC28J60控制器,該控制器提供10/100M的傳輸速率,采用SPI接口與微控制器通信;微控制器選擇基于CORTEX-M3內核的STM32F103VCT6微控制器,該控制器具有高性能、低功耗及經濟實惠的特點[8];ZigBee網絡接口模塊選取TI公司的cc2530芯片,該芯片集成高性能8051內核、USART接口及ZigBee射頻前端等[9],支持Z-Stack協議棧中各種節點類型,采用USART接口與微控制器通信。

圖2 硬件結構圖
3.1總體設計
軟件部分采用組件化設計方法設計,如圖3所示,主要包括LwIP協議棧、私有SNMP代理及Z-Stack協議棧。LwIP協議棧是由瑞典科學院實現的嵌入式網絡協議棧,開放源代碼且功能穩定[10];私有SNMP代理負責響應管理端數據及控制請求,將收到的數據請求報文或控制報文轉換數據格式后,通過串口交由ZigBee網絡協調器節點;Z-Stack協議棧是TI公司推出的遵從ZigBee2007規范的無線傳感網絡協議棧,本文基于Z-Stack協議棧[11]實現了ZigBee網絡協調器節點,負責組織搭建無線傳感網絡。接收到私有SNMP代理的數據請求或控制報文后,從終端節點收集到數據后發送給私有SNMP代理,或執行控制報文內的操作,并向私有SNMP代理發送確認消息。ZigBee網絡協調器節點發現網絡異常后向私有SNMP發送報警消息,私有SNMP代理收到消息后,根據異常類型做相應轉換后向SNMP管理端發送SNMPTrap報文。
3.2LwIP協議棧
為實現無線傳感網網關的互聯網接口,移植LwIP協議棧到STM32F103VCT6微控制器上,移植步驟如圖4所示。STM32F103VCT6微處理器端USART串口使用中斷方式接收數據,串口初始化過程如圖5所示。

圖4 LwIP協議棧移植流程圖 圖5 串口初始化流程圖
LwIP協議棧移植步驟詳細介紹如下:
Step1初始LwIP協議棧所用的基本數據類型
Step2初始化以太網SPI接口
調用微處理器的庫文件,初始化SPI接口。
Step3初始化systick定時器
初始化微處理器的systick定時器,用于定時輪詢輸入或給LwIP協議棧提供定時。
Step4初始化協議棧
調用lwip_init()函數,初始化LwIP協議棧,為LwIP協議棧所使用的數據結構分配內存,如網卡結構體鏈表、內存池、pbuf數據結構。
設置netif結構體中各屬性,如ip、netmask、gw等網絡接口設置;再調用netif_add()函數完成LwIP協議棧對網卡結構體enc28j60屬性的調用,如數據包發送函數和數據包接收函數。
使用底層網卡初始化low_level_init()函數完成MAC地址、最大傳輸單元等網卡基本屬性的設置。
再使用netif_set_default()函數將enc28j60設置為默認網卡,然后使用netif_setup()函數使能enc28j60網卡接口。
Step5輪詢
使用無限循環調用數據包接收函數完成對網絡接口的監聽,即采用輪詢方式接收數據包。
3.3Z-Stack協議棧
Z-Stack協議棧中自帶有實現串口通信的MT層,調用該層中相關API實現串口初始化,以實現Z-Stack協議棧與LwIP協議棧通信。Z-Stack協議棧輪詢到串口中斷后,調用相應的串口回調函數處理接收到的串口數據,根據接收到的串口數據包類型進行處理。若是查詢信息類串口數據包,則根據數據包中變量信息進行查詢,查詢到該變量信息后封裝成串口數據包發送給LwIP協議棧。若查詢失敗,發送查詢錯誤串口消息。若是設置變量類串口數據包,串口回調函數根據串口數據包的變量信息向目標變量節點發送設置消息,設置成功后發送設置成功串口消息,否則發送設置失敗消息。詳細流程如圖6所示。

圖6 Z-Stack串口數據處理流程圖
3.4私有SNMP代理
LwIP協議棧中已實現SNMP協議,但為實現對無線傳感網網絡管理的需求,如查詢、設置、異常監控,需在LwIP協議棧實現私有SNMP代理,以響應管理端對無線傳感網的上述管理需求。實現無線傳感網網關私有SNMP代理共分為3個部分,即:
(1) 擴展私有MIB庫,在私有MIB庫中定義無線傳感網中需要管理的變量,并實現相關數據結構;
(2) 實現對私有SNMP代理MIB庫變量的查詢、設置操作;
(3) 實現Trap變量異常報警程序。
3.4.1私有MIB庫
限于嵌入式系統有限的存儲資源,私有MIB庫數據結構需要重新使用C語言編碼實現,本網關采用樹形結構定義私有MIB庫,如圖7所示。使用mib_array_node表示樹節點,主要存儲其子節點地址及其子節點數目;mib_scalar_node表示普通標量葉子節點,主要存儲變量OID、讀寫權限及對該變量的get、set操作函數指針;mib_external_node表示外部節點,主要存儲著表格葉子變量鏈表頭節點指針、表格葉子變量讀寫權限及對該變量的get、set操作函數指針;mib_list_root_node用以表示表格葉子變量鏈表head節點,head節點包含表格葉子節點鏈表頭指針、尾指針及鏈表長度等信息;mib_list_node表示表格葉子變量節點,其中包括變量OID及該節點前后指針等信息。

圖7 私有MIB庫數據結構圖
3.4.2變量查詢
如圖8所示,當SNMP管理端需要查詢無線傳感網某變量信息時,發送封裝有SNMPGet消息的IP數據包給網關。網關通過LwIP協議棧接收IP數據包,將SNMPGet消息交由上層私有SNMP代理進行處理,私有SNMP代理在私有MIB庫中查找該變量。然后調用該變量的get函數向ZigBee協調器節點發送串口數據請求報文,ZigBee協調器依據報文中的節點ID和變量名對該報文中的操作進行處理,獲取數據后封裝成串口回應報文發送給私有SNMP代理,若獲取失敗,發送查詢錯誤串口回應報文。私有SNMP代理收到串口響應報文后將其轉換成SNMP協議回應消息通過LwIP協議棧返回給SNMP代理管理端。

圖8 數據查詢協作圖
3.4.3變量設置
如圖9所示,當SNMP管理端需要設置無線傳感網中某變量信息時,發送封裝有SNMPSet消息的IP數據包給網關。網關通過LwIP協議棧接收IP數據包,將SNMPSet消息交由上層私有SNMP代理進行處理,私有SNMP代理在私有MIB庫中查找該變量。然后調用該變量的set函數向ZigBee協調器節點發送串口設置請求報文,ZigBee協調器依據報文中的節點ID、變量名及變量值對該變量執行設置操作,設置變量成功后封裝成串口回應報文發送給私有SNMP代理,若失敗,發送設置錯誤串口回應報文。私有SNMP代理收到串口響應報文后將其轉換成SNMP協議回應消息通過LwIP協議棧返回給SNMP代理管理端。

圖9 設置協作圖
3.4.4異常報警
如圖10所示,當ZigBee協調器發現ZigBee網絡中異常時,發送串口異常報警報文給私有SNMP代理。私有SNMP代理根據串口異常報警報文中的異常信息查找MIB庫中Trap變量。然后將變量名、異常信息封裝到SNMPTrap消息中并向管理端發送該SNMPTrap報警消息。

圖10 異常報警寫作圖
本網關在實驗室中搭建網絡進行測試,測試環境如圖11所示。首先在實驗室搭建測試環境,開發板使用雙絞線與PC相連,開發板自帶有使用cc2530的ZigBee模塊。通過不定向天線與ZigBee網絡中溫濕度、燈開關節點進行通信,測試方案主要包括網絡連通性測試和核心部件SNMP協議測試兩個模塊 。

圖11 測試環境圖
在命令終端上輸入ping網關的IP地址的命令,網關及時返回icmpechoreply報文以確認收到ping報文。測試結果如圖12所示。

圖12 網絡連通性測試
在上位機上運行監控軟件,該軟件基于VisualC++及SNMP++[12]開發,如圖13所示。配置SNMP代理的IP地址及認證名,然后點擊“刷新”按鈕,即可通過無線傳感網網關獲得測試環境內的溫度及濕度。通過點擊“開燈”、“關燈”按鈕即可實現對燈節點的開關控制。監控軟件若收到SNMP代理發送的SNMPTrap報警消息,報警欄會顯示報警信息。
網關測試結果表明,本文設計的網關能夠穩定地實現現有互聯網與無線傳感網之間的數據通信,并穩定地實現了SNMP管理端對無線傳感網的查詢、設置、異常報警等管理需求。
本文設計了一種基于SNMP的無線傳感網網關,該網關軟硬件采用組件化設計方法設計。一方面,該網關實現了無線傳感網與互聯網的互聯互通;另一方面,該網關使管理端可以通過SNMP協議直接監控和管理無線傳感網,實現了基于SNMP協議的互聯網及無線傳感網的網絡管理體系,減少了不必要的中間件的開發。測試結果表明該網關運行穩定可靠,具有實時性、低功耗、成本低、通用性強等特點,具有一定的實用價值。
[1] 錢志鴻.面向物聯網的無線傳感器網絡綜述[J].電子與信息學報,2013,35(1):215-227.
[2] 陳輝.基于ZigBee與GPRS的溫室番茄遠程智能灌溉系統的研究與實現[D].浙江大學,2013.
[3] 劉亮.基于3G的物聯網網關設計[D].大連理工大學,2011.
[4] 王志超,劉波,花於鋒.基于移動4G與ZigBee無線傳感網的網關設計[J].計算機測量與控制,2014,22(3):863-865,878.
[5] 李寶森.醫院智能空間網絡搭建及其定位系統設計與應用[D].山東大學,2012.
[6] 胡亦萬.基于Cortex-M3的LwIP移植以及嵌入式WEB的應用研究[D].南昌大學,2013.
[7] 葉欣,陳文藝,趙健.基于Matlab物聯網網關的Modbus協議實現[J].測控技術,2013,32(2):77-80.
[8] 李冬霞,張雪慶.基于Cortex-M3的智能卡USB讀卡器設計[J].計算機工程與設計,2010,31(12):2729-2732.
[9] 王威,李春杰,張圣,等.一種無線傳感網與現場總線通信網關的設計與實現[J].測控技術,2014,33(1):109-111.
[10] 胡亦萬.基于Cortex-M3的LwIP移植以及嵌入式WEB的應用研究[D].南昌大學,2013.
[11] 劉偉超.基于ZigBee無線傳感網實驗系統的設計與實現[D].華中科技大學,2012.
[12] 劉穎.基于SNMP技術的網絡音頻處理系統的設計[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。劉康,碩士生,主研領域:網絡管理。楊立身,教授。王磊,副教授。張安偉,碩士生。
TP3
ADOI:10.3969/j.issn.1000-386x.2016.03.036