肖 楊,嚴李強,宋 赫,田 博
(西藏大學信息科學技術學院,拉薩 850000)
西藏擁有宜農耕地680.57萬畝,僅占全區土地總面積的0.42%[1]。自西藏地區引入了以日光溫室為主的設施農業后,耕種條件得到了極大改善,但目前很多與設施農業相適配的物聯網設備在高原地區使用時往往會出現高原不適應性,不能很好地在高原地區使用。以拉薩地區為例,不少農戶都曾引入過內地先進設備來改善生產,因設備適應性差,使用壽命短等原因,最終還是選擇傳統的人工模式進行生產,這種模式對農戶的經驗依賴性太強,不利于進一步發展。此外,現有的日光溫室環境系統主要側重于監測與作物生長直接相關的因素,而很少關注溫室外部環境的影響以及溫室安全生產問題;為了進一步改善農戶的生產條件,本文結合西藏地區的網絡情況和電氣特性,提出了一種基于NB-IoT的高原日光溫室環境監測系統,通過無線傳感器網絡和物聯網技術,持續穩定地對溫室環境進行全時空監測,同時考慮了外部環境非生物因子在內部環境調節過程中可能造成的影響,提高了農戶決策的科學性和準確性,減少因突發情況造成的損失,發揮了智慧農業的先進性。
基于NB-IoT的高原日光溫室環境監測系統包括硬件系統和軟件系統兩部分[2],涉及溫室內外環境信息的采集、處理、傳輸以及監測信息的多端顯示。總體框架可分為感知層、數據處理層、傳輸層以及應用層[3]。感知層主要依靠各傳感器節點采集環境信息;數據處理層由主控芯片,存儲電路構成;傳輸層使用NB-IoT網絡經基站與MQTT服務器端建立連接,再由服務器端通過公網連接應用層;應用層則以微信小程序的形式為用戶和硬件系統提供一種可跨空間的交互模式,系統整體框架如圖1所示。
圖1 系統整體框架
硬件系統主要由各傳感器節點組成的監測模塊、用戶交互模塊、數據處理模塊、通信模塊構成。受高原地區海拔相對較高、空氣壓力和密度較低、空氣絕對濕度小、空氣溫度低、溫差大以及紫外線強[4]等特殊條件影響,內地生產的很多農業物聯網設備到了高原常會出現功率下降、放電電壓降低,甚至無法正常工作等問題。系統設計時也著重考慮了硬件設備的高原適應性,即所有的電氣設備必須滿足國標GB∕T22580—2008(特殊環境條件高原電氣設備技術要求低壓成套開關設備和控制設備)[5]中的相關要求,且具有較好的耐凍性,確保在高原環境下能夠持續穩定地工作。
常見的日光溫室環境監測系統中很少涉及對火情等災害監控,但類似于2019年3月26日,唐山市突發大火,近300座溫室大棚被燒毀,直接造成多于5 000萬元經濟損失的情況每年都在上演[6]。為了避免此類悲劇再次發生,系統中加入了煙霧傳感器實時監測溫室內部的煙霧情況,一旦出現火災等情況時能夠及時報警提醒農戶,避免產生更大的損失。此外,現有的溫室監測系統中很少對所處的外部環境進行監測,但近年來農業受洪澇、干旱、大風、冰雹、冰霜凍、低溫冷害、雷電災害等自然災害影響嚴重[7],僅僅依靠天氣預報進行預警往往存在準確性低或農戶未及時關注等情況,因此在本系統中搭建了外部環境監測網絡,有利于準確掌握溫室所處的小氣候條件,作為調控內部環境的參考依據;在現代農業趨利避害和防災減災中發揮著重要作用[8]。
傳感器采集信息的準確性對整個監測系統至關重要;高原地區高寒、晝夜溫差巨大、紫外線強等氣候特征也為傳感器的性能提出了更高的要求,為確保系統能在極端高原條件下能夠持續穩定地采集信息,所選擇的傳感器技術參數如表1所示。
表1 傳感器技術參數
此外,考慮傳感器應用場景不同,將系統的監測模塊分為了室內監測模塊和室外監測模塊兩部分。室內監測模塊由煙霧傳感器、土壤和空氣溫濕度傳感器、CO2濃度傳感器以及光照光強傳感器組成,在溫室內部采用分布式布局,保證監測數據全局準確性。室外監測模塊由光照傳感器、雨雪傳感器、風速傳感器組成[9],負責監測外部天氣災害。
為了提升農戶的使用體驗,降低農戶的學習成本,硬件系統中設計了由按鍵模塊、蜂鳴器以及OLED顯示屏組成的用戶交互模塊。通過按鍵模塊,農戶可自主地選擇想要的模式,并根據溫室內實際情況自主地設置各環境參數的報警閾值;同時根據監測信息的實時情況以不同的形式展示在OLED屏上,若監測到出現異常數據或數據突變等情況時蜂鳴器則發出不同的聲音提醒農戶。
數據處理模塊由主控芯片和SD卡存儲模塊構成。主控制芯片選用意法半導體公司的STM32F103ZET6型芯片;STM32F103系列采用ARM32位的CortexTM-M3 CPU,帶64 K存儲器、兩個12位模數轉換器以及眾多快速I∕O端口、定時器和通信接口。芯片還提供了休眠、停止和待機3種工作模式,能夠針對不同能耗需求進行選擇實現系統的低功耗運行,該芯片能夠滿足傳感器數據采集、處理以及傳輸等功能需求[10]。為保證數據傳輸的完整性設置了SD卡存儲模塊,當主控芯片接收監測信息時,先對數據進行簡單處理后存入存儲模塊中,再經通信模塊上傳至MQTT服務器端進行存儲,若傳輸過程中出現丟包等情況,則從存儲模塊中再次調出相應的數據字段重新傳輸。SD卡存儲模塊采用可拆卸式,允許農戶在本地讀取數據進行分析,數據存儲模塊部分電路如圖2所示。
圖2 數據存儲模塊部分電路
當前階段的農業物聯網設備大多采用ZigBee、GSM、Bluetooth等無線通信技術,這些技術普遍存在通信受限制、消耗的功率大、終端數量易飽和等問題[10]。同時,受西藏地區特殊的環境條件影響,基礎設施的建設相比內地稍微緩慢些,部分地區網絡質量也不太穩定。從西藏地區的實際條件出發,系統的通信模塊采用BC35-G,它使用NB-IoT網絡進行數據傳輸。NB-IoT構建于蜂窩網絡,只消耗大約180 kHz的帶寬,可直接部署于GSM網絡、UMTS網絡或LTE網絡之上;與3G或4G相比,有著單位帶寬內可攜帶更高能量,覆蓋更遠的距離,具有覆蓋范圍廣、成本低廉的技術優勢,能滿足覆蓋范圍廣的農村地區通信需求,還能提供比較全面的室內蜂窩數據連接覆蓋[11],符合項目需要。經調查,西藏地區電信網絡覆蓋面積最為廣泛,則選用電信物聯網卡進行數據傳輸,增強系統的適應性,通信模塊電路如圖3所示。
圖3 通信模塊電路
目前市面上主流的物聯網平臺有移動公司的OneNET開放平臺、電信公司的CTWing、百度智能云天工以及阿里云IoT等,平臺大都支持CoAP(LWM2M)、MQTT、Modbus、HTTP、HTTPS、TCP、UDP等主流協議[12]。但這些平臺在接入終端設備時,需要編寫設備Profile文件和解析設備數據的編解碼插件,增加了用戶在接入平臺時的難度;此外,這些平臺大都不支持用戶根據自身需要存儲、分析上傳至平臺端的數據,很難在其基礎上進行個性化開發。基于上述問題,系統采用輕量級的MQTT消息服務器存儲、轉發、訂閱相應的數據。
MQTT是一個基于發布∕訂閱(publish∕subscribe)模式的消息傳輸協議。它具有輕量級、開放、簡單,易于實現,通信帶寬要求低等特點,能夠在不可靠網絡下保證遠距離傳輸質量。在通訊時,MQTT協議中包含有3種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可同時為訂閱者。每個發布者可以發送不同類型的消息,發送消息的類型叫做主題(Topic),MQTT通信中的消息都屬于某一個主題,只有這個主題的訂閱者才能收到該主題的消息[13]。系統使用EMQX服務器作為中介建立溫室內的終端設備與微信小程序端的連接;服務器端能夠將終端發送過來的數據信息利用JSON格式解析還原為所代表的參數類型及實際參數,然后存儲至MYSQL數據庫中。農戶在微信小程序端訂閱自己溫室對應的主題即可查看溫室內環境信息,鏈接過程如圖4所示。
圖4 終端設備與用戶端鏈接示意圖
系統使用KEIL MDK5集成開發環境進行STM32程序的編寫與編譯,并通過USB連接電腦和終端設備對系統進行調試與程序燒寫;STM32與NB模塊之間采用USART通信,而NB模塊與EMQX服務器端識用MQTT協議進行連接;在使用MQTT協議連接終端設備與用戶端設備時,需要使用AT指令建立終端設備與服務器之間的連接,在使用用戶端對終端進行操作過程中也需要用到AT指令。NB通信模塊的生產商提供了大量的AT指令,在系統中可以直接進行調用,系統配置中使用的部分AT指令集及其注釋如表2所示。
表2 建立通信使用AT指令及其注釋
自2017年12月微信小程序正式上線以來,其憑借便捷性、跨平臺性等優勢得到了極大地發展;本文基于微信小程序隨掃隨用、無需下載、易于開發等特點,開發了日光溫室環境監測系統作為系統的用戶端,包含用戶注冊、用戶信息管理、設備管理、設備數據訂閱、查詢以及簡單控制終端設備等功能。
要在微信小程序端實時查閱溫室內環境參數信息需要與MQTT服務器端進行連接,這一過程基于HTTP協議實現。當EMQX服務器端設備處于在線狀態時,在微信小程序端即可成功訂閱設備所對應的Topic;此時,一旦EMQX服務器端收到監測數據,小程序端就能同步查收到相應內容。此外,微信小程序端除了能夠接收到數據外也能發送下行命令,與服務器端具體的通信過程如圖5所示。
圖5 小程序與服務器端的通信
目前終端設備仍處于在開發板測試階段,并未將設備集成化。設備開啟后,串口、傳感器、通信模塊等進入初始化狀態,并不斷檢查設備的網絡狀態;各模塊初始化完成后則進入數據采集程序,以串口通信方式將傳感器采集到的信息顯示在OLED屏幕上,系統的采樣周期為10 s一次。通過屏幕上的提示信息,能清楚地知道當前終端設備所處的狀態,并根據提示信息進行相應的調整。
在實驗室內,用微濕的紙巾包裹住土壤濕度傳感器模擬傳感器插入土壤中的效果,其他傳感器未做干預;通過終端上的OLED屏幕,可清楚的看到當前實驗室內各環境參數值以及對應的報警閾值,如圖6所示。在測試中,實際監測到的空氣溫度為30.6℃,濕度為43.2%,而設置的空氣溫度上限為45℃,空氣濕度上限為70%,屬于閾值內,因而蜂鳴器未發出報警信息。當用手捂住溫度傳感器后,溫度超過上限閾值發出警報提醒,表明預警功能正常。
圖6 終端數據監測界面展示
首次進入小程序時按照提示:注冊賬號→登錄→設置用戶信息→綁定終端設備(即根據終端上的iemi號訂閱相應的主題),在成功綁定設備后即可進入數據查看界面,得到如圖7所示的界面。與圖6終端顯示的監測信息進行對比,可以看出終端設備上的信息能夠很好的同步到微信小程序端(由于室內測試時未接入風速傳感器和雨雪傳感器,因此小程序端相應的數值顯示為0)。
圖7 小程序監測數據查看界面
待終端設備連續工作一段時間后,即可在微信小程序中點擊想要查看的環境參數圖標進入對應參數歷史數據查看界面。在此界面中可查看一段時間內溫室參數的變化情況以及某一時間點的具體值。拉到小程序的底部,點擊查看全部數據記錄圖還可查看全部參數的變化情況,如圖8所示,通過觀察參數的歷史數據,能夠直觀地了解溫室內外環境在一天的不同時段內的實際情況以及變化規律。
圖8 參數變化趨勢
本文基于NB-IoT網絡搭建了一套高原日光溫室環境監測系統,實現對溫室內外環境參數的全時空監測,為精準化調控溫室內環境非生物因子提供判斷依據,且具有良好的高原適應性。利用與硬件端相適配的微信小程序能夠實現異地查看溫室內外環境,確保溫室內環境的穩定性;當系統監測到溫室內外環境發生異常變化時能夠及時的向用戶發送報警信息,有效地降低因溫室內環境劇烈變化造成的損失,同時保障溫室內作業人員的安全。通過查看、分析溫室內各環境參數在一天中各時段的變化趨勢,亦能夠更好地幫助農戶總結規律,提高生產。綜上所述,使用本系統可有效提高農業生產決策的科學性,促進高原地區農業生產現代化。