段鋒銳,石軍鋒
(西南大學 工程技術(shù)學院,重慶 400716)
隨著我國設施農(nóng)業(yè)技術(shù)的不斷發(fā)展,溫室的種植面積不斷擴大,對溫室大棚內(nèi)的溫度、濕度及光照強度等參數(shù)進行實時準確測量和調(diào)節(jié)至關(guān)重要[1]。傳統(tǒng)的溫室數(shù)據(jù)系統(tǒng)采用RS485或CAN總線等有線的方式傳輸數(shù)據(jù)[2]。有線的方式存在布線復雜、靈活性和可擴展性低、安裝以及后期維修困難、成本高等問題[3]。因此,為了解決有線傳輸存在的問題,無線通信技術(shù)不斷被應用到溫室農(nóng)業(yè)設施之中。
文獻[4]將WiFi技術(shù)應用到溫室監(jiān)測中,雖然實現(xiàn)了溫室監(jiān)測,但是存在功耗大、成本高等缺點。文獻[5]中將藍牙技術(shù)應用到溫室溫度檢控系統(tǒng)中,雖然實現(xiàn)了溫室溫度檢控,但是存在協(xié)議復雜、功耗大等缺點。ZigBee技術(shù)具有協(xié)議簡單、傳輸可靠性高、功耗低、自動動態(tài)組網(wǎng)自動路由、靈活性高、可擴展性強、實現(xiàn)成本低、實現(xiàn)相對簡單等特點[6]。因此,為了解決傳統(tǒng)溫室數(shù)據(jù)采集監(jiān)控系統(tǒng)中存在的布線復雜、靈活性不好、成本高等問題,設計了基于ZigBee技術(shù)的實時數(shù)據(jù)采集系統(tǒng),改變了傳統(tǒng)的有線數(shù)據(jù)采集的方式,避免了布線的麻煩,降低了功耗和成本,更具靈活性和可擴展性。觀測者可以通過上位機掌握組網(wǎng)形態(tài)以及各節(jié)點采集的溫度以及光照強度數(shù)據(jù),從而方便管理者對溫室環(huán)境進行調(diào)整。
系統(tǒng)主要由ZigBee傳感器節(jié)點、ZigBee協(xié)調(diào)器節(jié)點以及上位機3部分組成,系統(tǒng)結(jié)構(gòu)如圖1所示。路由器節(jié)點和終端節(jié)點統(tǒng)一稱為傳感器節(jié)點,傳感器節(jié)點主要負責采集數(shù)據(jù)和轉(zhuǎn)發(fā)。協(xié)調(diào)器節(jié)點通過RS232與上位機相連,負責建立和維護ZigBee網(wǎng)絡、傳遞上位機命令給傳感器節(jié)點以及返回采集的數(shù)據(jù)給上位機。上位機主要負責發(fā)送命令,并通過自主開發(fā)的上位機界面監(jiān)測溫室環(huán)境的各種參數(shù)。

圖1 系統(tǒng)結(jié)構(gòu)示意Fig.1 Structure schematic diagram

