張 萍,胡應(yīng)坤
(廣東工貿(mào)職業(yè)技術(shù)學(xué)院,廣東 廣州 510510)
我國(guó)雖是農(nóng)業(yè)大國(guó),但并非農(nóng)業(yè)強(qiáng)國(guó),農(nóng)業(yè)信息化水平有待進(jìn)一步提高。傳統(tǒng)農(nóng)業(yè)多為粗放種植,生產(chǎn)效率低下,考慮利用信息化手段對(duì)傳統(tǒng)農(nóng)業(yè)進(jìn)行改造。文中按照物聯(lián)網(wǎng)三層體系結(jié)構(gòu)構(gòu)建了智能農(nóng)業(yè)溫控系統(tǒng)[1],該系統(tǒng)可對(duì)農(nóng)田進(jìn)行實(shí)時(shí)監(jiān)控、精細(xì)管理,提高農(nóng)業(yè)生產(chǎn)率。
智能農(nóng)業(yè)溫控系統(tǒng)由四部分組成,即手機(jī)APP,OneNET云平臺(tái)上的虛擬設(shè)備[2],智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān),ZigBee子系統(tǒng)。ZigBee子系統(tǒng)由協(xié)調(diào)器和終端組成,采用ZigBee無線通信,也可與智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)通過串口通信。智能農(nóng)業(yè)溫控系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 智能農(nóng)業(yè)溫控系統(tǒng)結(jié)構(gòu)
數(shù)據(jù)流分為兩類,即采集到的傳感器數(shù)據(jù)(上行數(shù)據(jù))及用戶通過手機(jī)APP發(fā)出的控制指令(下行數(shù)據(jù))。智能農(nóng)業(yè)溫控?cái)?shù)據(jù)流程如圖2所示。
圖2 智能農(nóng)業(yè)溫控?cái)?shù)據(jù)流程
上行數(shù)據(jù)流:ZigBee采集終端接溫濕度傳感器,采集溫濕度數(shù)據(jù),通過ZigBee無線通信方式發(fā)送給ZigBee協(xié)調(diào)器,協(xié)調(diào)器通過串口發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)再經(jīng)OneNET云平臺(tái)發(fā)送給手機(jī)APP,手機(jī)APP展示實(shí)時(shí)溫濕度數(shù)據(jù)。
下行數(shù)據(jù)流:手機(jī)APP發(fā)出設(shè)備控制指令,經(jīng)OneNET云平臺(tái)發(fā)送至網(wǎng)關(guān),由網(wǎng)關(guān)通過串口發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器借助ZigBee無線通信方式將命令發(fā)送至ZigBee控制終端,ZigBee控制終端通過繼電器外接設(shè)備控制設(shè)備運(yùn)行。
手機(jī)APP以Android Studio作為開發(fā)平臺(tái),設(shè)計(jì)了登錄、日志、溫濕度顯示、溫濕度控制4個(gè)UI,手機(jī)APP借助EDP協(xié)議與云平臺(tái)通信。手機(jī)APP工作流程如圖3所示。
手機(jī)APP、智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)采用EDP協(xié)議與中國(guó)移動(dòng)通信集團(tuán)的物聯(lián)網(wǎng)開放云平臺(tái)OneNET通信,借助云平臺(tái)實(shí)現(xiàn)手機(jī)APP和智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)的點(diǎn)對(duì)點(diǎn)通信。OneNET云平臺(tái)上虛擬設(shè)備顯示界面如圖4所示。
圖3 手機(jī)APP工作流程
圖4 OneNET云平臺(tái)上虛擬設(shè)備顯示界面
云平臺(tái)上建有2個(gè)虛擬設(shè)備STM32網(wǎng)關(guān)、手機(jī)客戶端,分別對(duì)應(yīng)智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)和手機(jī)APP。網(wǎng)關(guān)和手機(jī)APP登錄云平臺(tái)時(shí),需發(fā)送APIKey和設(shè)備ID[3]至云平臺(tái)。相同的APIKey即表示設(shè)備需要關(guān)聯(lián)到同一個(gè)應(yīng)用,平臺(tái)接收到設(shè)備ID即表示真實(shí)設(shè)備上線。以EDP協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),需在EDP協(xié)議中填入目的設(shè)備ID,云平臺(tái)根據(jù)目的設(shè)備ID轉(zhuǎn)發(fā),實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信。
智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)包括硬件和軟件兩部分。
3.3.1 硬件部分
硬件主要包括五大模塊:無線通信(WiFi)模塊、ZigBee協(xié)調(diào)器模塊、微處理器(主控)模塊、SD卡讀取(存儲(chǔ))模塊、供電模塊,如圖5所示。
圖5 智能農(nóng)業(yè)溫控系統(tǒng)硬件模塊
微處理器模塊采用STM32F103ZET6作為MCU,其具有64 KB SRAM、512 KB FLASH、2個(gè)基本定時(shí)器、4個(gè)通用定時(shí)器、2個(gè)高級(jí)定時(shí)器、5個(gè)串口、1個(gè) USB以及112個(gè)通用I/O口等,能滿足現(xiàn)有需求和后續(xù)功能拓展需求。
無線通信模塊采用ALIENTEK推出的高性能UARTWiFi模塊ATK-ESP8266。微處理器模塊只需進(jìn)行簡(jiǎn)單的串口配置,即可通過ATK-ESP8266板載的TCP/IP協(xié)議棧傳輸數(shù)據(jù)。
微處理器模塊通過串口外接ZigBee協(xié)調(diào)器,通過SDIO口讀取SD卡數(shù)據(jù)。在ZigBee子系統(tǒng)內(nèi)部,采集終端和控制終端通過協(xié)調(diào)器與微處理器模塊通信。
3.3.2 軟件部分
基于STM32庫(kù)函數(shù)開發(fā)網(wǎng)關(guān)程序,使用中斷和輪詢實(shí)現(xiàn)多任務(wù)并行。程序有3個(gè)串口中斷,功能如下:
(1)串口1是調(diào)試接口,可通過串口1打印調(diào)試信息,在實(shí)際使用時(shí)可關(guān)閉;
(2)串口2連接ZigBee協(xié)調(diào)器,負(fù)責(zé)接收采集終端的數(shù)據(jù)及發(fā)送控制信息至控制終端;
(3)串口3連接ATK-ESP8266,負(fù)責(zé)發(fā)送數(shù)據(jù)給云平臺(tái),并接收云平臺(tái)反饋的信息。
主流程采用輪詢方式,定時(shí)檢查串口2是否有新的溫濕度數(shù)據(jù),串口3是否有云平臺(tái)發(fā)送的指令,若有新指令則將解析出來的結(jié)果通過串口2發(fā)送給ZigBee協(xié)調(diào)器。
SD卡存儲(chǔ)關(guān)鍵配置信息,如設(shè)備ID、目的設(shè)備ID、APIKey、接入熱點(diǎn)名、接入熱點(diǎn)密碼、云服務(wù)器IP地址、云服務(wù)器端口等。
智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)流程如圖6所示。
ZigBee子系統(tǒng)[4]包含協(xié)調(diào)器、終端和外接模塊。協(xié)調(diào)器和終端的主控芯片為CC2530單片機(jī),內(nèi)置Z-Stack協(xié)議棧,可實(shí)現(xiàn)ZigBee無線通信。外接模塊包括DHT11溫濕度數(shù)字傳感器和風(fēng)扇控制電路。
協(xié)調(diào)器不但負(fù)責(zé)組建和維護(hù)ZigBee通信網(wǎng)絡(luò),同時(shí)還負(fù)責(zé)與外部通信,將采集終端采集的數(shù)據(jù)轉(zhuǎn)發(fā)至外部,或從外部接收指令轉(zhuǎn)發(fā)給相應(yīng)的控制終端。終端使用不同GPIO口外接DHT11溫濕度采集模塊和風(fēng)扇控制電路,具有數(shù)據(jù)采集和控制設(shè)備功能。
文中使用DHT11[5]作為溫濕度傳感器。DHT11是一款能夠采集溫濕度數(shù)據(jù)的數(shù)字傳感器,與單片機(jī)等微處理器進(jìn)行簡(jiǎn)單的電路連接就能夠?qū)崟r(shí)采集本地濕度和溫度數(shù)據(jù)。DHT11與單片機(jī)之間可采用單總線通信,僅僅需要一個(gè)I/O口即可。采集一次,共產(chǎn)生40 bit的溫濕度數(shù)據(jù),通過單總線一次性傳給單片機(jī),數(shù)據(jù)采用校驗(yàn)和方式進(jìn)行校驗(yàn),有效保證了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。模塊功耗較低,采用5 V電源電壓時(shí),模塊最大平均工作電流為0.5 mA。終端和DHT11接線如圖7所示。
圖6 智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)流程
圖7 ZigBee終端與DHT11接線圖
采用繼電器控制風(fēng)扇開關(guān)接線如圖8所示,智能農(nóng)業(yè)溫控系統(tǒng)通信流程如圖9所示。
智能農(nóng)業(yè)溫控系統(tǒng)中,手機(jī)APP、網(wǎng)關(guān)和OneNET云平臺(tái)通信,底層采用EDP協(xié)議,在EDP數(shù)據(jù)部分使用JSON數(shù)據(jù)格式,在JSON上承載自定義協(xié)議1。網(wǎng)關(guān)和協(xié)調(diào)器之間使用自定義協(xié)議2。在ZigBee子系統(tǒng)內(nèi)部,ZigBee協(xié)議之上承載自定義協(xié)議2。EDP、JSON、ZigBee都是目前使用較為廣泛的協(xié)議或數(shù)據(jù)格式,下面詳細(xì)介紹自定義的兩種協(xié)議。
圖8 利用繼電器控制風(fēng)扇開關(guān)接線圖
圖9 智能農(nóng)業(yè)溫控系統(tǒng)通信流程
自定義協(xié)義1用于終端和云平臺(tái)通信,定義EDP協(xié)議中的消息體格式,主要支持三種功能。
(1)手機(jī)APP登錄內(nèi)容格式如圖10所示。
圖10 手機(jī)APP登錄內(nèi)容格式
(2)手機(jī)APP下發(fā)控制命令格式如圖11所示。
圖11 控制命令內(nèi)容格式
(3)網(wǎng)關(guān)上傳溫濕度數(shù)據(jù)格式如圖12所示。
圖12 溫濕度數(shù)據(jù)格式
自定義協(xié)義2用于網(wǎng)關(guān)和ZigBee子系統(tǒng)內(nèi)部通信。
(1)控制終端的命令,即從網(wǎng)關(guān)→協(xié)調(diào)器→終端。命令格式如圖13所示。
圖13 命令格式
校驗(yàn)(1 B)按字節(jié)進(jìn)行異或操作得到,用于校驗(yàn)數(shù)據(jù)在傳輸過程中是否發(fā)生變化。目前功能碼只支持2個(gè)值,后期添加新功能后,可設(shè)定新的功能碼,如圖14所示。
圖14 功能碼
當(dāng)功能碼確定之后,數(shù)據(jù)字段表示具體操作,如功能碼為0x0a,數(shù)字字段1表示關(guān)風(fēng)扇,0表示開風(fēng)扇。
(2)具體某個(gè)終端響應(yīng),即從終端→協(xié)調(diào)器→網(wǎng)關(guān),格式如圖15所示。
圖15 終端格式
終端地址即該終端的地址,功能碼與數(shù)據(jù)均來自接收到的命令。比如開啟地址為0001的風(fēng)扇:
命令(協(xié)調(diào)器→終端)為3A 00 01 0A 00 31 23
響應(yīng)(終端→協(xié)調(diào)器)為3A 00 01 0A 00 31 23
(3)查詢傳感器數(shù)據(jù),即網(wǎng)關(guān)→協(xié)調(diào)器→終端。比如命令為3A 00 FF 01 C4 23,其中3A為起始碼,00FF表示所有傳感器,協(xié)調(diào)器會(huì)將該命令發(fā)給網(wǎng)絡(luò)中所有節(jié)點(diǎn),01表示查詢功能,無數(shù)據(jù)字段,C4為校驗(yàn)碼,23為結(jié)束碼。
(4)傳感器數(shù)據(jù)響應(yīng),終端→協(xié)調(diào)器→網(wǎng)關(guān)。比如數(shù)據(jù):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為功能碼,表示查詢所有傳感器數(shù)據(jù),92為校驗(yàn)碼,23為結(jié)束符??紤]到功能拓展,設(shè)計(jì)協(xié)議時(shí)有一定冗余,16個(gè)字節(jié)表示數(shù)據(jù)來自4個(gè)終端節(jié)點(diǎn),每4個(gè)字節(jié)表示每個(gè)終端節(jié)點(diǎn)外接4種不同的傳感器,目前只實(shí)現(xiàn)了每個(gè)終端節(jié)點(diǎn)外接溫濕度傳感器,因此只有1個(gè)字節(jié)的數(shù)據(jù)是有效的,其他均為0。
通過智能農(nóng)業(yè)溫控系統(tǒng)網(wǎng)關(guān)串口1輸出調(diào)試信息。采集溫濕度數(shù)據(jù)界面如圖16所示,接收控制命令界面如圖17所示。
圖16 采集溫濕度數(shù)據(jù)界面
圖17 接收控制命令界面
本文基于物聯(lián)網(wǎng)云平臺(tái)構(gòu)建的智能農(nóng)業(yè)溫控系統(tǒng),可利用手機(jī)實(shí)時(shí)監(jiān)控農(nóng)作物周邊環(huán)境溫度,遠(yuǎn)程控制降溫設(shè)備(比如風(fēng)扇)的開啟、關(guān)閉。設(shè)計(jì)時(shí)考慮到后續(xù)功能的拓展,可以外接傳感器采集環(huán)境數(shù)據(jù),或外接控制設(shè)備進(jìn)行環(huán)境調(diào)控,擴(kuò)展性好。