陳仕林,張景浩,戴子正,鄧鑫銘
(廣東第二師范學院計算機科學系,廣州510800)
隨著物聯網在智慧農業的不斷深入,環境監測和控制在溫室種植中已逐漸得到推廣和應用,多數溫室大棚種植中,都會配備加熱裝置,基礎采樣裝置,部分專業能力十足的溫室管理技術中同時會配備水肥一體機、電場等中小型設備,以提高作物產量與品質。在本課題中,其主要方向是針對國內更為廣泛的室外開闊的田野、果園種植的環境監測,以監測數據提供生產者實現對生產環境的簡單調控的管理依據。
LoRa是一種由Semtech公司于2013年發布基于Sub-GHz頻段的低功耗廣域網通信技術,。作為一種低功耗遠距離通信技術,較低的數據速率不僅延長電池壽命,更是增加了網絡的容量。這使得它僅需要一節鋰電池即可實現長續航的工作。在LPWAN誕生之前,應用于物聯網的通信只能在遠距離與低功耗之間做取舍。對比早期物聯網應用所使用的ZigBee、GPRS等,其更低功耗,更遠傳輸距離,對建筑的穿透力更強的特性,使得LoRa更適用于如智慧農業、智慧工業、智慧城市等低成本大規模的物聯網部署。
本系統是以LoRa技術為通信基礎,將各個適用于農業環境監測的傳感器集成于一個終端,通過LoRa星型組網制作成一個傳輸距離遠,功耗低、穩定性強的監控系統。傳感器采集作物生長的局部地區的環境信息,通過采樣終端進行處理,然后發送到上位機,上位機將數據處理并存儲于數據庫中,用戶通過桌面端的可視化程序進行監控。該系統的采樣終端設置有兩種方式。①通過采樣終端上的按鈕和互動指示燈完成配置;②通過上位機中的中間件程序遠程對采樣終端進行控制,從而形成生產環境采集及控制系統。系統總體框架圖如圖1所示。

圖1 系統總體框架圖
本系統綜合STC 8051、STM32F103C8等多款主控芯片對比分析,最終選擇STM32F103C8T6作為主控芯片。STM32F103C8T6是一款高性能的ARM架構Cor?tex-M3內核的32位微型控制器,其程序存儲容量高達64KB,工作頻率高達72MHz,供電范圍在2V-3.6V,工作溫度在-40℃到85℃。STM32F013是一款性能強大的嵌入式芯片,其具有豐富的外圍設備資源,如ADC、脈沖調制、DMA、內部溫度傳感器,支持多種協議如I2C、SPI。不僅如此,STM32F103C8T6還支持低功耗模式,分別由Stop模式、Sleep模式、Standby模式,用戶可根據不同的應用場景、喚醒周期和是否具備外部喚醒信號源來選擇進入不同的低功耗模式。經分析,STM32F103C8T6芯片能有效滿足本系統設計所需的資源,故選用其作為本系統的主控方案[3]。
系統以STM32F103C8T6作為主控核心板,外圍電路包括電源濾波電路,太陽能鋰電池充放電電路,太陽能鋰電池測試電路,升壓電路,ModuleBus 485電路,實時時鐘電路,以及調試按鈕和指示燈。電源濾波電路主要為了降低波紋電路,減少噪聲,避免對傳感器的信號造成干擾,太陽能鋰電池充放電電路用于給終端的供電鋰電池充放電保護,升壓電路分為3.3V升壓電路和12V升壓電路,3.3V電路主要用于給適用于3.3V的模塊進行供電,如AD采樣的模塊,DHT11溫濕度傳感器以及LoRa通信模塊,12V升壓電路用于給RS-485模塊供電,ModubleBUS485電路主要是將串口輸入輸出改為RS-485輸入輸出,實時時鐘電路為系統提供準確的時間信息,以防鋰電池供電不足時,系統時間丟失,按鍵和指示燈用于現場調試,便于監測終端的工作狀態。采樣終端原理圖如圖2所示,采樣終端實物圖如圖3所示。

圖2 采樣終端原理圖

