王 凱,劉子杰
(1.上海出版印刷高等??茖W(xué)校信息與智能工程系,上海 200093;2.上海理工大學(xué)光電信息與計算機(jī)工程學(xué)院,上海 200093)
農(nóng)業(yè)設(shè)施在世界現(xiàn)代化農(nóng)業(yè)發(fā)展中扮演著重要的角色。大棚是其中一項重要的農(nóng)業(yè)基礎(chǔ)設(shè)施。因此,采用單片機(jī)和傳感器設(shè)計1套集檢測和控制于一體的智能大棚系統(tǒng)[1-3]迫在眉睫。
近年來,在大棚環(huán)境參數(shù)的檢測與控制方面已經(jīng)出現(xiàn)了不少科研成果,例如基于單片機(jī)的多點溫度檢測控制系統(tǒng)[4]、基于單片機(jī)的單點溫度遠(yuǎn)程控制系統(tǒng)[5]、基于USB串口的多路溫度檢測系統(tǒng)[6]。其中:大多數(shù)的參數(shù)還是采用有線檢測[4-9];即使有無線檢測,也基本上是單路檢測,不適用于布線麻煩或者不能布線的場合。針對上述問題,本文設(shè)計了1個大棚溫濕度無線控制系統(tǒng)。該系統(tǒng)以nRF24L01芯片為通信核心,使用5塊nRF24L01芯片進(jìn)行一對四的無線通信。
本文設(shè)計的大棚溫濕度無線控制系統(tǒng)由主機(jī)和從機(jī)2個部分組成:從機(jī)的主要作用是測量溫濕度并發(fā)送給主機(jī);主機(jī)根據(jù)從機(jī)測量的溫濕度數(shù)據(jù)控制風(fēng)扇、加濕器、抽濕器、加熱器等設(shè)備。整個系統(tǒng)呈現(xiàn)為星形結(jié)構(gòu)。
系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
從機(jī)的工作原理是一樣的。從機(jī)的個數(shù)即溫濕度監(jiān)測點個數(shù),可以根據(jù)所測環(huán)境的范圍大小來確定。本系統(tǒng)中采用了4個從機(jī)。
主機(jī)和從機(jī)之間采用詢問-應(yīng)答模式來傳送數(shù)據(jù)。正常工作時,主機(jī)向從機(jī)發(fā)送查詢命令,從機(jī)通過溫濕度傳感器采集大棚的溫濕度數(shù)據(jù),經(jīng)過處理后采用無線方式把溫濕度數(shù)據(jù)依次發(fā)送給主機(jī)。主機(jī)收到溫濕度數(shù)據(jù)后,對其進(jìn)行處理和分析,在液晶屏上顯示溫濕度測量值,并在超限時通過蜂鳴器報警;同時,對大棚的溫濕度進(jìn)行調(diào)節(jié),達(dá)到大棚自動調(diào)溫、調(diào)濕的功能[10-11]。無線收發(fā)模塊具有超時重發(fā)功能,能夠有效地避免傳輸過程中的丟包現(xiàn)象以及其他信號的干擾。該系統(tǒng)可以實現(xiàn)人在管理室里對大棚進(jìn)行觀察、控制的功能。
主機(jī)由主控電路[12-13]、蜂鳴器報警電路、時鐘電路、液晶顯示模塊、無線收發(fā)模塊、驅(qū)動電路等組成。
主機(jī)硬件如圖2所示。
圖2 主機(jī)硬件框圖
從機(jī)由主控電路、溫濕度采集模塊、發(fā)光二極管和無線收發(fā)模塊等組成。系統(tǒng)正常工作時,溫濕度測量電路會將采集到的數(shù)據(jù)信息發(fā)送到主控電路,主控電路對數(shù)據(jù)進(jìn)行處理,再將它傳送到無線發(fā)射模塊,由無線發(fā)射模塊發(fā)送到主機(jī)。
從機(jī)硬件如圖3所示。
圖3 從機(jī)硬件框圖
主控電路主要是由STC89C52單片機(jī)、晶振電路、電源和復(fù)位電路4個部分構(gòu)成。STC89C52單片機(jī)自帶8 KB FLASH、512 B ROM、32個通用I/O口和3個16位可編程定時/計數(shù)器。STC89C52單片機(jī)代碼可以向下兼容傳統(tǒng)的89C51單片機(jī),并且具有讀寫速度快、功耗低、掉電數(shù)據(jù)不會丟失等特點。
晶振電路為單片機(jī)提供穩(wěn)定的時鐘頻率。XTAL1為外部連接晶振的輸入端口,連接單片機(jī)的第19腳;XTAL2為外部連接晶振的輸出端口,連接單片機(jī)的第18腳。該單片機(jī)晶振的大小不可超過24 MHz。經(jīng)過綜合考慮,本文最終選擇了12 MHz的晶振。在晶振電路中,串聯(lián)電容可進(jìn)行濾波,使工作頻率更加穩(wěn)定。電容的選擇范圍通常在15~30 pF之間,在特定范圍內(nèi)電容值的大小和晶振的穩(wěn)定性成正比。因此,該電路中的電容選用30 pF。
復(fù)位電路由電容和電阻構(gòu)成,與單片機(jī)的第9腳,即控制器復(fù)位引腳(RST)相連。當(dāng)按下按鍵時,電容瞬間釋放很高的電壓值,轉(zhuǎn)換為高電平作用于RST引腳。當(dāng)RST引腳的高電平狀態(tài)持續(xù)2個或2個以上機(jī)器周期時,系統(tǒng)將恢復(fù)到原始狀態(tài),即復(fù)位。
本系統(tǒng)的溫濕度采集模塊采用DHT11溫濕度傳感器。DHT11的測量范圍是濕度20%~90%、溫度0~50 ℃,符合大棚的環(huán)境測量要求。該傳感器共有4個接口:引腳1外接3~5 V電壓;引腳2與單片機(jī)的P1.0口相連,進(jìn)行串行數(shù)據(jù)通信;引腳3懸空;引腳4接地。
DHT11在采集數(shù)據(jù)信息時,先對接收到的命令進(jìn)行響應(yīng),再進(jìn)行溫濕度信息的采集。DHT11將采集到的模擬量信息通過內(nèi)置的A/D采集緩沖器轉(zhuǎn)換成數(shù)字量信息,可以直接向單片機(jī)發(fā)送數(shù)字量,無需額外的數(shù)模轉(zhuǎn)換。最后切換到低速模式,等待下一次采集命令。該溫濕度采集電路簡單,檢測精度強,可靠性高,抗干擾能力較好。
本系統(tǒng)采用液晶顯示模塊實時顯示溫室大棚內(nèi)多點的溫度和濕度,依次循環(huán)顯示從機(jī)1~從機(jī)4傳送的溫濕度信息。LCD1602可以一次性顯示32個字符,通過電壓驅(qū)動,使用簡單、成本低,滿足系統(tǒng)設(shè)計需要。因此,本系統(tǒng)設(shè)計采用LCD1602。單片機(jī)的P1.0和P1.1連接LCD1602的控制端。溫濕度信息通過P0口,以8位并行的方式傳給顯示器。其中,P0口應(yīng)接10 kΩ的上拉電阻。
本系統(tǒng)選用nRF24L01作為無線收發(fā)模塊。該模塊具有高速、低功耗、低成本的特點,內(nèi)置循環(huán)冗余校驗(cyclic redundancy check,CRC)和點對多點的通信地址控制,能自動重發(fā),并可以在2.4 GHz的無線頻率上進(jìn)行數(shù)據(jù)傳輸,遵循串行外設(shè)接口(serial peripheral interface,SPI)協(xié)議。從機(jī)和主機(jī)中都會用到該模塊。
雖然該系統(tǒng)可以自動調(diào)節(jié)大棚的溫濕度,但是為了提高系統(tǒng)的交互性,設(shè)計了1個蜂鳴器報警電路來提醒用戶當(dāng)前大棚的環(huán)境是否超限。該蜂鳴器報警電路主要由有源蜂鳴器、電阻和PNP三極管組成。其中:三極管用于放大電路;電阻可限流,以減小蜂鳴器電流對整個系統(tǒng)電路的影響。當(dāng)大棚的實際溫濕度不在設(shè)定范圍內(nèi)時,單片機(jī)P1.2輸出一個低電平,通過三極管來放大輸出功率,驅(qū)動蜂鳴器發(fā)出警報。
驅(qū)動電路[14]主要由電機(jī)、繼電器、發(fā)光二極管、三極管等元器件組成。當(dāng)單片機(jī)的T0口發(fā)生負(fù)跳變時,三極管導(dǎo)通,繼電器動合,相應(yīng)電機(jī)開始控制設(shè)備工作;當(dāng)單片機(jī)的T0口發(fā)生正跳變時,三極管截止,繼電器動斷,電機(jī)控制設(shè)備停止工作。
矩陣鍵盤是由4個按鍵K1~K4組成。按鍵K1、K2分別用來加減數(shù)值;按鍵K3為溫濕度設(shè)置按鍵,將按鍵K3按下1次可設(shè)置溫度上限、按下2次可設(shè)置溫度下限、按下3次可設(shè)置濕度上限、按下4次可設(shè)置濕度下限、按下5次保存退出設(shè)置頁面;K4為復(fù)位按鍵。通過這4個按鍵,可以自由調(diào)整溫濕度的限值范圍。
主機(jī)接收到溫濕度數(shù)據(jù)后,先判斷數(shù)據(jù)值是否為有效值,再根據(jù)接收到的有效數(shù)據(jù)分別求溫度和濕度的平均值。所得的平均值即為本輪檢測中大棚的溫濕度測量值。主機(jī)將溫濕度測量值顯示在液晶屏上,同時對其進(jìn)行分析。如果溫濕度測量值超出了設(shè)定范圍,則通過執(zhí)行機(jī)構(gòu)相應(yīng)繼電器的吸合,控制風(fēng)扇、加濕器、抽濕器、加熱器等對大棚的溫濕度進(jìn)行調(diào)節(jié)。
從機(jī)等待主機(jī)的命令。當(dāng)從機(jī)通過無線收發(fā)模塊收到要求發(fā)送數(shù)據(jù)的命令后,采集到的溫濕度數(shù)據(jù)由無線收發(fā)模塊發(fā)送給主機(jī)。
從機(jī)控制流程如圖4所示。
圖4 從機(jī)控制流程圖
nRF24L01的一對多通信,實際上同一時刻是一對一通信。2個nRF24L01要實現(xiàn)通信,需要將4個參數(shù)設(shè)置得相同,即發(fā)射、接收數(shù)據(jù)寬度相同(最大32個字節(jié)),發(fā)射、接收地址相同(5個8位地址),發(fā)射、接收頻道相同(0~125),發(fā)射、接收速率相同(2 Mbit/s、1 Mbit/s、250 Mbit/s)。實現(xiàn)一對多通信有3種方式,分別是修改為不同的頻道、修改為不同的地址,以及修改為不同的頻道+不同的地址。本系統(tǒng)中采用的是將各個從機(jī)的無線收發(fā)模塊修改為不同的頻道,通過改變主機(jī)無線收發(fā)模塊的頻道決定主機(jī)與哪一個從機(jī)進(jìn)行通信。例如,主機(jī)把頻道修改為從機(jī)1的頻道以后發(fā)送數(shù)據(jù)命令,從機(jī)1收到命令后發(fā)送溫度數(shù)據(jù)給主機(jī),主機(jī)進(jìn)行響應(yīng);主機(jī)再把頻道修改為從機(jī)2的頻道后發(fā)送數(shù)據(jù)命令,從機(jī)2收到命令后發(fā)送溫度數(shù)據(jù)給主機(jī),主機(jī)進(jìn)行響應(yīng);以此類推。
為了應(yīng)對從機(jī)出錯或失效的情況、減小測量誤差,系統(tǒng)將判斷主機(jī)接收到的采集值:如溫度值和濕度值與前一時刻液晶顯示值相比,變化分別在±10℃和±20%以內(nèi),則判斷為有效值;否則,本次檢測無效,將拋棄本次數(shù)據(jù),不作處理。
有效性判斷流程如圖5所示。
圖5 有效性判斷流程圖
nRF24L01芯片一共有126個頻道可用于建立通信[15]。但是為了降低一對四通信時的干擾,本文將從機(jī)無線收發(fā)模塊的頻道依次設(shè)定為10、40、70、100。通過周期性地改變主機(jī)無線收發(fā)模塊的頻道來與從機(jī)依次建立通信。經(jīng)過多次調(diào)試,該系統(tǒng)運行良好,主機(jī)在與從機(jī)相距幾十米時,可以準(zhǔn)確地接收數(shù)據(jù);從機(jī)之間的距離超過4 m時,干擾可以忽略[16]。為了測試系統(tǒng)的測試值是否與實際值相符,以及對應(yīng)設(shè)備是否動作,本文進(jìn)行了對比試驗。測試時間為某天的11時到13時,每20 min測試一次,溫濕度的設(shè)定范圍值分別為25~27 ℃和50%~60%,將4個數(shù)字溫濕度計檢測的平均值作為實際值。溫濕度測試值如表1所示。
表1 溫濕度測試值
加熱器、風(fēng)扇、加濕器和除濕器對應(yīng)的時序如圖6所示。圖6中:1代表對應(yīng)設(shè)備開,0代表對應(yīng)設(shè)備關(guān)。
圖6 對應(yīng)外設(shè)時序圖
由圖6可以看出,測量值和實際值會有誤差,但是誤差不大,對蔬菜生長的影響可以忽略不計。試驗過程中,系統(tǒng)能夠正常工作,對應(yīng)繼電器能夠正常吸合,設(shè)備能夠正常開關(guān)。總體而言,系統(tǒng)能按照設(shè)定的目標(biāo)正常運行,實現(xiàn)監(jiān)測、控制的目的。
本文以STC89C52單片機(jī)為核心、DHT11為溫濕度采集模塊、nRF24L01為無線收發(fā)模塊、LCD1602為液晶顯示模塊,通過不同模塊之間的相互配合,組成了大棚溫濕度無線控制系統(tǒng)。經(jīng)測試證實,該系統(tǒng)達(dá)到了設(shè)計的預(yù)期效果:提高了檢測精度和效率,可以實時顯示溫濕度數(shù)據(jù),并自動調(diào)節(jié)大棚的溫度和濕度。但是該系統(tǒng)還存在不足:只能滿足幾十米的傳輸距離;監(jiān)控參數(shù)只有溫度和濕度。后續(xù)將圍繞這些問題進(jìn)行改進(jìn),如:添加Wi-Fi和4G/5G模塊以實現(xiàn)更遠(yuǎn)距離的傳輸;添加光敏電阻等傳感器以控制光照強弱等。