楊雨,許金奎,蔡池,賈巍
(湖北文理學(xué)院 汽車與交通工程學(xué)院,湖北襄陽,441053)
隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,計算機管理、傳感器、網(wǎng)絡(luò)通信等技術(shù)在現(xiàn)代農(nóng)業(yè)生產(chǎn)中的應(yīng)用越來越廣泛。智能監(jiān)控系統(tǒng)能夠?qū)厥覂?nèi)的各項環(huán)境參數(shù)進(jìn)行精確調(diào)控,便于操作人員對溫室內(nèi)的環(huán)境進(jìn)行實時監(jiān)控,從而避免了肉眼觀察的疏忽,在一定程度上降低勞動力的損耗,有效提高農(nóng)作物的生長環(huán)境。因此,建立一個智能化的溫室監(jiān)控系統(tǒng),對改善我國農(nóng)作物溫室內(nèi)生長的環(huán)境工作,具有重大的理論及實踐價值。
本設(shè)計主要由傳感器系統(tǒng)、主控模塊、通信模塊及云平臺組成。以STM32F103 系列單片機為核心,可有效減少系統(tǒng)延遲,改善系統(tǒng)穩(wěn)定性。傳感器系統(tǒng)由光照、空氣溫濕度、土壤濕度、二氧化碳濃度傳感器等傳感器構(gòu)成,實現(xiàn)對溫室環(huán)境參數(shù)的實時監(jiān)測。滴灌系統(tǒng)主要由電磁閥組成,采用地下固定式滴灌方式,有效節(jié)約用水。云平臺憑借Esp8266WiFi 通信模塊接收發(fā)送信號來實現(xiàn)對現(xiàn)場設(shè)備的遠(yuǎn)程監(jiān)控。

圖1 系統(tǒng)的總體架構(gòu)手機物聯(lián)網(wǎng)軟件
(1)采用YL-38 型光照強度傳感器對溫室內(nèi)光照強度進(jìn)行監(jiān)測。光強傳感器的核心是感光電阻,當(dāng)光照強度發(fā)生變化時,其感光電阻的阻值會發(fā)生變化,通過LM393 比較器輸出一個變化的模擬量,再通過單片機進(jìn)一步處理得到光照強度的數(shù)據(jù)。
(2)采用DHT11 型溫濕度傳感器對室內(nèi)溫度、濕度進(jìn)行實時監(jiān)測。將它用杜邦線與單片機的管腳相連,可以實時獲取溫室的溫濕度,從而對溫室進(jìn)行監(jiān)測。
(3)采用FC-28 型的土壤濕度傳感器,其核心芯片采用了LM393 的寬頻比較器,原理是將土壤探頭接口插入土壤,其電阻值隨土壤含水量的變化而變化,通過單片機對模擬量的處理得到土壤實時濕度。
(4)采用SGP30 氣體傳感器對溫室的CO2濃度進(jìn)行檢測。SGP30 具有穩(wěn)定性、低漂移性、高可靠性等優(yōu)點,采用I2C 協(xié)議進(jìn)行通訊,便于讀取采集的數(shù)據(jù)。
主控模塊電路主要是用到單片機的核心芯片STM32 F103,用它提供兩個串口,串口1 用來連接上位機,顯示現(xiàn)場各個傳感器采集到的環(huán)境參數(shù);串口2 與Esp8266WiFi模塊連接,發(fā)送AT 指令來遠(yuǎn)程上傳數(shù)據(jù)。
時鐘電路是MCU 中最關(guān)鍵的部件,它的作用是為MCU提供時鐘頻率,在時鐘頻率準(zhǔn)確的情況下,單片機系統(tǒng)正常工作。
復(fù)位電路的設(shè)計是為了防止單片機死機或者代碼跑飛,給單片機NRST 管腳一段時間的低電平,單片機的核心芯片就會復(fù)位,保護(hù)芯片不被損壞。
通信模塊采用Esp8266。Esp8266WiFi 模塊所需的外部電路少,且可以作為完整的、獨立運行的網(wǎng)絡(luò)解決方案,其強大的處理能力。STM32F103 和Esp8266WiFi 模塊采用串口通訊,通過發(fā)送AT 指令實現(xiàn)它們之間的通信。系統(tǒng)將由傳感器采集到的數(shù)據(jù)進(jìn)行封裝,然后通過Esp8266WiFi模塊向云平臺傳送,從而實現(xiàn)對溫室數(shù)據(jù)的實時監(jiān)測。
物聯(lián)網(wǎng)系統(tǒng)工作原理如2 所示,傳感器采集系統(tǒng)是通過I/O 總線與現(xiàn)場終端相連的,MCU 的UART 與現(xiàn)場的人機接口相連,并利用 Modbus 的傳輸協(xié)議將采集到的數(shù)據(jù)通過Esp8266WiFi 模塊運營商的網(wǎng)絡(luò)傳送到云平臺。