圖2 CC2530外圍電路原理Fig.2 Peripheral circuit schematics of CC2530
系統(tǒng)硬件設計包括協(xié)調(diào)器節(jié)點的硬件設計和傳感器節(jié)點的硬件設計,因為2種節(jié)點在硬件設計上大部分內(nèi)容相同,所以不對2種節(jié)點進行贅述,主要對ZigBee傳感器節(jié)點的核心模塊外圍電路進行設計。ZigBee傳感器節(jié)點采用深受業(yè)界好評的CC2530作為核心模塊。如圖2所示為設計好的CC2530外圍電路原理圖,包括電源接口電路設計、LED電路的設計、天線匹配電路的設計,晶振電路的設計、外部傳感器電路的設計。圖2中C3~C10為去耦電容,L1、C1組成濾波電路濾波。 LED1、LED2陰極分別與P1.0、P1.1相連,陽極接3.3 V電源。采用巴倫天線匹配電路。外接1個32 M晶振和32.768 k晶振,C19、C20、C21、C22分別為他們的去耦電容。 光敏傳感器PDV-P9003-1接到P0.0,C16為去耦電容,R4為負載。溫濕度傳感器SHT11的SCK引腳接P1.5,DATA引腳接 P1.6,GND接地,VDD接 3.3 V的VDD,C17為去耦電容。
系統(tǒng)采用了全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件IAR7.51作為軟件開發(fā)平臺,選擇了業(yè)界領(lǐng)先的TI公司開發(fā)的Z-Stack作為協(xié)議棧,選用了微軟公司的C#2010作為上位機程序開發(fā)平臺,設計了組網(wǎng)、數(shù)據(jù)幀格式以及數(shù)據(jù)采集流程,開發(fā)了上位機程序。
組網(wǎng)包括ZigBee協(xié)調(diào)器節(jié)點建立網(wǎng)絡和ZigBee傳感器節(jié)點加入網(wǎng)絡2個過程。ZigBee協(xié)調(diào)器節(jié)點建立網(wǎng)絡時首先初始化硬件設備,然后執(zhí)行能量掃描和主動掃描,選擇最優(yōu)信道建立網(wǎng)絡,選擇1個唯一的PANID,并設置相應的PIB參數(shù)允許傳感節(jié)點加入網(wǎng)絡,最后選擇0x0000作為協(xié)調(diào)器的網(wǎng)絡地址。
ZigBee傳感器節(jié)點初始化硬件設備后,就會執(zhí)行主動或被動掃描,掃描過程中得到PANID等網(wǎng)絡參數(shù)后,向協(xié)調(diào)器節(jié)點發(fā)送1個關(guān)聯(lián)請求命令包,傳感器節(jié)點收到協(xié)調(diào)器的應答后緊接著向協(xié)調(diào)器節(jié)點發(fā)送1個數(shù)據(jù)請求命令包,協(xié)調(diào)器收到數(shù)據(jù)請求命令包后一般情況下會發(fā)送關(guān)聯(lián)響應包給傳感器節(jié)點,傳感器節(jié)點收到后立即向協(xié)調(diào)器回復確認幀,最后在PIB中保存協(xié)調(diào)器分配的的網(wǎng)絡地址以及協(xié)調(diào)器節(jié)點和傳感器節(jié)點的擴展地址,這時就加入了網(wǎng)絡。當所有傳感器節(jié)點加入網(wǎng)絡后就完成了組網(wǎng)。
系統(tǒng)設計了一個儲存加入網(wǎng)絡節(jié)點信息的結(jié)構(gòu)體NodeList放在協(xié)調(diào)器中,如圖3所示。當有節(jié)點加入了網(wǎng)絡時,就會將加入的節(jié)點的信息保存在NodeList中,與上位機程序中節(jié)點建立地址對應關(guān)系,這樣就能更準確地獲取網(wǎng)絡拓撲結(jié)構(gòu)。

圖3 NodeList示意Fig.3 Schematic diagram of NodeList
系統(tǒng)設計了串口數(shù)據(jù)的幀格式和無線數(shù)據(jù)的幀格式,如表1所示。串口數(shù)據(jù)的幀格式依次包括1字節(jié)幀頭、3字節(jié)命令頭、10字節(jié)地址、16字節(jié)載荷、1字節(jié)校驗和、1字節(jié)幀尾,總共32字節(jié),其中載荷只用了7字節(jié),預留了可擴展傳感數(shù)據(jù)的空間。無線數(shù)據(jù)的幀格式除了沒有幀頭、校驗和以及幀尾,其它部分與串口數(shù)據(jù)的幀格式一致。

表1 數(shù)據(jù)幀格式Tab.1 Format of data frame
系統(tǒng)設計了數(shù)據(jù)采集的流程。組網(wǎng)完成后,首先是由上位機程序通過串口發(fā)送獲取ZigBee網(wǎng)絡拓撲結(jié)構(gòu)命令給協(xié)調(diào)器節(jié)點,即發(fā)送命令頭為RND的串口消息給協(xié)調(diào)器,協(xié)調(diào)器收到串口信息后,協(xié)議棧MT層解析串口數(shù)據(jù),之后將解析完的數(shù)據(jù)打包作為系統(tǒng)消息事件發(fā)送到應用層。應用層事件處理函數(shù)執(zhí)行獲取網(wǎng)絡拓撲結(jié)構(gòu)命令,即從串口返回上位機保存在協(xié)調(diào)器NodeList中的所有加入節(jié)點的信息,使上位機程序得到建立好地址對應關(guān)系的網(wǎng)絡拓撲結(jié)構(gòu)。
然后由上位機程序通過串口發(fā)送采集命令,即發(fā)送命令頭為RSA的串口消息給協(xié)調(diào)器,協(xié)調(diào)器收到串口信息后,協(xié)議棧MT層解析串口數(shù)據(jù),之后將解析完的數(shù)據(jù)打包作為系統(tǒng)消息事件發(fā)送到應用層。應用層事件處理函數(shù)將命令打包通過無線消息發(fā)送給傳感器節(jié)點。傳感器節(jié)點收到命令頭為RSA的無線消息后,應用層處理函數(shù)執(zhí)行采集傳感數(shù)據(jù)命令,并將所有數(shù)據(jù)打包通過無線消息返回到協(xié)調(diào)器,再由協(xié)調(diào)器打包發(fā)送給上位機程序,同時傳感器節(jié)點設置一個周期性采樣事件,其采樣事件為osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT),周期設為 120 s,即每120 s采集1次所有傳感數(shù)據(jù)并發(fā)送回去。
最后如果傳感器節(jié)點收到命令頭為STP的無線消息,那么傳感器節(jié)點將停止采集傳感數(shù)據(jù),若是終端節(jié)點將進入休眠狀態(tài)等待中斷喚醒。節(jié)點工作流程如圖4所示。

