劉 勇,徐識溥,胡雯雯,吳穎靜,王運圣
(上海市農業科學院農業科技信息研究所,上海數字農業工程與技術研究中心,上海201403)
隨著信息技術和網絡技術的發展,近幾年興起的物聯網技術正在各行各業中得到越來越廣泛的應用,其中就包括在農業生產上的應用[1-6]。物聯網是誕生于互聯網基礎之上的,是對互聯網的擴展,它將計算機網絡擴展為物-物相聯的更大的通信網絡。在擴展聯網對象的同時,也依然要接入傳統互聯網,而接入互聯網的方式目前主要有三大類:有線的以太網、基于移動運營商基站的無線接入方式(GPRS、4G、5G等)、以及以Wi-Fi為代表的無線局域網接入。農業物聯網作為物聯網技術的一個應用分支,除具有物聯網技術的共性特征之外,還有為適應農業生產這一特殊的應用環境而產生的特殊性,比如聯網方式。由于農業生產環境通常都地處偏遠,有線以太網具有不適用性,所以,基于移動運營商基站的無線接入方式成了首選,只要有手機信號覆蓋的地方,就都能應用這種方式。因此,目前農業物聯網的組成結構大多是由現場采集或控制設備加上一個帶流量卡的DTU(Data transfer unit,數據傳輸單元)組成,但隨著通信政策的改變以及應用場景的擴展,其固有缺點也逐漸暴露出來。
農業物聯網的組成結構因其接入互聯網的便利性而大為流行,但是,近年來隨著Wi-Fi網絡的普及,結合作者多年的應用經驗,對比之下其缺點也越來越明顯。首先,移動基站接入方式需要消耗流量費,雖然流量單價不高但隨著節點數量的增多也將造成不小的開支;其次,由于近年來電信詐騙案件的增多,國家加強了對流量卡的管控,開卡手續更加繁瑣;最后,這種接入方式除了流量卡之外,還需要相應通信模塊的支持,而模塊的價格也需幾十元或數百元。反觀Wi-Fi,其不需要消耗運營商流量,模塊單價只需要幾元到十幾元,除此之外,Wi-Fi網絡的覆蓋范圍也已擴大到觸手可及的程度,其在工業生產上已有了多方面的應用,但卻鮮見農業生產上Wi-Fi的應用[7-10]。目前,越來越多的設施農業基地或者農場均實現了網絡覆蓋,或者只需增加幾臺無線路由器即可實現Wi-Fi信號覆蓋,而且Wi-Fi設備都是基于IEEE 802.11系列協議的,可與手機、筆記本電腦等設備實現無障礙連接,基于Wi-Fi的農業物聯網在使用上也更加便利。隨著互聯網和智能手機的普及,無線互聯網得到極大的發展,其中Wi-Fi網絡更是逐漸覆蓋各大廣場、公園、辦公場所等,同樣,在溫室大棚這種農業設施里也能很方便地實現Wi-Fi網絡的覆蓋,本研究旨在利用Wi-Fi技術,實現農業物聯網溫室環境遠程監控系統。
溫室作為設施農業的方式之一,可使農業生產擺脫自然環境和傳統生產條件的束縛,是一種更為高產、優質、高效、安全的農業生產方式。溫室技術經歷了小棚、中棚、塑料大棚、普通溫室、現代化溫室等發展階段,其科技含量和自動化水平不斷提高。目前在溫室環境監控方面已有一些研究成果[11-16],但在遠程控制方面尚有欠缺。本系統針對溫室環境的監測和遠程控制而開發,主要功能為采集溫室的空氣溫度、空氣濕度、光照強度,實時遠程傳輸采集數據,遠程控制灌溉水閥、天窗開關、通風、補光燈等。所有遠程數據的傳輸均通過Wi-Fi網絡實現,系統總體結構如圖1所示。

圖1 系統總體結構Fig.1 Framework of this system
以MCU(Microcontroller unit,微控制單元)為核心的本地系統將采集的傳感器數據上傳給Wi-Fi模塊,Wi-Fi模塊通過無線路由器將數據發送到云服務器,繼而展示給用戶終端,本研究開發的用戶終端是手機APP,但APP也可以變為電腦客戶端、瀏覽器、微信小程序等多種形式。如果想要調控溫室的某個參數,可以通過用戶終端將控制命令發送到云服務器,進而通過Wi-Fi網絡傳送給MCU,從而通過具體執行機構實現對相應環境參數的控制。
硬件系統為基于ARM處理器的嵌入式系統,組成包括STM32F103微控制器、空氣溫濕度傳感器、光照度傳感器、ESP8266 Wi-Fi模塊、繼電器、灌溉閥門、補光燈、排氣扇、天窗開閉電機、市電或太陽能供電系統等(圖2)。

