遼寧建筑職業(yè)學(xué)院 自動(dòng)控制系,遼寧 遼陽(yáng) 111000
我國(guó)是農(nóng)業(yè)大國(guó),同時(shí)也是農(nóng)業(yè)設(shè)施大國(guó),設(shè)施農(nóng)業(yè)起步較晚,但發(fā)展較快。設(shè)施農(nóng)業(yè)同普通農(nóng)業(yè)相比,產(chǎn)業(yè)化程度高,效益好,接受新技術(shù)的能力強(qiáng)。
據(jù)不完全統(tǒng)計(jì),目前我國(guó)日光溫室和塑料大棚種植面積分別達(dá)到330,000hm2和670,000hm2,很多中小型農(nóng)戶或者企業(yè)仍然采用人工查看溫濕度計(jì)并派人值守的方法來監(jiān)測(cè)農(nóng)業(yè)生產(chǎn),其效率低下,人工成本高。隨著信息技術(shù)的發(fā)展,傳統(tǒng)農(nóng)業(yè)中人員密集型的數(shù)據(jù)采集與監(jiān)測(cè)和有人值守的共組方式將被電子信息監(jiān)控系統(tǒng)所取代,實(shí)現(xiàn)監(jiān)控現(xiàn)場(chǎng)無人值守,監(jiān)控中心集中監(jiān)控、集中管理、集中維護(hù)的現(xiàn)代無線通信系統(tǒng)[1][2]。
溫室環(huán)境是封閉和相對(duì)獨(dú)立的生態(tài)環(huán)境,在這樣的環(huán)境中,有很多因素制約著溫室作物的生長(zhǎng),其中的溫濕度指標(biāo)直接關(guān)系到農(nóng)作物的產(chǎn)量和質(zhì)量,是溫室大棚種植的重要參考指標(biāo)。
本文基于51內(nèi)核單片機(jī)和GSM短信模塊,針對(duì)中小型農(nóng)戶溫室大棚種植特點(diǎn),設(shè)計(jì)并開發(fā)一種適用于溫室大棚溫濕度監(jiān)測(cè)短信報(bào)警系統(tǒng),解決了人工監(jiān)測(cè)效率低下以及無人值守監(jiān)測(cè)不及時(shí)等問題,同時(shí)也便于對(duì)大棚內(nèi)溫濕度參數(shù)及時(shí)掌握,對(duì)歷史數(shù)據(jù)進(jìn)行存儲(chǔ)、分析,是電子信息技術(shù)在傳統(tǒng)農(nóng)業(yè)和農(nóng)業(yè)信息化方面的有益探索和實(shí)踐。
根據(jù)系統(tǒng)設(shè)計(jì)要求,能夠?qū)厥掖笈飪?nèi)溫濕度參數(shù)進(jìn)行實(shí)時(shí)連續(xù)采集和分析,對(duì)關(guān)鍵參數(shù)點(diǎn)進(jìn)行檢測(cè)和報(bào)警,根據(jù)實(shí)際需要,系統(tǒng)設(shè)計(jì)溫度檢測(cè)范圍在-20℃~ 60℃,精度為±0.5℃,濕度檢測(cè)范圍在0~100%RH,精度為±3%RH,并具備較強(qiáng)的抗干擾能力。系統(tǒng)觸發(fā)報(bào)警后,應(yīng)以短信形式發(fā)送報(bào)警消息,同時(shí)發(fā)出聲光電報(bào)警信號(hào)。系統(tǒng)GSM網(wǎng)絡(luò)工作頻段在GSM900/1800MHz雙頻網(wǎng)絡(luò),通信狀態(tài)下整體電流小于150mA,待機(jī)狀態(tài)下電流小于50mA。此外,系統(tǒng)應(yīng)具備存儲(chǔ)數(shù)據(jù)的功能,以便階段時(shí)間內(nèi)對(duì)大棚溫濕度參數(shù)進(jìn)行提取和分析。
根據(jù)系統(tǒng)設(shè)計(jì)要求,給出總體設(shè)計(jì)方案:以STC15系列增強(qiáng)型單片機(jī)IAP15W4K32S4為核心,使用數(shù)字式溫濕度傳感器DHT21來采集數(shù)據(jù),通過TC35i-GSM模塊發(fā)送狀態(tài)數(shù)據(jù)短信,接收命令設(shè)置短信。使用DS1302作為時(shí)鐘信號(hào)發(fā)生器,使用SD卡保存數(shù)據(jù),用于日后數(shù)據(jù)分析和溫度曲線的繪制;同時(shí)配備LCD12864液晶顯示屏用作人機(jī)交互,可顯示測(cè)量數(shù)據(jù)、顯示系統(tǒng)時(shí)間、顯示系統(tǒng)參數(shù);配備按鍵以實(shí)現(xiàn)手動(dòng)發(fā)送信息,手動(dòng)設(shè)置系統(tǒng)參數(shù)功能等功能。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
單片機(jī)在每一個(gè)監(jiān)控點(diǎn)完成對(duì)溫濕度信號(hào)的采集,根據(jù)設(shè)置的上下限預(yù)警值,將此事件的性質(zhì)和必要的數(shù)據(jù)信息通過GSM短信息形式發(fā)送給監(jiān)控中心及系統(tǒng)設(shè)置的手機(jī)里,以便相關(guān)人員及時(shí)掌握情況并采取措施將參數(shù)調(diào)整回合理范圍。短信息(SMS)數(shù)據(jù)傳輸業(yè)務(wù)在數(shù)據(jù)量不大、需要長(zhǎng)時(shí)間連接或者所監(jiān)控的節(jié)點(diǎn)位置經(jīng)常變化的情況下,對(duì)于那些實(shí)時(shí)性要求不高的遠(yuǎn)程監(jiān)控對(duì)象,具有系統(tǒng)可靠性高、地域空間限制小、開發(fā)成本低、開發(fā)周期短等明顯優(yōu)點(diǎn)[3][4]。
在單片機(jī)的選擇上,使用宏晶科技有限公司最新推出的STC15系列新型Flash單片機(jī),與傳統(tǒng)8051指令兼容,但在片內(nèi)資源、操作性能和運(yùn)行速度上做了很大的改進(jìn)[5]。開發(fā)過程中選用IAP15W4K32S2單片機(jī),其特點(diǎn)如下:增強(qiáng)型8051內(nèi)核,每個(gè)機(jī)器周期只需要1個(gè)系統(tǒng)時(shí)鐘,速度比傳統(tǒng)8051快8~12倍;內(nèi)部高精度R/C振蕩器,可省略外部晶振,內(nèi)部時(shí)鐘頻率5~35MHz可選;內(nèi)部集成高可靠復(fù)位電路,8級(jí)可選復(fù)位門限電壓,可省略外部復(fù)位電路;具有ISP(在系統(tǒng)編程)/IAP(在應(yīng)用編程)功能,片機(jī)本身就是仿真器,為調(diào)試提供極大方便;32KB片內(nèi)Flash程序存儲(chǔ)器;IO端口可設(shè)置四種模式,即準(zhǔn)雙向/弱上拉、強(qiáng)推挽/強(qiáng)上拉、僅為輸入/高阻以及開漏模式。
短信模塊選擇使用TC35i-GSM模塊。TC35i是德國(guó)西門子公司的一款雙頻900/1800MHz高度集成的GSM模塊,它可以安全可靠地實(shí)現(xiàn)語音、數(shù)據(jù)、短信息服務(wù)等功能,它的工作電壓是3.3~5.5V,在GSM網(wǎng)絡(luò)日臻完善的今天,TC35i是一款優(yōu)秀品質(zhì)的產(chǎn)品,它集成度高,可以在短時(shí)間內(nèi)花費(fèi)較少的成本開發(fā)新產(chǎn)品[6]。TC35i電路注冊(cè)主要包括:基帶處理器、射頻電路、內(nèi)存、供電電路、天線等?;鶐幚砥魇荰C35i的核心組件,它具有該模塊所有的數(shù)字和模擬功能,主要實(shí)現(xiàn)數(shù)據(jù)信息和語言信息的處理[7]。TC35i模塊框圖和實(shí)物圖如圖2所示。
TC35i模塊工作可靠,性能穩(wěn)定,接口簡(jiǎn)單,可以直接與單片機(jī)串口連接,電路圖如圖3所示。
溫濕度傳感器選擇DHT21數(shù)字式溫濕度傳感器,這是一款體積小、精度高、響應(yīng)靈敏、性價(jià)比高的傳感器,非常適合農(nóng)業(yè)現(xiàn)場(chǎng)環(huán)境使用。DHT21內(nèi)部包含一個(gè)NTC測(cè)溫元件和一個(gè)電容式感濕元件,能夠直接輸出校準(zhǔn)過的數(shù)字信號(hào),信號(hào)傳輸距離可達(dá)20m以上,抗干擾能力強(qiáng)。四腳封裝的DHT21接口簡(jiǎn)單,其與單片機(jī)連接電路如圖4所示。
數(shù)據(jù)存儲(chǔ)介質(zhì)選擇使用SD卡,SD卡具有價(jià)格低廉、存儲(chǔ)容量大、使用方便、通用性與安全性強(qiáng)等優(yōu)點(diǎn),已經(jīng)成為最為通用的數(shù)據(jù)存儲(chǔ)卡。工業(yè)控制器及數(shù)據(jù)采集等設(shè)備也常需要使用SD卡提高數(shù)據(jù)存儲(chǔ)的靈活性。SD卡的接口可以支持兩種操作模式:SD模式和SPI模式。通過這兩種模式都可以實(shí)現(xiàn)數(shù)據(jù)的傳輸,SD模式是SD卡標(biāo)準(zhǔn)的讀寫方式,其采用6線制,使用CLK、CMD、DAT0~DAT3進(jìn)行數(shù)據(jù)通信,數(shù)據(jù)傳輸速率高,但是協(xié)議復(fù)雜,只有少數(shù)單片機(jī)才提供此接口;而SPI方式采用4線制,使用CS、CLK、DataIn、DataOut進(jìn)行數(shù)據(jù)通信。單片機(jī)對(duì)SD卡進(jìn)行讀寫時(shí)一般都采用 SPI模式。因?yàn)榇蠖鄶?shù)中高檔單片機(jī)都提供SPI接口,易于實(shí)現(xiàn)。
SD卡的操作模式選用SPI模式,單片機(jī)通過軟件編程實(shí)現(xiàn)SPI模式的數(shù)據(jù)傳輸。在SPI模式下,單片機(jī)與SD卡的連接主要有4根線:包括時(shí)鐘線,兩根數(shù)據(jù)傳輸線和一根片選線。引腳1作為SPI片選線,引腳2作為SPI總線的數(shù)據(jù)輸入線,引腳7作為數(shù)據(jù)輸出線,引腳5用作時(shí)鐘線(CLK)。除了電源和地,保留引腳可懸空。SD卡SPI模式下與單片機(jī)的連接圖如圖5所示。
聲光報(bào)警電路如圖6所示,當(dāng)檢測(cè)到溫濕度參數(shù)高于或者低于上下限時(shí),單片機(jī)P26引腳輸出低電平驅(qū)動(dòng)紅色指示燈點(diǎn)亮,同時(shí)P27經(jīng)過三極管驅(qū)動(dòng)蜂鳴器發(fā)出報(bào)警聲,當(dāng)溫濕度參數(shù)恢復(fù)到正常范圍后報(bào)警自動(dòng)解除,停止聲光報(bào)警。
溫濕度監(jiān)測(cè)及報(bào)警的邏輯流程是在程序控制下完成的,主程序包括系統(tǒng)初始化、監(jiān)測(cè)溫濕度數(shù)據(jù)、判斷是否超過報(bào)警上下限值、發(fā)送報(bào)警信息、數(shù)據(jù)存儲(chǔ)、報(bào)警狀態(tài)存儲(chǔ)、LCD顯示、響應(yīng)參數(shù)設(shè)置和控制命令等功能。主程序流程圖如圖7所示。
在系統(tǒng)初始化階段,主要完成GSM模塊、LCD模塊、SD卡的初始化,讀取EEPROM中存儲(chǔ)的參數(shù)值對(duì)系統(tǒng)狀態(tài)進(jìn)行初始化。
溫濕度數(shù)據(jù)采集程序基于DHT21單總線時(shí)序,單片機(jī)在讀取DHT21數(shù)據(jù)之前需要先給一個(gè)18ms以上的低電平,單片機(jī)發(fā)送一次開始信號(hào)后,DHT21從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號(hào)結(jié)束后,DHT21發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集。因?yàn)镈HT21對(duì)時(shí)序要求嚴(yán)格,運(yùn)行該子程序時(shí)應(yīng)關(guān)閉中斷,不調(diào)用延時(shí)函數(shù),以避免對(duì)時(shí)序的干擾。
TC35i模塊操作接口是基于AT指令集。AT指令一般應(yīng)用于終端設(shè)備與控制器設(shè)備之間的連接與通信。AT指令簡(jiǎn)單易懂,采用標(biāo)準(zhǔn)串口來收發(fā)AT命令,大大簡(jiǎn)化了對(duì)設(shè)備的控制,將相應(yīng)的操作轉(zhuǎn)換成簡(jiǎn)單串口編程。AT指令以AT作首,字符結(jié)束的字符串,指令響應(yīng)數(shù)據(jù)包在其中,每個(gè)指令執(zhí)行成功與否都有相應(yīng)的返回。使用AT指令控制TC35i模塊發(fā)送短息需要四個(gè)步驟:發(fā)送短信格式設(shè)置指令、發(fā)送短信目標(biāo)號(hào)碼設(shè)置指令、填寫短信內(nèi)容、發(fā)送短信結(jié)束符。
發(fā)送短消息常用Text和PDU(Protocol Data Unit,協(xié)議數(shù)據(jù)單元)模式。使用Text模式收發(fā)短信代碼簡(jiǎn)單,實(shí)現(xiàn)起來十分容易,但最大的缺點(diǎn)是不能收發(fā)中文短信;而PDU模式不僅支持中文短信,也能發(fā)送英文短信。系統(tǒng)默認(rèn)為TEXT格式,使用中通常需要發(fā)送中文字符,可設(shè)置選擇使用PDU模式,在初始化階段添加發(fā)送相應(yīng)指令(”AT+CMGF=0 ”)進(jìn)行格式轉(zhuǎn)換。
單片機(jī)通過串口向TC35i模塊發(fā)送指令“AT+CMGS=”xxxxxxxxxxx””來設(shè)置短信目標(biāo)地址,其中x部分就是目標(biāo)電話號(hào)碼;然后通過串口向TC35i模塊設(shè)置發(fā)送短信內(nèi)容,最后發(fā)送短息結(jié)束符0x1A,等待接收到返回值“OK ”即可。
SD卡的軟件設(shè)計(jì)主要包括兩部分內(nèi)容:SD卡的上電初始化過程和對(duì)SD卡的讀寫操作。SD卡在進(jìn)行通信和數(shù)據(jù)讀寫時(shí)采用標(biāo)準(zhǔn)的SPI接口。SD卡的命令列表都以CMD和ACMD開頭,分別指通用命令和專用命令,后面接命令的編號(hào)。
SD卡上電后,主機(jī)首先向SD卡發(fā)送74個(gè)時(shí)鐘周期,以完成SD卡上電過程。然后SD卡自動(dòng)進(jìn)入SD總線模式,并在SD總線模式下向SD卡發(fā)送復(fù)位命令CMD0,此時(shí)應(yīng)設(shè)置片選信號(hào)CS處于低電平態(tài),使SD卡進(jìn)入SPI總線模式。SD卡進(jìn)入SPI工作模式后會(huì)發(fā)出應(yīng)答引號(hào),若主機(jī)回應(yīng)信號(hào)為01,即表明SD卡已進(jìn)入SPI模式,此時(shí)主機(jī)即可不斷地向SD卡發(fā)送命令字CMD1并讀取SD卡的應(yīng)答信號(hào),直到應(yīng)答信號(hào)為00,表明SD卡完成初始化過程。
完成 SD 卡的初始化后,就可以對(duì) SD 卡進(jìn)行讀寫操作。讀寫操作都是通過指令來完成的[8]。SPI總線模式支持單塊(CMD24)和多塊(CMD25) 寫操作,多塊操作是指從制定位置開始寫下去,直到SD卡收到一個(gè)停止命令CMD12才停止。單塊寫操作的數(shù)據(jù)塊長(zhǎng)度只能是512字節(jié),SD卡對(duì)每個(gè)發(fā)送給自己的數(shù)據(jù)塊都通過一個(gè)應(yīng)答命令確認(rèn)。扇區(qū)讀操作則相對(duì)簡(jiǎn)單,先寫入命令,在得到相應(yīng)的回應(yīng)后,開始數(shù)據(jù)讀取。
采用實(shí)地測(cè)試方法,在溫室大棚負(fù)載環(huán)境下進(jìn)行測(cè)試。設(shè)定溫度上下限為15℃~28℃,設(shè)定濕度上下限為35%RH ~ 40%RH,測(cè)量時(shí)間間隔設(shè)定為1min;如果觸發(fā)報(bào)警,短信報(bào)警時(shí)間間隔設(shè)定為15min。將系統(tǒng)測(cè)量數(shù)據(jù)與專業(yè)測(cè)量?jī)x器讀數(shù)進(jìn)行比較,每隔半小時(shí)記錄一次數(shù)據(jù),測(cè)試結(jié)果見表1所示。
表1 溫濕度測(cè)量數(shù)據(jù)表(溫度單位:℃,濕度單位:%RH)
經(jīng)過實(shí)地測(cè)試分析,檢測(cè)系統(tǒng)測(cè)量結(jié)果與專業(yè)測(cè)量工具相比誤差較小,溫度測(cè)量最大誤差0.3℃,濕度測(cè)量最大誤差0.5RH%。當(dāng)測(cè)量值超過報(bào)警上下限時(shí),報(bào)警短信觸發(fā),系統(tǒng)測(cè)試結(jié)果良好,能夠滿足設(shè)計(jì)要求。
本文以單片機(jī)為核心,配合溫濕度傳感器及GSM無線通信模塊,設(shè)計(jì)開發(fā)了一套適合于溫室大棚內(nèi)使用的溫濕度參數(shù)檢測(cè)裝置。可實(shí)現(xiàn)常規(guī)溫濕度連續(xù)在線檢測(cè)、報(bào)警、顯示等功能。具有結(jié)構(gòu)簡(jiǎn)單、成本低廉、操作便利、不受通信線路及地區(qū)限制,可靠性高,抗干擾能力強(qiáng)等特點(diǎn),便于維護(hù)和擴(kuò)展。該系統(tǒng)應(yīng)用領(lǐng)域也可進(jìn)行推廣,對(duì)于覆蓋范圍廣,數(shù)據(jù)量較少,監(jiān)測(cè)點(diǎn)分散的監(jiān)測(cè)監(jiān)控領(lǐng)域具有一定的參考價(jià)值。