圖3 采樣終端實物圖
采樣終端首先經電腦端燒錄入程序,然后硬復位執行。初次執行過程主體分為對系統的時鐘進行初始化,對外圍設備進行初始化,進入低功耗模式。當觸發第一次訪問時,會通過通信模塊發送初始信息,然后等待上位機的響應,上位機中間件程序收到該采樣終端的信息時,會檢查數據幀的(從零開始)第十七位和十八位的信息,如果是原始信息則會分配一個數據庫中未分配的ID給該采樣終端,并通過響應幀發回給采樣終端,響應幀中包含新設定的采樣周期,新的設備ID號;上位機會周期性向所在信道和地址中發送重傳指令,避免下位機陷入由于未完成初始化而長期等待上位機ACK的死循環中。當采樣終端完成初始化后,根據設置的采樣周期,定時向上位機發送采樣周期數據,每次采樣終端數據發送都要求上位機返回響應,才會進入低功耗模式,等待下一次周期喚醒。程序流程圖如圖4所示。

圖4 采樣終端程序流程圖
當采樣終端上電復位后,首先會對外圍設備進行初始化,配置好系統時間和采樣周期后就進入休眠。當觸發RTC鬧鐘喚醒系統或者按鍵中斷喚醒后,重新初始化系統時鐘后開始執行采樣任務。采樣任務分別為對需要3.3V供電的傳感器和對需要12V供電的RS-485傳感器進行采樣,為實現低功耗需求,每完成一項采樣任務后會及時對傳感器組的電源進行斷電。采樣并將數據處理完畢即及時發送數據幀,并等待上位機的響應幀,響應幀中包含操作碼。數據幀結構如表1所示。
據上文介紹可悉知,MQTT、DDS等協議都是建立于TCP/IP之上,且各具特色,勝任于多種場景下的工作。然而,在本系統的應用中,受限于戶外條件的供電不確定性影響,對功耗的控制要求遠超過多數物聯網應用,故在COAP協議的思想上,提出一種剪裁版的COAP協議。系統的電量主要損耗于低功耗模式下的待機工作、指示燈、傳感器的工作、通信模塊的數據發送。其中通信模塊的數據發送電流高達300MA。由此可見,要實現設備的更長續航,減少采樣終端的數據發送次數。上述眾多物聯網通信協議其多數建立于TCP/IP協議,需要完成三次握手,假設使用上述協議完成數據的接收與發送,將會使得功耗會增加,而單獨靠采樣終端無面向連接定時發送,又存在采樣終端會受環境、供電問題變為隱藏站的可能,致使終端在網絡中消失,或是多個終端發送的數據時候的導致的沖撞現象,使得上位機未能成功接收個別終端所發來的信息,造成信息丟失問題。故基于TCP/IP協議的物聯網通信協議與無面向連接的通信協議不可取。故根據采樣終端和上位機工作的流程和特性,對COAP協議進行修改。當采樣終端完成數據采集和發送數據時會向上位機發送一個COAP協議的CON類型請求,不過該CON類型請求中是攜帶有數據的,請求目的是確認自身還存在于網絡中,然后采樣終端會進入局部低功耗的工作模式,僅將采樣數據暫時存儲在寄存器并等待接收模塊接收上位機的ACK響應。正常工作下,上位機收到CON類型請求后,經確認無誤將會發送一個類似于COAP類型的響應幀,該響應幀中包含操作碼等功能設置,采樣終端收到響應幀將會根據幀內容進入對采樣周期、喚醒時間、采樣設備的設置或進入低功耗模式,斷開所有外設、系統時鐘供電,等待實時時鐘的喚醒再重新初始化所有外設和系統時鐘;非正常工作情況有兩種,第一種上位機未收到數據,第二種下位機未收到響應。當第一種情況時,由于終端與上位機經初次通信后,上位機保留有終端的采樣周期,故當約定時間下,上位機未收到終端信息,上位機將主動向頻道內發送重傳指令,要求違約終端重新發送數據,若多次重傳指令未能尋找回違約終端,將由人工介入完成對終端設備的檢查工作。當處于第二種情況時,下位機未能收到上位機的所發送的響應幀,此時違約方為上位機,下位機將會再次向頻道內發送數據,然后繼續等待上位機發送的響應幀。上位機違約時,下位機并不會一直重傳等待,當違約次數達到一定時,終端將會直接依照之前設定的喚醒周期進入休眠,等待下一次喚醒。經驗證,部署合理的環境下,終端的通信發射次數減少,終端續航得到提高。流程圖如圖5所示。
上位機軟件設計包含處理字節流數據的中間件設計、存放數據的數據庫設計以及用于數據可視化的軟件設計。

