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