鄔歡歡 張冰潔 勞東青 李明磊
摘要:介紹了一種用于農(nóng)業(yè)智能控制的無線網(wǎng)關。該網(wǎng)關由ZigBee協(xié)調(diào)器和適配器組成,通過硬件地址和應用層端口的映射,使服務器與傳感器節(jié)點之間的通信對應起來。傳感器網(wǎng)絡中ZigBee節(jié)點的數(shù)據(jù)通過該無線網(wǎng)關的匯聚與轉(zhuǎn)換接入互聯(lián)網(wǎng),與互聯(lián)網(wǎng)側(cè)的服務平臺達成有效連接,從而實現(xiàn)對農(nóng)業(yè)現(xiàn)場的遠程監(jiān)控。測試結(jié)果表明,所實現(xiàn)的無線網(wǎng)關誤碼率小,運行穩(wěn)定可靠,可以滿足農(nóng)業(yè)監(jiān)測中對數(shù)據(jù)量要求不大的應用場景。
關鍵詞:ZigBee;農(nóng)業(yè)智能;監(jiān)控;網(wǎng)關
中圖分類號:S126;TP368.2 文獻標識碼:A 文章編號:0439-8114(2015)21-5405-03
DOI:10.14088/j.cnki.issn0439-8114.2015.21.052
Design on Wireless Gateway for Agriculture Intelligent Control
WU Huan-huan1,ZHANG Bing-jie2,LAO Dong-qing1,LI Ming-lei2
(1. College of Information Engineering, Tarim University, Alar 843300,Xinjiang, China;
2. Comba Telecom Technology Guangzhou LTD., Guangzhou 510663,China)
Abstract: In this paper a wireless gateway for intelligent agricultural control system was introduced. It is used to connect the sensor network and ethernet by mapping the MAC and port of the ZigBee sensor network. The data of ZigBee sensor node is intergrated and transferred to internet by this gateway. Through internet the server could get the data,and the server could get the data via internet. So it could monitor the agricultural field efficiently. The expermental results showed that this wireless gateway functioned well with low bit error rate, and can meet monitoring needs of agricultural environments with less demanding on the amount of data.
Key words: ZigBee; agriculture intelligent system; monitor; gateway
在物聯(lián)網(wǎng)、互聯(lián)網(wǎng)高速發(fā)展的時代,無人值守遠程智能化監(jiān)控技術(shù)在農(nóng)業(yè)上的應用也逐漸被提上日程,成為近年來的研究熱點。該技術(shù)通過布設在農(nóng)田現(xiàn)場的傳感器,采集農(nóng)作物的生長環(huán)境要素,然后將數(shù)據(jù)通過網(wǎng)絡發(fā)送到中央計算機上,再由計算機對數(shù)據(jù)進行進一步處理。已有的一些研究將ZigBee和GPRS技術(shù)相結(jié)合[1,2],組成無線監(jiān)控網(wǎng)絡進行應用。這樣的組網(wǎng)方式實現(xiàn)簡單,但成本較高。本研究設計實現(xiàn)了一種無線網(wǎng)關。將無線技術(shù)與有線技術(shù)相結(jié)合,較好地發(fā)揮了兩者的優(yōu)點。該網(wǎng)關包括硬件和軟件的設計,通過固化在芯片中的代碼完成了兩種不同協(xié)議的轉(zhuǎn)換,實現(xiàn)了ZigBee網(wǎng)絡和有線網(wǎng)絡之間的互聯(lián)。
1 系統(tǒng)概述
1.1 系統(tǒng)框架組成
無線網(wǎng)關位于ZigBee網(wǎng)絡和以太網(wǎng)之間,實現(xiàn)兩種不同協(xié)議的轉(zhuǎn)換[3]。根據(jù)接入網(wǎng)的類型可劃分為ZigBee網(wǎng)絡側(cè)和以太網(wǎng)網(wǎng)絡側(cè),其組網(wǎng)框圖見圖1。
ZigBee網(wǎng)絡側(cè)的傳感器節(jié)點根據(jù)功能的不同分為兩種類型[4]:協(xié)調(diào)器和終端節(jié)點。這里協(xié)調(diào)器節(jié)點是惟一的[5],其他各個ZigBee傳感器節(jié)點關聯(lián)上協(xié)調(diào)器,由協(xié)調(diào)器統(tǒng)一管理。傳感器節(jié)點采集到數(shù)據(jù)后匯聚到協(xié)調(diào)器發(fā)送出去[6],協(xié)調(diào)器對傳感器數(shù)據(jù)報文重組后通過串行總線發(fā)到有線網(wǎng)絡側(cè)。有線網(wǎng)絡側(cè)的適配器接收到數(shù)據(jù)后,將數(shù)據(jù)報重新封裝為TCP報文,再發(fā)送到以太網(wǎng)網(wǎng)關。同樣,遠端服務器通過以太網(wǎng)將數(shù)據(jù)發(fā)送到適配器,適配器解包發(fā)送到協(xié)調(diào)器上,協(xié)調(diào)器再發(fā)送到對應節(jié)點。ZigBee協(xié)調(diào)器和適配器共同組成無線網(wǎng)關。
1.2 系統(tǒng)數(shù)據(jù)流分析
如前所述,農(nóng)業(yè)監(jiān)控現(xiàn)場的ZigBee節(jié)點和互聯(lián)網(wǎng)上的服務器,中間跨越了ZigBee網(wǎng)絡和以太網(wǎng),節(jié)點采集的數(shù)據(jù)需要由網(wǎng)關協(xié)議轉(zhuǎn)換模塊進行封裝和解封裝的處理,如圖2所示。
1)節(jié)點到服務器的發(fā)送流程。從模型的左側(cè)開始,無線傳感器節(jié)點的數(shù)據(jù)從無線鏈路上傳到ZigBee協(xié)調(diào)器,這時的數(shù)據(jù)包含了完整的802.15.4的幀,即包含物理層包頭和物理層載荷(MAC層包頭和MAC層載荷)[7,8]。經(jīng)過協(xié)調(diào)器上802.15.4協(xié)議棧處理,將各層報頭剝離,有效數(shù)據(jù)載荷上傳到應用層,應用層將數(shù)據(jù)源地址和載荷一起打包,再通過串行鏈路直接發(fā)送出去。串行鏈路發(fā)來的數(shù)據(jù)觸發(fā)適配器中斷,進入適配器接收服務程序。在接收服務程序里首先需要解決的是區(qū)分哪個節(jié)點來的數(shù)據(jù),以及對數(shù)據(jù)幀進行劃分。
為了解決這一問題,在發(fā)送數(shù)據(jù)到串行鏈路前先對數(shù)據(jù)進行封裝:規(guī)定每個數(shù)據(jù)頭部以#SA開頭,以#ED結(jié)尾,在有效載荷之前加上節(jié)點的源地址。這里的源地址不是802.15.4協(xié)議規(guī)定的地址,而是在協(xié)調(diào)器上對節(jié)點進行重新編址,僅占一個字節(jié)。封裝后的數(shù)據(jù)格式如圖3所示。
在適配器接收服務程序?qū)?shù)據(jù)的源地址(即圖3的src)解出來,并映射到對應的TCP(socket)端口,同時被解包出來的數(shù)據(jù)作為TCP載荷發(fā)往網(wǎng)絡協(xié)議棧,在網(wǎng)絡協(xié)議棧中經(jīng)過層層封包形成以太網(wǎng)數(shù)據(jù)包發(fā)送到服務器。
2)服務器到節(jié)點的數(shù)據(jù)傳輸過程。服務器為每個節(jié)點與適配器在應用層上建立套接字socket連接,服務器首先查找待發(fā)送的節(jié)點地址,映射到對應的TCP目的端口,找到相應的socket連接。將待發(fā)送數(shù)據(jù)打包到TCP數(shù)據(jù)包載荷,通過網(wǎng)絡協(xié)議棧封包后發(fā)送到以太網(wǎng);適配器從socket連接收到數(shù)據(jù)后,解包得到數(shù)據(jù),同時根據(jù)socket的端口得到節(jié)點地址,將節(jié)點地址和數(shù)據(jù)打包發(fā)送到串行鏈路上,協(xié)調(diào)器的串行鏈路收到數(shù)據(jù),解出目的地址,再經(jīng)過802.15.4協(xié)議棧發(fā)送到無線網(wǎng)絡側(cè)。
2 無線網(wǎng)關的設計
2.1 網(wǎng)關硬件設計
本文的協(xié)議轉(zhuǎn)換模塊包含兩個部分:ZigBee協(xié)調(diào)器和適配器。ZigBee無線協(xié)調(diào)器采用德州儀器(TI)公司生產(chǎn)的SOC射頻芯片CC2530F256,片上集成高性能低功耗8051內(nèi)核、12bit ADC、2個USART等,支持ZigBee協(xié)議棧[9]。CC2530自帶了UART接口和21個GPIO。因此,可以通過UART或GPIO模擬SPI或I2C來接入串行鏈路。
適配器上需要運行網(wǎng)絡協(xié)議來處理網(wǎng)絡數(shù)據(jù),用單片機來實現(xiàn),技術(shù)上比較復雜,且運行效率低,而使用運行嵌入式Linux的SOC系統(tǒng),則能夠良好地支持網(wǎng)絡協(xié)議[10]。在本設計中,選用了高性能的ARM9芯片S3C2440,它片上集成了3個UART端口、2個SPI接口、1個I2C接口等。本設計的硬件結(jié)構(gòu)框圖見圖4。為了提高信號質(zhì)量,在CC2530前端加入功率放大器PA。CC2530通過串口與S3C2440通信,S3C2440通過MII接口外擴DM9000 PHY芯片。
2.2 軟件設計
1)無線協(xié)調(diào)器CC2530上軟件的設計。對于ZigBee協(xié)議上的應用開發(fā),TI提供的ZigBee協(xié)議棧軟件。它由硬件抽象層、通信底層、操作系統(tǒng)抽象層等構(gòu)成,提供針對用戶開發(fā)的應用庫。用戶只需要在對應的層次上加入自己的代碼即可運行。在本研究設計中,在硬件抽象層加入串口收發(fā)驅(qū)動代碼,在系統(tǒng)主程序加入解包和打包函數(shù)。主要包括:①在協(xié)調(diào)器上將每個ZigBee節(jié)點抽象為一個zigbee_client對象,它包括的信息為節(jié)點的MAC地址,端口port,port是協(xié)調(diào)器上分配的,初始為0,buf保存有效載荷,connection_state是關聯(lián)狀態(tài);②在send_pack_buf中將數(shù)據(jù)幀的數(shù)據(jù)依次發(fā)出;③在recv_pack_buf中,先解包,查看是否包含了開始和結(jié)束標志,沒有則表示幀錯誤,直接丟棄。如果幀正確,則接著查找是否存在對應的client,如果沒有則直接返回。存在對應的client,則將client的buf指向數(shù)據(jù)緩沖區(qū)。
2)適配器上軟件的設計。適配器上運行Linux操作系統(tǒng),Linux操作系統(tǒng)是多任務多線程的操作系統(tǒng)。因此不同于單線程系統(tǒng),這里可將各個功能放到子線程中實現(xiàn)。比如串口接收,在主線程中打開串口設備后單獨創(chuàng)建一個接收子線程,在子線程中通過select方法進行數(shù)據(jù)監(jiān)聽,當有串口數(shù)據(jù)時到來時進行處理,如圖5所示。對于網(wǎng)絡通信,主線程中為在線節(jié)點創(chuàng)建與遠端服務器通信的socket連接,將這些socket連接掛接到全局鏈表上。建立監(jiān)聽線程,當接收到數(shù)據(jù)時進行處理。因為存在多路同時訪問串口的情形,在處理串口訪問上,采用信號量來進行同步。
3 試驗分析
在空曠地對無線網(wǎng)關的實際性能進行測試,分別關聯(lián)上2、4、8、12個終端節(jié)點,波特率為115 200 bps, 包長為32 Byte,以不同的通信間隔和距離進行測試,結(jié)果如表1所示。由表1可見,關聯(lián)的節(jié)點數(shù)和通信距離是影響通信質(zhì)量最重要的因素。關聯(lián)的節(jié)點越多,無線信道競爭和干擾越大;而距離越遠,由于信號衰減,造成信號質(zhì)量下降。為了提高抗干擾性能,通過提高通信間隔,可以降低通信誤碼率。在農(nóng)業(yè)現(xiàn)場,由于天氣變化的尺度往往在小時以上的數(shù)量級。因此,通過此方法來提高通信系統(tǒng)性能是可行的。在通信距離上,則需要進一步提高硬件質(zhì)量,提高接收端放大器性能或適當提高發(fā)射端發(fā)射功率來改善。
4 小結(jié)
ZigBee無線網(wǎng)關解決了從近距離無線局域網(wǎng)向互聯(lián)網(wǎng)延伸的問題,為野外觀測現(xiàn)場和遠程服務器之間搭建了一條通道。該無線網(wǎng)關具有功耗少,成本低、簡單實用,適合用于農(nóng)業(yè)監(jiān)測中對數(shù)據(jù)量要求不大的場景。
參考文獻:
[1] 于寶堃,胡 瑜.GIS和ZigBee技術(shù)在農(nóng)業(yè)溫室監(jiān)測系統(tǒng)中的應用[J].湖北農(nóng)業(yè)科學,2014,53(1):211-215.
[2] 姜立明,莊衛(wèi)東.ZigBee/GPGS技術(shù)在精準農(nóng)業(yè)中的應用研究[J].農(nóng)機化研究,2014(4):179-182.
[3] 仲偉波,李忠梅,石 婕,等.一種用于設施農(nóng)業(yè)的ZigBee-WIFI網(wǎng)關研制[J].計算機科學,2014,41(6A):484-486.
[4] 劉華駿,降愛蓮.基于WSNs的設施農(nóng)業(yè)環(huán)境遠程監(jiān)控系統(tǒng)設計[J].傳感器與微系統(tǒng),2013,32(12):97-99.
[5] 孔曉紅,宋長源,王亞君.基于物聯(lián)網(wǎng)的農(nóng)作物生長監(jiān)控系統(tǒng)[J].湖北農(nóng)業(yè)科學,2014,53(20):4983-4985.
[6] 陳克濤,張海輝,張永猛,等.基于CC2530的無線傳感器網(wǎng)絡網(wǎng)關節(jié)點的設計[J].西北農(nóng)林科技大學學報(自然科學版),2014,42(5):183-188.
[7] 王建平,周辰飛,朱程輝,等.一種ZigBee-TCP/IP無縫網(wǎng)關模型[J].合肥工業(yè)大學學報(自然科學版),2013,36(9):1058-1062.
[8] 楊 松,胡國榮,徐沛成.基于CC2530的ZigBee協(xié)議MAC層設計與實現(xiàn)[J].計算機工程與設計,2013,34(11):3840-3844.
[9] 莊立運,魯 慶,王曉輝.基于CC2530的大棚溫濕度無線采集節(jié)點設計與實現(xiàn)[J].湖北農(nóng)業(yè)科學,2014,53(3):582-585.
[10] 王麗芬,馬明濤.基于ARM的農(nóng)業(yè)環(huán)境因子監(jiān)測系統(tǒng)的設計的探析[J].中國農(nóng)機化學報,2013,34(4):231-233.