張 萍,胡應坤
(廣東工貿職業技術學院,廣東 廣州 510510)
我國雖是農業大國,但并非農業強國,農業信息化水平有待進一步提高。傳統農業多為粗放種植,生產效率低下,考慮利用信息化手段對傳統農業進行改造。文中按照物聯網三層體系結構構建了智能農業溫控系統[1],該系統可對農田進行實時監控、精細管理,提高農業生產率。
智能農業溫控系統由四部分組成,即手機APP,OneNET云平臺上的虛擬設備[2],智能農業溫控系統網關,ZigBee子系統。ZigBee子系統由協調器和終端組成,采用ZigBee無線通信,也可與智能農業溫控系統網關通過串口通信。智能農業溫控系統結構如圖1所示。

圖1 智能農業溫控系統結構
數據流分為兩類,即采集到的傳感器數據(上行數據)及用戶通過手機APP發出的控制指令(下行數據)。智能農業溫控數據流程如圖2所示。

圖2 智能農業溫控數據流程
上行數據流:ZigBee采集終端接溫濕度傳感器,采集溫濕度數據,通過ZigBee無線通信方式發送給ZigBee協調器,協調器通過串口發送給網關,網關再經OneNET云平臺發送給手機APP,手機APP展示實時溫濕度數據。
下行數據流:手機APP發出設備控制指令,經OneNET云平臺發送至網關,由網關通過串口發送給協調器,協調器借助ZigBee無線通信方式將命令發送至ZigBee控制終端,ZigBee控制終端通過繼電器外接設備控制設備運行。
手機APP以Android Studio作為開發平臺,設計了登錄、日志、溫濕度顯示、溫濕度控制4個UI,手機APP借助EDP協議與云平臺通信。手機APP工作流程如圖3所示。
手機APP、智能農業溫控系統網關采用EDP協議與中國移動通信集團的物聯網開放云平臺OneNET通信,借助云平臺實現手機APP和智能農業溫控系統網關的點對點通信。OneNET云平臺上虛擬設備顯示界面如圖4所示。

圖3 手機APP工作流程

圖4 OneNET云平臺上虛擬設備顯示界面
云平臺上建有2個虛擬設備STM32網關、手機客戶端,分別對應智能農業溫控系統網關和手機APP。網關和手機APP登錄云平臺時,需發送APIKey和設備ID[3]至云平臺。相同的APIKey即表示設備需要關聯到同一個應用,平臺接收到設備ID即表示真實設備上線。以EDP協議進行數據傳輸時,需在EDP協議中填入目的設備ID,云平臺根據目的設備ID轉發,實現點對點通信。
智能農業溫控系統網關包括硬件和軟件兩部分。
3.3.1 硬件部分
硬件主要包括五大模塊:無線通信(WiFi)模塊、ZigBee協調器模塊、微處理器(主控)模塊、SD卡讀?。ù鎯Γ┠K、供電模塊,如圖5所示。

圖5 智能農業溫控系統硬件模塊
微處理器模塊采用STM32F103ZET6作為MCU,其具有64 KB SRAM、512 KB FLASH、2個基本定時器、4個通用定時器、2個高級定時器、5個串口、1個 USB以及112個通用I/O口等,能滿足現有需求和后續功能拓展需求。
無線通信模塊采用ALIENTEK推出的高性能UARTWiFi模塊ATK-ESP8266。微處理器模塊只需進行簡單的串口配置,即可通過ATK-ESP8266板載的TCP/IP協議棧傳輸數據。
微處理器模塊通過串口外接ZigBee協調器,通過SDIO口讀取SD卡數據。在ZigBee子系統內部,采集終端和控制終端通過協調器與微處理器模塊通信。
3.3.2 軟件部分
基于STM32庫函數開發網關程序,使用中斷和輪詢實現多任務并行。程序有3個串口中斷,功能如下:
(1)串口1是調試接口,可通過串口1打印調試信息,在實際使用時可關閉;
(2)串口2連接ZigBee協調器,負責接收采集終端的數據及發送控制信息至控制終端;
(3)串口3連接ATK-ESP8266,負責發送數據給云平臺,并接收云平臺反饋的信息。
主流程采用輪詢方式,定時檢查串口2是否有新的溫濕度數據,串口3是否有云平臺發送的指令,若有新指令則將解析出來的結果通過串口2發送給ZigBee協調器。
SD卡存儲關鍵配置信息,如設備ID、目的設備ID、APIKey、接入熱點名、接入熱點密碼、云服務器IP地址、云服務器端口等。
智能農業溫控系統網關流程如圖6所示。
ZigBee子系統[4]包含協調器、終端和外接模塊。協調器和終端的主控芯片為CC2530單片機,內置Z-Stack協議棧,可實現ZigBee無線通信。外接模塊包括DHT11溫濕度數字傳感器和風扇控制電路。
協調器不但負責組建和維護ZigBee通信網絡,同時還負責與外部通信,將采集終端采集的數據轉發至外部,或從外部接收指令轉發給相應的控制終端。終端使用不同GPIO口外接DHT11溫濕度采集模塊和風扇控制電路,具有數據采集和控制設備功能。
文中使用DHT11[5]作為溫濕度傳感器。DHT11是一款能夠采集溫濕度數據的數字傳感器,與單片機等微處理器進行簡單的電路連接就能夠實時采集本地濕度和溫度數據。DHT11與單片機之間可采用單總線通信,僅僅需要一個I/O口即可。采集一次,共產生40 bit的溫濕度數據,通過單總線一次性傳給單片機,數據采用校驗和方式進行校驗,有效保證了數據傳輸的準確性。模塊功耗較低,采用5 V電源電壓時,模塊最大平均工作電流為0.5 mA。終端和DHT11接線如圖7所示。

