唐 靖,宋志強
(1.南京信息工程大學濱江學院自動化學院,江蘇 無錫 214105;2.無錫學院自動化學院)
隨著時代的發展,科技的進步,生活中各個領域自動化程度越來越高。特別是在農業領域,自動化程度的提高更有利于解放勞動者雙手,提高生產率。例如通過終端管理更多資源,精確的農業系統可以有效保證農作物的生長質量。
本設計是基于STM32的果園信息遠程監測系統,該系統使用STM32 系列芯片并通過DHT11 溫濕度傳感器、BH1750 光照傳感器、YL-69 土壤濕度傳感器對果園環境的溫度、光照強度和土壤濕度信息進行采集與處理,系統將數據上傳到阿里云物聯網平臺,用戶可通過電腦終端遠程實時查看果園信息。
采用STM32 系列單片機,通過傳感器采集數據,并通過ESP8266WIFI 模塊將數據上發至阿里云物聯網平臺,用戶可從電腦終端或移動端查看實時數據,圖1為系統總體設計框圖。

圖1 系統總體設計
此模塊是系統的各個傳感器模塊,其功能是用來檢測環境數據,并上發至處理器,本系統的監控數據采集模塊有溫濕度采集模塊,其采用的是DHT11溫濕度傳感器;測量光照強度的傳感器采用的是BH1750光照度傳感器;土壤濕度傳感器則采用的YL-69 土壤濕度傳感器。
⑴溫濕度采集模塊
為實現環境的溫濕度采集,本次設計選用的是DHT11 溫濕度傳感器。同時,這個溫濕度傳感器具有體積小、功耗低、價格低等特點,適用于本次設計。從數據手冊中可以看出,這種傳感器可以在20~60℃的環境下進行測量,以及在5%~95% RH 范圍內進行測量。傳感器的三個引腳功能定義分別為:
1腳:VCC,電源控制口;
2腳:DATA,數據引腳,與單片機IO 口連接,將所測得數據發送至單片機;
3腳:GND,接地。
根據數據發送時序圖完成DHT11 的驅動代碼編寫,首先主機要給數據引腳輸出一個至少18ms的低電平然后拉高等待20-40μs,等待DHT11 回應這時GPIO 就要改變為輸入狀態,DHT11 響應拉低80μs 再拉高80μs,這個過程結束后就開始發送數據。
⑵光照強度采集模塊
作物的生長自然也離不開光照,若想要穩定控制作物所需的光源,自然離不開實時的環境光照檢測,為用戶提供一個實時的環境光照狀態,從而通過人工或終端控制作物所處環境的光照強度。本系統所選用的光照傳感器為BH1750 光照傳感器,BH1750 是一種光強度傳感器,能夠對環境的光強度進行量化,從而轉化為環境中的光強度lx。傳感器自身通過IIC總線進行通信,通過讀取寄存器從而提取到傳感器的實時數據。同時,因為傳感器具有較為廣泛的輸入光范圍,且小巧輕便、經濟實惠,所以用作本系統的環境光照強度的檢測模塊。BH1750有五個引腳,其各自功能為:
1腳:VCC,電源接口;
2腳:GND,接地;
3腳:SCL,IIC時鐘線,時鐘輸入引腳,由單片機輸出時鐘信號;
4腳:SDA,IIC 數據線,雙向IO 口,傳輸數據的接口;
5腳:ADDR,IIC 地址線,接GND 時器件地址為0100011,接VCC時器件地址為1011100。
⑶土壤濕度采集模塊
本設計所使用的土壤濕度傳感器為YL-69 型土壤濕度傳感器,該模塊有較大的測量范圍,基本能滿足設計需求。土壤濕度傳感器工作電壓為3.3V~5V。該電路使用LM393作為比較器件,工作性能良好。通過從單片機從AO 口獲取模擬量[1],獲得更準確的仿真數據,將數據提供給用戶進行后續操作。土壤濕度傳感器的接線示意圖如圖2所示。

