現(xiàn)代農(nóng)業(yè)將電子、計(jì)算機(jī)、通信和自動(dòng)化控制等信息技術(shù)融合在一起引入到精細(xì)農(nóng)業(yè)生產(chǎn)中。定量的獲取和分析農(nóng)業(yè)環(huán)境參數(shù),對(duì)關(guān)鍵性指標(biāo)進(jìn)行分析,有利于實(shí)現(xiàn)精細(xì)的農(nóng)業(yè)生產(chǎn)控制。農(nóng)業(yè)監(jiān)測(cè)目標(biāo)具有分散性、多樣性、偏僻等特點(diǎn),利用傳統(tǒng)的人工或者有線的監(jiān)測(cè)方式在人力、系統(tǒng)成本上都是嚴(yán)重的負(fù)擔(dān)[1]。
無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大量的廉價(jià)微型傳感器節(jié)點(diǎn)組成,通過(guò)無(wú)線通信方式形成的一個(gè)多跳的自組織的網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作地感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中感知對(duì)象的信息,并發(fā)送給觀察者。
無(wú)線傳感器網(wǎng)絡(luò)的特點(diǎn)非常適合野外環(huán)境下的農(nóng)田環(huán)境參數(shù)的監(jiān)測(cè),本文就是針對(duì)監(jiān)測(cè)農(nóng)田區(qū)域的土壤溫濕度的需求,設(shè)計(jì)了一種基于zigbee的農(nóng)田大氣溫濕度的監(jiān)測(cè)系統(tǒng)。
傳感器網(wǎng)絡(luò)的特點(diǎn)之一即以數(shù)據(jù)為中心構(gòu)建面向野外環(huán)境的無(wú)線網(wǎng)絡(luò),獲取特定區(qū)域特定時(shí)間段的相關(guān)數(shù)據(jù),并將數(shù)據(jù)提供給數(shù)據(jù)需求者,為其提供數(shù)據(jù)支撐與服務(wù)。
本系統(tǒng)總體架構(gòu)主要由兩部分組成。一是分布在目標(biāo)監(jiān)測(cè)區(qū)的無(wú)線傳感器網(wǎng)絡(luò),二是網(wǎng)絡(luò)服務(wù)中心的服務(wù)器與可視化網(wǎng)絡(luò)管理軟件,兩者通過(guò)GPRS與IP網(wǎng)絡(luò)建立連接,實(shí)現(xiàn)實(shí)時(shí)通信。
目標(biāo)監(jiān)測(cè)區(qū)內(nèi)無(wú)線傳感器網(wǎng)絡(luò)由多個(gè)采集節(jié)點(diǎn)組成,它們能自組織形成網(wǎng)絡(luò)并完成相關(guān)數(shù)據(jù)采集與處理。采集得到的數(shù)據(jù)被匯聚至網(wǎng)關(guān)節(jié)點(diǎn),并通過(guò)GPRS等遠(yuǎn)程無(wú)線通信方式發(fā)送至服務(wù)中心。同時(shí),網(wǎng)關(guān)能夠接收來(lái)自服務(wù)中心的命令,并將其轉(zhuǎn)發(fā)至無(wú)線傳感器網(wǎng)絡(luò)中,進(jìn)而完成遠(yuǎn)程對(duì)該網(wǎng)絡(luò)的控制與管理。
圖3.1 無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)
圖3.2 SHT10傳感器與CC2430之間通信示意圖
圖3.3 測(cè)量工作時(shí)序圖
服務(wù)中心一方面運(yùn)行網(wǎng)絡(luò)數(shù)據(jù)管理軟件,完成對(duì)傳感網(wǎng)數(shù)據(jù)進(jìn)行接收、解析與存儲(chǔ),并能對(duì)監(jiān)測(cè)區(qū)域的網(wǎng)絡(luò)進(jìn)行相關(guān)控制與管理;該部分采用C/S架構(gòu),每個(gè)監(jiān)測(cè)區(qū)域網(wǎng)關(guān)節(jié)點(diǎn)均為作為一個(gè)客戶端。
傳感器網(wǎng)絡(luò)節(jié)點(diǎn)由傳感單元、數(shù)據(jù)處理單元、無(wú)線通信單元和供電單元等幾部分組成。圖3.1為無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)示意圖。
傳感單元負(fù)責(zé)監(jiān)測(cè)區(qū)域內(nèi)的信息的采集和數(shù)據(jù)的轉(zhuǎn)換;數(shù)據(jù)處理單元負(fù)責(zé)控制和協(xié)調(diào)節(jié)點(diǎn)各部分的工作,存儲(chǔ)和處理自身采集的數(shù)據(jù)以及其他節(jié)點(diǎn)收發(fā)來(lái)的數(shù)據(jù);無(wú)線通信單元負(fù)責(zé)與其它傳感器節(jié)點(diǎn)進(jìn)行通信,交換控制信息和收發(fā)采集數(shù)據(jù);供電單元為傳感器節(jié)點(diǎn)提供運(yùn)行所需的能量。處理器模塊和無(wú)線通信模塊采用了TI公司的CC2430芯片,傳感器模塊采用了SHT10溫濕度傳感器。
CC2430芯片在單個(gè)芯片上整合了ZigBee射頻(RF)前端、內(nèi)存和微控制器。使用1個(gè)8位MCU(8051),具有128KB可編程閃存和8KB的RAM,還包含模擬數(shù)字轉(zhuǎn)換器、定時(shí)器、協(xié)同處理器、看門狗定時(shí)器、32kHz晶振的休眠模式定時(shí)器、上電復(fù)位電路、掉電檢測(cè)電路,以及21個(gè)可編程I/O引腳[2]。
圖4.1 協(xié)調(diào)器、路由器及終端設(shè)備工作流程
圖4.2 Z-Stack OSAL任務(wù)調(diào)度與處理流程圖
大氣溫濕度傳感器采用瑞士Sensirion公司的數(shù)字化溫濕度傳感器SHT10。該傳感器由1個(gè)電容式聚合體測(cè)濕元件和1個(gè)能隙式測(cè)溫元件組成,并與1個(gè)14位A/D轉(zhuǎn)換器以及1個(gè)2-wire數(shù)字接口在單芯片中無(wú)縫結(jié)合。
SHT10傳感器與CC2430之間通過(guò)I2C接口進(jìn)行通信,如圖3.2所示。
測(cè)量工作時(shí)序圖如圖3.3所示。
3.4.1 啟動(dòng)傳感器
首先,選擇供電電壓后將傳感器通電,上電速率不能低于1V/ms。通電后傳感器需要11ms進(jìn)入休眠狀態(tài),在此之前不允許對(duì)傳感器發(fā)送任何命令。
3.4.2 發(fā)送命令
用一組“啟動(dòng)傳輸”時(shí)序,來(lái)完成數(shù)據(jù)傳輸?shù)某跏蓟?。它包括:?dāng)SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為低電平,緊接著SCK變?yōu)榈碗娖?,隨后是在SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為高電平。后續(xù)命令包含三個(gè)地址位(目前只支持000”),和五個(gè)命令位。SHT1x會(huì)以下述方式表示已正確地接收到指令:在第8個(gè)SCK時(shí)鐘的下降沿之后,將DATA下拉為低電平(ACK位)。在第9個(gè)SCK時(shí)鐘的下降沿之后,釋放DATA(恢復(fù)高電平)。
3.4.3 溫濕度測(cè)量
發(fā)布一組測(cè)量命令后,控制器要等待測(cè)量結(jié)束。這個(gè)過(guò)程需要大約20/80/320ms,分別對(duì)應(yīng)8/12/14bit測(cè)量。SHT1x通過(guò)下拉DATA至低電平并進(jìn)入空閑模式,表示測(cè)量的結(jié)束??刂破髟谠俅斡|發(fā)SCK時(shí)鐘前,必須等待這個(gè)“數(shù)據(jù)備妥”信號(hào)來(lái)讀出數(shù)據(jù)。檢測(cè)數(shù)據(jù)可以先被存儲(chǔ),這樣控制器可以繼續(xù)執(zhí)行其它任務(wù)在需要時(shí)再讀出數(shù)據(jù)。接著傳輸2個(gè)字節(jié)的測(cè)量數(shù)據(jù)和1個(gè)字節(jié)的CRC奇偶校驗(yàn)(可選擇讀取)。uC需要通過(guò)下拉DATA為低電平,以確認(rèn)每個(gè)字節(jié)。所有的數(shù)據(jù)從MSB開(kāi)始,右值有效。在收到CRC的確認(rèn)位之后,表明通訊結(jié)束。
3.4.4 通訊復(fù)位時(shí)序
如果與SHT1x通訊中斷,可通過(guò)下列信號(hào)時(shí)序復(fù)位:當(dāng)DATA保持高電平時(shí),觸發(fā)SCK時(shí)鐘9次或更多,接著發(fā)送一個(gè)“傳輸啟動(dòng)”時(shí)序。這些時(shí)序只復(fù)位串口,狀態(tài)寄存器內(nèi)容仍然保留。
ZigBee網(wǎng)絡(luò)中,設(shè)備分為協(xié)調(diào)器、路由器和終端設(shè)備。協(xié)調(diào)器主要功能是建立ZigBee網(wǎng)絡(luò),當(dāng)網(wǎng)絡(luò)建立完成后,協(xié)調(diào)器退化為普通路由器,另外協(xié)調(diào)器還可以用于配置網(wǎng)絡(luò)安全及應(yīng)用層設(shè)備綁定。路由器執(zhí)行路由功能,主要包括:允許其他設(shè)備加入網(wǎng)絡(luò);支持多跳網(wǎng)絡(luò);存儲(chǔ) 子節(jié)點(diǎn)處于休眠狀態(tài)的消息。終端設(shè)備僅需完成對(duì)數(shù)據(jù)采集,可周期休眠與喚醒,以降低系統(tǒng)能耗。三者主要工作流程如圖4.1所示。
圖5.1 Linux套接字通信流程
Z-Stack的核心是任務(wù)系統(tǒng)。協(xié)議棧為每個(gè)模塊定義一個(gè)任務(wù),用于處理模塊內(nèi)部的所有事件。所有任務(wù)均在OSAL初始化時(shí)被添加到任務(wù)列表,不同任務(wù)具有不同優(yōu)先級(jí),高優(yōu)先級(jí)任務(wù)會(huì)被操作系統(tǒng)優(yōu)先調(diào)度和執(zhí)行。通過(guò)輪轉(zhuǎn)查詢的調(diào)度方式,OSAL完成各模塊定義的所有功能。
在Z-Stack中,任務(wù)由函數(shù)osalInitTasks初始化,并通過(guò)tasksArr指 向任務(wù)的處理函數(shù)。根據(jù)任務(wù)優(yōu)先級(jí),二者需依次添加MAC、NWK、HAL、APS、ZDO和用戶自定義任務(wù)App。操作系統(tǒng)任務(wù)調(diào)度和處理流程如4.2所示。
傳感器的數(shù)據(jù)采集任務(wù)就可以當(dāng)作應(yīng)用層任務(wù),我們需要編寫任務(wù)初始化函數(shù)和任務(wù)處理函數(shù),每當(dāng)采集周期到來(lái)時(shí),我們進(jìn)行一次采集,也就是對(duì)SHT10的一次讀寫操作,然后將數(shù)據(jù)打包發(fā)送到協(xié)調(diào)器,協(xié)調(diào)器將數(shù)據(jù)發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)通過(guò)GPRS將數(shù)據(jù)發(fā)送給遠(yuǎn)端的服務(wù)器。
傳感器終端節(jié)點(diǎn)采用星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),該結(jié)構(gòu)由一個(gè)協(xié)調(diào)器和多個(gè)終端傳感節(jié)點(diǎn)構(gòu)成。終端節(jié)點(diǎn)只能與協(xié)調(diào)器直接進(jìn)行通信,各個(gè)終端之間不需直接進(jìn)行通信。對(duì)于終端節(jié)點(diǎn),其流程較簡(jiǎn)單,設(shè)置好定時(shí)器中斷,每隔一定時(shí)間讀取傳感器數(shù)據(jù),并將其發(fā)送至相鄰的協(xié)調(diào)節(jié)點(diǎn),發(fā)送完后便進(jìn)入待機(jī)狀態(tài),直到定時(shí)中斷的再次到來(lái)[3]。
網(wǎng)關(guān)節(jié)點(diǎn)是指完成無(wú)線傳感器網(wǎng)絡(luò)與外部(如因特網(wǎng)中的服務(wù)器,便攜設(shè)備)數(shù)據(jù)交互的節(jié)點(diǎn),一方面,能將傳感器網(wǎng)絡(luò)匯聚的數(shù)據(jù)轉(zhuǎn)發(fā)至外部服務(wù)器;另一方面,能接收并解析外部數(shù)據(jù),將其送至傳感器網(wǎng)絡(luò)。網(wǎng)關(guān)節(jié)點(diǎn)同時(shí)歸屬于各異構(gòu)網(wǎng)絡(luò)。
網(wǎng)關(guān)由ARM+GPRS模塊+CC2430組成,CC2430作為zigbee網(wǎng)絡(luò)的協(xié)調(diào)器與傳感器節(jié)點(diǎn)通信,并收發(fā)數(shù)據(jù)的命令,GPRS模塊作為TCP/IP網(wǎng)絡(luò)的接入點(diǎn),與服務(wù)器進(jìn)行通信[4]。
GPRS設(shè)備先與GSM基站通信,接著GPRS分組被基站發(fā)送到SGSN,(與電路交換式數(shù)據(jù)呼叫不同,電路交換式是通過(guò)移動(dòng)交換中心(MSC)連接到語(yǔ)音網(wǎng)絡(luò)上)。接著SGSN與GGSN進(jìn)行通信;GGSN對(duì)分組進(jìn)行響應(yīng)的處理,再發(fā)送到目的網(wǎng)絡(luò)。來(lái)自Internet,標(biāo)識(shí)有移動(dòng)臺(tái)地址的IP包,由GGSN接受,再轉(zhuǎn)發(fā)到SGSN,繼而傳送到移動(dòng)臺(tái)上。
Socket是一個(gè)通用的網(wǎng)絡(luò)編程接口,它描述了一個(gè)連接的一個(gè)端點(diǎn),提供網(wǎng)絡(luò)應(yīng)用程序中所用到的網(wǎng)絡(luò)地址和端口號(hào)信息,對(duì)所包含的數(shù)據(jù)量沒(méi)有限制。如5.1所示,一個(gè)連接的建立開(kāi)始于TCP客戶機(jī)創(chuàng)建一個(gè)套接字,然后調(diào)用Connect函數(shù)啟動(dòng)TCP協(xié)議的三握手操作,并與遠(yuǎn)程服務(wù)器建立連接。在服務(wù)器方面,當(dāng)套接字建立以后,調(diào)用函數(shù)bind綁定自己的公認(rèn)端口號(hào),然后調(diào)用函數(shù)listen準(zhǔn)備接收客戶端請(qǐng)求,最后調(diào)用函accept完成接收,這樣一次通信宣告結(jié)束如圖5.1所示。
數(shù)據(jù)服務(wù)器主要負(fù)責(zé)WSN數(shù)據(jù)的接收、解析、存儲(chǔ)和顯示,同時(shí)它也作為WSN的管理和控制者通過(guò)發(fā)送命令可以對(duì)WSN進(jìn)行配置,例如節(jié)點(diǎn)的休眠和喚醒、改變采樣周期等。
本軟件基于QT設(shè)計(jì),監(jiān)聽(tīng)服務(wù)器IP端口的數(shù)據(jù),并對(duì)接收到的數(shù)據(jù)作出處理。軟件主要包括實(shí)時(shí)數(shù)據(jù)解析與顯示、實(shí)時(shí)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)顯示、監(jiān)測(cè)量變化曲線、網(wǎng)絡(luò)行為控制以及數(shù)據(jù)庫(kù)等部分。
該部分的功能是以列表的形式將接收到的數(shù)據(jù)解析并根據(jù)相數(shù)據(jù)類型將傳感信息實(shí)時(shí)顯示出來(lái)。這些信息包括節(jié)點(diǎn)硬件ID、節(jié)點(diǎn)工作狀態(tài)、網(wǎng)絡(luò)地址、父設(shè)備地址、空氣溫度、空氣濕度等信息。用戶可以選擇某條數(shù)據(jù)查看詳細(xì)信息。
節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀中包含設(shè)備及其父設(shè)備網(wǎng)絡(luò)地址,結(jié)合ZigBee協(xié)議規(guī)范中分布式網(wǎng)絡(luò)地址分配方式,即可獲取整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。軟件設(shè)計(jì)中建立節(jié)點(diǎn)拓?fù)鋽?shù)據(jù)庫(kù),將接收數(shù)據(jù)中的新節(jié)點(diǎn)拓?fù)湫畔⒓尤肫渲校涣硗?,設(shè)置節(jié)點(diǎn)超時(shí)時(shí)間,即當(dāng)一定時(shí)間內(nèi)未收到該節(jié)點(diǎn)數(shù)據(jù)時(shí),認(rèn)為該節(jié)點(diǎn)已失效,將其從拓?fù)鋽?shù)據(jù)庫(kù)中刪除。因此,拓?fù)鋽?shù)據(jù)庫(kù)中會(huì)一直保持準(zhǔn)實(shí)時(shí)的網(wǎng)絡(luò)拓?fù)?,?jù)此可畫出網(wǎng)絡(luò)拓?fù)浼軜?gòu)。
傳感器網(wǎng)絡(luò)以數(shù)據(jù)為中心,該系統(tǒng)構(gòu)建目的亦是獲取相關(guān)傳感數(shù)據(jù),為多尺度協(xié)同觀測(cè)提供數(shù)據(jù)支撐。因此,數(shù)據(jù)庫(kù)是本軟件核心。軟件使用MySQL數(shù)據(jù)庫(kù),接收到的數(shù)據(jù)通過(guò)校驗(yàn)并解析后存儲(chǔ)至其中。
該部分主要功能是通過(guò)與現(xiàn)場(chǎng)網(wǎng)關(guān)已建立的TCP連接,通過(guò)發(fā)送相關(guān)指令控制傳感器網(wǎng)絡(luò)采樣頻率、采樣精度等。目前該部分功能是通過(guò)用戶輸入相關(guān)控制指令手動(dòng)發(fā)送運(yùn)行。
本文針對(duì)農(nóng)田大氣溫濕度監(jiān)測(cè)需求,提出了基于無(wú)線傳感器網(wǎng)絡(luò)的監(jiān)測(cè)方案,給出了傳感器網(wǎng)絡(luò)設(shè)計(jì)、網(wǎng)關(guān)節(jié)點(diǎn)設(shè)計(jì)和數(shù)據(jù)服務(wù)器的設(shè)計(jì)實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果表明,本方案能夠滿足長(zhǎng)時(shí)間、低功耗、高可靠性等觀測(cè)需求,在滑坡監(jiān)測(cè)等環(huán)境監(jiān)測(cè)領(lǐng)域,有著良好的應(yīng)用前景。
[1]江朝輝,焦俊,潘煒,李紹穩(wěn).基于Zigbee的農(nóng)業(yè)通用無(wú)線監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].安徽農(nóng)業(yè)科學(xué),2010,38(6):3149-3151.
[2]尹應(yīng)鵬,李平舟,郭志華.基于CC2430的Zigbee無(wú)線數(shù)傳模塊的設(shè)計(jì)和實(shí)現(xiàn)[J].電子元器件應(yīng)用,2008,10(4):18-21.
[3]劉廣林,汪秉文,唐旋來(lái).基于ZigBee無(wú)線傳感器網(wǎng)絡(luò)的農(nóng)業(yè)環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2010,38(10):57-60.
[4]鞏浩,屈玉貴.基于短距無(wú)線通信與3G的無(wú)線集中抄表系統(tǒng)[J].計(jì)算機(jī)工程,2011(1):290-292.