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