廖建尚
摘 要:通過分析ZigBee協(xié)議,利用物聯(lián)網(wǎng)架構,完成了基于CC2530和ZigBee的智能農(nóng)業(yè)溫濕度采集系統(tǒng)的硬件和軟件設計,實現(xiàn)了節(jié)點數(shù)據(jù)采集、網(wǎng)絡模塊設計和數(shù)據(jù)封裝設計,實現(xiàn)了農(nóng)業(yè)大棚的溫度、濕度環(huán)境信息的采集,達到了良好效果,從而為實現(xiàn)智能農(nóng)業(yè)溫室大棚的環(huán)境信息采集提供了一種科學方法。
關鍵詞:ZigBee;物聯(lián)網(wǎng);智能農(nóng)業(yè);溫濕度采集
中圖分類號:TP391 文獻標識碼:A 文章編號:2095-1302(2015)08-00-05
0 引 言
我國目前農(nóng)村務農(nóng)人數(shù)正在不斷減少,原先的個體小規(guī)模種植模式也將會向大規(guī)模種植管理模式轉(zhuǎn)變,實現(xiàn)由少數(shù)人完成農(nóng)業(yè)生產(chǎn)任務,這種發(fā)展趨勢必然要由科學技術來承載。因此提高效率,減少傳統(tǒng)的人員操作是對未來農(nóng)業(yè)發(fā)展的要求[1-3]。農(nóng)業(yè)的智能化、自動化也是未來農(nóng)業(yè)的發(fā)展方向。我國農(nóng)業(yè)主要呈現(xiàn)以下幾個方面的現(xiàn)狀[4]:
(1)農(nóng)業(yè)的信息化、智能化程度低。我國現(xiàn)在大部分地方依然是靠傳統(tǒng)的人力農(nóng)業(yè)生產(chǎn),科技在農(nóng)業(yè)方面的應用水平也較低。農(nóng)業(yè)的發(fā)展急需科技方面的資金、技術,因此需要科研人員在農(nóng)業(yè)的信息化、智能化方面進行更多的科研投入。
(2)隨著經(jīng)濟社會的發(fā)展,務工人數(shù)增多,導致農(nóng)村務農(nóng)人數(shù)減少,出現(xiàn)土地荒廢的情況,這也決定了今后農(nóng)業(yè)生產(chǎn)活動必將由少數(shù)人來完成。
(3)我國是一個農(nóng)業(yè)大國,對農(nóng)作物產(chǎn)品的需求也是極其龐大的,而受季節(jié)影響,農(nóng)作物的生產(chǎn)只能按季種植。因此,農(nóng)業(yè)大棚的產(chǎn)生與應用,促進了農(nóng)作物的年產(chǎn)量,減小了季節(jié)對作物生長的限制。農(nóng)業(yè)大棚的數(shù)量在大規(guī)模增加,農(nóng)業(yè)大棚目前信息化、智能化程度低,大部分管理工作仍需人工完成。
本文采用 ZigBee 無線傳輸技術構建無線傳感網(wǎng)絡,研究應用物聯(lián)網(wǎng)和云平臺技術實時收集農(nóng)業(yè)大棚的環(huán)境信息,如空氣溫度、空氣濕度等,并根據(jù)需要進行實時控制,農(nóng)業(yè)環(huán)境信息可以幫助專業(yè)機構對數(shù)據(jù)進行分析、整理、融合,并對災害進行預測。利用物聯(lián)網(wǎng)技術在農(nóng)業(yè)上的應用,可以促進科學種植,提高產(chǎn)品綜合效益,進一步實現(xiàn)農(nóng)業(yè)生產(chǎn)的自動化和信息化。
1 ZigBee協(xié)議
基于IEEE 802.15.4標準的ZigBee技術是一種近距離低復雜度低功耗低速率低成本的雙向無線通訊技術,目前廣泛應用到了物聯(lián)網(wǎng)、家庭自動化、家庭安防、工業(yè)與環(huán)境控制等領域[5]。
ZigBee網(wǎng)絡中存在三種邏輯設備類型:協(xié)調(diào)器(Coordinator),路由器(Router)和終端設備(End-Device)。一個ZigBee網(wǎng)絡由一個協(xié)調(diào)器、多個路由器和多個終端設備組成。
1.1 ZigBee協(xié)議的實現(xiàn)
1.1.1 協(xié)調(diào)器(Coordinator)
協(xié)調(diào)器負責啟動整個網(wǎng)絡,它也是網(wǎng)絡的第一個設備。協(xié)調(diào)器選擇一個信道和一個網(wǎng)絡ID(PAN ID,即Personal Area Network ID),隨后啟動整個網(wǎng)絡。協(xié)調(diào)器的角色主要涉及啟動和配置網(wǎng)絡,一旦這些工作都完成后,協(xié)調(diào)器就類似一個路由器。
1.1.2 路由器(Router)
路由器的功能主要是允許其他終端設備加入網(wǎng)絡,在進行數(shù)據(jù)收發(fā)之前,必須加入一個由協(xié)調(diào)器啟動的ZigBee網(wǎng)絡,加入網(wǎng)絡后,允許路由和終端節(jié)點加入,可以對網(wǎng)絡中的數(shù)據(jù)進行路由 ,必須常電供電,不能進入睡眠模式,可以為睡眠的終端節(jié)點保留數(shù)據(jù),至其喚醒后獲取。
1.1.3 終端設備(End-Device)
終端設備用于數(shù)據(jù)采集或者執(zhí)行控制任務,在進行數(shù)據(jù)收發(fā)之前,必須加入一個由協(xié)調(diào)器啟動的ZigBee網(wǎng)絡,不能允許其他設備加入,必須通過其父節(jié)點收發(fā)數(shù)據(jù),不能對網(wǎng)絡中的數(shù)據(jù)進行路由,可由電池供電,進入睡眠模式。
1.2 ZigBee協(xié)議的實現(xiàn)
ZigBee協(xié)議有物理層、MAC層、應用層、網(wǎng)絡層組成,如圖2所示,物理層通過物理層數(shù)據(jù)服務接入點(PD-SAP)提供物理層數(shù)據(jù)服務;MAC層提供特定服務會聚子層和物理層之間的接口,通過MAC公共部分子層的數(shù)據(jù)SAP提供MAC數(shù)據(jù)服務;應用層支持子層提供了網(wǎng)絡層和應用層之間的接口,功能是通過ZDO和定義的應用對象都可以使用的一組服務來實現(xiàn);網(wǎng)絡層提供的服務包括配置新設備、創(chuàng)建新網(wǎng)絡、設備請求加入/離開網(wǎng)絡和ZigBee協(xié)調(diào)器或路由器請求設備離開網(wǎng)絡、尋址、近鄰發(fā)現(xiàn)、路由發(fā)現(xiàn)、接收控制等功能。
1.2.1 Z-Stack
Z-Stack[6,7]是TI公司開發(fā)的開源ZigBee協(xié)議棧,Stack協(xié)議棧中提供了一個名為操作系統(tǒng)抽象層OSAL的協(xié)議棧調(diào)度程序, Z-Stack協(xié)議棧操作的具體實現(xiàn)細節(jié)都被封裝在庫代碼中,開發(fā)者直接調(diào)用API,無需知道協(xié)議棧的實現(xiàn)過程。Z-Stack采用分層的軟件結(jié)構定義了通信硬件和軟件在每個分層里怎樣協(xié)調(diào)工作,協(xié)議棧的各層相對獨立,每一層都提供相應的服務,設計者只關心與他的工作直接相關的那些層的協(xié)議,為設計帶來極大的方便,協(xié)議棧的每個工程都包含用戶應用層、硬件抽樣層、物理層、網(wǎng)絡層、操作系統(tǒng)抽樣層和設備對象層等目錄文件。
任務的執(zhí)行通過系統(tǒng)消息進行調(diào)用,在初始化函數(shù)osalInitTasks中對任務進行初始化,為每一個任務分配一個ID號,任務保存在tasksArr[]數(shù)組,通過循環(huán)查詢獲取相應的ID號進入對應的任務處理程序,本課題研究采用的是SampleApp_ProcessEvent這個任務。
1.2.2 Z-Stack協(xié)調(diào)器、終端和路由器的聯(lián)網(wǎng)過程
首先,ZigBee協(xié)調(diào)器上電以后,周期發(fā)送空的數(shù)據(jù)包,在允許通道內(nèi)搜索其他ZigBee協(xié)調(diào)器,并基于每個允許通道中所檢測到的通道能量及網(wǎng)絡號,選擇惟一的16位PAN ID,建立自己的網(wǎng)絡[4]。一旦一個新網(wǎng)絡被建立,ZigBee路由器與終端設備就可以加入到網(wǎng)絡中了。而終端設備上電以后,重復發(fā)送信標請求,要求加入到最近的網(wǎng)絡中。當協(xié)調(diào)器發(fā)現(xiàn)終端設備發(fā)出的信標請求,則響應一個超幀結(jié)構,用于設備間的同步,一旦同步成功,則實現(xiàn)圖5中的關聯(lián)過程,由終端設備向協(xié)調(diào)器發(fā)送關聯(lián)請求,協(xié)調(diào)器同意則回應終端設備并自動分配16位的短地址,至此,兩者組網(wǎng)成功[7]。
2 硬件設計
為了使用Z-Stack無線通信協(xié)議,本研究的硬件模塊用CC2530實現(xiàn),TI公司已經(jīng)在CC2530集成了ZigBee系統(tǒng),CC2530設備使用8051CPU內(nèi)核[8]。它有三個不同的存儲器訪問總線(SFR、DATA和CODE/XDATA),以單周期訪問SFR、DATA和主SRAM。它還包括一個調(diào)試接口和一個18輸入輸出的擴展中斷單元,CC2530提供了一2.4 GHz的IEEE802.15.4兼容無線收發(fā)器。RF內(nèi)核控制模擬無線模塊。
DHT11數(shù)據(jù)通信是單總線協(xié)議,只要一根數(shù)據(jù)線就可以完成數(shù)據(jù)通信,接法簡單,除去兩個電源接口后,將其數(shù)據(jù)接口接入CC2530的一個GPIO口,本設計將數(shù)據(jù)接口接入CC2530的P1_0。
3 軟件設計
結(jié)合ZigBee的協(xié)議,將軟件設計分成節(jié)點數(shù)據(jù)采集模塊、節(jié)點監(jiān)測模塊、協(xié)調(diào)器網(wǎng)絡通信模塊,數(shù)據(jù)采集模塊主要完成DHT11的溫濕度采集;節(jié)點監(jiān)測模塊負責將節(jié)點數(shù)據(jù)發(fā)送到協(xié)調(diào)器;協(xié)調(diào)器的網(wǎng)絡模塊設計負責將收集的數(shù)據(jù)發(fā)送到云終端服務器。
3.1 節(jié)點數(shù)據(jù)采集模塊設計
采集濕度和溫度DHT11與CC2530之間能采用簡單的單總線進行通信[8],僅僅需要一個口數(shù)據(jù)格式采用單總線格式,即單個數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸,其數(shù)據(jù)包由5個字節(jié)組成,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40位,具體的數(shù)據(jù)格式為: 8位濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8位溫度整數(shù)數(shù)據(jù)+8位溫度小數(shù)數(shù)據(jù)+8位校驗和,校驗和數(shù)據(jù)等于“8 b濕度整數(shù)數(shù)據(jù)+8 b濕度小數(shù)數(shù)據(jù)+8 b溫度整數(shù)數(shù)據(jù)+8 b溫度小數(shù)數(shù)據(jù)”等于結(jié)果的末8位。
根據(jù)0時序和1時序圖可知,其區(qū)別在于總線拉低50 μs后,自動拉高,這時候延時大約30 μs,判斷是否高電平,如果總線拉低了,則表示為數(shù)字0;如果總線還是高電平,則表示數(shù)字1。圖4所示識別0和1信號的程序及代碼。
數(shù)據(jù)由5個字節(jié)組成,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,根據(jù)0和1時序圖,每個字節(jié)有8位組成,即每次循環(huán)讀取8位,共讀5次,實現(xiàn)流程和代碼如圖5所示。
圖6是CC2530讀取DHT11數(shù)據(jù)的時序圖。根據(jù)圖6,設計的讀取數(shù)據(jù)流程如下:
(1)拉低總線,通過設計連接的IO口將其拉低;(2)延時18 ms,拉高總線;(3)延時40 us,等待總線拉低,如果總線拉低,說明DHT11有響應信號;(4)將總線拉高,開始輸出數(shù)據(jù);(5)讀取濕度整數(shù)部分;(6)讀取濕度小數(shù)部分;(7)讀取溫度整數(shù)部分;(8)讀取溫度小數(shù)部分;(9)讀取校驗位;(10)數(shù)據(jù)讀取后,拉高總線。
DHT11的數(shù)據(jù)接口設計后,通過調(diào)用DHT11_read接口,把溫度和濕度值讀取出來。
3.2 網(wǎng)絡模塊設計
3.2.1 終端監(jiān)測模塊的網(wǎng)絡模塊設計
ZigBee設備有兩種類型的地址。一種是64位IEEE地址,即MAC地址,稱為長地址,可以利用NLME_GetExtAddr()獲取,或者是直接從地址中讀??;另一種是16位網(wǎng)絡地址,稱為短地址,可以使用NLME_GetShortAddr()獲得。64位地址是全球唯一的地址,由IEEE來維護和分配。16位網(wǎng)絡地址是當設備加入網(wǎng)絡后分配的。它在網(wǎng)絡中是唯一的,用來在網(wǎng)絡中鑒別設備和發(fā)送數(shù)據(jù)。
終端和協(xié)調(diào)器聯(lián)網(wǎng)成功后,每片CC2530擁有唯一的MAC地址,在識別無線網(wǎng)絡中,將MAC地址發(fā)送給協(xié)調(diào)器進行注冊,終端設備主動發(fā)送CC2530的MAC地址給協(xié)調(diào)器進行登記,注冊后就可以進行數(shù)據(jù)發(fā)送和接收,設備終端的實現(xiàn)代碼如下:
3.2.2 協(xié)調(diào)器的網(wǎng)絡模塊設計
協(xié)調(diào)器通過識別終端發(fā)來的數(shù)據(jù)包進行分析,首先確認MAC地址,第一次MAC地址保存,以后接收數(shù)據(jù),只要是存在的MAC地址,則更新其短地址,更新后就可以接收數(shù)據(jù)。
3.3 數(shù)據(jù)封裝設計
數(shù)據(jù)封裝的目的是為了更好地完成終端和協(xié)調(diào)器的通信,采用合適的通信協(xié)議,可以簡化軟件設。
設計發(fā)送數(shù)據(jù)包為可變長的,0~7位為MAC地址,用來確認是哪個模塊的數(shù)據(jù),第8位數(shù)值為1是數(shù)據(jù)采集傳感器采集信息,如溫濕度傳感器,2是控制設備命令,如電機控制命令,第9位存儲溫度值,第10位存儲濕度值,第10位為數(shù)據(jù)包結(jié)束標志。在協(xié)調(diào)器和節(jié)點終端都遵循同樣的通信協(xié)議分析與控制。
3.3.1 節(jié)點采集數(shù)據(jù)封裝設計
根據(jù)通信協(xié)議,將獲取的溫度和濕度相應封裝,通過函數(shù)AF_DataRequest(),將數(shù)據(jù)Send _Data發(fā)送給協(xié)調(diào)器。
3.3.2 協(xié)調(diào)器接收數(shù)據(jù)和轉(zhuǎn)發(fā)設計
傳輸部分設計為每一個終端節(jié)點配置一個唯一的設備編號并且運用設備編號為每一個終端配置一個唯一的協(xié)調(diào)器接收上位機的命令,包括兩種格式:一種不帶設備編號參數(shù),即需要所有終端節(jié)點響應處理;一種是帶設備編號參數(shù),僅需該設備編號的終端節(jié)點響應,協(xié)調(diào)器收到上位機或者服務器的命令時會做出相應的判斷,在接收數(shù)據(jù)過程中獲取MY_CLUSTERID,進行查詢。
4 結(jié) 語
本文利用物聯(lián)網(wǎng)知識,采用一種基于CC2530和DHT11的實現(xiàn)方法,完成了溫濕度數(shù)據(jù)的采集,應用于智能農(nóng)業(yè)大棚,取得了良好效果,為進一步農(nóng)業(yè)自動化提供了一個科學方法,為解決我國目前農(nóng)村務農(nóng)人數(shù)減少,實現(xiàn)大規(guī)模種植管理模式轉(zhuǎn)變提供了一種實現(xiàn)方式。
參考文獻
[1]何華斌.福建農(nóng)業(yè)大棚的低成本棚聯(lián)網(wǎng)構建方案[J].閩江學院學報,2014(5):81-87.
[2]齊莉.物聯(lián)網(wǎng)農(nóng)業(yè)智能測控系統(tǒng)的特點、優(yōu)勢及其在溫室大棚的應用[J].安徽農(nóng)業(yè)科學,2011,39(30):18989-18992.
[3]張鈺玲.農(nóng)業(yè)大棚智能控制系統(tǒng)設計與研究[J].微計算機信息,2009,25(3):52-53.
[4]張小偉.基于物聯(lián)網(wǎng)技術的農(nóng)業(yè)大棚監(jiān)控系統(tǒng)研究[D].西安:陜西科技大學,2014
[5] A True System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee Applications[EB/OL].http://www.ti.com.cn/cn/lit/ds/symlink/cc2530.pdf
[6] Texas Instruments.Z-Stack developers guide[M].California USA:Texas Instruments,2015
[7]ZigBee Alliance.ZigBee Speciafication[S].USA:ZigBee Alliance,2008.
[8]Texas Instruments.Z-Stack users guide for smart RF05EB and CC2530[M].California USA:Texas Instruments,2011.
[9] DHT11 Humidity & Temperature Sensor [EB/OL].http://www.micro4you.com/files/sensor/DHT11.pdf