圖2 土壤濕度傳感器接線說明
選用小型水泵,其通過程序輸出高低電平實現對繼電器模塊的控制,從而控制水泵的開關。繼電器模塊與單片機相連有三處接口,分別是VCC、GND、IN,其中的VCC 與單片機電壓輸出口相接,GND 接地,IN引腳接單片機的串口,通過對IN 引腳輸出高低電平,從而控制繼電器的開關。繼電器另一端口也有三處接口,分別是NO(常開觸點)、NC(常閉觸點)、COM(公共端),因為這個繼電器模塊采用的是低電平觸發,所以當IN 引腳輸入為低電平時,繼電器常開觸點與COM端相連,從而接通,水泵有電而工作。
ESP8266 是具有超低功率的UART-WIFI 透傳模塊,包裝規格較小且能耗較低,可用作移動設施和物聯網應用設計。同時因為它的聯網功能,即可將使用者的設備連接至局域網,從而完成網絡通信,達到互聯。ESP8266WIFI 模塊采用串口與單片機通信,其內置有TCP/IP 協議棧,通過WIFI 與上位機通信。同時,ESP8266WIFI 有三種工作模式[2],分別為:STA、AP、STA+AP。
阿里云物聯網平臺支持用戶設備接入,還能對用戶設備進行管理,同時還提供創作者搭建便利的可視化平臺[3-4]。當用戶進入開發者中心后,進行產品添加,設置產品名稱、所屬品類、節點類型、連網方式以及數據格式。ESP8266作為發布者,通過MQTT協議,將單片機測得的各種數據上傳至服務器,然后在移動終端獲取數據[5-6]。利用阿里Iot-Studio 提供給用戶的應用編輯器,可將環境溫度、環境濕度、土壤濕度、光照強度等數據顯示在Web 應用界面上。同時設有一個獨立開關,可以向設置好的數據流發送對應的開關值數據,從而控制水泵的開關,若用戶需要,是可以進行自動控制的,通過下發AT 指令,程序內部設置數據閾值,當環境檢測到的數據超出閾值時,則控制外部設備的啟動,從而達到自動控制。阿里云物聯網云平臺配置整體流程如圖3所示。

圖3 阿里云物聯網平臺配置流程圖
按照上述流程建好產品、添加云端設備和應用后,用戶創建的設備與設計中的設備對應,也是設備接入網絡的一種形式,阿里云物聯網平臺為每個設備終端提供了一塊云空間,用戶可以在上面建立其所需要的數據流,編輯可視化應用等功能,同時還能建立用戶的人機互動畫面,從而達到遠程監控的目的,Web應用界面如圖4所示。

圖4 Web應用界面
基于STM32CubeMX 進行,同時通過MQTT 協議以及ESP8266WIFI 模塊,將所測得的數據上傳至云端.。軟件模塊包括ESP8266WIFI 模塊、LCD 模塊的SPI 驅動、BH1750 光照傳感器驅動、DHT11 溫濕度傳感器模塊驅動、YL-69土壤濕度傳感器模塊等。
配置WIFI 為STA+TCP 客戶端模式,ESP8266 是通過AT 指令來實現程序的運行,比如說“AT”為測試指令“AT+RST”為復位指令,二者返回都為OK;“AT+CWMODE=1”意思是設置工作模式為客戶端模式;“AT+CIPMODE=1”意思則是開啟設備的透明傳輸模式,便是ESP8266通過接收到的串口數據,進行轉發值所設置的服務器端口上;“AT+CWSAP=“SSID”,“PWD””為設置熱點模式下的ESP8266 的熱點名稱和密碼;“AT+CIPMUX=0”設置設備為單連接模式;“AT+CIPSTART="TCP","%s",%d ",ip,port”意思是建立TCP連接,從而讓局域網內設備實現通信。
DHT11 驅動則是根據時序圖完成DHT11 的驅動代碼編寫,首先主機要給數據引腳輸出一個至少18ms的低電平然后拉高等待20-40μs,等待DHT11 回應這時GPIO 就要改變為輸入狀態,DHT11 響應拉低80μs再拉高80μs,這個過程結束后就開始發送數據。
YL-69 的工作原理則是通過硬件上連接的是YL-69土壤濕度傳感器的AO 引腳,AO 是傳感器的模擬量輸出,因此需要對采集到的模擬量進行轉化,而PC2 是芯片的ADC(模數轉換器)引腳,用于處理模擬數據。通過測量可知,設備置于在空氣中時,濕度為0%,所獲取到ADC 的值在3935 左右,而置于水中時,濕度為100%,所得到的ADC 值在2903 左右。因此,根據這個進行代碼部分的編寫,通過配置STM32CubeMX生成ADC 初始化代碼,用戶通過讀取傳感器ADC 的值從而獲取到實時的土壤濕度值,從而進行轉化得到表示土壤的濕潤度值。
本文利用現有的阿里云物聯網平臺,設計并實現了一個基于STM32 和阿里云物聯網平臺的果園環境監測及灌溉系統。阿里云物聯網平臺作為管理系統與設備之間信息交換的橋梁,為系統用戶提供設備數據信息的監控信息服務。用戶可以通過移動終端,實現遠程控制,通過程序內對各種閾值的設定,從而保證系統的正常運行。