段鋒銳,石軍鋒
(西南大學(xué) 工程技術(shù)學(xué)院,重慶 400716)
隨著我國(guó)設(shè)施農(nóng)業(yè)技術(shù)的不斷發(fā)展,溫室的種植面積不斷擴(kuò)大,對(duì)溫室大棚內(nèi)的溫度、濕度及光照強(qiáng)度等參數(shù)進(jìn)行實(shí)時(shí)準(zhǔn)確測(cè)量和調(diào)節(jié)至關(guān)重要[1]。傳統(tǒng)的溫室數(shù)據(jù)系統(tǒng)采用RS485或CAN總線等有線的方式傳輸數(shù)據(jù)[2]。有線的方式存在布線復(fù)雜、靈活性和可擴(kuò)展性低、安裝以及后期維修困難、成本高等問(wèn)題[3]。因此,為了解決有線傳輸存在的問(wèn)題,無(wú)線通信技術(shù)不斷被應(yīng)用到溫室農(nóng)業(yè)設(shè)施之中。
文獻(xiàn)[4]將WiFi技術(shù)應(yīng)用到溫室監(jiān)測(cè)中,雖然實(shí)現(xiàn)了溫室監(jiān)測(cè),但是存在功耗大、成本高等缺點(diǎn)。文獻(xiàn)[5]中將藍(lán)牙技術(shù)應(yīng)用到溫室溫度檢控系統(tǒng)中,雖然實(shí)現(xiàn)了溫室溫度檢控,但是存在協(xié)議復(fù)雜、功耗大等缺點(diǎn)。ZigBee技術(shù)具有協(xié)議簡(jiǎn)單、傳輸可靠性高、功耗低、自動(dòng)動(dòng)態(tài)組網(wǎng)自動(dòng)路由、靈活性高、可擴(kuò)展性強(qiáng)、實(shí)現(xiàn)成本低、實(shí)現(xiàn)相對(duì)簡(jiǎn)單等特點(diǎn)[6]。因此,為了解決傳統(tǒng)溫室數(shù)據(jù)采集監(jiān)控系統(tǒng)中存在的布線復(fù)雜、靈活性不好、成本高等問(wèn)題,設(shè)計(jì)了基于ZigBee技術(shù)的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),改變了傳統(tǒng)的有線數(shù)據(jù)采集的方式,避免了布線的麻煩,降低了功耗和成本,更具靈活性和可擴(kuò)展性。觀測(cè)者可以通過(guò)上位機(jī)掌握組網(wǎng)形態(tài)以及各節(jié)點(diǎn)采集的溫度以及光照強(qiáng)度數(shù)據(jù),從而方便管理者對(duì)溫室環(huán)境進(jìn)行調(diào)整。
系統(tǒng)主要由ZigBee傳感器節(jié)點(diǎn)、ZigBee協(xié)調(diào)器節(jié)點(diǎn)以及上位機(jī)3部分組成,系統(tǒng)結(jié)構(gòu)如圖1所示。路由器節(jié)點(diǎn)和終端節(jié)點(diǎn)統(tǒng)一稱為傳感器節(jié)點(diǎn),傳感器節(jié)點(diǎn)主要負(fù)責(zé)采集數(shù)據(jù)和轉(zhuǎn)發(fā)。協(xié)調(diào)器節(jié)點(diǎn)通過(guò)RS232與上位機(jī)相連,負(fù)責(zé)建立和維護(hù)ZigBee網(wǎng)絡(luò)、傳遞上位機(jī)命令給傳感器節(jié)點(diǎn)以及返回采集的數(shù)據(jù)給上位機(jī)。上位機(jī)主要負(fù)責(zé)發(fā)送命令,并通過(guò)自主開(kāi)發(fā)的上位機(jī)界面監(jiān)測(cè)溫室環(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)硬件設(shè)計(jì)包括協(xié)調(diào)器節(jié)點(diǎn)的硬件設(shè)計(jì)和傳感器節(jié)點(diǎn)的硬件設(shè)計(jì),因?yàn)?種節(jié)點(diǎn)在硬件設(shè)計(jì)上大部分內(nèi)容相同,所以不對(duì)2種節(jié)點(diǎn)進(jìn)行贅述,主要對(duì)ZigBee傳感器節(jié)點(diǎn)的核心模塊外圍電路進(jìn)行設(shè)計(jì)。ZigBee傳感器節(jié)點(diǎn)采用深受業(yè)界好評(píng)的CC2530作為核心模塊。如圖2所示為設(shè)計(jì)好的CC2530外圍電路原理圖,包括電源接口電路設(shè)計(jì)、LED電路的設(shè)計(jì)、天線匹配電路的設(shè)計(jì),晶振電路的設(shè)計(jì)、外部傳感器電路的設(shè)計(jì)。圖2中C3~C10為去耦電容,L1、C1組成濾波電路濾波。 LED1、LED2陰極分別與P1.0、P1.1相連,陽(yáng)極接3.3 V電源。采用巴倫天線匹配電路。外接1個(gè)32 M晶振和32.768 k晶振,C19、C20、C21、C22分別為他們的去耦電容。 光敏傳感器PDV-P9003-1接到P0.0,C16為去耦電容,R4為負(fù)載。溫濕度傳感器SHT11的SCK引腳接P1.5,DATA引腳接 P1.6,GND接地,VDD接 3.3 V的VDD,C17為去耦電容。
系統(tǒng)采用了全球領(lǐng)先的嵌入式系統(tǒng)開(kāi)發(fā)軟件IAR7.51作為軟件開(kāi)發(fā)平臺(tái),選擇了業(yè)界領(lǐng)先的TI公司開(kāi)發(fā)的Z-Stack作為協(xié)議棧,選用了微軟公司的C#2010作為上位機(jī)程序開(kāi)發(fā)平臺(tái),設(shè)計(jì)了組網(wǎng)、數(shù)據(jù)幀格式以及數(shù)據(jù)采集流程,開(kāi)發(fā)了上位機(jī)程序。
組網(wǎng)包括ZigBee協(xié)調(diào)器節(jié)點(diǎn)建立網(wǎng)絡(luò)和ZigBee傳感器節(jié)點(diǎn)加入網(wǎng)絡(luò)2個(gè)過(guò)程。ZigBee協(xié)調(diào)器節(jié)點(diǎn)建立網(wǎng)絡(luò)時(shí)首先初始化硬件設(shè)備,然后執(zhí)行能量掃描和主動(dòng)掃描,選擇最優(yōu)信道建立網(wǎng)絡(luò),選擇1個(gè)唯一的PANID,并設(shè)置相應(yīng)的PIB參數(shù)允許傳感節(jié)點(diǎn)加入網(wǎng)絡(luò),最后選擇0x0000作為協(xié)調(diào)器的網(wǎng)絡(luò)地址。
ZigBee傳感器節(jié)點(diǎn)初始化硬件設(shè)備后,就會(huì)執(zhí)行主動(dòng)或被動(dòng)掃描,掃描過(guò)程中得到PANID等網(wǎng)絡(luò)參數(shù)后,向協(xié)調(diào)器節(jié)點(diǎn)發(fā)送1個(gè)關(guān)聯(lián)請(qǐng)求命令包,傳感器節(jié)點(diǎn)收到協(xié)調(diào)器的應(yīng)答后緊接著向協(xié)調(diào)器節(jié)點(diǎn)發(fā)送1個(gè)數(shù)據(jù)請(qǐng)求命令包,協(xié)調(diào)器收到數(shù)據(jù)請(qǐng)求命令包后一般情況下會(huì)發(fā)送關(guān)聯(lián)響應(yīng)包給傳感器節(jié)點(diǎn),傳感器節(jié)點(diǎn)收到后立即向協(xié)調(diào)器回復(fù)確認(rèn)幀,最后在PIB中保存協(xié)調(diào)器分配的的網(wǎng)絡(luò)地址以及協(xié)調(diào)器節(jié)點(diǎn)和傳感器節(jié)點(diǎn)的擴(kuò)展地址,這時(shí)就加入了網(wǎng)絡(luò)。當(dāng)所有傳感器節(jié)點(diǎn)加入網(wǎng)絡(luò)后就完成了組網(wǎng)。
系統(tǒng)設(shè)計(jì)了一個(gè)儲(chǔ)存加入網(wǎng)絡(luò)節(jié)點(diǎn)信息的結(jié)構(gòu)體NodeList放在協(xié)調(diào)器中,如圖3所示。當(dāng)有節(jié)點(diǎn)加入了網(wǎng)絡(luò)時(shí),就會(huì)將加入的節(jié)點(diǎn)的信息保存在NodeList中,與上位機(jī)程序中節(jié)點(diǎn)建立地址對(duì)應(yīng)關(guān)系,這樣就能更準(zhǔn)確地獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
圖3 NodeList示意Fig.3 Schematic diagram of NodeList
系統(tǒng)設(shè)計(jì)了串口數(shù)據(jù)的幀格式和無(wú)線數(shù)據(jù)的幀格式,如表1所示。串口數(shù)據(jù)的幀格式依次包括1字節(jié)幀頭、3字節(jié)命令頭、10字節(jié)地址、16字節(jié)載荷、1字節(jié)校驗(yàn)和、1字節(jié)幀尾,總共32字節(jié),其中載荷只用了7字節(jié),預(yù)留了可擴(kuò)展傳感數(shù)據(jù)的空間。無(wú)線數(shù)據(jù)的幀格式除了沒(méi)有幀頭、校驗(yàn)和以及幀尾,其它部分與串口數(shù)據(jù)的幀格式一致。
表1 數(shù)據(jù)幀格式Tab.1 Format of data frame
系統(tǒng)設(shè)計(jì)了數(shù)據(jù)采集的流程。組網(wǎng)完成后,首先是由上位機(jī)程序通過(guò)串口發(fā)送獲取ZigBee網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)命令給協(xié)調(diào)器節(jié)點(diǎn),即發(fā)送命令頭為RND的串口消息給協(xié)調(diào)器,協(xié)調(diào)器收到串口信息后,協(xié)議棧MT層解析串口數(shù)據(jù),之后將解析完的數(shù)據(jù)打包作為系統(tǒng)消息事件發(fā)送到應(yīng)用層。應(yīng)用層事件處理函數(shù)執(zhí)行獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)命令,即從串口返回上位機(jī)保存在協(xié)調(diào)器NodeList中的所有加入節(jié)點(diǎn)的信息,使上位機(jī)程序得到建立好地址對(duì)應(yīng)關(guān)系的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
然后由上位機(jī)程序通過(guò)串口發(fā)送采集命令,即發(fā)送命令頭為RSA的串口消息給協(xié)調(diào)器,協(xié)調(diào)器收到串口信息后,協(xié)議棧MT層解析串口數(shù)據(jù),之后將解析完的數(shù)據(jù)打包作為系統(tǒng)消息事件發(fā)送到應(yīng)用層。應(yīng)用層事件處理函數(shù)將命令打包通過(guò)無(wú)線消息發(fā)送給傳感器節(jié)點(diǎn)。傳感器節(jié)點(diǎn)收到命令頭為RSA的無(wú)線消息后,應(yīng)用層處理函數(shù)執(zhí)行采集傳感數(shù)據(jù)命令,并將所有數(shù)據(jù)打包通過(guò)無(wú)線消息返回到協(xié)調(diào)器,再由協(xié)調(diào)器打包發(fā)送給上位機(jī)程序,同時(shí)傳感器節(jié)點(diǎn)設(shè)置一個(gè)周期性采樣事件,其采樣事件為osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT),周期設(shè)為 120 s,即每120 s采集1次所有傳感數(shù)據(jù)并發(fā)送回去。
最后如果傳感器節(jié)點(diǎn)收到命令頭為STP的無(wú)線消息,那么傳感器節(jié)點(diǎn)將停止采集傳感數(shù)據(jù),若是終端節(jié)點(diǎn)將進(jìn)入休眠狀態(tài)等待中斷喚醒。節(jié)點(diǎn)工作流程如圖4所示。
圖4 ZigBee協(xié)調(diào)器節(jié)點(diǎn)和ZigBee傳感器節(jié)點(diǎn)工作流程Fig.4 Work flow chart of ZigBee coordinator node and ZigBee sensor node
確保實(shí)驗(yàn)設(shè)備正常的情況下,將程序燒寫(xiě)到相應(yīng)的每一個(gè)硬件板中,用串口RS232連接上位機(jī)與協(xié)調(diào)器節(jié)點(diǎn),完成傳感器節(jié)點(diǎn)的布局,組網(wǎng)完成后,采集數(shù)據(jù)如圖5所示。實(shí)驗(yàn)使用的是ASCII碼。發(fā)送的數(shù)據(jù)幀頭為&,命令頭為RSA,地址為指定節(jié)點(diǎn)的地址,幀尾為*,其他用00填充,即向指定節(jié)點(diǎn)發(fā)送采集數(shù)據(jù)的命令。串口接收的數(shù)據(jù)幀依次是幀頭為&,命令頭為RSA,地址為指定節(jié)點(diǎn)的地址,載荷為采集的光照、溫度、電池電壓的數(shù)據(jù),沒(méi)有使用的用x填充,還有一個(gè)校驗(yàn)和與幀尾*。采集溫度和光照強(qiáng)度是對(duì)溫室環(huán)境的監(jiān)測(cè),采集電壓是對(duì)設(shè)備狀態(tài)的監(jiān)測(cè)。這里光照強(qiáng)度是一個(gè)簡(jiǎn)單AD值。
圖5 上位機(jī)數(shù)據(jù)采集界面Fig.5 Data acquisition interface of PC
本文基于ZigBee技術(shù)提出溫室數(shù)據(jù)實(shí)時(shí)采集系統(tǒng)方案。設(shè)計(jì)了組網(wǎng)、數(shù)據(jù)幀格式以及數(shù)據(jù)采集流程。NodeList結(jié)構(gòu)體的設(shè)計(jì)使得上位機(jī)程序能與各個(gè)傳感器節(jié)點(diǎn)建立地址對(duì)應(yīng)關(guān)系。幀格式的設(shè)計(jì)不僅使得數(shù)據(jù)能夠同時(shí)返回,而且還預(yù)留了可擴(kuò)展傳感數(shù)據(jù)的空間,為進(jìn)一步擴(kuò)展其他功能提供了基礎(chǔ),同時(shí)也減小了路由器節(jié)點(diǎn)工作量。數(shù)據(jù)采集流程的設(shè)計(jì)使得整個(gè)系統(tǒng)操作簡(jiǎn)單、工作靈活、采集方便。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的基于ZigBee技術(shù)的溫室數(shù)據(jù)實(shí)時(shí)采集系統(tǒng)有效地解決了傳統(tǒng)溫室數(shù)據(jù)采集系統(tǒng)采集不方便等問(wèn)題,而且具有工作靈活、操作簡(jiǎn)單等優(yōu)點(diǎn)。
[1]屈利華,趙春江,楊信廷,等.ZigBee無(wú)線傳感器網(wǎng)絡(luò)在溫室多源數(shù)據(jù)采集系統(tǒng)中的應(yīng)用綜述[J].中國(guó)農(nóng)機(jī)化,2012(4):179-183.
[2]王公堂,李艷華,楊寶.基于ZigBee的溫度濕度監(jiān)測(cè)系統(tǒng)的研究[J].電子設(shè)計(jì)工程,2013,21(1):63-66.
[3]盛平,郭洋洋,李萍萍.基于ZigBee和3G技術(shù)的設(shè)施農(nóng)業(yè)智能測(cè)控系統(tǒng)[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2012,43(12):229-233.
[4]吳卓葵,張文峰,曾濤.基于WiFi的溫室群環(huán)境多參數(shù)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].廣東農(nóng)業(yè)科學(xué),2014,41(10):189-193.
[5]賈海政,陳軍.基于藍(lán)牙的溫室溫度檢控系統(tǒng)研究[J].農(nóng)機(jī)化研究,2009(5):111-114.
[6]胡炳彰,李輝.基于ZigBee的遠(yuǎn)程數(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.