圖6 智能農業溫控系統網關流程

圖7 ZigBee終端與DHT11接線圖
采用繼電器控制風扇開關接線如圖8所示,智能農業溫控系統通信流程如圖9所示。
智能農業溫控系統中,手機APP、網關和OneNET云平臺通信,底層采用EDP協議,在EDP數據部分使用JSON數據格式,在JSON上承載自定義協議1。網關和協調器之間使用自定義協議2。在ZigBee子系統內部,ZigBee協議之上承載自定義協議2。EDP、JSON、ZigBee都是目前使用較為廣泛的協議或數據格式,下面詳細介紹自定義的兩種協議。

圖8 利用繼電器控制風扇開關接線圖

圖9 智能農業溫控系統通信流程
自定義協義1用于終端和云平臺通信,定義EDP協議中的消息體格式,主要支持三種功能。
(1)手機APP登錄內容格式如圖10所示。

圖10 手機APP登錄內容格式
(2)手機APP下發控制命令格式如圖11所示。

圖11 控制命令內容格式
(3)網關上傳溫濕度數據格式如圖12所示。

圖12 溫濕度數據格式
自定義協義2用于網關和ZigBee子系統內部通信。
(1)控制終端的命令,即從網關→協調器→終端。命令格式如圖13所示。

圖13 命令格式
校驗(1 B)按字節進行異或操作得到,用于校驗數據在傳輸過程中是否發生變化。目前功能碼只支持2個值,后期添加新功能后,可設定新的功能碼,如圖14所示。

圖14 功能碼
當功能碼確定之后,數據字段表示具體操作,如功能碼為0x0a,數字字段1表示關風扇,0表示開風扇。
(2)具體某個終端響應,即從終端→協調器→網關,格式如圖15所示。

圖15 終端格式
終端地址即該終端的地址,功能碼與數據均來自接收到的命令。比如開啟地址為0001的風扇:
命令(協調器→終端)為3A 00 01 0A 00 31 23
響應(終端→協調器)為3A 00 01 0A 00 31 23
(3)查詢傳感器數據,即網關→協調器→終端。比如命令為3A 00 FF 01 C4 23,其中3A為起始碼,00FF表示所有傳感器,協調器會將該命令發給網絡中所有節點,01表示查詢功能,無數據字段,C4為校驗碼,23為結束碼。
(4)傳感器數據響應,終端→協調器→網關。比如數據:3A 00 FF 01 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 23,其中3A為起始碼,00FF來自收到命令中的地址字段,01為功能碼,表示查詢所有傳感器數據,92為校驗碼,23為結束符??紤]到功能拓展,設計協議時有一定冗余,16個字節表示數據來自4個終端節點,每4個字節表示每個終端節點外接4種不同的傳感器,目前只實現了每個終端節點外接溫濕度傳感器,因此只有1個字節的數據是有效的,其他均為0。
通過智能農業溫控系統網關串口1輸出調試信息。采集溫濕度數據界面如圖16所示,接收控制命令界面如圖17所示。

圖16 采集溫濕度數據界面

圖17 接收控制命令界面
本文基于物聯網云平臺構建的智能農業溫控系統,可利用手機實時監控農作物周邊環境溫度,遠程控制降溫設備(比如風扇)的開啟、關閉。設計時考慮到后續功能的拓展,可以外接傳感器采集環境數據,或外接控制設備進行環境調控,擴展性好。