基于ZigBee的大棚環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
大棚環(huán)境監(jiān)測(cè)系統(tǒng)實(shí)時(shí)地對(duì)大棚的溫度、濕度等環(huán)境因素進(jìn)行檢測(cè),減少了種植人員的工作量;及時(shí)地對(duì)不利環(huán)境進(jìn)行報(bào)警,減少了因?yàn)槿斯な韬龆斐傻霓r(nóng)作物減產(chǎn)的情況;記錄大棚各個(gè)時(shí)段的環(huán)境數(shù)據(jù),方便農(nóng)民對(duì)農(nóng)作物的生長(zhǎng)情況作出更全面的了解,方便農(nóng)民控制大棚環(huán)境,使之利于農(nóng)作物的生長(zhǎng)。對(duì)大棚溫室的控制與管理是農(nóng)業(yè)自動(dòng)化生產(chǎn)的重要領(lǐng)域。目前,絕大多數(shù)的溫室控制系統(tǒng)的信號(hào)傳播方式都是有線傳輸,大量的布線不可避免。有線傳輸布線復(fù)雜,布線成本高,大棚內(nèi)的環(huán)境溫濕度都比較高,使得系統(tǒng)的抗干擾性和可靠性降低,后期的維護(hù)難度比較大。而采用無(wú)線傳輸方式可以有效地解決以上問題。
本文設(shè)計(jì)的大棚環(huán)境監(jiān)測(cè)系統(tǒng),使用單片機(jī)和溫濕度傳感器組成數(shù)據(jù)采集節(jié)點(diǎn),采用無(wú)線射頻CC2530(ZigBee)技術(shù)進(jìn)行數(shù)據(jù)傳輸,上位機(jī)開發(fā)則采用VisualBasic.NET和Access數(shù)據(jù)庫(kù)系統(tǒng),將無(wú)線節(jié)點(diǎn)所采集到的溫濕度信息實(shí)時(shí)地顯示到系統(tǒng)界面,從而達(dá)到對(duì)溫度監(jiān)測(cè)的目的。
1ZigBee技術(shù)簡(jiǎn)介
ZigBee是一種便宜的、低功耗的近距離無(wú)線組網(wǎng)通信技術(shù),它有可能運(yùn)用于幾乎所有行業(yè)的低速率、短距離的無(wú)線通信,近些年多應(yīng)用于智能家居、工業(yè)應(yīng)用、智能交通、智能建筑和醫(yī)院應(yīng)用等。ZigBee的顯著特點(diǎn)就是低速率、低功耗、低成本、自配置和靈活的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。由于ZigBee技術(shù)的傳輸速率低,傳輸數(shù)據(jù)量很小,因此信號(hào)的收發(fā)時(shí)間短;而在非工作模式中,ZigBee節(jié)點(diǎn)又處于休眠狀態(tài),所以ZigBee節(jié)點(diǎn)非常省電。由于ZigBee協(xié)議棧相對(duì)于其他無(wú)線傳輸技術(shù)要簡(jiǎn)單得多,降低了對(duì)控制器的要求,因此可以采用8位單片機(jī)和規(guī)模很小的存儲(chǔ)器,很大程度上減小了系統(tǒng)開發(fā)的成本。在可通信的距離內(nèi),ZigBee通過(guò)網(wǎng)絡(luò)協(xié)調(diào)器自動(dòng)建立網(wǎng)絡(luò),采用CSMA-CA方式進(jìn)行信道接入;節(jié)點(diǎn)設(shè)備可以隨意地加入和退出,是一種自組織、自配置的組網(wǎng)方式。ZigBee有多重網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),可以根據(jù)不同的需求使用相應(yīng)的拓?fù)浣Y(jié)構(gòu),具有較強(qiáng)的靈活性。
2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)由終端節(jié)點(diǎn)、協(xié)調(diào)器(也稱為ZigBee網(wǎng)關(guān))和數(shù)據(jù)庫(kù)管理系統(tǒng)組成。終端節(jié)點(diǎn)對(duì)溫濕度實(shí)時(shí)采集,經(jīng)過(guò)C51單片機(jī)處理后上傳到ZigBee無(wú)線網(wǎng)絡(luò)。其中,每個(gè)ZigBee模塊還具有中繼功能,以免因距離過(guò)遠(yuǎn)無(wú)法傳輸。數(shù)據(jù)庫(kù)管理系統(tǒng)采用VB.NET開發(fā)人機(jī)界面。如圖1所示,ZigBee模塊負(fù)責(zé)收集大棚溫度數(shù)據(jù)、濕度數(shù)據(jù)并進(jìn)行無(wú)線發(fā)送,避免了布線的麻煩,與其配套的上位機(jī)軟件是一個(gè)擁有良好界面的數(shù)據(jù)監(jiān)控和存儲(chǔ)中心。下位機(jī)主要完成數(shù)據(jù)的采集與發(fā)送,上位機(jī)完成數(shù)據(jù)的分析和存儲(chǔ)。本系統(tǒng)中ZigBee終端節(jié)點(diǎn)上裝有溫濕度傳感器,負(fù)責(zé)采集大棚溫濕度數(shù)據(jù),而ZigBee模塊負(fù)責(zé)通過(guò)無(wú)線網(wǎng)絡(luò)傳輸數(shù)據(jù)信息,ZigBee網(wǎng)關(guān)節(jié)點(diǎn)負(fù)責(zé)收集終端節(jié)點(diǎn)的信息并通過(guò)RS232傳輸給上位機(jī),上位機(jī)系統(tǒng)需要實(shí)現(xiàn)溫濕度數(shù)據(jù)的實(shí)時(shí)顯示以及數(shù)據(jù)的存儲(chǔ)、查詢、刪除等功能。
3 系統(tǒng)硬件結(jié)構(gòu)組成
環(huán)境監(jiān)測(cè)系統(tǒng)硬件裝置由終端節(jié)點(diǎn)和協(xié)調(diào)器兩大部分組成,系統(tǒng)結(jié)構(gòu)圖如圖2所示。通常一套裝置只有一個(gè)協(xié)調(diào)器,其主要包括微控制器、射頻收發(fā)單元、無(wú)線節(jié)點(diǎn)和電源模塊以及接口單元。在系統(tǒng)的硬件選擇上,主要從溫濕度的精確度、檢測(cè)范圍和經(jīng)濟(jì)適用度方面進(jìn)行考慮。筆者主要采用集成的溫濕度傳感器以及CC2530作為ZigBee模塊。
本系統(tǒng)下位機(jī)終端節(jié)點(diǎn)包括溫濕度傳感器、單片機(jī)和ZigBee模塊。將終端節(jié)點(diǎn)按用戶要求放置到大棚中,溫濕度傳感器將大棚環(huán)境信息收集上來(lái),通過(guò)IIC總線將數(shù)據(jù)傳輸?shù)絊TC12LE5204AD單片機(jī)進(jìn)行數(shù)據(jù)處理。因?yàn)镾TC12LE5204AD沒有IIC接口,所以本系統(tǒng)采用IO接口進(jìn)行模擬叫單片機(jī)將處理過(guò)的數(shù)據(jù)信息傳輸給ZigBee模塊,該模塊將數(shù)據(jù)在無(wú)線網(wǎng)絡(luò)中按照Z(yǔ)igBee網(wǎng)絡(luò)協(xié)議傳輸?shù)阶鳛閆igBee網(wǎng)關(guān)的協(xié)調(diào)器,再通過(guò)RS232串口傳輸?shù)缴衔粰C(jī),進(jìn)行數(shù)據(jù)處理等操作。當(dāng)終端節(jié)點(diǎn)距離協(xié)調(diào)器過(guò)遠(yuǎn),無(wú)法將信息直接傳送到協(xié)調(diào)器時(shí),可以自主地轉(zhuǎn)送到其他終端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)中繼,進(jìn)而傳輸?shù)絽f(xié)調(diào)器中。
4系統(tǒng)軟件設(shè)計(jì)
計(jì)算機(jī)上位機(jī)監(jiān)測(cè)軟件在MicrosoftVisualStudio2008環(huán)境下開發(fā),系統(tǒng)將下位機(jī)收集到的溫濕度信息交給Access數(shù)據(jù)庫(kù)進(jìn)行標(biāo)準(zhǔn)化管理。種植者可以通過(guò)計(jì)算機(jī)監(jiān)測(cè)軟件查詢大棚環(huán)境歷史信息,通過(guò)監(jiān)測(cè)界面監(jiān)測(cè)到大棚溫濕度的實(shí)時(shí)變化,能夠設(shè)置大棚環(huán)境的報(bào)警閾值和下位機(jī)匹配的硬件參數(shù)等。
4.1數(shù)據(jù)接收模塊
為了使下位機(jī)采集到的數(shù)據(jù)可以傳輸?shù)缴衔粰C(jī),需要編寫串口通信程序進(jìn)行串口通信。在MicrosoftVisualStudio2008中編寫串口通信程序,一般都使用MicrosoftCommunicationControK簡(jiǎn)稱MSComm)的通信控件,只要通過(guò)對(duì)此控件的屬性和事件進(jìn)行相應(yīng)編程操作,就可以輕松地實(shí)現(xiàn)串口通信。但是,VisualStudio.Net沒有將此控件加入控件庫(kù),所以人們采用了其他方法在VisualStudio.Net來(lái)編寫串口通信程序,本系統(tǒng)利用SerialPort類進(jìn)行串口編程。本系統(tǒng)需要實(shí)現(xiàn)下位機(jī)參數(shù)可以靈活匹配的功能,可以通過(guò)編寫相應(yīng)程序得以實(shí)現(xiàn)。
設(shè)計(jì)時(shí),應(yīng)首先打開串口連接;判斷下位機(jī)參數(shù)是否已正確選擇,下位機(jī)參數(shù)有五個(gè),都需要進(jìn)行判斷;之后便可與下位機(jī)參數(shù)進(jìn)行匹配,設(shè)置串口參數(shù);再建立串口通信事件;最后接收數(shù)據(jù)信息。下面是其部分代碼:
PrivateSubSerialPort1_DataReceived(ByValsenderAsSystem.Object,ByValeAsSystem.IO.Ports.SerialDataReceivedEventArgs)HandlesSerialPort1.DataReceived
'引入SerialPort類,接收數(shù)據(jù)HOneData(第一個(gè)節(jié)點(diǎn)的濕度)等三組六個(gè)數(shù)據(jù)
DimbyteToReadAsInt16=SerialPort1.BytesToRead()
IfbyteToRead=21Then
Dimch(byteToRead)AsByte
DimbytesReadAsInt16=0
bytesRead=SerialPort1.Read(ch,0,byteToRead)'用來(lái)存放接收到的數(shù)據(jù)
Ifch(0)=170Andch(1)=85Then'判斷讀取下位機(jī)數(shù)據(jù)的長(zhǎng)度是否為有效的
HOneData=CLng("&H"&Hex(ch(2)&ch(3)))/10'十六進(jìn)制轉(zhuǎn)成十進(jìn)制(前面的),并且小數(shù)點(diǎn)向左進(jìn)一位(除以10)
圖3所示是其數(shù)據(jù)接收模塊流程圖。
4.2數(shù)據(jù)處理模塊
環(huán)境數(shù)據(jù)信息從下位機(jī)通過(guò)RS232串口傳輸?shù)缴衔粰C(jī)系統(tǒng),需要進(jìn)行分析、轉(zhuǎn)換等操作。數(shù)據(jù)按照規(guī)定的幀格式傳輸,每幀包含3個(gè)數(shù)據(jù),分別為節(jié)點(diǎn)編號(hào)、溫度數(shù)據(jù)、濕度數(shù)據(jù),均以十六進(jìn)制形式表示。上位機(jī)接收到數(shù)據(jù)后,分離其中的數(shù)據(jù)位,依次取出節(jié)點(diǎn)編號(hào)、溫度數(shù)據(jù)、濕度數(shù)據(jù)中的值,進(jìn)行十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制數(shù)據(jù)的操作后,保存到數(shù)據(jù)庫(kù)中。數(shù)據(jù)處理模塊的流程圖如圖4所示。下面是其部分代碼:
ImportsSystem.Data.OleDb'弓|用access控件
PublicLHGconnAsNewOleDb.OleDbConnection(
"provider=microsoft.jet.oledb.4.0;"&"datasource="&
My.Application.Info.DirectoryPath&"\NewData.mdb;")'打
開數(shù)據(jù)庫(kù),路徑為相對(duì)路徑
Try
IfLHGconn.State<>ConnectionState.ClosedThenLHGconn.Close()
LHGconn.Open()
CallRAlarm()'數(shù)據(jù)庫(kù)連接,錯(cuò)誤則報(bào)警
4.3數(shù)據(jù)顯示模塊
數(shù)據(jù)顯示模塊是整個(gè)監(jiān)測(cè)系統(tǒng)中最重要的模塊,需要將接收到的下位機(jī)數(shù)據(jù)以實(shí)時(shí)波動(dòng)曲線的形式展示給種植者,該模塊使用.NETFramweork構(gòu)架中提供的GDI+類庫(kù)進(jìn)行繪圖。系統(tǒng)界面中設(shè)計(jì)兩個(gè)坐標(biāo)軸,分別用來(lái)顯示溫度數(shù)據(jù)和濕度數(shù)據(jù)。系統(tǒng)獲取從下位機(jī)接收到的數(shù)據(jù)在坐標(biāo)軸中進(jìn)行繪圖,獲取到的十六進(jìn)制數(shù)據(jù)信息通過(guò)分析處理轉(zhuǎn)化為十進(jìn)制數(shù)據(jù),再通過(guò)數(shù)學(xué)計(jì)算,確定該數(shù)據(jù)信息在坐標(biāo)軸上的坐標(biāo)值。將相鄰兩個(gè)坐標(biāo)點(diǎn)用畫線的方法連接起來(lái),則形成了實(shí)時(shí)顯示的曲線。使用Bitmap類,用來(lái)封裝GDI+位圖,此位圖由圖形圖像及其屬性的像素?cái)?shù)據(jù)組成。Bitmap是用于處理由像素?cái)?shù)據(jù)定義的圖像的對(duì)象,相當(dāng)于定義畫布。使用Graphics對(duì)象所提供的Graphics.FromImage方法從指定的Image創(chuàng)建新的Graphics,相當(dāng)于定義了一個(gè)畫筆,使用picturebox控件來(lái)顯示所繪制的圖形和圖像。
5結(jié)語(yǔ)
基于ZigBee的大棚環(huán)境監(jiān)測(cè)系統(tǒng)實(shí)現(xiàn)的是溫度和濕度數(shù)據(jù)的無(wú)線檢測(cè),具有數(shù)據(jù)傳輸可靠、組網(wǎng)簡(jiǎn)單靈活、設(shè)備成本低等特點(diǎn)。本系統(tǒng)能夠?qū)崟r(shí)采集環(huán)境數(shù)據(jù),將大棚環(huán)境信息及時(shí)地傳遞給用戶,用戶可以及時(shí)地掌握大棚環(huán)境,從而對(duì)環(huán)境進(jìn)行調(diào)節(jié)與控制,避免因?yàn)槿藶槭韬鲈斐傻霓r(nóng)作物減產(chǎn)等不良影響,符合農(nóng)業(yè)現(xiàn)代化發(fā)展的需求,具有一定的應(yīng)用價(jià)值。
20211106_61863d78565e1__基于ZigBee的大棚環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)