圖2 控制器硬件架構Fig.2 Hardware architecture of this controller
需要特別指出的是,本系統是通過兩級繼電器實現對溫室設備的控制的,由于STM32主控制器的驅動能力最大為5 V(常規3.3 V),所以與主控制器直接相連的是第一級繼電器:干簧管繼電器可由控制器的IO口直接驅動,控制信號經干簧管繼電器進入驅動能力更強的第二級繼電器,繼而實現對大功率設備的開關控制。本系統還有一個特別的設計,即實時檢測被控設備的工作狀態,從而了解控制命令發出后對設備的控制是否達到相應的效果。實現方法為在灌溉閥門、補光燈、排氣扇等設備電路中加裝電流傳感器,以檢測這些設備是否在工作以及工作是否異常(如電流是否超過額定值),在天窗舵機上加裝角度傳感器,以監測天窗的開啟度,從而判處天窗是否正常開啟或閉合。
嵌入式軟件是運行在微控制器上的固件,本系統中嵌入式軟件主要實現傳感器數據采集及打包上傳、控制命令的解析及功能執行,Wi-Fi接入互聯網功能在Wi-Fi模塊內部通過編程實現。嵌入式軟件使用ANSI標準的C語言開發,為無操作系統的前后臺程序,前臺程序主要實現串口數據的中斷接收,后臺死循環執行數據采集和命令解析。嵌入式軟件與Wi-Fi模塊通信方式為串口透傳,故程序設計上無需關注Wi-Fi模塊,但是軟件啟動后要對傳感器和串口等其他外設進行初始化,并配置IO口、定時器、中斷系統等,本研究主要關注數據采集和控制命令解析與執行的邏輯,即死循環執行的內容,該部分功能的具體實現流程如圖3所示。其中需注意的是,若有控制命令下發,則執行完命令后更新傳感器數據和相關設備狀態;若長時間無控制命令,則系統每隔2 s更新一次傳感器數據和設備狀態。軟件的核心功能在“關鍵技術”部分進行詳細介紹。

圖3 嵌入式軟件主程序流程Fig.3 Main program flow chart of embedded software
本研究選取Wi-Fi作為接入互聯網的方式,而Wi-Fi入網首先要對其參數進行配置,所以Wi-Fi模塊的配置入網是本研究的關鍵技術之一。“Wi-Fi”這一名稱的靈感來源于“Hi-Fi”,是一種無線局域網(WLAN)的接入技術,IEEE 802.11系列協議的別稱。Wi-Fi通信的雙方需區分AP(Access point,接入點)和Station(站點),本研究中使用的Wi-Fi模塊是樂鑫公司的ESP8266,工作在Station模式,相應的無線路由器即為AP。Station要接入AP需要知道AP的SSID(Service Set Identifier服務集標識符)和密碼,具體配置過程如圖4、圖5所示。

圖4 Wi-Fi模塊配置入網流程Fig.4 Flow chart of configure Wi-Fi module access network

圖5 Wi-Fi模塊配置入網過程手機截屏Fig.5 Phone screenshot of configure Wi-Fi module access network
出于成本考慮,本研究研發的現場控制設備沒有配備按鍵和顯示屏,AP參數的輸入需要手機APP來完成,所以配置入網過程的參與對象包括:手機APP、無線路由器、Wi-Fi模塊以及圖1中的MCU。手機APP首先連接無線路由器,填寫相應的SSID和密碼,之后由MCU通過串口發送命令,控制Wi-Fi模塊進入配置模式,即進入接收UDP廣播數據包狀態,如圖5左側APP界面所示,點擊下一步后APP將配置信息通過UDP數據包發送給Wi-Fi模塊,模塊提取其中的SSID和密碼信息用以連接路由器,此時手機APP如圖5中間所示,如果在進度條走完之前連接成功,則Wi-Fi模塊發送配置成功數據包給手機APP,如圖5右側截圖所示,APP界面上顯示新發現的設備,至此配置成功。
本研究解決的第二個關鍵技術即Wi-Fi模塊與服務器建立連接,這里所說的云服務器是指運行在云服務器上的服務器端軟件,選用的服務器是國內主流物聯網云平臺之一的機智云,在機智云上創建一款新產品后會分配一個32位十六進制數的產品編號,之后Wi-Fi模塊憑此編號進行服務器連接。
連接云服務器涉及的對象包括Wi-Fi模塊、MCU、路由器和云端(圖6)。該過程由Wi-Fi模塊發起,并且在每次上電之后或者掉線之后都自動執行該過程,即Wi-Fi模塊首先從MCU處獲取產品編號信息,之后使用之前配置好的SSID和密碼連接無線路由器,成功之后使用剛剛獲取的產品編號通過TCPIP協議與云服務器進行身份驗證,驗證通過之后即完成與服務器建立連接。為保證設備實時在線,Wi-Fi模塊會以50 s的時間間隔分別與MCU和云服務器發送心跳包,如果心跳包超時沒有收到回應,則開始一次新的連接過程。

