方睿舟,吳 磊,王 驍
(南京農(nóng)業(yè)大學(xué),江蘇南京210095)
大棚是一個(gè)特殊的蔬菜生產(chǎn)設(shè)備,隨著經(jīng)濟(jì)和社會(huì)的發(fā)展,其在日常生活中已隨處可見(jiàn)。現(xiàn)如今,大棚已不僅僅滿足于盆栽,果樹(shù)等一些常見(jiàn)的農(nóng)作物的種植,更加向著滿足的像一些經(jīng)濟(jì)作物尤其是一些稀有花卉的生長(zhǎng)條件發(fā)展。但是,光靠植物種植者們靠經(jīng)驗(yàn)栽培顯然缺乏量化指標(biāo),而單片機(jī)控制溫濕度的良好特性正好為此類問(wèn)題提出了解決方案。
智能大棚的快速成長(zhǎng)得益于我國(guó)改革開(kāi)放以來(lái)農(nóng)業(yè)向著更高層次智能化、規(guī)模化發(fā)展所取得的一系列技術(shù)上的突破。但就我國(guó)目前的智能大棚研究而言,仍然存在著科技含量低、環(huán)境調(diào)控技術(shù)與設(shè)備落后,缺乏具體指標(biāo)、軟件處理不到位、先進(jìn)技術(shù)不適應(yīng)國(guó)情等諸多問(wèn)題。為此,本文提出了一種基于CC2530模塊的并運(yùn)用時(shí)興的WIFI技術(shù)的控制系統(tǒng)。
本文設(shè)計(jì)的控制系統(tǒng)主要是對(duì)溫室內(nèi)部的溫濕度進(jìn)行測(cè)試與控制。該系統(tǒng)由溫濕度傳感器無(wú)線采集節(jié)點(diǎn)(圖1中的模塊2、3)、ZigBee協(xié)調(diào)器(圖1中的模塊1)、上位主機(jī)(圖中PC機(jī))三個(gè)部分組成。溫濕度傳感器采集節(jié)點(diǎn)安放在適當(dāng)?shù)奈恢脤?duì)大棚溫濕度進(jìn)行采集,并將該信息通過(guò)ZigBee傳感網(wǎng)絡(luò)與ZigBee協(xié)調(diào)器進(jìn)行通信。此時(shí),ZigBee協(xié)調(diào)器利用無(wú)線組網(wǎng)后的網(wǎng)絡(luò)將收集的信息傳遞到上位機(jī)。上位機(jī)的作用是處理數(shù)據(jù)并且對(duì)溫度和濕度實(shí)現(xiàn)實(shí)時(shí)顯示。當(dāng)出現(xiàn)溫濕度異常時(shí),上位機(jī)發(fā)出指令并傳遞到ZigBee協(xié)調(diào)器,協(xié)調(diào)器接受指令并執(zhí)行命令,控制繼電器從而控制溫濕度調(diào)節(jié)器,達(dá)到調(diào)節(jié)大棚溫濕度的目的。值得一提的是,采集節(jié)點(diǎn)的數(shù)據(jù)分析能力、記憶能力與通信能力不錯(cuò),它很好地銜接起傳感器網(wǎng)絡(luò)與因特網(wǎng)等外部網(wǎng)絡(luò),完成了兩種協(xié)議棧之間的通信協(xié)議的改變,同時(shí)能實(shí)現(xiàn)對(duì)節(jié)點(diǎn)本身監(jiān)控并將所收集到的數(shù)據(jù)發(fā)送至外 部網(wǎng)絡(luò)。
圖1 總體設(shè)計(jì)框圖
鑒于我國(guó)農(nóng)業(yè)環(huán)境要求特別,溫濕度檢測(cè)模塊的大小勢(shì)必受到限制,與此同時(shí),系統(tǒng)要求快速性、穩(wěn)定性、準(zhǔn)確性要好。而該設(shè)計(jì)方案應(yīng)用了基于專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù)的DHT11數(shù)字溫濕度傳感器來(lái)測(cè)量濕度,它自身能夠輸出已校準(zhǔn)的溫濕度復(fù)合數(shù)字信號(hào),它使用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),產(chǎn)品性能穩(wěn)定性。該傳感器包含感濕元件和NTC元件并與內(nèi)置的單片機(jī)相連。該傳感器反應(yīng)快速性、穩(wěn)定性好,造價(jià)低。但本設(shè)計(jì)只用其作為濕度傳感器。
為了使溫濕度分開(kāi)檢測(cè)(溫濕度檢測(cè)位置不同),該系統(tǒng)使用DS18B20作為溫度傳感器,本傳感器具有較好的抗干擾能力,適用于各種惡劣環(huán)境,便宜等優(yōu)點(diǎn)。其所檢測(cè)的最高溫度為+125℃,最低溫能夠達(dá)到零下55℃而在10到85℃范圍之內(nèi),精度為正負(fù)0.5℃ 。在使用中不需要任何外圍元件。通過(guò)內(nèi)在的寄生電路便可以保證本身供電方式多樣的DS18B20從數(shù)據(jù)線上獲得足夠的電能。因此,數(shù)據(jù)線時(shí)序符合一定的要求時(shí),不需要依靠外圍電源,簡(jiǎn)潔易用。另外,DS18B20體積小,經(jīng)濟(jì)性好,電壓適用范圍廣,因此非常適合我們采用其作為大棚內(nèi)的溫度傳感器。
在無(wú)線傳感器網(wǎng)絡(luò)中,總體設(shè)計(jì)的模塊化的思想使其控制器整體性能更佳,結(jié)構(gòu)更緊湊。CC2530擁有連接外部設(shè)備的I/O口,可收發(fā)數(shù)據(jù),控制外圍電路。因此,無(wú)論是繼電器、復(fù)位開(kāi)關(guān),還是電源、傳感器、天線,通過(guò)插針,它們都能作為外設(shè)構(gòu)成整個(gè)模塊的一部分。而傳感器是外設(shè)是最為重要的部分,它是采集數(shù)據(jù)的初始來(lái)源,同時(shí)為了與系統(tǒng)更好的匹配,所采用每個(gè)傳感器必須在軟件和硬件上完全兼容。本設(shè)計(jì)采集節(jié)點(diǎn)中我們采用低成本、可更換、能耗低的數(shù)字式傳感器,它們先把把采集到的溫度,濕度等信息儲(chǔ)存在CC2530的存儲(chǔ)器中,然后節(jié)點(diǎn)每隔一段時(shí)間節(jié)點(diǎn)就會(huì)發(fā)送這些數(shù)據(jù)信息到ZigBee協(xié)調(diào)器。因?yàn)镃C2530內(nèi)部已經(jīng)集成了多個(gè)功能模塊,所以外部電路并不需要重復(fù)地表現(xiàn)它們,其設(shè)計(jì)也因此大大的得到了優(yōu)化。
如圖2所示,其中,將兩個(gè)負(fù)載電容(C10和C11)分別與一個(gè)外圍32-MHz振蕩器X2的兩端相連。X1是一個(gè)可供任意使用的32.768-kHz晶振,它有兩個(gè)負(fù)載電容(C8和C9)用于32.768-kHz晶振。32.768 kHz晶體主要應(yīng)用于睡眠電流相對(duì)較低的損耗和準(zhǔn)確的喚醒時(shí)間。32-MHz晶振中可見(jiàn)的負(fù)載電容與32.768-kHz晶振可見(jiàn)的負(fù)載電容可由下面左右兩式求得。
圖2 晶振、天線電路及傳感器電路的設(shè)計(jì)
至于射頻天線,需要考慮以下一些問(wèn)題:天線形狀、輸出方向、天線長(zhǎng)度、天線的材料。對(duì)于傳感器節(jié)點(diǎn),由于其處于不可預(yù)期的傳感器節(jié)點(diǎn)周?chē)虼艘话氵x擇全向天線。另外它必須是單極子天線,這是一種諧振天線,其波長(zhǎng)為1/4。該天線的設(shè)計(jì)非常簡(jiǎn)單,而且可以設(shè)計(jì)為線性的,結(jié)合到PCB板中也不復(fù)雜。在天線電路設(shè)計(jì)中,巴倫電路可抗干擾、噪聲等外部干擾。巴倫電路中離散電感和電容成本也不高,很好實(shí)現(xiàn)。巴倫電路中的電感、電容大小可由以下兩式確定。
在選擇天線的材料時(shí)還要注意Q值,即品質(zhì)因素。一般來(lái)說(shuō),Q值越高表示損耗越小。對(duì)天線來(lái)說(shuō),帶寬是中心頻點(diǎn)與品質(zhì)因素的比值,所以當(dāng)帶寬為定值時(shí),Q值就必須要有一定的數(shù)值范圍。其實(shí),換能器件一般都受Q值的影響,比如在電感器件中,它是感抗與等效損耗電阻之比,這也是評(píng)價(jià)電感器件的主要因素。天線也可被視作一個(gè)換能裝置,電磁波信號(hào)改變?yōu)殡娏餍盘?hào),故它與Q值的關(guān)系是密不可分的。與其它電子元器件要求較高的Q值不同,天線反而要求較低的Q值,以便于電磁波能以更加高效的方式,在周?chē)目臻g內(nèi)進(jìn)行傳播。
對(duì)于溫度傳感器DS18B20,將單條信號(hào)線直接連接芯片的P0_0引腳。對(duì)于檢測(cè)濕度用的傳感器用DHT11作為檢測(cè)工具,該傳感器有兩根數(shù)據(jù)總線,一根為數(shù)字量的串行總線,另一根為模擬量的串行總線。輸出信號(hào)如果是模擬量,要使其通過(guò)A/D芯片,將模擬量轉(zhuǎn)換為數(shù)字信號(hào),然后傳送給單片機(jī)。但是,直接轉(zhuǎn)為數(shù)字量要方便得多,于是,直接將數(shù)字信號(hào)端連在芯片的P1_0引腳,模擬信號(hào)端空置。前兩者情況下,兩個(gè)傳感器的數(shù)據(jù)線都得接上一個(gè)上拉電阻,讓輸出的數(shù)字量趨于穩(wěn)定。
對(duì)于PCB布線問(wèn)題,為了減少阻抗衰減應(yīng)使兩線盡量粗,而且還要對(duì)稱布置,盡量通過(guò)合理的布線將CC2530的收發(fā)距離提高。硬件設(shè)計(jì)關(guān)鍵的地方是網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì),因?yàn)檫@個(gè)地方兼?zhèn)渲鴶?shù)字與高頻方面的電路特點(diǎn)。元件布局上盡量做到相同功能的電子元件集中,整體上要保證對(duì)板面空間的合理高效利用,這也有助于加工成本的降低;數(shù)字信號(hào)線布線上做到合理,不唐突;高頻部分中的電感、電容布需要匹配天線電路,也應(yīng)該做到干擾盡量少。節(jié)點(diǎn)接口需要采用一個(gè)雙排的接插件,確保其結(jié)構(gòu)堅(jiān)固耐用。設(shè)計(jì)其電源電路時(shí)電源去耦和過(guò)濾必須添加合適的電源去耦以獲得最佳的性能。本設(shè)計(jì)中PCB圖如圖3所示。
圖3 PCB板的設(shè)計(jì)
在進(jìn)行程序設(shè)計(jì)時(shí),使用IarIdePm軟件編寫(xiě)C語(yǔ)言進(jìn)行程序調(diào)試。在設(shè)計(jì)時(shí)從以下幾個(gè)面進(jìn)行考慮:
(1)高效使用單片機(jī)資源,包括中斷控制器、內(nèi)存仲裁器以及外接電子元件單元;
(2)結(jié)構(gòu)集成、模塊集成,子模塊處理實(shí)現(xiàn)其功用;
主程序主要完成溫濕度的采集、數(shù)據(jù)處理、通信、參數(shù)設(shè)定、溫濕度控制等功能,包括主程序模塊、DHT11信號(hào)采集控制模塊、串行通信程序模塊、顯示輸出模塊等。
首先,在主函數(shù)中對(duì)各個(gè)子函數(shù)模塊進(jìn)行調(diào)用,在進(jìn)入主循環(huán)函數(shù)之前,對(duì)將要調(diào)用的具體參數(shù)進(jìn)行設(shè)定。進(jìn)入毫秒級(jí)延時(shí)函數(shù),延時(shí)約一秒,使系統(tǒng)穩(wěn)定下來(lái),對(duì)串口初始化。進(jìn)入主循環(huán)后開(kāi)始向上位機(jī)發(fā)送指令,上位機(jī)接收指令后,應(yīng)答所接收的指令,然后進(jìn)行初始化顯示。在執(zhí)行主循環(huán)函數(shù)時(shí),遇到DHT11子函數(shù)時(shí),進(jìn)入該函數(shù)。執(zhí)行完后再執(zhí)行溫濕度控制子程序,完畢后,將溫濕度的轉(zhuǎn)換成字符串通過(guò)串口通信子函數(shù)將數(shù)據(jù)傳到電腦上可以看到當(dāng)前的溫濕度值。設(shè)計(jì)的流程圖如下:
被執(zhí)行芯片根據(jù)程序向DHT11發(fā)送一個(gè)脈沖,此時(shí),DHT11接收脈沖,將采集到的數(shù)據(jù)通過(guò)信號(hào)線以二進(jìn)制形式將信息傳入處理器。處理器收集數(shù)據(jù)形式為讀取高電平時(shí)隙,當(dāng)單片機(jī)讀取高電平時(shí)間在24-26μs時(shí)為0,在116-118μs時(shí)為1。
采集到數(shù)據(jù)后,相關(guān)數(shù)據(jù)格式為:溫度整小數(shù)部分與濕度整小數(shù)部分共四個(gè)字節(jié)之和等于校驗(yàn)和。如果校驗(yàn)和等于所采集的前四個(gè)字節(jié)之和,則數(shù)據(jù)真實(shí),否則再進(jìn)行數(shù)據(jù)采集,直到采集值校驗(yàn)正確為止。綜合考慮到DHT11的溫度精度、靈敏度問(wèn)題,還有采集溫濕度時(shí)最佳安放位置不同問(wèn)題,采用DS18B20代替DHT11采集溫度。因此,單片機(jī)處理溫濕度數(shù)值時(shí),僅讀取濕度部分,把溫度部分去掉不讀取。于是,處理器將收集到的數(shù)據(jù)自動(dòng)轉(zhuǎn)換為十進(jìn)制數(shù)形式,然后將數(shù)據(jù)通過(guò)RS232傳入PC進(jìn)行顯示,并將顯示值與環(huán)境實(shí)際濕度值作比較,調(diào)節(jié)采集到的數(shù)據(jù),使顯示值接近于真實(shí)值。
主程序訪問(wèn)DS18B20初始化子程序時(shí),I/O口發(fā)出480μs左右低電平的復(fù)位脈沖,再將端口變?yōu)?5到60μs的高電平,讓主機(jī)等待其發(fā)回60-240μs的脈沖,把這I/O引腳處的電平置高。
進(jìn)入寫(xiě)時(shí)序函數(shù)時(shí),I/O口首先向DS18B20產(chǎn)生一個(gè)下降沿,讓低電平持續(xù)1μs以上,然后由I/O口向傳感器寫(xiě)數(shù)據(jù)。當(dāng)向其內(nèi)部寫(xiě)入“1”時(shí),將I/O口拉為高電平持續(xù)60μs以上,以便讓傳感器有足夠的讀取時(shí)間,寫(xiě)完后將I/O口拉高。若寫(xiě)“0”時(shí),同理,將I/O口拉為低電平并持續(xù)60μs以上,寫(xiě)完后將I/O口拉高,但相鄰兩個(gè)數(shù)據(jù)時(shí)間差大于1μs。
單片機(jī)通過(guò)I/O口向傳感器發(fā)出跳過(guò)命令[CCH]之后發(fā)讀暫存器命令[BEH],單片機(jī)立即產(chǎn)生讀時(shí)隙讀取低8位數(shù)據(jù),在讀取高8位數(shù)據(jù)。綜前所述,所有讀取時(shí)間間隙必須至少維持60μs,同時(shí),讀取相鄰兩個(gè)數(shù)據(jù)時(shí)的時(shí)間大于1us。所有的讀時(shí)隙都由I/O口拉低至少1μs后再拉高為高電平。準(zhǔn)備工作完成后,I/O口開(kāi)始接收由DS18B20傳過(guò)來(lái)的數(shù)據(jù),當(dāng)接收到一個(gè)高電平時(shí),為邏輯“1”,反之為邏輯“0”。當(dāng)發(fā)送0的時(shí)候,傳感器在讀時(shí)隙的末期會(huì)產(chǎn)生高電平,輸出的數(shù)據(jù)在下降沿產(chǎn)生15μs后才能有效。
圖5 主程序模塊設(shè)計(jì)
被執(zhí)行芯片根據(jù)程序向DHT11發(fā)送一個(gè)脈沖,此時(shí),DHT11接收脈沖,將采集到的數(shù)據(jù)通過(guò)信號(hào)線以二進(jìn)制形式將信息傳入處理器。處理器收集數(shù)據(jù)形式為讀取高電平時(shí)隙,當(dāng)單片機(jī)讀取高電平時(shí)間在24-26μs時(shí)為0,在116-118μs時(shí)為1。
采集到數(shù)據(jù)后,相關(guān)數(shù)據(jù)格式為:溫度整小數(shù)部分與濕度整小數(shù)部分共四個(gè)字節(jié)之和等于校驗(yàn)和。如果校驗(yàn)和等于所采集的前四個(gè)字節(jié)之和,則數(shù)據(jù)真實(shí),否則再進(jìn)行數(shù)據(jù)采集,直到采集值校驗(yàn)正確為止。綜合考慮到DHT11的溫度精度、靈敏度問(wèn)題,還有采集溫濕度時(shí)最佳安放位置不同問(wèn)題,采用DS18B20代替DHT11采集溫度。因此,單片機(jī)處理溫濕度數(shù)值時(shí),僅讀取濕度部分,把溫度部分去掉不讀取。于是,處理器將收集到的數(shù)據(jù)自動(dòng)轉(zhuǎn)換為十進(jìn)制數(shù)形式,然后將數(shù)據(jù)通過(guò)RS232傳入PC進(jìn)行顯示,并將顯示值與環(huán)境實(shí)際濕度值作比較,調(diào)節(jié)采集到的數(shù)據(jù),使顯示值接近于真實(shí)值。
主程序訪問(wèn)DS18B20初始化子程序時(shí),I/O口發(fā)出480μs左右低電平的復(fù)位脈沖,再將端口變?yōu)?5到60μs的高電平,讓主機(jī)等待其發(fā)回60-240us的脈沖,把這I/O引腳處的電平置高。
進(jìn)入寫(xiě)時(shí)序函數(shù)時(shí),I/O口首先向DS18B20產(chǎn)生一個(gè)下降沿,讓低電平持續(xù)1μs以上,然后由I/O口向傳感器寫(xiě)數(shù)據(jù)。當(dāng)向其內(nèi)部寫(xiě)入“1”時(shí),將I/O口拉為高電平持續(xù)60μs以上,以便讓傳感器有足夠的讀取時(shí)間,寫(xiě)完后將I/O口拉高。若寫(xiě)“0”時(shí),同理,將I/O口拉為低電平并持續(xù)60μs以上,寫(xiě)完后將I/O口拉高,但相鄰兩個(gè)數(shù)據(jù)時(shí)間差大于1μs。
單片機(jī)通過(guò)I/O口向傳感器發(fā)出跳過(guò)命令[CCH]之后發(fā)讀暫存器命令[BEH],單片機(jī)立即產(chǎn)生讀時(shí)隙讀取低8位數(shù)據(jù),在讀取高8位數(shù)據(jù)。綜前所述,所有讀取時(shí)間間隙必須至少維持60μs,同時(shí),讀取相鄰兩個(gè)數(shù)據(jù)時(shí)的時(shí)間大于1μs。所有的讀時(shí)隙都由I/O口拉低至少1μs后再拉高為高電平。準(zhǔn)備工作完成后,I/O口開(kāi)始接收由DS18B20傳過(guò)來(lái)的數(shù)據(jù),當(dāng)接收到一個(gè)高電平時(shí),為邏輯“1”,反之為邏輯“0”。當(dāng)發(fā)送0的時(shí)候,傳感器在讀時(shí)隙的末期會(huì)產(chǎn)生高電平,輸出的數(shù)據(jù)在下降沿產(chǎn)生15μs后才能有效。
現(xiàn)如今,很多農(nóng)作物尤其是對(duì)生存條件要求苛刻的花卉類植物,又對(duì)實(shí)現(xiàn)農(nóng)業(yè)自動(dòng)化控制提出了新的要求。比如茶花、米蘭、龍吐珠這些典型的南方花卉,習(xí)慣了南方濕冷的季風(fēng)氣候,到北方時(shí)很難適應(yīng)嚴(yán)寒的冬季和干熱的夏日。仙人掌這種沙漠植物的種植講究低濕度,當(dāng)它處于雨水充沛的地區(qū)哪怕有大棚為它遮風(fēng)避雨,也無(wú)法完全排除土壤濕度對(duì)其生長(zhǎng)的影響。總而言之,除非賦予植物適合的成長(zhǎng)環(huán)境,否則都不會(huì)達(dá)到理想的效果。大棚內(nèi)的溫度和土壤濕度的監(jiān)控,對(duì)植物的生長(zhǎng)至關(guān)重要。要實(shí)現(xiàn)這點(diǎn),普通的溫室大棚只有必須定期抽樣檢查,并不斷調(diào)節(jié)滿足這些植物生長(zhǎng)的條件。這樣其工作就顯得量大繁瑣且不易準(zhǔn)確的控制。但是,如果采用了本控制系統(tǒng),這些問(wèn)題都將迎刃而解。另外,考慮到目前國(guó)家的耕地條件并不是非常完美,可能存在線路鋪設(shè)不方便,線路在農(nóng)作物生存環(huán)境下容易出現(xiàn)老化等難以解決的情況,本控制系統(tǒng)通過(guò)WIFI傳輸?shù)奶攸c(diǎn)正好可以發(fā)揮其功用。
[1] 章偉聰,俞新武,李忠成.基于CC2530及ZigBee協(xié)議棧設(shè)計(jì)無(wú)線網(wǎng)絡(luò)傳感器節(jié)點(diǎn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,第20卷:184~187.
[2] 韋興龍,賀歡.基于Zigbee網(wǎng)絡(luò)的智能溫室大棚溫濕度檢測(cè)系統(tǒng)[J].技術(shù)研發(fā),2012,第19卷:16~17.
[3] 德州儀器公司.CC2530簡(jiǎn)要中文數(shù)據(jù)手冊(cè)[Z].美國(guó)德克薩斯州,2009.
[4] 李俊.基于單片機(jī)的溫濕度檢測(cè)與控制系統(tǒng)[J].微計(jì)算機(jī)信息,2008(17):5~18
[5] 夏曉南.基于單片機(jī)的溫箱溫度和濕度的控制[J].現(xiàn)代電子技術(shù),2008(5):6~12.
[6] WANG N,ZHANG N Q,WANG M H.Wireless sensors in agriculture and food industry-Recent development andfuture perspective[J],2006(04)
[7] Nava S,Tangorra F M,Beretta E,et al.Study anddevelopment of an integrated automatic traceabilitysystem for the bovine meat chain[C]//7th World Congresson Computers in Agriculture and Natural Resources,Reno,2009:367-376.
[8] 李銀華,姬光鋒.基于ZigBee技術(shù)的煙葉倉(cāng)庫(kù)溫濕度監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2009(5):113-114.