圖2 物聯(lián)網(wǎng)系統(tǒng)工作原理
滴灌系統(tǒng)是利用土壤濕度感應(yīng)器來偵測土壤含水率,通過電磁閥的開關(guān)來控制;空氣溫濕度是通過熱風(fēng)機、風(fēng)扇、噴水閥門控制;光照強度通過白熾燈和遮光簾去控制;溫室的CO2濃度通過通風(fēng)閥和CO2噴嘴來控制。

圖3 控制系統(tǒng)電路原理圖
以STM32 單片機為核心,對數(shù)據(jù)傳輸進(jìn)行詳細(xì)的編程,其主要內(nèi)容有:初始化GPIO 口、串口通訊參數(shù)設(shè)定、數(shù)據(jù)通過Esp8266WiFi 模塊送到云平臺、Modbus 通信協(xié)議、控制系統(tǒng)的軟件設(shè)計。
溫室環(huán)境監(jiān)控的軟件具體流程:(1)系統(tǒng)在上電后,對GPIO 端口、時鐘、串口進(jìn)行初始化設(shè)置;(2)對傳感器模塊和Esp8266WiFi 模塊初始化后,通過AT 指令檢查網(wǎng)絡(luò)的連接狀況。(3)單片機接收到的指令如果是采集指令,則將傳感器采集到的溫室數(shù)據(jù)用Esp8266WiFi 模塊傳送至云平臺。(4)如果是控制指令,單片機則控制調(diào)節(jié)閥調(diào)節(jié)溫室的環(huán)境參數(shù)。溫室環(huán)境監(jiān)控軟件總體流程圖如圖4 所示。

圖4 溫室監(jiān)控軟件總體流程圖

圖5 啟 動 ( ADr主d uH程in序oTU)N1O11讀取數(shù)據(jù)啟動ArduinoUNO2
感知層軟件設(shè)計主要是指用STM32 單片機對一些傳感器的數(shù)據(jù)采集的編程,這部分主要涉及一些傳感器的軟件設(shè)計。
DHT11 的數(shù)據(jù)是由溫度整數(shù)和小數(shù)、濕度的整數(shù)和小數(shù)構(gòu)成,傳感器得到的是二進(jìn)制數(shù)據(jù),為了獲得直觀的數(shù)據(jù),需通過進(jìn)制轉(zhuǎn)換讀取溫濕度傳感器采集到的溫濕度的數(shù)據(jù)。
YL-38 型光敏電阻傳感器檢測到的數(shù)據(jù)是模擬量,單片機無法識別,所以在設(shè)計光敏電阻傳感器的軟件設(shè)計時,需要用到數(shù)模轉(zhuǎn)換,它包括對ADC 時鐘的使能、ADC 初始化參數(shù)、GPIO 的使能以及獲取ADC 轉(zhuǎn)換后的二進(jìn)制編碼的數(shù)據(jù)的編寫,單片機通過數(shù)據(jù)總線讀取光敏電阻器的二進(jìn)制數(shù)據(jù),再經(jīng)過程序?qū)⒍M(jìn)制轉(zhuǎn)化為十進(jìn)制的數(shù)據(jù)就可得到光敏傳感器的數(shù)據(jù)。
SGP30 型二氧化碳濃度傳感器軟件采用功能模塊化設(shè)計。由主程序和子程序構(gòu)成。主程序?qū)崿F(xiàn)了初始化、系統(tǒng)檢測和子模塊調(diào)用;子程序包括了GPIO 管腳參數(shù)的配置、應(yīng)答信號的檢測以及傳感器的讀寫數(shù)據(jù)。啟動模塊需要一段時間的初始化,在初始化階段,二氧化碳濃度是400 ppm,所以上電后,SGP30 模塊的數(shù)據(jù)會被定時讀取,當(dāng)二氧化碳濃度達(dá)到400 ppm,則會發(fā)出“正在測試中”的信息,直到SGP30 模塊初始化完成。
FC-28 型土壤濕度傳感器的軟件設(shè)計也是模塊式的,方便了功能的擴(kuò)充。傳感器在接通電源以后,首先要進(jìn)行初始化處理為讀取土壤濕度做準(zhǔn)備。進(jìn)入主循環(huán)程序首先要對子程序的調(diào)用,再獲取土壤濕度芯片的數(shù)據(jù),最后判斷當(dāng)前土壤濕度值是否超出所設(shè)置的閾值,若濕度超過閾值,則驅(qū)動蜂鳴器報警并開啟水泵電磁閥門,直到環(huán)境的濕度再次回到土壤正常濕度值則停止動作。
感知層中主函數(shù)的軟件設(shè)計首先需要調(diào)用各參數(shù)的初始化函數(shù),包括延時函數(shù)、設(shè)置波特率、LED 初始化函數(shù)、光照強度初始化函數(shù)、土壤初始化函數(shù)以、溫濕度初始化函數(shù)以及二氧化碳初始化函數(shù),隨后獲取各個ADC 通道的數(shù)據(jù),經(jīng)處理后上傳云平臺。
滴灌控制、空氣的溫濕度控制、光照強度控制的軟件設(shè)計均采用IF 語句進(jìn)行判斷。當(dāng)偵測到溫室環(huán)境因數(shù)低于或高于設(shè)定的臨界值時,云平臺會發(fā)出相應(yīng)的指令,通過單片機控制相應(yīng)裝置開關(guān)改善溫室環(huán)境。
傳輸層的軟件設(shè)計主要是數(shù)據(jù)的上傳與指令接受的代碼編寫,首先對Esp8266 進(jìn)行初始化,發(fā)送 AT 指 令, 對Esp8266進(jìn)行連接狀態(tài)檢測,確認(rèn)無誤后,將采集到的數(shù)據(jù)上傳到云平臺。數(shù)據(jù)上傳的流程圖如圖6 所示。