圖6 Wi-Fi模塊連接云服務器流程Fig.6 Process of connecting Wi Fi module to cloud server
通過前兩小節的研究內容,實現了Wi-Fi模塊的配置入網和連接云服務器,在此基礎之上就可以實現本系統的核心功能,即數據的上報和下發。對本系統而言,上報的數據主要是傳感器采集的溫室環境信息以及設備狀態信息及發生的事件告警等信息,而下發的數據則主要指用戶發送給溫室的控制命令。
無論上報還是下發,都需要用戶的參與,所以這一過程的參與對象包括手機APP、云端、Wi-Fi模塊以及MCU(圖7)。當用戶打開APP后,APP首先需要與云端建立連接,該過程與Wi-Fi模塊連接云端類似,連接之后從云端獲取當前在線設備的列表顯示給用戶,用戶根據需要點擊關心的設備進行控制或查看。對于數據上報,這個過程是由MCU主動發起的,MCU以2 s為周期進行傳感器數據的采集,采集完成后通過串口發送給Wi-Fi模塊,Wi-Fi模塊再發送給云服務器,云服務器收到后進行存儲并轉發給手機APP,對于事件告警信息,為保證被及時處理則是發生之后立即上傳的。用戶想要控制某個設備時,只需在APP上點擊相應的按鈕,從而觸發APP將控制命令上傳到云端,云端直接通過Wi-Fi模塊轉發給MCU,MCU驗證通過后進行解析,進而通過繼電器實現對相應設備的控制。

圖7 Wi-Fi模塊上報∕下發設備數據流程Fig.7 Wi-Fi module report∕issue equipment data process
數據結構設計的目的是把采集到的相關數據按照一定的結構組織起來,以便于存儲和傳輸。本系統中傳感器數據、控制數據以及狀態數據均是以數據點的方式進行定義(表1),每個數據點包含顯示名稱、標識名、數據類型、讀寫類型等屬性,APP和MCU對數據進行處理時均按照屬性要求進行。

表1 系統涉及的數據點屬性說明Table 1 Description of data points attribute involved in the system
對于數值型數據點的處理,為減少微控制器的運算量,避免對浮點數的使用,通過公式“y=ax+b”進行變換,公式中x為通信鏈路中傳輸的數據,y為APP上顯示給用戶的實際數據,該公式變換的目的是無論y為小數還是負數,通過公式逆推后保證x始終為無符號整型;公式中參數a即表1中的分辨率,作用是將浮點數變換為整數,參數b為表1中的增量,或稱偏移量,其作用是將負數變換為正數。比如傳感器測的溫度值為-1.87℃(即y=-1.87),按照表1取值:a=0.01,b=-30,則推算出x=(y-b)∕a=2 819,所以MCU只需通過Wi-Fi模塊傳輸無符號整數值2819,用戶即可在手機APP上看到當前溫度值-1.87℃。
本系統涉及的通信協議種類較多,比如傳感器層的I2C協議、485協議、Modbus協議,遠程傳輸的TCP∕IP協議等,以上都是通用協議。這里要介紹的是系統自定義的內部應用層數據傳輸協議,即MCU與Wi-Fi模塊、云端、手機APP等之間進行數據采集和控制時傳輸的數據包格式(表2)。

表2 控制命令數據包格式Table 2 Packet format of control command
應用層協議采用一問一答方式,每條命令需要由接收方給出ACK應答確認消息,超時時間200 ms,超時后重發,發送3次后不再嘗試發送,丟棄該包。數據包默認采用大端編碼,即高字節在前,低字節在后(表2)。指令由以下部分按順序組成:包頭(2B,0xFFFF),包長度(2B,命令...校驗和),命令(1B),包序號(1B),Flags(2B),有效負載,校驗和(1B)。對于控制命令,其有效負載為表2中序號為6、7、8的部分,控制對象標志位有效時才按照控制對象數據值執行相應的控制。
本研究以STM32F103微控制器和Wi-Fi通信模塊為硬件基礎,開發完成了一套集傳感器數據采集、溫室設備控制、設備狀態監測等功能于一體的溫室環境遠程監控系統,成功將Wi-Fi技術應用于農業物聯網中,解決了Wi-Fi模塊入網、監測數據上傳、控制命令下發、心跳包維持在線狀態等關鍵問題,使得原來必須使用GPRS、3G、4G的地方可以用Wi-Fi替代,從而大大降低成本,擴展了農業物聯網的應用范圍。對于小而分散的設施農業溫室大棚而言,使用Wi-Fi進行環境監測具有低成本、可靠、靈活、隨時隨地用手機查看的優點。系統用戶應用界面可以是手機APP,也可以是微信小程序等(圖8)。Wi-Fi的高速性和穩定性應用于溫室環境的遠程控制,可以實現如同在現場按開關一樣的流暢體驗,實測從APP上控制按鈕被點擊到被控設備執行相應動作的延時時間,大多數情況下都不到0.5 s。

圖8 系統應用界面Fig.8 Application interface of this system
農業生產需要與信息技術結合、與物聯網技術結合來提高生產效率和農產品品質。本研究的關鍵在于將Wi-Fi這一日益普及的無線網絡接入技術應用到農業物聯網中,實現了對設施農業中溫室大棚環境的遠程監測與控制,既避免了布線的麻煩,又節省了移動互聯網的流量資費,因此可以提高農業物聯網的普及度。監控設備可以像手機和平板電腦一樣方便地接入Wi-Fi網絡,而使用者也可以隨時隨地拿出手機對溫室內的實時環境進行查看和調節,減輕了生產管理人員的勞動強度,提高生產效率,繼而促進農業物聯網的快速普及。