圖4 ZigBee協(xié)調(diào)器節(jié)點和ZigBee傳感器節(jié)點工作流程Fig.4 Work flow chart of ZigBee coordinator node and ZigBee sensor node
確保實驗設備正常的情況下,將程序燒寫到相應的每一個硬件板中,用串口RS232連接上位機與協(xié)調(diào)器節(jié)點,完成傳感器節(jié)點的布局,組網(wǎng)完成后,采集數(shù)據(jù)如圖5所示。實驗使用的是ASCII碼。發(fā)送的數(shù)據(jù)幀頭為&,命令頭為RSA,地址為指定節(jié)點的地址,幀尾為*,其他用00填充,即向指定節(jié)點發(fā)送采集數(shù)據(jù)的命令。串口接收的數(shù)據(jù)幀依次是幀頭為&,命令頭為RSA,地址為指定節(jié)點的地址,載荷為采集的光照、溫度、電池電壓的數(shù)據(jù),沒有使用的用x填充,還有一個校驗和與幀尾*。采集溫度和光照強度是對溫室環(huán)境的監(jiān)測,采集電壓是對設備狀態(tài)的監(jiān)測。這里光照強度是一個簡單AD值。

圖5 上位機數(shù)據(jù)采集界面Fig.5 Data acquisition interface of PC
本文基于ZigBee技術(shù)提出溫室數(shù)據(jù)實時采集系統(tǒng)方案。設計了組網(wǎng)、數(shù)據(jù)幀格式以及數(shù)據(jù)采集流程。NodeList結(jié)構(gòu)體的設計使得上位機程序能與各個傳感器節(jié)點建立地址對應關(guān)系。幀格式的設計不僅使得數(shù)據(jù)能夠同時返回,而且還預留了可擴展傳感數(shù)據(jù)的空間,為進一步擴展其他功能提供了基礎,同時也減小了路由器節(jié)點工作量。數(shù)據(jù)采集流程的設計使得整個系統(tǒng)操作簡單、工作靈活、采集方便。實驗結(jié)果表明,本文設計的基于ZigBee技術(shù)的溫室數(shù)據(jù)實時采集系統(tǒng)有效地解決了傳統(tǒng)溫室數(shù)據(jù)采集系統(tǒng)采集不方便等問題,而且具有工作靈活、操作簡單等優(yōu)點。
[1]屈利華,趙春江,楊信廷,等.ZigBee無線傳感器網(wǎng)絡在溫室多源數(shù)據(jù)采集系統(tǒng)中的應用綜述[J].中國農(nóng)機化,2012(4):179-183.
[2]王公堂,李艷華,楊寶.基于ZigBee的溫度濕度監(jiān)測系統(tǒng)的研究[J].電子設計工程,2013,21(1):63-66.
[3]盛平,郭洋洋,李萍萍.基于ZigBee和3G技術(shù)的設施農(nóng)業(yè)智能測控系統(tǒng)[J].農(nóng)業(yè)機械學報,2012,43(12):229-233.
[4]吳卓葵,張文峰,曾濤.基于WiFi的溫室群環(huán)境多參數(shù)監(jiān)測系統(tǒng)設計[J].廣東農(nóng)業(yè)科學,2014,41(10):189-193.
[5]賈海政,陳軍.基于藍牙的溫室溫度檢控系統(tǒng)研究[J].農(nóng)機化研究,2009(5):111-114.
[6]胡炳彰,李輝.基于ZigBee的遠程數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù),2013(4):31-33.
[7]Texas Instruments.CC2530 Data Sheet[DB/OL].[2014-04].http://www.ti.com.
[8]Texas Instruments.CC253x User Guide[DB/OL].[2014-04].http://www.ti.com.