表1
當上位機接收模塊接入上位機后,中間件程序則會打開端口掃描并綁定上位機模塊端口,隨后將監聽是否有采樣終端進行訪問,當監聽到有字節流進入時,先對字節流進行長度判斷,數據有效性判斷,隨后對其發送響應幀,可完成對采樣終端的再配置以及對數據的接收。中間件完成對原始字節流數據的接收后,將其從十六進制數據轉換為十進制數據,由于光照強度的范圍在0-200000,在數據幀中只占有兩位,故采樣終端需要對光照強度的采樣值進行簡單壓縮,以及由中間件完成數據還原,并將處理好的數據插入至數據庫中,完成對數據的存儲工作。中間件程序流程圖如圖6所示。

圖5 通信流程圖

圖6 中間件程序流程圖
本系統的可視化軟件僅使用到一張數據庫表,其表內數據包含索引主鍵ID、信息接收時間、設備ID、采樣周期、溫度、濕度、土壤溫度、土壤電導率、光照強度、土壤酸堿度、電池電量信息。
可視化軟件是通過C#開發的桌面應用軟件,軟件通過對MySQL數據庫的數據訪問,將數據存儲于一個緩存中,在圖形界面中顯示,從而完成了數據和代碼分離。其效果圖如圖7所示。
圖8為采樣終端對溫濕度傳感器的數據訪問返回結果,返回數據空氣濕度為0x02 0x77,換算后為631,除以10后可得空氣濕度為63.1%RH,空氣溫度為0x00 0XE8,換算后為232,除以10可得空氣溫度為23.2℃。即溫濕度傳感器初始化、讀寫訪問等功能經測試無異常。

圖7 可視化軟件效果圖

圖8 溫濕度傳感器數據返回結果

圖9 土壤酸堿度傳感器PH值數據返回結果

圖10 土壤溫度數據返回結果
圖9和圖10與圖8的計算方式相同,通過對第五第六位數據進行從十六進制轉10進制后除以10,便可獲得有效數據。
對比圖11與圖12的數據發送和接收內容,數據發送與接收一致,通信模塊測試完成,測試結果表明通信模塊工作正常。

圖11 終端發送數據內容

圖12 上位機接收數據內容
本次測試通過上位機重置設備采樣周期的小時、分鐘、設備編號,F1為操作碼,FF為幀頭。采樣終端接收并設置完后,并返回設置后的結果。由圖13中的收發數據表明,該功能有效。

圖13 上位機設置終端操作圖
圖14為上位機對下位機重傳測試。通過上位機向終端發送的響應幀階段,發送重傳指令,并能成功接收重傳數據,測試結果表明該功能有效。

圖14 下位機對上位機重傳指令響應

圖15 中間件數據處理測試
圖15為數據流入中間件時處理前后的結果,其中“FF 02 63 00 F0 00”等是終端發送的原始數據,數據類型為16進制。經過中間件處理得到基礎信息和采樣信息,并由中間件完成數據的存儲操作。存儲結果如圖16所示。表明中間件功能測試成功,結果有效。

圖16 存儲測試圖

圖17 數據顯示測試圖
當圖15和圖16的操作完成后,數據將會在可視化軟件中實時顯示,圖17的黃色標記為空氣濕度的實時值。表明可視化軟件的實時性測試成功,且結果有效。
本次檢查終端的采樣周期是否與設置值匹配,經圖18中的數據表明,20為采樣周期(分鐘),第二列為數據接收時間。對相鄰兩次時間做差對比,其采樣周期的誤差在10秒內,該時間主要受傳輸距離、傳輸速率影響。故本次測試成功,結果有效。

圖18 周期采樣測試結果圖
隨著人們對智慧城市、智能家居等物聯網應用的認識提升,將物聯網應用落地于工業生產、農業生產中的需求量也逐漸提高。由此更低功耗、更穩定的、適用范圍更廣的農業低功耗監測系統對智慧農業的發展有著重大意義。文中描述了基于LoRa的戶外低功耗監測終系統設計,通過嵌入式技術將多種不同協議的傳感器集成在一起,用以實現對戶外農業生產中的環境數據采樣,并將數據經一系列處理后,通過LoRa上傳至上位機接收模塊,由上位機的中間件完成數據的處理和存儲任務,最終在應用中完成數據可視化。這一系統的設計和開發,有助于生產者在降低人力成本的同時,還能第一時間內了解作物生長的環境情況,更高效的對作物的生長過程進行干預,為作物產量、品質提供有利的保障。