王智群



摘 要: 物聯網網關是連接感知層和網絡層的橋梁,是溝通物聯網與目前流行網絡的紐帶。文章設計的一種基于ARM的物聯網多網互聯網關,將Zigbee無線傳感器網絡與Wi-Fi網絡、以太網絡進行互連,實現對Zigbee網絡節點的控制。該網關硬件方面以ARM9系列S3C6410為主控芯片,采用模塊化的設計思路,分別搭建了相應的外圍功能模塊;軟件方面,通過移植Linux嵌入式操作系統以及編寫協議轉換程序,實現了網絡的互聯,通過搭建Web服務器,設計應用通信協議及編寫CGI網關應用程序,實現了對網關的控制與管理。經測試,該網關性能穩定,實現了三網間的數據通信。
關鍵詞: 網關; ZigBee; Wi-Fi; 以太網; 互聯
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2016)08-28-03
Abstract: The Internet of Things gateway is a bridge which connects the perceptual layer and the network layer, and it is the link between IoT and current popular networks. In this article, a kind of IoT multi-network gateway based on ARM is designed to connect ZigBee Network with Wi-Fi network or Ethernet, and realize the control to the ZigBee nodes. In the hardware, ARM9 series S3C6410 is used as the main control chip of the gateway and the corresponding peripheral functional modules are set up by using the modular design concept; in the software, the gateway achieves interconnection of networks by transplanting embedded Linux operating system and developing protocol conversing programs. And by building Web server, designing application communication protocol and programming CGI gateway application, the control and management of the gateway are realized. According to the test, this gateway is stable, and the data communication between the three networks is implemented.
Key words: gateway; Zigbee; Wi-Fi; Ethernet; interconnection
0 引言
傳感網是物聯網感知層的主要應用技術,也是物聯網的支撐技術。而無線傳感器網絡(WSN)是傳感網中的重要組成部分,在目前的WSN中,ZigBee憑著其低功耗、低速率、低成本、高安全性等諸多特性在WSN中廣泛應用[1-3]。由于當前通信網絡種類比較多,各種網絡之間存在較大的差異[4],要將這些異構網絡融合起來,必須要使用網關設備將其互聯,網關就是建立在網絡層之上的協議轉化器,可實現不同子網的信息交換與通信。由于目前以太網與Wi-Fi網絡在現實生活中廣泛使用,所以將ZigBee網絡與以太網或Wi-Fi網絡連接起來具有重要的現實意義。
本文設計的網關用于ZigBee網絡與Wi-Fi網絡及以太網通信,該網關接受ZigBee網絡傳送過來的信號,在ARM處理器控制處理下,分發到以太網及Wi-Fi網絡中;同時該網關也可以接受來自以太網和Wi-Fi網絡的控制信息,完成對ZigBee網絡設備的控制。本文設計的網關設備在應用中的作用如圖1所示,對于物聯網來說,它是連接無線傳感網絡或互聯網或其他智能設備(如手機、掌上電腦IPAD)的橋梁[5]。
1 網關硬件設計
本文設計的網關硬件結構如圖2所示。網關采用三星公司ARM9微處器S3C6410做主控芯片,芯片上集成的UART0與ZigBee模塊相連,芯片上集成的USB Host接口與Wi-Fi模塊相連,以太網模塊采用總線方式與主控芯片相連。內存采用SDRAM芯片,存儲器采用Flash芯片,供電采用AC/220V,通過電源模塊產生DC 5V、DC 3.3V等電壓給各個模塊供電。
ZigBee模塊選用TI公司的一款工作在2.4GHz頻段并兼容IEEE 802.15.4協議的片上系統芯片CC2530。在ZigBee通信模塊中CC2530充當組網協調器角色,它與S3C6410之間通過串口UART方式進行通信,當S3C6410芯片收到Wi-Fi模塊或以太網模塊發送過來的數據或命令后,就會通過串口通知ZigBee協調器向網絡中相應ZigBee節點發送信息,協調器會根據ZigBee節點地址向目標節點發送信息。網絡內ZigBee節點終端設備會將收集到的信息以相反的路徑發送到Wi-Fi網或以太網中。
Wi-Fi模塊采用ralink的一款工作在2.4GHz頻段并支持IEEE 802.11b/g協議的RT73/RT2571 Wi-Fi芯片。基于模塊化思想,具體選用TP-LINK公司TL-WIN321G+型號USB普通網卡,該網卡通過在S3C6410芯片中移植Hostapd程序(Hostapd是實現USB Wi-Fi AP功能及授權服務的一個開源項目)可實現軟AP點的功能。當Wi-Fi網絡中的終端設備接入AP點后,終端設備發送或接收信息時,通過Wi-Fi通信模塊的USB接口向S3C6410芯片的USB Host接口發送或接受信息,然后在S3C6410控制下與ZigBee網絡或以太網絡通信。
以太網模塊采用DM9000A太網控制器芯片。DM9000A一端通過16位數據總線掛接到S3C6410的系統數據總線上,另一端與集成了網絡變壓器RJ45接口的HR911105A芯片相連接,這樣可以使用普通網線連接網關。當以太網中數據經DM9000A芯片傳送到S3C6410芯片時,S3C6410控制器分別通過內部集成的串口和USB Host接口向ZigBee模塊和Wi-Fi模塊傳送信息,從而完成與ZigBee網絡或Wi-Fi網絡的通信。
2 網關軟件構架
網關主控制器軟件結構如圖3所示,操作系統選擇嵌入式Linux,它由BootLoader程序負責引導。通過編寫Linux系統中DM9000A控制器端口讀寫驅動、UART串口讀寫驅動及USB Host端口的讀寫驅動程序,分別實現應用程序與各模塊間的通信。由于Linux系統中包含一個完整的TCP/IP協議棧[4],所以通過移植Boa服務器(Boa是Linux下一個小巧的Web服務器,支持CGI程序),在應用層編寫CGI程序實現客戶端與網關間的信息交互與控制。在應用層編寫網絡協議轉化守護程序,實現網絡協議的相互轉化。在網關應用層運行Hostapd守護程序,可實現Wi-Fi模塊的AP點等功能。
至于ZigBee模塊的軟件結構,主要是基于Z-Stack的協議棧,它使用OSAL小型操作系統來實現多任務處理。ZigBee模塊充當網絡協調器角色,完成建網與組網功能,同時通過在協議棧應用層編寫數據轉發等程序,實現串口數據與ZigBee網絡節點數據的轉發等功能。即,ZigBee模塊監聽到來自ZigBee網絡數據包時,將數據包發送給串口,網關主控制器通過串口接收數據;當監聽到來自網關主控制器串口的數據時,ZigBee模塊會根據相應的尋址方式將數據發往相對應節點。
3 關鍵技術處理
3.1 網絡協議轉化
由于網絡協議標準的不同,要實現ZigBee網絡、Wi-Fi網絡、以太網絡之間相互通信,必須在主控制器中實現網絡協議的轉化。對于Wi-Fi網絡和以太網絡,雖然其低層標準一個采用802.11,一個采用802.3,但它們網絡傳輸層都執行TCP/IP協議,因此Wi-Fi網絡和以太網絡的轉換可以使用NAT(Network Address Translation)技術,改變IP包頭,使目的地址、源地址或兩個地址在包頭中被不同的地址替換即可,即通過移植Linux內核中的Netfilter模塊及編寫腳本文件可實現Wi-Fi網絡和以太網絡間報文的相互轉發。但是ZigBee網絡則不同,網絡傳輸層沒有執行TCP/IP協議,所以通過NAT技術解決不了網絡間的相互轉發,必須在主控制器中設計協議轉化程序。該守護程序設計思想是將串口鏈路層數據經過TCP/IP協議的封裝,即可完成與Wi-Fi網絡、以太網絡的通訊。具體來說當ZigBee網絡來的串口數據向Wi-Fi網絡、以太網絡傳輸時,進入TCP/IP協議棧加上Wi-Fi頭或以太網頭、TCP/IP頭及串口號等信息進行封裝,然后再發往這些網絡;當Wi-Fi網絡、以太網絡向串口發送數據時,是出TCP/IP協議棧分解的過程,即依次去掉每層的協議頭分解出應用層數據,最后根據串口號字段值將信息發往相應串口,從而完成整個通訊過程。
3.2 ZigBee網絡尋址
ZigBee網絡內節點只有兩種地址,即16位短的網絡地址和64位長的物理地址。ZigBee網內通訊采用隨機生成的16位短地址。由于ZigBee網絡地址不是固定的,而64位物理地址是IEEE分配的全球惟一號,所以其他網絡與ZigBee網絡通訊時必須要建立物理地址與網絡地址的一對一關系。因此在網關內部保存一張ZigBee網絡內所有節點的物理地址和網絡地址對應表,當ZigBee網絡節點加入網絡成功后,網關協調器就更新這張網絡節點地址對應表。當Wi-Fi網絡或以太網絡與ZigBee網絡節點通訊時采用的是64位物理地址,傳輸數據時,網關首先根據物理地址在表中查找它的網絡地址,然后根據網絡地址將數據發送到相應的ZigBee節點。
3.3 通信協議設計
ZigBee模塊與主控制器S3C6410之間要實現信息交互,必須采用一定格式的通訊協議。表1是網關ZigBee模塊與主控制器通訊時的幀格式,它采用32字節固定長度的幀格式與主控制器通訊,每一幀都是32字節,且帶有幀頭、數據和幀尾。除幀頭和幀尾外,每一幀數據都有功能碼、地址、有效數據和校驗位組成。幀頭為一特殊字符,占1個字節;功能碼代表本幀數據需要執行的功能類型,占3個字節;地址位共占10個字節,代表所訪問ZigBee網絡節點的網絡地址和物理地址,高8字節是物理地址,低2字節是網絡地址; 數據長度占16字節,傳送各個參數、變量與返回值及各種需要發送的數據;校驗位占1個字節,是從功能碼到數據尾的加和校驗,所得的結果為檢驗字節;幀尾為一特殊字符,占1個字節。
當網關應用程序對ZigBee網內節點控制時,首先應用程序根據通訊協議格式向串口發送帶有相應功能碼的指令,網關ZigBee模塊從串口得到該指令后,根據其中的功能碼及地址位,依據3.2節ZigBee網絡尋址方式向相應節點發送該命令,ZigBee網絡節點在接收到含有功能碼的指令后,完成相應的功能并收集相關信息。節點在收集完相關信息后,按通訊協議格式要求打包,將相應信息發往網關ZigBee模塊,網關ZigBee模塊在得到上述信息后轉發到串口,S3C6410偵聽到串口來的數據,然后將串口數據解包,即可獲得相應反饋信息。網關CGI程序根據該通訊協議,實現對ZigBee網絡的控制與管理。
4 結束語
本文設計的基于ARM處理器的網關,經測試很好的實現了ZigBee網絡與WI-FI網絡及以太網絡的通信。但需要注意的是:由于Wi-Fi信號與ZigBee信號都使用2.4G無線頻段,當其部署在同一環境中且Wi-fi信道與ZigBee信道重疊時,Wi-Fi通信會對ZigBee產生較大干擾。但在2.425GHz、2.450GHz、2.475GHz和2.480GHz四個頻段上,ZigBee頻段與Wi-Fi網絡頻段不存在重疊干擾現象,因此,ZigBee信號建議使用以上4個頻段避免Wi-Fi信號的干擾。
參考文獻(References):
[1] 余成波,李洪兵,陶紅艷.無線傳感器網絡實用教程[M].清華大學出版社,2012.
[2] 成小良,鄧志東.基于ZigBee規范構建大規模無線傳感器網絡[J].通信學報,2008.29(11):158-164
[3] S. R. Ramyah. Load Density Analysis of Mobile ZigBee Coordinator in Hexagonal Configuration[J]. Wireless Sensor Network,2012.4(3):59-64
[4] 王緒海,姚曉峰.基于嵌入式系統的物聯網網關的設計[J].信息通信,2016.157(1):64-67
[5] 張文華等.基于嵌入式Web服務器的物聯網網關設計[J].四川大學學報(自然科學版),2013.50(5):962-966