李 海,蔡光師
(華南農業大學 電子工程學院 人工智能學院,廣東 廣州 510642)
在農業生產領域,土壤條件、溫度和照度是對農作物生長、農產品產量和品質產生重要影響的三個因素[1-2]。因此,除了土壤條件,精準的遠程監測并記錄環境溫度、照度,及時做出有效反饋對高品質農業生產具有重要的意義。為此,本文設計了基于物聯網平臺的溫度和照度遠程測量系統,通過WiFi把系統測量的農作物數據傳送至物聯網平臺,從而實現高效的農業生產。
開發板是信息采集與處理的核心,本系統采用Arduino UNO開發板。Arduino開發板于2005年開發成功,其獨有的開放性和易用性備受開發者青睞[3-4]。目前,Arduino系列開發板有多個不同版本,包括Arduino UNO、Arduino Nano等。其中,Arduino UNO開發板配套有Arduino IDE開發軟件,豐富的第三方庫資源,無需編寫繁瑣復雜的底層驅動程序,開發快捷,支持I2C、SPI等多種串行通信方式,且價格低廉,運算能力及內存均可滿足本系統的需求。
本系統采用的DS18B20數字型傳感器能直接將信號作為數字量輸出,不易受外界信號干擾,具有較高精度和較高分辨率[5]。此外,DS18B20數字型傳感器與Arduino適配性好,且Arduino集成有適用于DS18B20的第三方數據庫,編程及既定功能容易實現。
本系統采用的GY-30照度傳感器是照度傳感器型號中使用較多的一種[6]。GY-30照度傳感器具有如下優勢:
(1)將BF1750FVI芯片和部分外圍電路集成到一塊小電路板上,可通過I2C串行時鐘總線、I2C串行數據總線與Arduino連接;
(2)Arduino IDE中自帶的Wire庫封裝了對I2C的相關操作方法,可以很方便地與GY-30通信;
(3)光譜特性曲線與人眼視覺靈敏度曲線較為接近,可見光測量范圍大。
系統選用嵌入式WiFi模塊進行數據傳輸[7-9]。它是基于ESP8266-12F WiFi模組擴展而來的NodeMCU模塊,含有USB串口,可以與計算機直接相連;在單獨使用時可作為開發板,具有GPIO、I2C以及ADC等多種功能;可編寫硬件代碼,使用Arduino IDE即可將程序燒錄進去,方便對WiFi模塊進行透傳設置。
本系統采用的Arduino IDE是一款專業的開發軟件[10],可以在三大主流操作系統Windows、Mac OS X和Linux上運行。Arduino語言由C語言與C++語言混編而成,對具有C語言基礎的開發者來說,使用很方便。
Arduino程序由兩部分構成:一部分是void setup()函數,主要用于初始化變量、設置管腳模式等,該函數內的代碼只被執行一次;另一部分是void loop()函數,主要用于編寫主體程序,該函數內的代碼會被重復執行,類似于C語言中的loop()函數。
本系統選擇貝殼物聯網平臺上傳數據。貝殼物聯網平臺能同時接入多個設備,并將接收的數據以實時變化的曲線方式展現。此外,它還具有延時小、開發文檔詳細、協議公開等優勢。將數據上傳之前,需要對貝殼物聯網平臺進行配置操作:注冊貝殼物聯網賬號,登錄后點擊“一鍵開始”即可自動生成所需設備和接口。由于需要上傳溫度和照度的數據信息,因此考慮額外添加一個模擬量接口。
本系統設計方案的流程如下:以Arduino UNO開發板為核心,利用DS18B20數字型溫度傳感器和GY-30數字光照度傳感器采集周圍環境數據,通過I2C等通信方式將數據發送給Arduino進行片上運算處理,之后Arduino將數據處理結果打包成符合平臺通信協議的JSON數據格式,再通過串口傳輸給嵌入式WiFi模塊,由它將溫度與照度數據通過TCP協議以WiFi傳輸形式發送給物聯網平臺,并實時顯示。
系統的硬件電路如圖1所示,包括溫度采集電路、照度采集電路、數據發送電路、無線傳輸模組。

圖1 系統硬件電路
(1)溫度采集電路。將Arduino開發板上的2號數字I/O口作為接收DS18B20溫度傳感器數據的通信端口;將DS18B20的VCC引腳和GND引腳分別與Arduino的5 V引腳和GND引腳相連;將DQ引腳與I/O口相連;外接一個阻值為4.7 kΩ的上拉電阻,并將其連接在VCC與DQ之間。
(2)照度采集電路。將Arduino板上的A4引腳、A5引腳對應連接到GY-30光照度傳感器模塊上的SDA引腳、SCL引腳,再分別將它們與VCC引腳、GND引腳連接,ADDR引腳設置為懸空。
(3)數據發送電路,即Arduino開發板將處理完畢的溫度和照度數據發送給WiFi模塊電路。這部分電路使用串口通信方式進行數據傳輸,只需將Arduino板上的RX引腳、TX引腳和WiFi模塊的TX引腳、RX引腳對應連接,再將Arduino板與WiFi模塊的GND引腳相連即可。
(4)無線傳輸,即將接收到的數據信息通過WiFi上傳到物聯網平臺。首先在Arduino IDE上編寫程序,然后將其燒錄進WiFi模塊,再將數據上傳到物聯網平臺。但在此之前需要對WiFi模塊進行透傳設置,透傳設置代碼如下:

先將本系統的完整電路正確連接,然后將在Arduino IDE上編寫的完整程序燒錄進Arduino開發板,之后再將已完成透傳設置的WiFi模塊上電,此時電路可開始采集數據并通過WiFi將數據上傳至貝殼物聯網平臺。登錄貝殼物聯網平臺后,點擊智能設備控制模式中的“數據查看”即可查看數據采集、顯示情況。
本文設計的基于物聯網平臺的溫度和照度遠程測量系統完全可滿足智慧農業的發展需求。實驗測量數據顯示,該系統在-10~85 ℃范圍內的溫度誤差為0.5 ℃,照度精度為1 Lux,整體精度較好,達到既定要求。