尹晶晶
(安徽國防科技職業學院 電氣技術學院,安徽 六安 237011)
研究溫室環境自動監測系統對于提高溫室環境控制的自動化水平和溫室生產效率等具有重要意義。傳統的溫室環境監測系統采用有線連接方式,存在著布線復雜、成本高、設備移動性差、傳感器節點擴展性差等問題。將無線傳感器網絡應用于溫室環境監測系統,可以克服有線監控網絡的上述諸多缺陷。
近幾年,國內外許多研究者已嘗試將無線傳感器網絡應用于溫室小氣候環境監測。在眾多相關研究中,ZigBee技術是應用最多的無線通信技術[1-8]。ZigBee技術是一種近距離、低功耗、低速率、低成本的雙向無線通訊技術,工作于ISM頻段。相關研究中所采用的ZigBee技術大多工作于2.4 GHz頻段。除ZigBee技術之外,也有不少學者采用TinyOS操作系統以開發溫室環境無線監測系統[9-14]。TinyOS操作系統是加州大學伯克利分校開發的開放源代碼操作系統,專為嵌入式無線傳感網絡設計。基于TinyOS操作系統的無線通信技術大多工作于433 MHz頻段。基于ZigBee協議棧和TinyOS操作系統而開發的短距離無線監測系統具有低功耗、易開發等優點,但傳輸距離有限,無線傳輸的可靠性也有待提高。窄帶物聯網(Narrow Band Internet of Things,NB-IoT)是近兩年興起的無線通信技術[15]。與現有網絡相比,窄帶物聯網的優勢表現在以下四點:(1) 依靠移動通信基站,NB-IoT的覆蓋面極其廣泛;(2) 在同樣的頻段下,NB-IoT比現有網絡增益20 dB,相當于提升了100倍覆蓋區域的能力;(3) NB-IoT屬于準5G通信,因此具有良好的無線通信質量;(4) NB-IoT功耗很低,其終端模塊的待機時間可長達10年。
溫室小氣候環境包括室內空氣溫度、相對濕度、二氧化碳氣體濃度和照度等多個環境因子。因此,從所監測的室內環境因子來看,溫室小氣候環境監測可以分為單因子監測和多因子監測。在單因子監測中,室內空氣溫度是關注度最高的環境因子[16],因為在眾多室內環境因子當中,溫度條件因晝夜、季節和地區的不同而發生變化的范圍很大,最容易出現不滿足作物生長條件的狀況。當然,也有少數文獻關注溫室內其它環境因子的監測,如二氧化碳濃度[17]等。在多因子監測中,大多關注溫室內空氣溫度和相對濕度,而同時關注室內空氣溫度、相對濕度、二氧化碳氣體濃度和照度等四個或更多環境因子的研究則較少。這是由于溫室環境因子之間的相互耦合特性及其控制的相互沖突性所決定的。不過,從應用的角度考慮,溫室小氣候環境監測與控制確實需要同時考慮這些重要的室內環境因子。基于以上考慮,本文將采用NB-IoT技術設計面向溫室環境多因子的遠程監測系統。
基于NB-IoT的溫室環境遠程監測系統架構如圖1所示。該系統架構包括三個層次:最底層為感知層,在該層布設若干傳感器節點,用于實時監測溫室內的環境因子,并以無線方式把數據發送至NB-IoT基站;中間層為傳輸層,主要由NB-IoT基站和云服務器構成,實現數據的遠距離傳輸;最上層為應用層,用戶在該層使用各種終端設備與云服務器相連,以便遠程查看溫室環境數據。

圖1 基于NB-IoT的溫室環境遠程監測系統架構
在該系統中,開發者的重點工作是開發底層的無線傳感器節點。傳感器節點的硬件結構如圖2所示。考慮到本系統中需要采集的環境因子較多,需要較多的I/O接口,因此選擇了STM32單片機。該系列單片機采用了ARM的Cortex架構,I/O接口眾多,功能強大。關于NB-IoT模塊,則是選擇了市場上應用最廣泛的BC35-G型號NB模塊。由于一般溫室內都有多種電氣設備,因此取電方便,使用交流220 V轉直流5 V的模塊給傳感器節點中的各個模塊供電。

