何 勉
(陜西理工大學(xué) 電氣工程學(xué)院,陜西 漢中 723000)
溫室作為現(xiàn)代農(nóng)業(yè)的重要組成部分,得到了社會(huì)的廣泛關(guān)注。溫室環(huán)境中的溫度、濕度、光照強(qiáng)度、CO2濃度、土壤濕度等因素對(duì)作物的生長(zhǎng)產(chǎn)生重大的影響,不同作物對(duì)環(huán)境參數(shù)的需求也不同[1-3]。因此,對(duì)溫室環(huán)境進(jìn)行監(jiān)控是非常必要的。傳統(tǒng)的溫室環(huán)境監(jiān)控系統(tǒng)大多采用有線通信方式,傳感器采集節(jié)點(diǎn)使用RS-485總線方式將數(shù)據(jù)傳輸?shù)街骺刂破骰蛴?jì)算機(jī)進(jìn)行處理,接入互聯(lián)網(wǎng)也多采用網(wǎng)線連接,這種方式需要進(jìn)行大量布線,且線路復(fù)雜,可靠性差,數(shù)據(jù)監(jiān)控需要搭建專門的服務(wù)器和開發(fā)相關(guān)軟件,成本高,維護(hù)困難[4-10]。
本文設(shè)計(jì)的基于物聯(lián)網(wǎng)的溫室環(huán)境監(jiān)控系統(tǒng),采用ZigBee技術(shù)建立無線傳感器網(wǎng)絡(luò),終端節(jié)點(diǎn)連接傳感器來采集環(huán)境數(shù)據(jù),并通過無線傳感器網(wǎng)絡(luò)與協(xié)調(diào)器實(shí)現(xiàn)數(shù)據(jù)的近距離傳輸,發(fā)揮了ZigBee低功耗、低成本、組網(wǎng)功能強(qiáng)大的優(yōu)勢(shì)。采用Wi-Fi將網(wǎng)關(guān)設(shè)備接入互聯(lián)網(wǎng),具有傳輸速度快、可靠性高、無需布線等優(yōu)點(diǎn)。采用物聯(lián)網(wǎng)云平臺(tái)技術(shù)將溫室環(huán)境數(shù)據(jù)采集并上傳到云端,通過云平臺(tái)提供的設(shè)備管理和運(yùn)維能力實(shí)現(xiàn)溫室環(huán)境的遠(yuǎn)程監(jiān)控,使得系統(tǒng)安全穩(wěn)定,維護(hù)方便。
系統(tǒng)由溫室環(huán)境感知層、網(wǎng)關(guān)和遠(yuǎn)程監(jiān)控層3部分組成,系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
溫室環(huán)境感知層是由ZigBee協(xié)調(diào)器和多個(gè)ZigBee終端節(jié)點(diǎn)組成,負(fù)責(zé)采集溫室環(huán)境數(shù)據(jù)信息轉(zhuǎn)發(fā)給網(wǎng)關(guān),并執(zhí)行網(wǎng)關(guān)發(fā)來的控制命令。ZigBee協(xié)調(diào)器負(fù)責(zé)建立與管理無線傳感器網(wǎng)絡(luò),并與網(wǎng)關(guān)進(jìn)行串口通信。ZigBee終端節(jié)點(diǎn)連接各種傳感器模塊構(gòu)成數(shù)據(jù)采集節(jié)點(diǎn)、連接控制模塊構(gòu)成控制節(jié)點(diǎn),分別負(fù)責(zé)采集溫室環(huán)境數(shù)據(jù)信息(包括空氣溫度、空氣濕度、光照強(qiáng)度、CO2濃度、土壤濕度等)和執(zhí)行環(huán)境調(diào)控命令。
網(wǎng)關(guān)由STM32微控制器和Wi-Fi模塊組成,是連接溫室環(huán)境感知層和遠(yuǎn)程監(jiān)控層的橋梁。網(wǎng)關(guān)將環(huán)境感知層的數(shù)據(jù)通過Wi-Fi傳輸?shù)綑C(jī)智云平臺(tái),同時(shí)將機(jī)智云平臺(tái)發(fā)來的控制命令通過串口轉(zhuǎn)發(fā)給溫室環(huán)境感知層的ZigBee協(xié)調(diào)器。
遠(yuǎn)程監(jiān)控層由機(jī)智云平臺(tái)和手機(jī)APP組成。機(jī)智云平臺(tái)提供安全可靠的設(shè)備連接通信功能,支持設(shè)備數(shù)據(jù)采集上云和云端數(shù)據(jù)下發(fā)到設(shè)備端,同時(shí)還提供了手機(jī)APP,用戶通過手機(jī)APP就可以實(shí)現(xiàn)溫室環(huán)境數(shù)據(jù)的遠(yuǎn)程監(jiān)測(cè)和實(shí)時(shí)控制功能。
網(wǎng)關(guān)的主控制器選用STM32F103RET6單片機(jī),該單片機(jī)的外圍電路包括電源電路、復(fù)位電路、晶振電路、RS232串口電路等。STM32F103RET6單片機(jī)的工作頻率高達(dá)72 MHz,內(nèi)置64 KB的SRAM,512 KB的FLASH,擁有51個(gè)通用IO口、5路串口,具有性能高、功耗低的優(yōu)點(diǎn),能滿足系統(tǒng)需要。
網(wǎng)關(guān)接入互聯(lián)網(wǎng)采用Wi-Fi方案,Wi-Fi模塊選用深圳市安信可科技有限公司開發(fā)的ESP8266-01模組,該模組使用樂鑫研發(fā)和設(shè)計(jì)的ESP8266EX芯片,性能穩(wěn)定、功耗低,已被廣泛應(yīng)用于移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)。本文對(duì)ESP8266-01模組進(jìn)行二次開發(fā)即可將設(shè)備接入互聯(lián)網(wǎng)。ESP8266-01模組采用3.3 V供電,與主控制器之間采用串口通信方式,其串口引腳RXD、TXD分別連接STM32F103RET6單片機(jī)USART2的PA2(TXD)、PA3(RXD)。
網(wǎng)關(guān)通過觸摸屏實(shí)時(shí)顯示溫室環(huán)境數(shù)據(jù)和手動(dòng)控制調(diào)控設(shè)備,觸摸屏選用深圳市淘晶馳電子科技有限公司生產(chǎn)的3.2英寸串口智能屏,該屏通過串口與主控制器交互指令,其串口引腳RXD、TXD分別連接STM32F103RET6單片機(jī)UART4的PC10(TXD)、PC11(RXD)。觸摸屏人機(jī)界面的制作由上位機(jī)軟件完成。
2.2.1 ZigBee協(xié)調(diào)器
ZigBee控制芯片采用TI公司的CC2530,該芯片集成了8051增強(qiáng)型內(nèi)核微控制器、RF射頻收發(fā)器、片內(nèi)可編程閃存、8 KB的RAM、8路12位分辨率AD、5通道DMA等功能的一款射頻單片機(jī)。ZigBee 協(xié)調(diào)器主要由CC2530單片機(jī)、電源電路、天線電路、晶振電路等組成。
ZigBee協(xié)調(diào)器通過串口與STM32F103RET6單片機(jī)的USART3進(jìn)行通信。CC2530的P_2(RXD)、P_3(TXD)分別連接STM32F103RET6的PB10(TXD)、PB11(RXD),設(shè)置好串口參數(shù)就可以實(shí)現(xiàn)數(shù)據(jù)傳輸。
2.2.2 ZigBee終端節(jié)點(diǎn)
ZigBee終端節(jié)點(diǎn)在協(xié)調(diào)器的硬件基礎(chǔ)上增加了電壓采集電路、傳感器模塊、控制模塊。根據(jù)連接的模塊類別,終端節(jié)點(diǎn)可分為數(shù)據(jù)采集節(jié)點(diǎn)和控制節(jié)點(diǎn)。ZigBee終端節(jié)點(diǎn)硬件結(jié)構(gòu)圖如圖2所示。
圖2 ZigBee終端節(jié)點(diǎn)硬件結(jié)構(gòu)圖
電壓采樣電路是將Zigbee終端節(jié)點(diǎn)的PB1口配置為ADC,不同的節(jié)點(diǎn)設(shè)置不同的電阻配比,通過在PB1口上采集到不同的電壓值,來識(shí)別節(jié)點(diǎn)類型。
趙京等(2016)根據(jù)包裹體資料分析箭豬坡礦床成礦溫度在100℃~259℃之間,亦證明本礦床屬中低溫礦床。
數(shù)據(jù)采集節(jié)點(diǎn)連接的傳感器有溫濕度傳感器(SHT30)、光照強(qiáng)度傳感器(BH1750FVI)、CO2傳感器(MH-Z19)、土壤濕度傳感器(YL-69),用于采集溫室的溫度、濕度、光照強(qiáng)度、CO2濃度、土壤濕度等數(shù)據(jù)。
控制節(jié)點(diǎn)連接3個(gè)繼電器模塊,分別控制溫室內(nèi)風(fēng)扇、補(bǔ)光燈、灌溉閥門的打開與關(guān)閉,達(dá)到調(diào)節(jié)溫室內(nèi)溫度、濕度、CO2濃度、光照強(qiáng)度、土壤濕度的目的。
機(jī)智云是致力于物聯(lián)網(wǎng)、智能硬件云服務(wù)的開發(fā)平臺(tái),為開發(fā)者提供自助式智能硬件開發(fā)工具和開放的云端服務(wù),開發(fā)周期短,效率高。
登陸機(jī)智云網(wǎng)站,注冊(cè)賬號(hào),在開發(fā)者中心創(chuàng)建產(chǎn)品,本文設(shè)置產(chǎn)品名稱為“溫室環(huán)境監(jiān)控系統(tǒng)”,然后根據(jù)系統(tǒng)需求添加數(shù)據(jù)點(diǎn),每一個(gè)數(shù)據(jù)點(diǎn)控制產(chǎn)品的一個(gè)功能。本文添加了11個(gè)數(shù)據(jù)點(diǎn),如表1所示。
表1 數(shù)據(jù)點(diǎn)設(shè)置表
創(chuàng)建完數(shù)據(jù)點(diǎn)之后,可以對(duì)設(shè)備進(jìn)行虛擬調(diào)試,快速驗(yàn)證接口功能的開發(fā),并在機(jī)智云提供的MCU開發(fā)服務(wù)中生成MCU端參考代碼,本文使用STM32單片機(jī)的參考代碼。
3.2.1 燒錄GAgent固件
GAgent是運(yùn)行在Wi-Fi模塊上的一款應(yīng)用程序,可以提供上層應(yīng)用到產(chǎn)品設(shè)備的雙向數(shù)據(jù)通訊,其主要功能是配置設(shè)備入網(wǎng)、發(fā)現(xiàn)綁定、程序升級(jí)等。使用專用下載軟件給ESP8266-01模組燒錄GAgent固件,網(wǎng)關(guān)就可以配置入網(wǎng)、接入機(jī)智云,實(shí)現(xiàn)設(shè)備數(shù)據(jù)與云端數(shù)據(jù)的轉(zhuǎn)發(fā)。
在機(jī)智云平臺(tái)下載MCU的代碼后,需要將其移植到STM32工程文件中,移植內(nèi)容包括:?jiǎn)纹瑱C(jī)串口驅(qū)動(dòng)程序、毫秒定時(shí)器、單片機(jī)復(fù)位函數(shù)、模塊配網(wǎng)、數(shù)據(jù)處理等。
數(shù)據(jù)處理包括兩部分:(1)實(shí)現(xiàn)設(shè)備數(shù)據(jù)到云端的上行處理。STM32的UART3接收到ZigBee協(xié)調(diào)器發(fā)來的采集數(shù)據(jù)后,存到設(shè)備狀態(tài)結(jié)構(gòu)體currentDataPoint結(jié)構(gòu)體成員中,并調(diào)用userHandle函數(shù)完成數(shù)據(jù)的上報(bào)。(2)實(shí)現(xiàn)云端數(shù)據(jù)到設(shè)備的下行處理。STM32的UART2接收到Wi-Fi模塊發(fā)來的控制命令后,在gizwitsEventProcess函數(shù)中觸發(fā)相應(yīng)的事件(風(fēng)扇、補(bǔ)光燈、閥門的打開或關(guān)閉),在事件中將控制命令通過UART3發(fā)送給ZigBee協(xié)調(diào)器,實(shí)現(xiàn)控制命令的下行處理。
ZigBee無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)要進(jìn)行數(shù)據(jù)傳輸必須遵循ZigBee協(xié)議,Zigbee協(xié)議包含了物理層、MAC層、網(wǎng)絡(luò)層、應(yīng)用層的技術(shù)規(guī)范,ZigBee協(xié)議棧將各層的協(xié)議集合在一起,以函數(shù)的形式實(shí)現(xiàn),提供應(yīng)用層API,方便用戶調(diào)用。本文使用ZigBee2007協(xié)議棧進(jìn)行軟件設(shè)計(jì)。
3.3.1 ZigBee協(xié)調(diào)器軟件設(shè)計(jì)
ZigBee協(xié)調(diào)器上電后首先進(jìn)行初始化,然后掃描信道,采用一個(gè)空閑信道建立網(wǎng)絡(luò),同時(shí)配置網(wǎng)絡(luò)參數(shù),監(jiān)聽有無節(jié)點(diǎn)加入網(wǎng)絡(luò),當(dāng)終端節(jié)點(diǎn)加入網(wǎng)絡(luò)后為其分配地址,構(gòu)成星型網(wǎng)絡(luò)。ZigBee協(xié)調(diào)器是無線網(wǎng)絡(luò)中的主節(jié)點(diǎn),為網(wǎng)關(guān)與溫室環(huán)境采集節(jié)點(diǎn)提供數(shù)據(jù)交互。ZigBee協(xié)調(diào)器程序流程如圖3所示。
圖3 ZigBee協(xié)調(diào)器程序流程圖
當(dāng)協(xié)調(diào)器接收到終端節(jié)點(diǎn)發(fā)送來的數(shù)據(jù)后,經(jīng)過協(xié)議棧中其他層的一系列處理后,最后在應(yīng)用層的任務(wù)事件處理函數(shù)GenericApp_ProcessEvent中接收AF_INCOMING_MSG_CMD消息,并調(diào)用Generic-App_MessageMSGCB函數(shù)將無線數(shù)據(jù)通過串口發(fā)送給網(wǎng)關(guān)。
當(dāng)網(wǎng)關(guān)給協(xié)調(diào)器的串口發(fā)來控制命令后,協(xié)調(diào)器調(diào)用回調(diào)函數(shù)rxCB,在回調(diào)函數(shù)中使用HalUARTRead函數(shù)從串口接收命令數(shù)據(jù),并通過AF_DataRequest函數(shù)將數(shù)據(jù)廣播出去,ZigBee終端節(jié)點(diǎn)接收到數(shù)據(jù)后執(zhí)行控制命令,并將設(shè)備狀態(tài)發(fā)送給ZigBee協(xié)調(diào)器。
3.3.2 ZigBee終端節(jié)點(diǎn)軟件設(shè)計(jì)
ZigBee終端節(jié)點(diǎn)上電后主動(dòng)掃描查找周圍網(wǎng)絡(luò)的協(xié)調(diào)器,檢測(cè)到信標(biāo)后獲得協(xié)調(diào)器信息并發(fā)出連接請(qǐng)求,經(jīng)協(xié)調(diào)器同意后加入網(wǎng)絡(luò)。ZigBee終端節(jié)點(diǎn)程序流程如圖4所示。
圖4 ZigBee終端節(jié)點(diǎn)程序流程圖
如果終端節(jié)點(diǎn)是數(shù)據(jù)采集節(jié)點(diǎn),則在消息處理函數(shù)中,完成對(duì)網(wǎng)絡(luò)狀態(tài)變化事件ZDO_STA-TE_CHANGE中的數(shù)據(jù)發(fā)送事件GENERIC-APP_SEND_MSG_EVT的處理,調(diào)用傳感器數(shù)據(jù)發(fā)送函數(shù)GenericApp_SendTheMessage,在函數(shù)中讀取溫室環(huán)境數(shù)據(jù)(溫度、濕度、光照強(qiáng)度、CO2濃度、土壤濕度),然后調(diào)用AF_DataRequest函數(shù)將數(shù)據(jù)無線發(fā)送給協(xié)調(diào)器,調(diào)用osal_start_timerEx函數(shù),設(shè)置發(fā)送周期為每5 s發(fā)送一次。
如果終端節(jié)點(diǎn)是控制節(jié)點(diǎn),控制節(jié)點(diǎn)收到協(xié)調(diào)器發(fā)送的控制命令后,根據(jù)節(jié)點(diǎn)地址判斷是否發(fā)給當(dāng)前節(jié)點(diǎn),若是當(dāng)前節(jié)點(diǎn),則執(zhí)行控制命令,并將設(shè)備狀態(tài)數(shù)據(jù)無線發(fā)送給協(xié)調(diào)器。
系統(tǒng)實(shí)物如圖5所示,網(wǎng)關(guān)由STM32單片機(jī)、Wi-Fi模塊、觸摸屏組成,觸摸屏實(shí)時(shí)顯示溫室環(huán)境數(shù)據(jù)及設(shè)備狀態(tài),并可手動(dòng)控制設(shè)備的打開與關(guān)閉。溫室環(huán)境感知層由協(xié)調(diào)器和終端節(jié)點(diǎn)組成,終端節(jié)點(diǎn)連接了傳感器和繼電器模塊。點(diǎn)擊觸摸屏上的開關(guān)按鈕,可以打開或關(guān)閉繼電器模塊。
在智能手機(jī)上安裝機(jī)智云提供的手機(jī)APP,打開APP,進(jìn)入“登陸”界面,注冊(cè)賬號(hào)后進(jìn)行登陸。然后進(jìn)入“我的設(shè)備”界面,點(diǎn)擊“一鍵配置”,輸入Wi-Fi賬號(hào)和密碼,選擇模組類型“樂鑫”,這時(shí)打開設(shè)備電源,手機(jī)APP將根據(jù)Wi-Fi信息搜索并連接設(shè)備。連接成功后,在“我的設(shè)備”發(fā)現(xiàn)新設(shè)備“溫室環(huán)境監(jiān)控系統(tǒng)”,點(diǎn)擊進(jìn)入溫室環(huán)境監(jiān)控界面,采集的溫室環(huán)境數(shù)據(jù)已經(jīng)顯示在手機(jī)APP上了,數(shù)據(jù)每5 s更新一次,當(dāng)點(diǎn)擊打開風(fēng)扇、補(bǔ)光燈、閥門按鈕時(shí),對(duì)應(yīng)ZigBee終端節(jié)點(diǎn)上的繼電器模塊閉合,手機(jī)APP上的設(shè)備按鈕及設(shè)備狀態(tài)顯示為開啟,如圖6所示。
圖5 系統(tǒng)實(shí)物圖 圖6 手機(jī)APP監(jiān)控頁面
本文結(jié)合物聯(lián)網(wǎng)技術(shù)設(shè)計(jì)了一套溫室環(huán)境監(jiān)控系統(tǒng),該系統(tǒng)在溫室內(nèi)布置多種ZigBee終端節(jié)點(diǎn)實(shí)時(shí)采集溫室環(huán)境數(shù)據(jù)并獲取控制器的狀態(tài),利用無線傳感器網(wǎng)絡(luò)將數(shù)據(jù)傳輸給網(wǎng)關(guān),并通過Wi-Fi模塊傳輸?shù)綑C(jī)智云平臺(tái),用戶只需要使用手機(jī)APP就可以完成對(duì)溫室環(huán)境的監(jiān)測(cè),同時(shí)可以根據(jù)需要發(fā)布控制命令,控制ZigBee終端節(jié)點(diǎn)繼電器模塊連接的風(fēng)扇、補(bǔ)光燈、閥門等設(shè)備,達(dá)到調(diào)節(jié)溫室農(nóng)作物生長(zhǎng)環(huán)境的目的。經(jīng)測(cè)試,該系統(tǒng)運(yùn)行穩(wěn)定,采集的數(shù)據(jù)準(zhǔn)確,能夠?qū)崿F(xiàn)溫室環(huán)境的遠(yuǎn)程監(jiān)控功能。