陳仕林,張景浩,戴子正,鄧鑫銘
(廣東第二師范學(xué)院計(jì)算機(jī)科學(xué)系,廣州510800)
隨著物聯(lián)網(wǎng)在智慧農(nóng)業(yè)的不斷深入,環(huán)境監(jiān)測(cè)和控制在溫室種植中已逐漸得到推廣和應(yīng)用,多數(shù)溫室大棚種植中,都會(huì)配備加熱裝置,基礎(chǔ)采樣裝置,部分專業(yè)能力十足的溫室管理技術(shù)中同時(shí)會(huì)配備水肥一體機(jī)、電場(chǎng)等中小型設(shè)備,以提高作物產(chǎn)量與品質(zhì)。在本課題中,其主要方向是針對(duì)國(guó)內(nèi)更為廣泛的室外開闊的田野、果園種植的環(huán)境監(jiān)測(cè),以監(jiān)測(cè)數(shù)據(jù)提供生產(chǎn)者實(shí)現(xiàn)對(duì)生產(chǎn)環(huán)境的簡(jiǎn)單調(diào)控的管理依據(jù)。
LoRa是一種由Semtech公司于2013年發(fā)布基于Sub-GHz頻段的低功耗廣域網(wǎng)通信技術(shù),。作為一種低功耗遠(yuǎn)距離通信技術(shù),較低的數(shù)據(jù)速率不僅延長(zhǎng)電池壽命,更是增加了網(wǎng)絡(luò)的容量。這使得它僅需要一節(jié)鋰電池即可實(shí)現(xiàn)長(zhǎng)續(xù)航的工作。在LPWAN誕生之前,應(yīng)用于物聯(lián)網(wǎng)的通信只能在遠(yuǎn)距離與低功耗之間做取舍。對(duì)比早期物聯(lián)網(wǎng)應(yīng)用所使用的ZigBee、GPRS等,其更低功耗,更遠(yuǎn)傳輸距離,對(duì)建筑的穿透力更強(qiáng)的特性,使得LoRa更適用于如智慧農(nóng)業(yè)、智慧工業(yè)、智慧城市等低成本大規(guī)模的物聯(lián)網(wǎng)部署。
本系統(tǒng)是以LoRa技術(shù)為通信基礎(chǔ),將各個(gè)適用于農(nóng)業(yè)環(huán)境監(jiān)測(cè)的傳感器集成于一個(gè)終端,通過LoRa星型組網(wǎng)制作成一個(gè)傳輸距離遠(yuǎn),功耗低、穩(wěn)定性強(qiáng)的監(jiān)控系統(tǒng)。傳感器采集作物生長(zhǎng)的局部地區(qū)的環(huán)境信息,通過采樣終端進(jìn)行處理,然后發(fā)送到上位機(jī),上位機(jī)將數(shù)據(jù)處理并存儲(chǔ)于數(shù)據(jù)庫中,用戶通過桌面端的可視化程序進(jìn)行監(jiān)控。該系統(tǒng)的采樣終端設(shè)置有兩種方式。①通過采樣終端上的按鈕和互動(dòng)指示燈完成配置;②通過上位機(jī)中的中間件程序遠(yuǎn)程對(duì)采樣終端進(jìn)行控制,從而形成生產(chǎn)環(huán)境采集及控制系統(tǒng)。系統(tǒng)總體框架圖如圖1所示。
圖1 系統(tǒng)總體框架圖
本系統(tǒng)綜合STC 8051、STM32F103C8等多款主控芯片對(duì)比分析,最終選擇STM32F103C8T6作為主控芯片。STM32F103C8T6是一款高性能的ARM架構(gòu)Cor?tex-M3內(nèi)核的32位微型控制器,其程序存儲(chǔ)容量高達(dá)64KB,工作頻率高達(dá)72MHz,供電范圍在2V-3.6V,工作溫度在-40℃到85℃。STM32F013是一款性能強(qiáng)大的嵌入式芯片,其具有豐富的外圍設(shè)備資源,如ADC、脈沖調(diào)制、DMA、內(nèi)部溫度傳感器,支持多種協(xié)議如I2C、SPI。不僅如此,STM32F103C8T6還支持低功耗模式,分別由Stop模式、Sleep模式、Standby模式,用戶可根據(jù)不同的應(yīng)用場(chǎng)景、喚醒周期和是否具備外部喚醒信號(hào)源來選擇進(jìn)入不同的低功耗模式。經(jīng)分析,STM32F103C8T6芯片能有效滿足本系統(tǒng)設(shè)計(jì)所需的資源,故選用其作為本系統(tǒng)的主控方案[3]。
系統(tǒng)以STM32F103C8T6作為主控核心板,外圍電路包括電源濾波電路,太陽能鋰電池充放電電路,太陽能鋰電池測(cè)試電路,升壓電路,ModuleBus 485電路,實(shí)時(shí)時(shí)鐘電路,以及調(diào)試按鈕和指示燈。電源濾波電路主要為了降低波紋電路,減少噪聲,避免對(duì)傳感器的信號(hào)造成干擾,太陽能鋰電池充放電電路用于給終端的供電鋰電池充放電保護(hù),升壓電路分為3.3V升壓電路和12V升壓電路,3.3V電路主要用于給適用于3.3V的模塊進(jìn)行供電,如AD采樣的模塊,DHT11溫濕度傳感器以及LoRa通信模塊,12V升壓電路用于給RS-485模塊供電,ModubleBUS485電路主要是將串口輸入輸出改為RS-485輸入輸出,實(shí)時(shí)時(shí)鐘電路為系統(tǒng)提供準(zhǔn)確的時(shí)間信息,以防鋰電池供電不足時(shí),系統(tǒng)時(shí)間丟失,按鍵和指示燈用于現(xiàn)場(chǎng)調(diào)試,便于監(jiān)測(cè)終端的工作狀態(tài)。采樣終端原理圖如圖2所示,采樣終端實(shí)物圖如圖3所示。
圖2 采樣終端原理圖
圖3 采樣終端實(shí)物圖
采樣終端首先經(jīng)電腦端燒錄入程序,然后硬復(fù)位執(zhí)行。初次執(zhí)行過程主體分為對(duì)系統(tǒng)的時(shí)鐘進(jìn)行初始化,對(duì)外圍設(shè)備進(jìn)行初始化,進(jìn)入低功耗模式。當(dāng)觸發(fā)第一次訪問時(shí),會(huì)通過通信模塊發(fā)送初始信息,然后等待上位機(jī)的響應(yīng),上位機(jī)中間件程序收到該采樣終端的信息時(shí),會(huì)檢查數(shù)據(jù)幀的(從零開始)第十七位和十八位的信息,如果是原始信息則會(huì)分配一個(gè)數(shù)據(jù)庫中未分配的ID給該采樣終端,并通過響應(yīng)幀發(fā)回給采樣終端,響應(yīng)幀中包含新設(shè)定的采樣周期,新的設(shè)備ID號(hào);上位機(jī)會(huì)周期性向所在信道和地址中發(fā)送重傳指令,避免下位機(jī)陷入由于未完成初始化而長(zhǎng)期等待上位機(jī)ACK的死循環(huán)中。當(dāng)采樣終端完成初始化后,根據(jù)設(shè)置的采樣周期,定時(shí)向上位機(jī)發(fā)送采樣周期數(shù)據(jù),每次采樣終端數(shù)據(jù)發(fā)送都要求上位機(jī)返回響應(yīng),才會(huì)進(jìn)入低功耗模式,等待下一次周期喚醒。程序流程圖如圖4所示。
圖4 采樣終端程序流程圖
當(dāng)采樣終端上電復(fù)位后,首先會(huì)對(duì)外圍設(shè)備進(jìn)行初始化,配置好系統(tǒng)時(shí)間和采樣周期后就進(jìn)入休眠。當(dāng)觸發(fā)RTC鬧鐘喚醒系統(tǒng)或者按鍵中斷喚醒后,重新初始化系統(tǒng)時(shí)鐘后開始執(zhí)行采樣任務(wù)。采樣任務(wù)分別為對(duì)需要3.3V供電的傳感器和對(duì)需要12V供電的RS-485傳感器進(jìn)行采樣,為實(shí)現(xiàn)低功耗需求,每完成一項(xiàng)采樣任務(wù)后會(huì)及時(shí)對(duì)傳感器組的電源進(jìn)行斷電。采樣并將數(shù)據(jù)處理完畢即及時(shí)發(fā)送數(shù)據(jù)幀,并等待上位機(jī)的響應(yīng)幀,響應(yīng)幀中包含操作碼。數(shù)據(jù)幀結(jié)構(gòu)如表1所示。
據(jù)上文介紹可悉知,MQTT、DDS等協(xié)議都是建立于TCP/IP之上,且各具特色,勝任于多種場(chǎng)景下的工作。然而,在本系統(tǒng)的應(yīng)用中,受限于戶外條件的供電不確定性影響,對(duì)功耗的控制要求遠(yuǎn)超過多數(shù)物聯(lián)網(wǎng)應(yīng)用,故在COAP協(xié)議的思想上,提出一種剪裁版的COAP協(xié)議。系統(tǒng)的電量主要損耗于低功耗模式下的待機(jī)工作、指示燈、傳感器的工作、通信模塊的數(shù)據(jù)發(fā)送。其中通信模塊的數(shù)據(jù)發(fā)送電流高達(dá)300MA。由此可見,要實(shí)現(xiàn)設(shè)備的更長(zhǎng)續(xù)航,減少采樣終端的數(shù)據(jù)發(fā)送次數(shù)。上述眾多物聯(lián)網(wǎng)通信協(xié)議其多數(shù)建立于TCP/IP協(xié)議,需要完成三次握手,假設(shè)使用上述協(xié)議完成數(shù)據(jù)的接收與發(fā)送,將會(huì)使得功耗會(huì)增加,而單獨(dú)靠采樣終端無面向連接定時(shí)發(fā)送,又存在采樣終端會(huì)受環(huán)境、供電問題變?yōu)殡[藏站的可能,致使終端在網(wǎng)絡(luò)中消失,或是多個(gè)終端發(fā)送的數(shù)據(jù)時(shí)候的導(dǎo)致的沖撞現(xiàn)象,使得上位機(jī)未能成功接收個(gè)別終端所發(fā)來的信息,造成信息丟失問題。故基于TCP/IP協(xié)議的物聯(lián)網(wǎng)通信協(xié)議與無面向連接的通信協(xié)議不可取。故根據(jù)采樣終端和上位機(jī)工作的流程和特性,對(duì)COAP協(xié)議進(jìn)行修改。當(dāng)采樣終端完成數(shù)據(jù)采集和發(fā)送數(shù)據(jù)時(shí)會(huì)向上位機(jī)發(fā)送一個(gè)COAP協(xié)議的CON類型請(qǐng)求,不過該CON類型請(qǐng)求中是攜帶有數(shù)據(jù)的,請(qǐng)求目的是確認(rèn)自身還存在于網(wǎng)絡(luò)中,然后采樣終端會(huì)進(jìn)入局部低功耗的工作模式,僅將采樣數(shù)據(jù)暫時(shí)存儲(chǔ)在寄存器并等待接收模塊接收上位機(jī)的ACK響應(yīng)。正常工作下,上位機(jī)收到CON類型請(qǐng)求后,經(jīng)確認(rèn)無誤將會(huì)發(fā)送一個(gè)類似于COAP類型的響應(yīng)幀,該響應(yīng)幀中包含操作碼等功能設(shè)置,采樣終端收到響應(yīng)幀將會(huì)根據(jù)幀內(nèi)容進(jìn)入對(duì)采樣周期、喚醒時(shí)間、采樣設(shè)備的設(shè)置或進(jìn)入低功耗模式,斷開所有外設(shè)、系統(tǒng)時(shí)鐘供電,等待實(shí)時(shí)時(shí)鐘的喚醒再重新初始化所有外設(shè)和系統(tǒng)時(shí)鐘;非正常工作情況有兩種,第一種上位機(jī)未收到數(shù)據(jù),第二種下位機(jī)未收到響應(yīng)。當(dāng)?shù)谝环N情況時(shí),由于終端與上位機(jī)經(jīng)初次通信后,上位機(jī)保留有終端的采樣周期,故當(dāng)約定時(shí)間下,上位機(jī)未收到終端信息,上位機(jī)將主動(dòng)向頻道內(nèi)發(fā)送重傳指令,要求違約終端重新發(fā)送數(shù)據(jù),若多次重傳指令未能尋找回違約終端,將由人工介入完成對(duì)終端設(shè)備的檢查工作。當(dāng)處于第二種情況時(shí),下位機(jī)未能收到上位機(jī)的所發(fā)送的響應(yīng)幀,此時(shí)違約方為上位機(jī),下位機(jī)將會(huì)再次向頻道內(nèi)發(fā)送數(shù)據(jù),然后繼續(xù)等待上位機(jī)發(fā)送的響應(yīng)幀。上位機(jī)違約時(shí),下位機(jī)并不會(huì)一直重傳等待,當(dāng)違約次數(shù)達(dá)到一定時(shí),終端將會(huì)直接依照之前設(shè)定的喚醒周期進(jìn)入休眠,等待下一次喚醒。經(jīng)驗(yàn)證,部署合理的環(huán)境下,終端的通信發(fā)射次數(shù)減少,終端續(xù)航得到提高。流程圖如圖5所示。
上位機(jī)軟件設(shè)計(jì)包含處理字節(jié)流數(shù)據(jù)的中間件設(shè)計(jì)、存放數(shù)據(jù)的數(shù)據(jù)庫設(shè)計(jì)以及用于數(shù)據(jù)可視化的軟件設(shè)計(jì)。
表1
當(dāng)上位機(jī)接收模塊接入上位機(jī)后,中間件程序則會(huì)打開端口掃描并綁定上位機(jī)模塊端口,隨后將監(jiān)聽是否有采樣終端進(jìn)行訪問,當(dāng)監(jiān)聽到有字節(jié)流進(jìn)入時(shí),先對(duì)字節(jié)流進(jìn)行長(zhǎng)度判斷,數(shù)據(jù)有效性判斷,隨后對(duì)其發(fā)送響應(yīng)幀,可完成對(duì)采樣終端的再配置以及對(duì)數(shù)據(jù)的接收。中間件完成對(duì)原始字節(jié)流數(shù)據(jù)的接收后,將其從十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),由于光照強(qiáng)度的范圍在0-200000,在數(shù)據(jù)幀中只占有兩位,故采樣終端需要對(duì)光照強(qiáng)度的采樣值進(jìn)行簡(jiǎn)單壓縮,以及由中間件完成數(shù)據(jù)還原,并將處理好的數(shù)據(jù)插入至數(shù)據(jù)庫中,完成對(duì)數(shù)據(jù)的存儲(chǔ)工作。中間件程序流程圖如圖6所示。
圖5 通信流程圖
圖6 中間件程序流程圖
本系統(tǒng)的可視化軟件僅使用到一張數(shù)據(jù)庫表,其表內(nèi)數(shù)據(jù)包含索引主鍵ID、信息接收時(shí)間、設(shè)備ID、采樣周期、溫度、濕度、土壤溫度、土壤電導(dǎo)率、光照強(qiáng)度、土壤酸堿度、電池電量信息。
可視化軟件是通過C#開發(fā)的桌面應(yīng)用軟件,軟件通過對(duì)MySQL數(shù)據(jù)庫的數(shù)據(jù)訪問,將數(shù)據(jù)存儲(chǔ)于一個(gè)緩存中,在圖形界面中顯示,從而完成了數(shù)據(jù)和代碼分離。其效果圖如圖7所示。
圖8為采樣終端對(duì)溫濕度傳感器的數(shù)據(jù)訪問返回結(jié)果,返回?cái)?shù)據(jù)空氣濕度為0x02 0x77,換算后為631,除以10后可得空氣濕度為63.1%RH,空氣溫度為0x00 0XE8,換算后為232,除以10可得空氣溫度為23.2℃。即溫濕度傳感器初始化、讀寫訪問等功能經(jīng)測(cè)試無異常。
圖7 可視化軟件效果圖
圖8 溫濕度傳感器數(shù)據(jù)返回結(jié)果
圖9 土壤酸堿度傳感器PH值數(shù)據(jù)返回結(jié)果
圖10 土壤溫度數(shù)據(jù)返回結(jié)果
圖9和圖10與圖8的計(jì)算方式相同,通過對(duì)第五第六位數(shù)據(jù)進(jìn)行從十六進(jìn)制轉(zhuǎn)10進(jìn)制后除以10,便可獲得有效數(shù)據(jù)。
對(duì)比圖11與圖12的數(shù)據(jù)發(fā)送和接收內(nèi)容,數(shù)據(jù)發(fā)送與接收一致,通信模塊測(cè)試完成,測(cè)試結(jié)果表明通信模塊工作正常。
圖11 終端發(fā)送數(shù)據(jù)內(nèi)容
圖12 上位機(jī)接收數(shù)據(jù)內(nèi)容
本次測(cè)試通過上位機(jī)重置設(shè)備采樣周期的小時(shí)、分鐘、設(shè)備編號(hào),F(xiàn)1為操作碼,F(xiàn)F為幀頭。采樣終端接收并設(shè)置完后,并返回設(shè)置后的結(jié)果。由圖13中的收發(fā)數(shù)據(jù)表明,該功能有效。
圖13 上位機(jī)設(shè)置終端操作圖
圖14為上位機(jī)對(duì)下位機(jī)重傳測(cè)試。通過上位機(jī)向終端發(fā)送的響應(yīng)幀階段,發(fā)送重傳指令,并能成功接收重傳數(shù)據(jù),測(cè)試結(jié)果表明該功能有效。
圖14 下位機(jī)對(duì)上位機(jī)重傳指令響應(yīng)
圖15 中間件數(shù)據(jù)處理測(cè)試
圖15為數(shù)據(jù)流入中間件時(shí)處理前后的結(jié)果,其中“FF 02 63 00 F0 00”等是終端發(fā)送的原始數(shù)據(jù),數(shù)據(jù)類型為16進(jìn)制。經(jīng)過中間件處理得到基礎(chǔ)信息和采樣信息,并由中間件完成數(shù)據(jù)的存儲(chǔ)操作。存儲(chǔ)結(jié)果如圖16所示。表明中間件功能測(cè)試成功,結(jié)果有效。
圖16 存儲(chǔ)測(cè)試圖
圖17 數(shù)據(jù)顯示測(cè)試圖
當(dāng)圖15和圖16的操作完成后,數(shù)據(jù)將會(huì)在可視化軟件中實(shí)時(shí)顯示,圖17的黃色標(biāo)記為空氣濕度的實(shí)時(shí)值。表明可視化軟件的實(shí)時(shí)性測(cè)試成功,且結(jié)果有效。
本次檢查終端的采樣周期是否與設(shè)置值匹配,經(jīng)圖18中的數(shù)據(jù)表明,20為采樣周期(分鐘),第二列為數(shù)據(jù)接收時(shí)間。對(duì)相鄰兩次時(shí)間做差對(duì)比,其采樣周期的誤差在10秒內(nèi),該時(shí)間主要受傳輸距離、傳輸速率影響。故本次測(cè)試成功,結(jié)果有效。
圖18 周期采樣測(cè)試結(jié)果圖
隨著人們對(duì)智慧城市、智能家居等物聯(lián)網(wǎng)應(yīng)用的認(rèn)識(shí)提升,將物聯(lián)網(wǎng)應(yīng)用落地于工業(yè)生產(chǎn)、農(nóng)業(yè)生產(chǎn)中的需求量也逐漸提高。由此更低功耗、更穩(wěn)定的、適用范圍更廣的農(nóng)業(yè)低功耗監(jiān)測(cè)系統(tǒng)對(duì)智慧農(nóng)業(yè)的發(fā)展有著重大意義。文中描述了基于LoRa的戶外低功耗監(jiān)測(cè)終系統(tǒng)設(shè)計(jì),通過嵌入式技術(shù)將多種不同協(xié)議的傳感器集成在一起,用以實(shí)現(xiàn)對(duì)戶外農(nóng)業(yè)生產(chǎn)中的環(huán)境數(shù)據(jù)采樣,并將數(shù)據(jù)經(jīng)一系列處理后,通過LoRa上傳至上位機(jī)接收模塊,由上位機(jī)的中間件完成數(shù)據(jù)的處理和存儲(chǔ)任務(wù),最終在應(yīng)用中完成數(shù)據(jù)可視化。這一系統(tǒng)的設(shè)計(jì)和開發(fā),有助于生產(chǎn)者在降低人力成本的同時(shí),還能第一時(shí)間內(nèi)了解作物生長(zhǎng)的環(huán)境情況,更高效的對(duì)作物的生長(zhǎng)過程進(jìn)行干預(yù),為作物產(chǎn)量、品質(zhì)提供有利的保障。