圖2 傳感器節點的硬件結構
由于空氣溫度和空氣相對濕度之間具有很強的耦合性,因此許多傳感器元件可以同時測量溫度和相對濕度,常見的有SHT系列和DHT系列。現行的國家行業標準《JB-T10306-2013溫室控制系統設計規范》給出了連棟溫室環境溫濕度、照度和CO2氣體濃度等的測量要求,連棟溫室測量內容、測量范圍和準確度如表1所示[18]。

表1 連棟溫室測量內容、測量范圍和準確度
根據表1的要求,選擇SHT30數字溫濕度傳感器。該傳感器的溫度測量范圍為-40~+125 ℃,測量精度為±0.3 ℃,濕度測量范圍為0~100%RH,測量精度為±2.0%,完全滿足行業標準中的測量要求。SHT30傳感器及其接口電路如圖3所示。該傳感器共有四個管腳,依次為電源(VCC)、地(GND)、串行時鐘(SCL)和串行數據傳輸(SDA),其中,SCL和SDA分別與STM32單片機的PB7和PB6相連接。

(a) SHT30傳感器
根據表1所給出的測量要求,可知現在廣泛應用的TSL2561型號和BH1750型號的照度傳感器并不能應用于溫室環境照度監測,因為它們的量程僅為0~65535 lx。為此,選擇了型號為B-LUX-V30B的照度傳感器,該傳感器為數字傳感器,其量程可達20萬lx,能夠滿足測量要求。B-LUX-V30B型照度傳感器及其接口電路如圖4所示,該傳感器元件的接口共有五個管腳,除了電源和地線之外,還有串行時鐘、串行數據傳輸和使能管腳。使能管腳(EN)可以懸空,表示該器件一直處于使能狀態。照度傳感器的串行時鐘(SCL)和串行數據傳輸(SDA)分別連接單片機的PB8和PB9引腳。

(a) B-LUX-V30B型照度傳感器
根據表1所給出的測量要求,可知現行的行業標準要求溫室CO2濃度的測量范圍為10~2500 ppm,為此,選擇了JX-CO2-102型號的CO2氣體傳感器。該傳感器為數字傳感器,其量程為0~5000 ppm,滿足測量要求。JX-CO2-102型傳感器及其接口電路如圖5所示。JX-CO2-102型傳感器的管腳定義如表2所示。可見,該傳感器可以以多種形式來輸出CO2濃度信號。在本系統的節點電路設計中,采用了PWM輸出方式,在硬件結構上,PWM只占用單片機一個管腳,該管腳與單片機的PA1管腳相連接。

(a) JX-CO2-102型傳感器

表2 JX-CO2-102型傳感器的管腳定義
節點軟件開發是采用Keil軟件而實現的。主程序的主要功能描述如下:首先,進行系統初始化及NB模塊的初始化;然后,NB模塊通過基站嘗試接入云服務器;最后,開始采集溫濕度、照度和CO2濃度信息。相關數據可以在本地顯示,同時也發送至云服務器端。定時器用于設置數據采集和發送的周期。節點的主程序流程如圖6所示。