圖6 數(shù)據(jù)上傳流程圖

圖7 微信小程序遠(yuǎn)程監(jiān)控界面
將遠(yuǎn)程客戶端作為主機,現(xiàn)場終端作為從機,通過Esp8266 將數(shù)據(jù)打包并將數(shù)據(jù)上傳至遠(yuǎn)程客戶端,當(dāng)遠(yuǎn)程客戶端向現(xiàn)場終端傳輸數(shù)據(jù) 時,Esp8266 又 會將收到的指令返回給單片機做出應(yīng)答。遠(yuǎn)程監(jiān)視和Esp8266 之間的遠(yuǎn)程通信是通過 Modbus 通信協(xié)議實現(xiàn),將Modbus RTU 通訊協(xié)議的地址碼設(shè)置為0X01,功能碼設(shè)置為0X03,讀取保持寄存器數(shù)據(jù),數(shù)據(jù)區(qū)分別放置溫濕度、土壤濕度、二氧化碳、光照強度數(shù)據(jù)。
應(yīng)用層通過API 接口(HTTP 接口)分別在天氣平臺與ONENET 云平臺獲取數(shù)據(jù),由于系統(tǒng)對應(yīng)用層所要求的功能單一,采用API 接口可在系統(tǒng)功能的基礎(chǔ)優(yōu)化資源分配,始終以最快的響應(yīng)速度在微信小程序生命周期內(nèi)顯示在頁面上。其次系統(tǒng)僅僅采用了API 接口(HTTP 接口)請求方法中的GET 與POST 兩種。GET 用于刷新應(yīng)用頁面信息時不斷向ONENET 云平臺發(fā)起請求,并接受返回的數(shù)據(jù),通過對數(shù)據(jù)的解析將數(shù)據(jù)顯示在頁面上;POST 用于在應(yīng)用層遠(yuǎn)程操控電磁閥等現(xiàn)場設(shè)備,需要手動開啟或關(guān)閉外部設(shè)施時使用此請求方法,將特定的數(shù)據(jù)發(fā)送給ONENET 云平臺后向控制端發(fā)送控制指令。
本文設(shè)計并開發(fā)出一套集監(jiān)測和控制于一體的物聯(lián)網(wǎng)溫室監(jiān)控與滴灌系統(tǒng),詳細(xì)介紹了該系統(tǒng)的總體設(shè)計及工作原理,提出了整個系統(tǒng)的總體方案,完成了部分傳感器的選擇和硬件電路的設(shè)計。從感知、傳輸、應(yīng)用三個層次進(jìn)行了系統(tǒng)的軟件設(shè)計,以Keil5 作為軟件開發(fā)平臺,用C 語言進(jìn)行軟件編程實現(xiàn)各類功能,完成了溫室數(shù)據(jù)上傳云平臺和云平臺下發(fā)指令的預(yù)期功能。
本系統(tǒng)實現(xiàn)了對溫室環(huán)境的遠(yuǎn)程監(jiān)測和控制,通過微信小程序進(jìn)行監(jiān)測控制,可給使用者提供相應(yīng)管理經(jīng)驗,指導(dǎo)其現(xiàn)場生產(chǎn)作業(yè),為溫室中農(nóng)作物創(chuàng)造最佳的生長條件,提高產(chǎn)量,減少資源的浪費,是一個較先進(jìn)的智能化監(jiān)控系統(tǒng)。