姚引娣, 王 磊, 花靜云, 賀軍瑾
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安 710121;2. 西安工業(yè)大學(xué) 電子信息工程學(xué)院,陜西 西安 710021)
目前,國內(nèi)農(nóng)業(yè)溫室監(jiān)測領(lǐng)域大多采用WiFi[1],ZigBee[2]技術(shù)來實現(xiàn)溫室環(huán)境參數(shù)的監(jiān)測,由于受到通信距離的限制,這類監(jiān)測方法主要是通過增加采集節(jié)點和中繼節(jié)點的數(shù)量來完成大范圍的數(shù)據(jù)采集,而且系統(tǒng)生命周期短, 成本大,在軟件方面,大多采用傳統(tǒng)的C/S(client/server)架構(gòu)[3]進行環(huán)境監(jiān)測數(shù)據(jù)的顯示,這種架構(gòu)的系統(tǒng)往往安裝復(fù)雜,靈活性差,已經(jīng)不能滿足現(xiàn)代化農(nóng)業(yè)領(lǐng)域發(fā)展的需要。
針對傳統(tǒng)溫室監(jiān)測方法中網(wǎng)絡(luò)覆蓋范圍小、復(fù)雜度高,并且基于C/S架構(gòu)的溫室監(jiān)測系統(tǒng)安裝復(fù)雜、維護成本高等問題,提出了一種基于B/S(browses/server)架構(gòu)[4]的LoRa遠程溫室監(jiān)測系統(tǒng)[5,6]。
系統(tǒng)由數(shù)據(jù)采集模塊、網(wǎng)關(guān)、云服務(wù)器及Web監(jiān)控終端構(gòu)成。節(jié)點數(shù)據(jù)采集模塊是溫室環(huán)境數(shù)據(jù)獲取的終端,主要負責(zé)溫濕度、光照強度、CO2濃度等環(huán)境參數(shù)的采集,節(jié)點與網(wǎng)關(guān)之間采用LoRa模塊組網(wǎng)進行無線傳輸,網(wǎng)關(guān)負責(zé)將采集節(jié)點的數(shù)據(jù)進行匯聚,并通過WiFi模塊接入互聯(lián)網(wǎng)將匯總的節(jié)點數(shù)據(jù)上報至Boa[7]服務(wù)器, Boa服務(wù)器將網(wǎng)關(guān)所上傳的消息進行處理,通過CGI[8]+HTML與Web前端進行數(shù)據(jù)通信將數(shù)據(jù)實時顯示到Web界面上。用戶只需要通過瀏覽器就可以對溫室環(huán)境參數(shù)進行遠程監(jiān)控。
數(shù)據(jù)采集模塊的硬件主要由主控電路、無線傳輸模塊、傳感器三部分組成,主控芯片采用ST公司的低功耗芯片STM8L151[9],其接口豐富、操作簡單、且具有低功耗模式適合于獨立供電的采集節(jié)點開發(fā);無線部分的射頻芯片使用的是SX1278 LoRa芯片,與傳統(tǒng)ZigBee技術(shù)相比,無論是在通信距離方面還是低功耗方面LoRa都占有很大的優(yōu)勢;溫濕度傳感器選擇DHT11數(shù)字信號溫濕度傳感器,其濕度精度為±5 %RH、測量范圍20 %~90 %RH, 溫度精度為±2 ℃、測量范圍0~50 ℃;光照傳感選擇ISL29003,通過I2C與主機進行通信輸出采集信息,光照強度可從1 lux 調(diào)節(jié)到100 lux。采用鋰電池供電的方式為整個節(jié)點進行供電。節(jié)點具體硬件框圖如圖1所示。各個節(jié)點和網(wǎng)關(guān)組成星型網(wǎng),通過LoRa模塊周期性地將傳感器采集的數(shù)據(jù)和本地時鐘上報到網(wǎng)關(guān)。
圖1 節(jié)點硬件框圖
在數(shù)據(jù)處理方面網(wǎng)關(guān)將各個節(jié)點的上報數(shù)據(jù)進行打包,通過ESP32WiFi模塊發(fā)送到服務(wù)器在網(wǎng)絡(luò)維護方面,網(wǎng)關(guān)會記錄每個節(jié)點的網(wǎng)絡(luò)狀態(tài),如果節(jié)點發(fā)生異常,網(wǎng)關(guān)會將異常數(shù)據(jù)進行上報。網(wǎng)關(guān)的硬件模塊主要由主控芯片、SX1278 LoRa芯片和WiFi模塊組成,具體硬件框圖如圖2所示。
圖2 網(wǎng)關(guān)硬件框圖
主控采用STM32F103C8T6 芯片,STM32系列微控制器是具有高性能、易開發(fā)、以及實時數(shù)字信號處理的32位閃存微控制器產(chǎn)品,內(nèi)置ARM Cortex-M3內(nèi)核,擁有多條 I/O口以及豐富的外設(shè)接口,適合于高性能要求的網(wǎng)關(guān)開發(fā)。WiFi模塊選用ESP32-WROVER[10],它集成了傳統(tǒng)藍牙、低功耗藍牙和WiFi,支持較大范圍內(nèi)的通信連接,也支持通過路由器直連互聯(lián)網(wǎng),可以用于低功耗傳感器網(wǎng)絡(luò)。網(wǎng)關(guān)和節(jié)點之間采用LoRa模塊進行無線通信,與ESP32采用串口方式進行通信,ESP32將接收到的信息通過MQTT[11]即時通信協(xié)議發(fā)送到服務(wù)器完成整個網(wǎng)絡(luò)數(shù)據(jù)的上報。
采用基于Linux系統(tǒng)[12]的騰訊云服務(wù)器,服務(wù)器參數(shù)為1核2 GB內(nèi)存1 Mbps帶寬,通過編譯Boa服務(wù)器的源碼,在該服務(wù)器上部署基于Web的小型Boa服務(wù)器,實現(xiàn)Web客戶端對節(jié)點上報數(shù)據(jù)的并發(fā)訪問。
系統(tǒng)的遠程監(jiān)測方式是基于Web瀏覽器/Web服務(wù)器的模型,即B/S 架構(gòu)。具體方案為Web瀏覽器采用進程間共享內(nèi)存的方式通過CGI與Boa服務(wù)器進行通信,將網(wǎng)關(guān)通過WiFi上傳的信息實時顯示到Web界面上,實現(xiàn)溫室環(huán)境的可視化監(jiān)控。
系統(tǒng)的軟件設(shè)計可分為4個部分:組網(wǎng)協(xié)議設(shè)計、節(jié)點軟件設(shè)計、網(wǎng)關(guān)軟件設(shè)計和Web監(jiān)控端軟件設(shè)計。
目前在LoRa無線組網(wǎng)中[13,14],時分多址(time division multiple access,TDMA)是最常用的一種接入方法,傳統(tǒng)的組網(wǎng)協(xié)議大多采用經(jīng)典的MAC層 TDMA輪詢協(xié)議,但是隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,節(jié)點數(shù)目的快速增加,經(jīng)典輪詢協(xié)議的傳輸時延會越來越大,并且由于缺乏重傳機制、數(shù)據(jù)通信的可靠性也沒有辦法保證。因此,本設(shè)計對文獻[15]提出的動態(tài)重傳和差異服務(wù)機制的TDMA 時隙分配協(xié)議(TDMA slot assignment protocol with dynamic re-transmission and differential service mechanism,DRDS-TDMA)進行修改,重新設(shè)計了時幀結(jié)構(gòu),利用TDMA技術(shù)和重傳時隙在保證數(shù)據(jù)傳輸穩(wěn)定性的前提下,針對農(nóng)業(yè)溫室監(jiān)控系統(tǒng)的應(yīng)用減少了冗余時隙,提高了時隙的利用率。
本設(shè)計將一個完整的時幀劃分為兩個部分:固定時隙和三次重傳時隙,固定時隙長度為一次重傳時隙長度的5倍,為二次重傳時隙長度的25倍,為三次重傳時隙長度的125倍,固定時隙用于節(jié)點的數(shù)據(jù)傳輸,重傳時隙用于節(jié)點數(shù)據(jù)通信失敗后重新進行數(shù)據(jù)上報。
各個節(jié)點按照入網(wǎng)時網(wǎng)關(guān)分配的固定時隙與網(wǎng)關(guān)進行通信,節(jié)點可以在分配好的時隙內(nèi)進行無沖突的數(shù)據(jù)傳輸,傳輸完成后進入睡眠狀態(tài)以降低功耗,如果傳輸失敗則進入重傳時隙進行重新上報。使用此協(xié)議能夠解決傳統(tǒng)網(wǎng)絡(luò)中數(shù)據(jù)傳輸沖突和能耗大的問題,適合于遠程農(nóng)業(yè)溫室監(jiān)控的應(yīng)用。
那年,我當(dāng)班主任,她教物理課。一次,我去聽她上“力”這一節(jié)課。首先,她讓學(xué)生預(yù)習(xí)。孩子們覺得這個內(nèi)容太熟悉,而且,他們更習(xí)慣聽老師講,不好好預(yù)習(xí)。娟兒偏不講,孩子就做思考的假象。
在整個監(jiān)控系統(tǒng)中,節(jié)點主要負責(zé)溫室內(nèi)傳感器數(shù)據(jù)的采集和上報,首先節(jié)點初始化各個外設(shè)進行開機入網(wǎng),入網(wǎng)成功后接收網(wǎng)關(guān)下發(fā)的信息并進行解析,如果是下發(fā)的信息為控制信息,節(jié)點執(zhí)行網(wǎng)關(guān)所下發(fā)的指令;如果為上報信息,節(jié)點讀取當(dāng)前所有傳感器的信息按照網(wǎng)關(guān)分配的時隙進行數(shù)據(jù)上報,在每次上報完成后按照網(wǎng)關(guān)發(fā)送的時鐘信息同步本地時鐘[16],當(dāng)數(shù)據(jù)傳輸失敗時,進入重傳時隙重新進行數(shù)據(jù)上報,確保數(shù)據(jù)的可靠傳輸。
網(wǎng)關(guān)主要負責(zé)各個節(jié)點上報數(shù)據(jù)的匯總和上報指令信息的下發(fā),首先LoRa網(wǎng)關(guān)上電初始化,初始化完成后,開始接收節(jié)點發(fā)來的無線數(shù)據(jù)并進行數(shù)據(jù)解析,當(dāng)接收的消息為節(jié)點的入網(wǎng)信息時,網(wǎng)關(guān)根據(jù)當(dāng)前的網(wǎng)絡(luò)狀況為節(jié)點分配上報時隙,并記錄節(jié)點信息,以廣播的形式將該節(jié)點的入網(wǎng)信息下發(fā)給各節(jié)點,入網(wǎng)完成后節(jié)點根據(jù)網(wǎng)關(guān)分配的時隙周期性的進行數(shù)據(jù)上報。當(dāng)網(wǎng)關(guān)接收到節(jié)點上報的環(huán)境信息后,會進行數(shù)據(jù)分析如果環(huán)境參數(shù)有變化,網(wǎng)關(guān)會立刻通過WiFi模塊將數(shù)據(jù)上傳到Web服務(wù)器,Web服務(wù)器接收到數(shù)據(jù)后,實時地推送給用戶訪問平臺,當(dāng)用戶從Web端觸發(fā)控制指令后,網(wǎng)關(guān)會根據(jù)下發(fā)指令將控制信息發(fā)送給對應(yīng)的節(jié)點,完成節(jié)點各個外接設(shè)備的控制。
監(jiān)控端采用適合于嵌入式開發(fā)的輕量級服務(wù)器Boa來進行Web端的設(shè)計,Boa服務(wù)器是一個非常小巧的服務(wù)器,執(zhí)行代碼大約60 KB左右,是一個運行于Unix或Linux下的適合于嵌入式系統(tǒng)的單任務(wù)HTTP服務(wù)器,源代碼開關(guān)放、性能高,且支持CGI。
在監(jiān)測系統(tǒng)中Web客戶端和服務(wù)器之間采用HTTP協(xié)議進行通信,Web 服務(wù)器通過CGI 接口獲取Web客戶端提交的信息,轉(zhuǎn)交給服務(wù)端的CGI 程序進行處理,將處理后的結(jié)果返回給Web客戶端實現(xiàn)可視化的遠程監(jiān)控。當(dāng)服務(wù)器端收到采集節(jié)點通過WiFi上傳的環(huán)境信息后,先對上傳的信息進行處理,再通過進程間通信共享內(nèi)存的方式將處理的數(shù)據(jù)發(fā)送給Boa服務(wù)器,Boa服務(wù)器將接收到的信息通過CGI接口顯示到Web界面上。
為驗證遠程溫室監(jiān)測系統(tǒng)的實際效果,基于整個系統(tǒng)對本校智慧農(nóng)業(yè)溫室實驗室進行了實際測試,測試環(huán)境為:LoRa數(shù)據(jù)采集節(jié)點均勻部署在溫室大棚內(nèi),采集大棚內(nèi)的環(huán)境數(shù)據(jù)信息,LoRa網(wǎng)關(guān)架設(shè)溫室大棚外,分別測試了系統(tǒng)的傳輸性能和遠程監(jiān)測功能。
在傳輸性能方面,通過移動溫室外部署的LoRa網(wǎng)關(guān)來改變測試距離,在不同傳輸距離條件下測試LoR采集節(jié)點與LoRa網(wǎng)關(guān)間無線傳輸?shù)膩G包率。其中每包數(shù)據(jù)的大小為9個字節(jié),采用CRC16方式進行校驗, 測試距離選為0~1.5 km,射頻模塊的發(fā)射功率為13 dBm,天線增益為3 db,傳輸速率為1.3 kBPS,每個測試點連續(xù)收發(fā)1 000個數(shù)據(jù)包,對每個點的數(shù)包據(jù)進行對比分析后,得系統(tǒng)傳輸距離和丟包率的關(guān)系如圖3所示。
圖3 傳輸距離和丟包率
從圖3可以看出,在1 km范圍以內(nèi),整個網(wǎng)絡(luò)的丟包率在10 %以下,400 m以內(nèi)的丟包率為0 %,相比于傳統(tǒng)的ZigBee和WiFi組網(wǎng)方式,本系統(tǒng)能夠?qū)崿F(xiàn)高可靠遠距離的組網(wǎng)通信。
基于B/S架構(gòu)的遠程監(jiān)測平臺,主要負責(zé)對各個節(jié)點采集的環(huán)境信息進行監(jiān)控和控制,實時監(jiān)控溫濕度、光照強度、節(jié)點電量等參數(shù),并對節(jié)點附近的照明燈、風(fēng)扇、報警器等設(shè)備進行控制。
4.2.1 監(jiān)測功能測試
在監(jiān)測功能方面,用戶可以通過電腦Web端或者手機Web實時查看溫室內(nèi)的環(huán)境數(shù)據(jù)信息,并在系統(tǒng)設(shè)置中設(shè)置各個傳感器的閾值,如果當(dāng)采集到的指定數(shù)據(jù)超過了設(shè)定的閾值,就會觸發(fā)報警機制提醒用戶。功能如圖4所示。
圖4 Web監(jiān)控終端
經(jīng)測試,從圖4中可以看出通過Web訪問本文購買的域名,能夠?qū)崿F(xiàn)對云端服務(wù)器的實時訪問,從而實時監(jiān)控溫室內(nèi)的環(huán)境溫度、環(huán)境濕度、環(huán)境光照、節(jié)點電量以及其它控制信息,并按照設(shè)置的閾值信息,判斷當(dāng)前溫室環(huán)境的狀態(tài)。
4.2.2 控制功能測試
在控制方面,用戶可以通過Web訪問服務(wù)器域名,通過點擊頁面中的風(fēng)扇開關(guān)、報警器報警開關(guān)、燈光開關(guān)等按鈕,把數(shù)據(jù)發(fā)送至云平臺服務(wù)器,服務(wù)器通過網(wǎng)絡(luò)將數(shù)據(jù)轉(zhuǎn)發(fā)至控制節(jié)點,實現(xiàn)對控制設(shè)備的實時控制。經(jīng)測試,用戶通過鼠標(biāo)點擊選擇燈管開關(guān)、報警器開關(guān)、風(fēng)扇等開關(guān),選擇完成進行提交后,可以實現(xiàn)對節(jié)點控制設(shè)備進行實時操控,從而遠程調(diào)整溫室內(nèi)的環(huán)境參數(shù)。
測試結(jié)果表明,與傳統(tǒng)的ZigBee+C/S架構(gòu)方案相比,引入B/S 架構(gòu)的LoRa自組網(wǎng)溫室監(jiān)測方式,抗干擾性更好、靈活性更強、網(wǎng)絡(luò)復(fù)雜度更低、更適合于大范圍農(nóng)業(yè)監(jiān)測的場景,在農(nóng)業(yè)物聯(lián)網(wǎng)領(lǐng)域有著良好的應(yīng)用前景。