圖6 節點的主程序流程
微處理器和SHT30溫濕度傳感器通信采用串行二線接口SCL和SDA,其中:SCL用于同步微控制器和傳感器之間的通信,時鐘頻率可以在0~1000 kHz之間自由選擇,支持按I2C標準進行時鐘擴展的命令;SDA引腳用于向傳感器傳遞數據和從傳感器傳遞數據,從傳感器說明書可知,測量數據總是以16位值(無符號整數)傳輸,這些數值已經線性化,并補償了溫度和電源電壓的影響。假設單片機從SHT30傳感器中讀取到的溫濕度數值分別記為ST和SRH,那么可以根據式(1)和式(2)直接計算出溫濕度值。溫濕度的測量精度分別為±0.3 ℃和±2.0%。
微處理器和B-LUX-V30B照度傳感器通信也采用串行二線接口SCL和SDA。傳感器通過 SDA 發送數據,與主機產生的 SCL 脈沖同步,主機在接收到每個字節數據后對其進行應答。總線空閑時,SDA和SCL的空閑狀態為高電平。主機通過發送START條件啟動通信,START條件是:SCL為高電平時,SDA由高到低的跳變;STOP條件是:SCL為高電平時,SDA由低到高的跳變。來自主機的START條件通知傳感器開始傳輸,主機通過發送STOP條件終止傳輸,并釋放總線。該型號照度傳感器模塊出廠時已經進行校正。單片機讀取32位的測量數據SI之后,依據式(3)進行計算實際的光照度I。
I=1.4(SI÷1000) (3)
其中,1.4為本模塊照度傳感器上方的透明外殼對光線衰減的校正系數。
微處理器和JX-CO2-102紅外吸收二氧化碳傳感器之間的通信有DA輸出模式(模擬電壓信號)、PWM輸出模式和串口輸出模式等。經過比較,PWM模式輸出只占用單片機一個I/O管腳,直接輸出數字信號,且輸出值與所檢測到濃度值之間的換算關系非常簡單,故采用了PWM輸出模式。傳感器的使用說明書給出了通過 PWM脈沖寬度以獲得當前 CO2濃度值C的計算公式:
C=5(正向脈沖寬度-2) (4)
其中,5表示每毫秒所對應的CO2氣體濃度值。
單片機和NB模塊通過MQTT協議,把所采集到的環境數據上傳到OneNET物聯網云平臺。該協議工作在TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議。MQTT協議主要有以下幾個特性:使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合;對負載內容屏蔽的消息傳輸;使用 TCP/IP 提供網絡連接;有三種消息發布服務質量。云端設計主要分以下幾個步驟:
第一步:登錄OneNET服務器。先注冊賬號,登錄完成后,進入開發者中心,找到物聯網平臺,進入后點擊“多協議接入”即可。
第二步:添加MQTT產品。選擇 MQTT(舊版)協議,選擇“添加產品”“產品名稱”和“產品簡介”按自己的要求填寫即可,“產品行業”和“產品類型”自由選擇,“接入協議”選擇“MQTT”,在確定添加產品后,就可以添加設備了。雙擊“設備”列表,選擇“添加設備”即可。
第三步:編輯應用。首先,選擇“應用管理”后選擇“添加應用”;然后,新增加應用,按自己的要求填寫帶*的即可,寫完后點“新增”;最后,編輯應用,雙擊以下生成的應用后,選擇“編輯應用”。
手機App借助了OneNET 平臺提供的App設備云。它的功能是數據監測,且具有數據存儲功能,與云平臺相通,可以實時觀看數據動態變化,以及查看任何一種環境因子的詳細數據。這里不再詳細介紹。
把傳感器節點放置在校園草坪上,測量環境參數,以檢驗傳感器節點的測量結果,測試中的傳感器節點如圖7所示。數據采集周期為10 min,測試時間為2021年5月27日9:00-17:00,共8 h。手機端以儀表盤的形式進行實時顯示,手機端的數據顯示如圖8所示。該時段內環境因子監測數據如圖9所示。從測量結果看,該傳感器節點能夠實現四個環境參數的實時采集、傳輸和顯示,表明該系統能夠穩定工作。四種環境因子的監測均采用了數字式傳感器,且具有自動校驗功能,從而保證了一定的測量精度。同時,數字式傳感器還具有低功耗的特點,有利于采用太陽能供電或電池供電方式,為所設計的傳感器節點應用于溫室環境監測和大田農業環境監測奠定了基礎。

圖7 測試中的傳感器節點

圖8 手機端的數據顯示

(a)空氣溫度測量數據
本文采用NB-IoT技術設計了溫室環境遠程監測系統。在簡要介紹監測系統架構的基礎上,首先重點介紹了傳感器節點的硬件設計;然后,依次介紹了節點的軟件設計、云端軟件及手機App開發等;最后,對所設計的傳感器節點進行了測試檢驗,能夠實現數據的遠程無線傳輸,且無線通信質量穩定。研究結果為該檢測系統進一步應用于農業溫室環境監測和其它領域環境監測等奠定了基礎。