文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)04-0073-04
0 引言
我國(guó)是一個(gè)農(nóng)業(yè)大國(guó),,傳統(tǒng)農(nóng)業(yè)模式多采用粗放式管理,主要依靠個(gè)人感知來(lái)管理農(nóng)作物周圍的環(huán)境參數(shù),,無(wú)法做到對(duì)影響農(nóng)業(yè)環(huán)境參數(shù)的精確控制,從而很難做到投入產(chǎn)出比的最優(yōu)化[1],。智能農(nóng)業(yè)作為農(nóng)業(yè)科技的最新發(fā)展方向,,通過(guò)對(duì)農(nóng)作信息的智能化采集,并對(duì)采集后的信息通過(guò)科學(xué)地分析,,從而制定出高效集約的可持續(xù)性發(fā)展方式,,高效利用農(nóng)業(yè)資源,實(shí)現(xiàn)可觀的經(jīng)濟(jì)效益,。
信息采集作為智能農(nóng)業(yè)的起點(diǎn),,主要通過(guò)對(duì)農(nóng)作物生長(zhǎng)環(huán)境系統(tǒng)中大氣溫濕度、光照強(qiáng)度、土壤濕度,、二氧化碳濃度,、土壤pH值等參數(shù)進(jìn)行測(cè)量與匯總,為技術(shù)人員提供分析與決策的依據(jù),。雖然目前的研究主要都是基于無(wú)線傳感器網(wǎng)絡(luò)的農(nóng)業(yè)檢測(cè)系統(tǒng)[2],,但是在應(yīng)用中由于專業(yè)傳感器模塊價(jià)格昂貴,導(dǎo)致節(jié)點(diǎn)成本偏高,。本文提出一種基于開(kāi)源硬件的智能農(nóng)業(yè)監(jiān)測(cè)系統(tǒng),,以高性價(jià)比的開(kāi)源硬件Arduino為核心控制器,采用ZigBee技術(shù)無(wú)線連接上位機(jī)LabVIEW,,實(shí)現(xiàn)數(shù)據(jù)的可視化,。同時(shí)由于Arduino的強(qiáng)擴(kuò)展性,可以根據(jù)使用需求增加傳感器模塊,,以及采用有線串口連接Arduino控制板與上位機(jī),。
1 系統(tǒng)硬件組成
監(jiān)測(cè)系統(tǒng)的數(shù)據(jù)采集部分主要使用Arduino作為核心控制器,配合BH1750光照傳感器,、YL-69土壤水分傳感器,、DHT22溫濕度傳感器以及CO2濃度傳感器采集農(nóng)作物生長(zhǎng)環(huán)境參數(shù)后,采用接口擴(kuò)展板連接X(jué)bee,,通過(guò)無(wú)線(也可采用RS-485總線)與上位機(jī)的虛擬儀器Lab-VIEW軟件通信,。
1.1 Arduino控制器
Arduino作為一個(gè)開(kāi)源的電子平臺(tái),其不僅是一種基于Atmel AVR單片機(jī)的控制器,,也是包含Arduino IDE以及開(kāi)源社區(qū)的一個(gè)開(kāi)源系統(tǒng),。Arduino控制器采用了多樣的硬件配置,其中應(yīng)用最為廣泛的Arduino Uno采用ATmega 328作為核心處理器,,包括14通道數(shù)字輸入/輸出,,其中包括6通道PWM輸出、6通道10 bit ADC模擬輸入/輸出通道,,電源電壓主要有5 V和3.3 V[3],。在核心控制板的外圍,有開(kāi)關(guān)量輸入輸出模塊,、各種模擬量傳感器輸入模塊,、總線類傳感器的輸入模塊,還有網(wǎng)絡(luò)通信模塊[4],。使用者通過(guò)編程與輸入和輸出信號(hào)做出各種交互,。由于Arduino采用開(kāi)源協(xié)議,任何人和公司都可以利用開(kāi)源公布的文檔生產(chǎn)兼容的Arduino控制器,。Arduino兼容控制器的低廉價(jià)格,,受到廣大極客的熱捧,。
1.2 光照傳感器
BH1750FVI是一種用于兩線式串行總線接口的數(shù)字型光強(qiáng)度傳感器集成電路。其內(nèi)部結(jié)構(gòu)如圖1所示,。
光敏二極管PD的信號(hào)通過(guò)集成運(yùn)算放大器將電流轉(zhuǎn)化為電壓,,之后通過(guò)ADC進(jìn)行數(shù)模轉(zhuǎn)換為16 bit數(shù)字信號(hào),轉(zhuǎn)換后的數(shù)字信號(hào)通過(guò)邏輯芯片輸出為I2C信號(hào),。BH1750FVI的地址模式分為高位和低位兩種,,當(dāng)ADD接VCC時(shí)為高地址模式,當(dāng)ADD接GND時(shí)為低地址模式,。
1.3 土壤水分傳感器
在監(jiān)測(cè)系統(tǒng)中,,采用了價(jià)格低廉的電阻式水分傳感器??梢愿鶕?jù)使用需要更換為抗電離腐蝕的專用數(shù)字土壤水分傳感器,。
如圖2所示,當(dāng)傳感器探頭插入土壤中時(shí),,由于土壤水分含量影響土壤電阻值的大小,,從而影響三極管基極的導(dǎo)通電流的大小?;鶚O電流放大為發(fā)射極電流后經(jīng)下拉電阻轉(zhuǎn)化為電壓形式輸入Arduino控制板,。
1.4 溫濕度傳感器
本監(jiān)測(cè)系統(tǒng)采用DHT22作為溫濕度傳感器,它采用了電容式感濕元件與NTC測(cè)溫元件,,并集成了一個(gè)微型8位單片機(jī),。DHT22將在濕度實(shí)驗(yàn)室中校準(zhǔn)的系數(shù)存儲(chǔ)在OTP內(nèi)存中,檢測(cè)信號(hào)需要通過(guò)校準(zhǔn)系數(shù)進(jìn)行處理,。
DHT22采用單總線數(shù)據(jù)結(jié)構(gòu)進(jìn)行通信和同步,。每次通信發(fā)送數(shù)據(jù)量為40 bit,其中濕度數(shù)據(jù)為16 bit,,溫度數(shù)據(jù)為16 bit,,校驗(yàn)和為8 bit。一般采用高速模式通信,,每次通信發(fā)送時(shí)間約為5 ms,。DHT22在收到Arduino所發(fā)出開(kāi)始信號(hào)后才開(kāi)始一次溫濕度的測(cè)量,平時(shí)不會(huì)主動(dòng)收集數(shù)據(jù),。
1.5 CO2濃度傳感器
CO2濃度傳感器主要采用了MG-811 CO2探頭,,對(duì)CO2極為敏感,同時(shí)還能排除酒精和CO的干擾,。其內(nèi)部結(jié)構(gòu)如圖3所示。
當(dāng)傳感器在CO2的環(huán)境中,,電極將會(huì)發(fā)生如下反應(yīng):
負(fù)極:2Li++CO2+1/2O2+2e-=Li2CO3
正極:2Na++1/2O2+2e-=Na2O
總電極反應(yīng):Li2CO3+2Na+=Na2O+2Li++CO2
傳感器敏感電極與參考電極間的電勢(shì)差(EMF)符合能斯特方程:
EMF=Ec-(RxT)/(2F)ln(P(CO2))
當(dāng)探頭內(nèi)部通過(guò)外電路提供的電壓加熱時(shí),,探頭就相當(dāng)于一個(gè)固體電解質(zhì)電池,其兩端對(duì)應(yīng)輸出電壓信號(hào),其值符合能斯特方程,。故可將空氣中的CO2以電壓的形式輸出,。
1.6 ZigBee通信模塊
ZigBee是基于IEEE 802.15.4標(biāo)準(zhǔn)的低功耗個(gè)域網(wǎng)協(xié)議。其特點(diǎn)是近距離,、自組織,、低功耗、相對(duì)成本低,。ZigBee工作在2.4 GHz,、868 MHz和915 MHz頻段上,可靠傳輸距離為75 m以內(nèi),,一般室內(nèi)為30 m,。ZigBee的網(wǎng)絡(luò)層采用了星型、樹(shù)型和網(wǎng)狀網(wǎng)3種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),,每個(gè)ZigBee網(wǎng)絡(luò)最多可以支持65 000個(gè)節(jié)點(diǎn)[5],,廣泛地使用于自動(dòng)控制和遠(yuǎn)程控制領(lǐng)域。
在Arduino系統(tǒng)中主要采用的是美國(guó)MaxStream公司生產(chǎn)的Xbee模塊,。該模塊使用方便,,只需將數(shù)據(jù)輸入一個(gè)XBee模塊,它就能自動(dòng)地將數(shù)據(jù)發(fā)送到另一個(gè)匹配好的XBee模塊,。
采用XBee擴(kuò)展板可以將XBee模塊連接至Arduino,,USB 適配器則可將XBee模塊通過(guò)USB口與計(jì)算機(jī)連接,從而實(shí)現(xiàn)Arduino與計(jì)算機(jī)的數(shù)據(jù)通信,。并可采用串口指令或X-CTU軟件對(duì)XBee參數(shù)進(jìn)行配置,。
1.7 RS-485串口通信模塊
雖然Arduino與上位機(jī)可以采用ZigBee技術(shù)進(jìn)行無(wú)線連接,但是XBee相對(duì)其他傳感器模塊來(lái)說(shuō)成本比較高,,不適合大規(guī)模使用,。Arduino作為開(kāi)源硬件有著豐富的擴(kuò)展性,可以根據(jù)使用需求與LabVIEW采用有線串口通信,。并且只需要使用LabVIEW Interface for Arduino的庫(kù)函數(shù),,并不需要了解具體的底層實(shí)現(xiàn)。
RS-485作為串口通信的標(biāo)準(zhǔn)之一,,采用平衡傳輸方式,。當(dāng)采用二線制時(shí),可以實(shí)現(xiàn)多點(diǎn)雙向通信,,總線上最多可接32個(gè)設(shè)備,,最大傳輸距離約為1 200 m。
在使用RS-485時(shí),,Arduino端主要采用MAX485接口芯片模塊完成RS-485與TTL電平的轉(zhuǎn)換,。由于上位機(jī)通常只帶有USB接口,,可以通過(guò)USB/RS-485轉(zhuǎn)換電路,先將USB信號(hào)轉(zhuǎn)化為TTL信號(hào),,再由TTL信號(hào)轉(zhuǎn)化為RS-485信號(hào),。
2 虛擬儀器與LabVIEW
虛擬儀器是采用計(jì)算機(jī)為控制器,以軟件方式實(shí)現(xiàn)數(shù)據(jù)測(cè)量的技術(shù),。虛擬儀器將采集的數(shù)據(jù)通過(guò)計(jì)算機(jī)傳輸,、分析、處理,、存儲(chǔ)后,,在虛擬面板顯示測(cè)量結(jié)果。即通過(guò)編程實(shí)現(xiàn)真實(shí)儀器的功能,,而通過(guò)虛擬面板顯示,。
2.1 LabVIEW
LabVIEW是由美國(guó)NI公司開(kāi)發(fā)的圖形化程序開(kāi)發(fā)平臺(tái),早期用于自動(dòng)控制設(shè)計(jì),,現(xiàn)已成為成熟的高級(jí)編程語(yǔ)言,,廣泛被工業(yè)界以及學(xué)術(shù)界所使用,作為標(biāo)準(zhǔn)的數(shù)據(jù)采集與設(shè)備控制軟件[6],。
LabVIEW作為可視化的圖形編程軟件編寫(xiě)儀器軟面板,,界面友好,操作方便,,具有以下特點(diǎn)[7]:(1)函數(shù)封裝于可視化的模塊之中,,采用連線表示功能模塊間的數(shù)據(jù)傳遞;(2)可采用高亮執(zhí)行調(diào)試,,直觀顯示運(yùn)行中的問(wèn)題,;(3)多操作系統(tǒng)平臺(tái)支持;(4)通信接口建立方便,,可采用多種形式與下位機(jī)連接,;(5)提供豐富的庫(kù)函數(shù)供用戶使用。
2.2 LabVIEW與Arduino的連接
LabVIEW與Arduino的連接方式包括了LabVIEW Interface for Arduino,,有線串口,、無(wú)線串口以及網(wǎng)絡(luò)接口。LabVIEW Interface for Arduino由于實(shí)際上并不涉及Arduino編程,,只能采用官方的Arduino函數(shù)庫(kù)在LabVIEW端完全控制,,所以可用傳感器非常有限,擴(kuò)展性差,。網(wǎng)絡(luò)接口的方式雖然是只需要Arduino與LabVIEW聯(lián)入互聯(lián)網(wǎng)就能實(shí)現(xiàn)方便地通信,,但是對(duì)于農(nóng)用耕地要實(shí)現(xiàn)互聯(lián)網(wǎng)的覆蓋和接入,在現(xiàn)階段很難做到,。所以,,在農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)中采用串口連接Arduino與LabVIEW,。
在使用串口連接Arduino與LabVIEW之前,LabVIEW需要先安裝VISA,。VISA是虛擬儀器軟件體系結(jié)構(gòu)的縮寫(xiě),主要應(yīng)用于儀器編程的標(biāo)準(zhǔn)I/O應(yīng)用程序接口,。在LabVIEW采用VISA節(jié)點(diǎn)進(jìn)行串口通信,,配置好VISA是實(shí)現(xiàn)串口通信的首要步驟。
當(dāng)采用無(wú)線串口,,即設(shè)計(jì)方案中的ZigBee方式連接Arduino與上位機(jī)時(shí),,由于需要實(shí)現(xiàn)2個(gè)或者以上的XBee模塊來(lái)實(shí)現(xiàn)通信,所以需要使用X-CTU軟件每個(gè)XBee模塊的參數(shù)進(jìn)行配置[8],。XBee模塊具有64 bit的長(zhǎng)地址與16 bit的短地址,,其中64 bit長(zhǎng)地址為出廠時(shí)寫(xiě)入,不能修改,,16 bit短地址需要進(jìn)行人工配置,。當(dāng)采用長(zhǎng)地址作為尋址方式時(shí)就需要將接收模塊的64 bit地址設(shè)置為發(fā)送模塊的目標(biāo)地址高位(Destination Address High,DH)+目標(biāo)地址低位(Destination Address Low,,DL),。若采用短地址作為尋址方式則需將接收模塊的16 bit地址設(shè)置為發(fā)送模塊的目標(biāo)地址低32 bit(DL),并將發(fā)送模塊的DH置零,。
3 Arduino與LabVIEW系統(tǒng)整合設(shè)計(jì)
3.1 傳感器設(shè)置
Arduino語(yǔ)言建立在C/C++基礎(chǔ)上,,其基本程序框架由setup()和loop()兩部分組成。Arduino程序首先執(zhí)行setup()函數(shù),,并且只運(yùn)行一次,。因此,setup()函數(shù)一般用于初始化,,例如設(shè)置引腳類型,、配置串口、引入類庫(kù)文件,、外圍器件的初始化等,。初始化之后執(zhí)行l(wèi)oop()函數(shù),而且loop()函數(shù)將會(huì)不斷循環(huán)執(zhí)行,,故所有的執(zhí)行語(yǔ)句都放在loop()函數(shù)中,,完成指定的輸入/輸出。
在本設(shè)計(jì)中,,采用光照傳感器,、土壤水分傳感器、溫濕度傳感器以及CO2濃度傳感器采集農(nóng)作物生長(zhǎng)環(huán)境參數(shù),。其中土壤水分傳感器與溫濕度傳感器的數(shù)據(jù)可以通過(guò)模擬輸入口直接被Arduino讀取,。
對(duì)于光照傳感器由于采用I2C總線傳輸,,在配置完總線參數(shù)后,自定義讀取數(shù)據(jù)函數(shù)如下:
int BH1750_Read(int address)
{ int i=0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);
while(Wire.available())
{buff[i] = Wire.receive(); // receive one byte
i++;}
Wire.endTransmission();
return i; }
對(duì)于CO2濃度傳感器,,雖然輸出電壓可以通過(guò)模擬輸入端直接讀取,,但是為了防止?jié)舛鹊牟痪鶆蛞鸬耐话l(fā)誤差,還需要對(duì)采樣數(shù)據(jù)做平滑處理并轉(zhuǎn)化為ppm濃度,。
3.2 LabVIEW配置
LabVIEW的主要功能為:向Arduino控制板發(fā)送采集光照,、溫度、濕度,、水分,、二氧化碳的命令,Arduino在接收到LabVIEW的命令后,,通過(guò)傳感器模塊接收相應(yīng)的數(shù)據(jù)(并將二氧化碳傳感器采集的電壓數(shù)據(jù)轉(zhuǎn)化的二氧化碳濃度)傳送回LabVIEW,,LabVIEW將收到的數(shù)據(jù)顯示在前面板。
LabVIEW的前面板如圖4所示,,主要通過(guò)儀表盤表示了光照,、溫度、濕度,、水分以及二氧化碳濃度的狀態(tài),。
LabVIEW的主程序采用狀態(tài)機(jī)實(shí)現(xiàn)。主程序分為6個(gè)狀態(tài):0狀態(tài)初始化串口,,1狀態(tài)光照測(cè)量,,2狀態(tài)溫度測(cè)量,3狀態(tài)濕度測(cè)量,,4狀態(tài)水分測(cè)量,,5狀態(tài)二氧化碳測(cè)量。初始為0狀態(tài),。程序框圖如圖5所示(以二氧化碳濃度采集環(huán)節(jié)為例),。
4 總結(jié)
基于開(kāi)源硬件的智能農(nóng)業(yè)監(jiān)測(cè)系統(tǒng),充分利用了開(kāi)源硬件價(jià)格低廉,、擴(kuò)展性強(qiáng)的特點(diǎn),,并結(jié)合ZigBee低功耗、自組網(wǎng)的優(yōu)勢(shì),,使得整個(gè)系統(tǒng)可以基于虛擬儀器方便地對(duì)農(nóng)業(yè)環(huán)境中的各個(gè)參數(shù)進(jìn)行可視化監(jiān)控,,從而做到對(duì)環(huán)境的智能監(jiān)測(cè),以實(shí)現(xiàn)農(nóng)作物的優(yōu)質(zhì)高產(chǎn),。而且本系統(tǒng)可以根據(jù)環(huán)境監(jiān)測(cè)需要擴(kuò)展新的傳感器,,并可在有線與無(wú)線組網(wǎng)間進(jìn)行切換,在智能農(nóng)業(yè)領(lǐng)域有著較強(qiáng)的實(shí)踐性和可操作性。
參考文獻(xiàn)
[1] 李圣華,肖傳輝.基于物聯(lián)網(wǎng)技術(shù)的智能農(nóng)業(yè)系統(tǒng)設(shè)計(jì)[J].科技廣場(chǎng),,2011(7):73-75.
[2] 張佐經(jīng),,張海輝,翟長(zhǎng)遠(yuǎn),,等.設(shè)施農(nóng)業(yè)環(huán)境因子無(wú)線監(jiān)測(cè)及預(yù)警系統(tǒng)設(shè)計(jì)[J].農(nóng)機(jī)化研究,,2010,32(11):78-82.
[3] Jonathan Oxer,,Hugh Blemings.Practical Arduino:Cool Pro-jects for Open Source Hardware[M].New York:Springer-Verlag,,2009:1-10.
[4] 米歇爾·麥克羅伯茨.Arduino從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2013.
[5] 韓廷閣,,李書(shū)琴.基于ZigBee的土壤濕度無(wú)線采集系統(tǒng)節(jié)點(diǎn)設(shè)計(jì)[J].農(nóng)機(jī)化研究,2010,,32(12):154-159.
[6] 劉君華.基于LabVIEW的虛擬儀器設(shè)計(jì)[M].北京:電子工業(yè)出版社,,2003.
[7] 李江全.LabVIEW虛擬儀器數(shù)據(jù)采集與串口通信測(cè)控應(yīng)用實(shí)戰(zhàn)[M].北京:人民郵電出版社,2010.
[8] 王靜霞.一種與ZigBee/802.15.4協(xié)議兼容的RF模塊XBee/XBee Pro及其應(yīng)用[J].電子工程師,,2007,,33(3):24-27.