楊雨,許金奎,蔡池,賈巍
(湖北文理學(xué)院 汽車(chē)與交通工程學(xué)院,湖北襄陽(yáng),441053)
隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,計(jì)算機(jī)管理、傳感器、網(wǎng)絡(luò)通信等技術(shù)在現(xiàn)代農(nóng)業(yè)生產(chǎn)中的應(yīng)用越來(lái)越廣泛。智能監(jiān)控系統(tǒng)能夠?qū)厥覂?nèi)的各項(xiàng)環(huán)境參數(shù)進(jìn)行精確調(diào)控,便于操作人員對(duì)溫室內(nèi)的環(huán)境進(jìn)行實(shí)時(shí)監(jiān)控,從而避免了肉眼觀察的疏忽,在一定程度上降低勞動(dòng)力的損耗,有效提高農(nóng)作物的生長(zhǎng)環(huán)境。因此,建立一個(gè)智能化的溫室監(jiān)控系統(tǒng),對(duì)改善我國(guó)農(nóng)作物溫室內(nèi)生長(zhǎng)的環(huán)境工作,具有重大的理論及實(shí)踐價(jià)值。
本設(shè)計(jì)主要由傳感器系統(tǒng)、主控模塊、通信模塊及云平臺(tái)組成。以STM32F103 系列單片機(jī)為核心,可有效減少系統(tǒng)延遲,改善系統(tǒng)穩(wěn)定性。傳感器系統(tǒng)由光照、空氣溫濕度、土壤濕度、二氧化碳濃度傳感器等傳感器構(gòu)成,實(shí)現(xiàn)對(duì)溫室環(huán)境參數(shù)的實(shí)時(shí)監(jiān)測(cè)。滴灌系統(tǒng)主要由電磁閥組成,采用地下固定式滴灌方式,有效節(jié)約用水。云平臺(tái)憑借Esp8266WiFi 通信模塊接收發(fā)送信號(hào)來(lái)實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)設(shè)備的遠(yuǎn)程監(jiān)控。
圖1 系統(tǒng)的總體架構(gòu)手機(jī)物聯(lián)網(wǎng)軟件
(1)采用YL-38 型光照強(qiáng)度傳感器對(duì)溫室內(nèi)光照強(qiáng)度進(jìn)行監(jiān)測(cè)。光強(qiáng)傳感器的核心是感光電阻,當(dāng)光照強(qiáng)度發(fā)生變化時(shí),其感光電阻的阻值會(huì)發(fā)生變化,通過(guò)LM393 比較器輸出一個(gè)變化的模擬量,再通過(guò)單片機(jī)進(jìn)一步處理得到光照強(qiáng)度的數(shù)據(jù)。
(2)采用DHT11 型溫濕度傳感器對(duì)室內(nèi)溫度、濕度進(jìn)行實(shí)時(shí)監(jiān)測(cè)。將它用杜邦線與單片機(jī)的管腳相連,可以實(shí)時(shí)獲取溫室的溫濕度,從而對(duì)溫室進(jìn)行監(jiān)測(cè)。
(3)采用FC-28 型的土壤濕度傳感器,其核心芯片采用了LM393 的寬頻比較器,原理是將土壤探頭接口插入土壤,其電阻值隨土壤含水量的變化而變化,通過(guò)單片機(jī)對(duì)模擬量的處理得到土壤實(shí)時(shí)濕度。
(4)采用SGP30 氣體傳感器對(duì)溫室的CO2濃度進(jìn)行檢測(cè)。SGP30 具有穩(wěn)定性、低漂移性、高可靠性等優(yōu)點(diǎn),采用I2C 協(xié)議進(jìn)行通訊,便于讀取采集的數(shù)據(jù)。
主控模塊電路主要是用到單片機(jī)的核心芯片STM32 F103,用它提供兩個(gè)串口,串口1 用來(lái)連接上位機(jī),顯示現(xiàn)場(chǎng)各個(gè)傳感器采集到的環(huán)境參數(shù);串口2 與Esp8266WiFi模塊連接,發(fā)送AT 指令來(lái)遠(yuǎn)程上傳數(shù)據(jù)。
時(shí)鐘電路是MCU 中最關(guān)鍵的部件,它的作用是為MCU提供時(shí)鐘頻率,在時(shí)鐘頻率準(zhǔn)確的情況下,單片機(jī)系統(tǒng)正常工作。
復(fù)位電路的設(shè)計(jì)是為了防止單片機(jī)死機(jī)或者代碼跑飛,給單片機(jī)NRST 管腳一段時(shí)間的低電平,單片機(jī)的核心芯片就會(huì)復(fù)位,保護(hù)芯片不被損壞。
通信模塊采用Esp8266。Esp8266WiFi 模塊所需的外部電路少,且可以作為完整的、獨(dú)立運(yùn)行的網(wǎng)絡(luò)解決方案,其強(qiáng)大的處理能力。STM32F103 和Esp8266WiFi 模塊采用串口通訊,通過(guò)發(fā)送AT 指令實(shí)現(xiàn)它們之間的通信。系統(tǒng)將由傳感器采集到的數(shù)據(jù)進(jìn)行封裝,然后通過(guò)Esp8266WiFi模塊向云平臺(tái)傳送,從而實(shí)現(xiàn)對(duì)溫室數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。
物聯(lián)網(wǎng)系統(tǒng)工作原理如2 所示,傳感器采集系統(tǒng)是通過(guò)I/O 總線與現(xiàn)場(chǎng)終端相連的,MCU 的UART 與現(xiàn)場(chǎng)的人機(jī)接口相連,并利用 Modbus 的傳輸協(xié)議將采集到的數(shù)據(jù)通過(guò)Esp8266WiFi 模塊運(yùn)營(yíng)商的網(wǎng)絡(luò)傳送到云平臺(tái)。
圖2 物聯(lián)網(wǎng)系統(tǒng)工作原理
滴灌系統(tǒng)是利用土壤濕度感應(yīng)器來(lái)偵測(cè)土壤含水率,通過(guò)電磁閥的開(kāi)關(guān)來(lái)控制;空氣溫濕度是通過(guò)熱風(fēng)機(jī)、風(fēng)扇、噴水閥門(mén)控制;光照強(qiáng)度通過(guò)白熾燈和遮光簾去控制;溫室的CO2濃度通過(guò)通風(fēng)閥和CO2噴嘴來(lái)控制。
圖3 控制系統(tǒng)電路原理圖
以STM32 單片機(jī)為核心,對(duì)數(shù)據(jù)傳輸進(jìn)行詳細(xì)的編程,其主要內(nèi)容有:初始化GPIO 口、串口通訊參數(shù)設(shè)定、數(shù)據(jù)通過(guò)Esp8266WiFi 模塊送到云平臺(tái)、Modbus 通信協(xié)議、控制系統(tǒng)的軟件設(shè)計(jì)。
溫室環(huán)境監(jiān)控的軟件具體流程:(1)系統(tǒng)在上電后,對(duì)GPIO 端口、時(shí)鐘、串口進(jìn)行初始化設(shè)置;(2)對(duì)傳感器模塊和Esp8266WiFi 模塊初始化后,通過(guò)AT 指令檢查網(wǎng)絡(luò)的連接狀況。(3)單片機(jī)接收到的指令如果是采集指令,則將傳感器采集到的溫室數(shù)據(jù)用Esp8266WiFi 模塊傳送至云平臺(tái)。(4)如果是控制指令,單片機(jī)則控制調(diào)節(jié)閥調(diào)節(jié)溫室的環(huán)境參數(shù)。溫室環(huán)境監(jiān)控軟件總體流程圖如圖4 所示。
圖4 溫室監(jiān)控軟件總體流程圖
圖5 啟 動(dòng) ( ADr主d uH程in序oTU)N1O11讀取數(shù)據(jù)啟動(dòng)ArduinoUNO2
感知層軟件設(shè)計(jì)主要是指用STM32 單片機(jī)對(duì)一些傳感器的數(shù)據(jù)采集的編程,這部分主要涉及一些傳感器的軟件設(shè)計(jì)。
DHT11 的數(shù)據(jù)是由溫度整數(shù)和小數(shù)、濕度的整數(shù)和小數(shù)構(gòu)成,傳感器得到的是二進(jìn)制數(shù)據(jù),為了獲得直觀的數(shù)據(jù),需通過(guò)進(jìn)制轉(zhuǎn)換讀取溫濕度傳感器采集到的溫濕度的數(shù)據(jù)。
YL-38 型光敏電阻傳感器檢測(cè)到的數(shù)據(jù)是模擬量,單片機(jī)無(wú)法識(shí)別,所以在設(shè)計(jì)光敏電阻傳感器的軟件設(shè)計(jì)時(shí),需要用到數(shù)模轉(zhuǎn)換,它包括對(duì)ADC 時(shí)鐘的使能、ADC 初始化參數(shù)、GPIO 的使能以及獲取ADC 轉(zhuǎn)換后的二進(jìn)制編碼的數(shù)據(jù)的編寫(xiě),單片機(jī)通過(guò)數(shù)據(jù)總線讀取光敏電阻器的二進(jìn)制數(shù)據(jù),再經(jīng)過(guò)程序?qū)⒍M(jìn)制轉(zhuǎn)化為十進(jìn)制的數(shù)據(jù)就可得到光敏傳感器的數(shù)據(jù)。
SGP30 型二氧化碳濃度傳感器軟件采用功能模塊化設(shè)計(jì)。由主程序和子程序構(gòu)成。主程序?qū)崿F(xiàn)了初始化、系統(tǒng)檢測(cè)和子模塊調(diào)用;子程序包括了GPIO 管腳參數(shù)的配置、應(yīng)答信號(hào)的檢測(cè)以及傳感器的讀寫(xiě)數(shù)據(jù)。啟動(dòng)模塊需要一段時(shí)間的初始化,在初始化階段,二氧化碳濃度是400 ppm,所以上電后,SGP30 模塊的數(shù)據(jù)會(huì)被定時(shí)讀取,當(dāng)二氧化碳濃度達(dá)到400 ppm,則會(huì)發(fā)出“正在測(cè)試中”的信息,直到SGP30 模塊初始化完成。
FC-28 型土壤濕度傳感器的軟件設(shè)計(jì)也是模塊式的,方便了功能的擴(kuò)充。傳感器在接通電源以后,首先要進(jìn)行初始化處理為讀取土壤濕度做準(zhǔn)備。進(jìn)入主循環(huán)程序首先要對(duì)子程序的調(diào)用,再獲取土壤濕度芯片的數(shù)據(jù),最后判斷當(dāng)前土壤濕度值是否超出所設(shè)置的閾值,若濕度超過(guò)閾值,則驅(qū)動(dòng)蜂鳴器報(bào)警并開(kāi)啟水泵電磁閥門(mén),直到環(huán)境的濕度再次回到土壤正常濕度值則停止動(dòng)作。
感知層中主函數(shù)的軟件設(shè)計(jì)首先需要調(diào)用各參數(shù)的初始化函數(shù),包括延時(shí)函數(shù)、設(shè)置波特率、LED 初始化函數(shù)、光照強(qiáng)度初始化函數(shù)、土壤初始化函數(shù)以、溫濕度初始化函數(shù)以及二氧化碳初始化函數(shù),隨后獲取各個(gè)ADC 通道的數(shù)據(jù),經(jīng)處理后上傳云平臺(tái)。
滴灌控制、空氣的溫濕度控制、光照強(qiáng)度控制的軟件設(shè)計(jì)均采用IF 語(yǔ)句進(jìn)行判斷。當(dāng)偵測(cè)到溫室環(huán)境因數(shù)低于或高于設(shè)定的臨界值時(shí),云平臺(tái)會(huì)發(fā)出相應(yīng)的指令,通過(guò)單片機(jī)控制相應(yīng)裝置開(kāi)關(guān)改善溫室環(huán)境。
傳輸層的軟件設(shè)計(jì)主要是數(shù)據(jù)的上傳與指令接受的代碼編寫(xiě),首先對(duì)Esp8266 進(jìn)行初始化,發(fā)送 AT 指 令, 對(duì)Esp8266進(jìn)行連接狀態(tài)檢測(cè),確認(rèn)無(wú)誤后,將采集到的數(shù)據(jù)上傳到云平臺(tái)。數(shù)據(jù)上傳的流程圖如圖6 所示。
圖6 數(shù)據(jù)上傳流程圖
圖7 微信小程序遠(yuǎn)程監(jiān)控界面
將遠(yuǎn)程客戶(hù)端作為主機(jī),現(xiàn)場(chǎng)終端作為從機(jī),通過(guò)Esp8266 將數(shù)據(jù)打包并將數(shù)據(jù)上傳至遠(yuǎn)程客戶(hù)端,當(dāng)遠(yuǎn)程客戶(hù)端向現(xiàn)場(chǎng)終端傳輸數(shù)據(jù) 時(shí),Esp8266 又 會(huì)將收到的指令返回給單片機(jī)做出應(yīng)答。遠(yuǎn)程監(jiān)視和Esp8266 之間的遠(yuǎn)程通信是通過(guò) Modbus 通信協(xié)議實(shí)現(xiàn),將Modbus RTU 通訊協(xié)議的地址碼設(shè)置為0X01,功能碼設(shè)置為0X03,讀取保持寄存器數(shù)據(jù),數(shù)據(jù)區(qū)分別放置溫濕度、土壤濕度、二氧化碳、光照強(qiáng)度數(shù)據(jù)。
應(yīng)用層通過(guò)API 接口(HTTP 接口)分別在天氣平臺(tái)與ONENET 云平臺(tái)獲取數(shù)據(jù),由于系統(tǒng)對(duì)應(yīng)用層所要求的功能單一,采用API 接口可在系統(tǒng)功能的基礎(chǔ)優(yōu)化資源分配,始終以最快的響應(yīng)速度在微信小程序生命周期內(nèi)顯示在頁(yè)面上。其次系統(tǒng)僅僅采用了API 接口(HTTP 接口)請(qǐng)求方法中的GET 與POST 兩種。GET 用于刷新應(yīng)用頁(yè)面信息時(shí)不斷向ONENET 云平臺(tái)發(fā)起請(qǐng)求,并接受返回的數(shù)據(jù),通過(guò)對(duì)數(shù)據(jù)的解析將數(shù)據(jù)顯示在頁(yè)面上;POST 用于在應(yīng)用層遠(yuǎn)程操控電磁閥等現(xiàn)場(chǎng)設(shè)備,需要手動(dòng)開(kāi)啟或關(guān)閉外部設(shè)施時(shí)使用此請(qǐng)求方法,將特定的數(shù)據(jù)發(fā)送給ONENET 云平臺(tái)后向控制端發(fā)送控制指令。
本文設(shè)計(jì)并開(kāi)發(fā)出一套集監(jiān)測(cè)和控制于一體的物聯(lián)網(wǎng)溫室監(jiān)控與滴灌系統(tǒng),詳細(xì)介紹了該系統(tǒng)的總體設(shè)計(jì)及工作原理,提出了整個(gè)系統(tǒng)的總體方案,完成了部分傳感器的選擇和硬件電路的設(shè)計(jì)。從感知、傳輸、應(yīng)用三個(gè)層次進(jìn)行了系統(tǒng)的軟件設(shè)計(jì),以Keil5 作為軟件開(kāi)發(fā)平臺(tái),用C 語(yǔ)言進(jìn)行軟件編程實(shí)現(xiàn)各類(lèi)功能,完成了溫室數(shù)據(jù)上傳云平臺(tái)和云平臺(tái)下發(fā)指令的預(yù)期功能。
本系統(tǒng)實(shí)現(xiàn)了對(duì)溫室環(huán)境的遠(yuǎn)程監(jiān)測(cè)和控制,通過(guò)微信小程序進(jìn)行監(jiān)測(cè)控制,可給使用者提供相應(yīng)管理經(jīng)驗(yàn),指導(dǎo)其現(xiàn)場(chǎng)生產(chǎn)作業(yè),為溫室中農(nóng)作物創(chuàng)造最佳的生長(zhǎng)條件,提高產(chǎn)量,減少資源的浪費(fèi),是一個(gè)較先進(jìn)的智能化監(jiān)控系統(tǒng)。