萬 云,蔣 陽
(1.重慶城市職業學院 信息與智能工程系,重慶402160;2.重慶大學 通信工程學院,重慶 400030)
如何在傳統農業生產的基礎上提升農作物的品質和產量,智能溫室已成為有效途徑之一[1]。目前市場上已有一些智能溫室監控系統的解決方案,主要體現在有線控制和無線控制兩類。文獻[1,2]中采用以PLC為核心的有線控制方案,此類方案抗干擾性強,但存在布線困難、施工復雜、投入成本高等問題;文獻[3-6]中利用GPRS、ZIGBEE、WIFI等技術完成對溫室現場農作物生長環境的無線監測與控制,此類方案解決了有線傳輸的弊端,但依然存在傳輸速率較慢、距離近、功耗高、易干擾、組網復雜等缺點[6]。且它們共同存在一個問題是只能對單個溫室實現監控,若對于有2個或2個以上的溫室組成的溫室群則無法完成監控。
通過以上無線溫室監控系統的探索,借鑒前人的研究經驗,本文設計了一種基于LoRa技術的智慧溫室群遠程監控系統,它以STM32F103C8T6單片機為核心器件,采用低功耗、可遠距離傳輸的ATK-LoRa-01 SX1278無線模塊和NB-IOT模塊共同完成無線通信,實現溫室群中各參數的可靠傳輸與實時監控。
該系統需實現對溫室群(至少2個溫室,各溫室間距離在2 KM范圍內)的遠程監測和控制,能遠程監測各溫室內光照度、溫濕度、CO2濃度和土壤水分等環境因子,并能通過PC端遠程顯示各環境因子實時值,當值超過正常范圍后,能自動控制或通過PC終端手動控制溫室內風機、滴灌、補光燈、噴霧加濕器等設備,確保溫室內各環境參數一直在有效范圍內,以此增加農作物產量,促進現代農業、智慧農業的發展。
為了實現以上功能,設計了該系統結構框架(本文采用2個溫室),如圖1所示。

圖1 系統結構框架
該系統將溫室群中的各溫室定義為節點,每個溫室通過采集模塊中的傳感器分別采集室內光照、溫濕度、CO2濃度和土壤水分的值,經MCU處理后傳送給各節點的LoRa模塊,再經LoRa自組網協議傳至由LoRa、MCU和NB共同構成的網關組網處理,最后經云端透傳至用戶PC端上位機。上位機可根據所得值自動或手動控制溫室中的遮陽網、風機、補光燈、天窗、滴灌、CO2發生器等執行設備,以確保溫室內各環境因子值在有效范圍內。
基于以上功能分析,本系統共需3塊控制芯片完成整個控制,由于溫室遠程監控為戶外監控,其控制芯片要求具備運算速度高、功耗低、性能要求較高等特點,加之采集CO2濃度、土壤水分以及LoRa模塊需進行串口傳輸,由文獻[7]可知,單片機STM32F103C8T6符合要求,且價格較為適中,因此該系統將STM32F103C8T6作為核心控制芯片。同時為使該微控制器穩定工作和后期調試,設計了晶振電路和燒寫程序插針口。
該系統所有設備均采用無線方式實現通信,它由ATK-LoRa-01模塊和NB100模塊構成。ATK-LoRa-01是ALIENTEK公司推出的一款低功耗、體積小、微功率、高性能遠距離LoRa無線串口模塊,最遠距離可達3 KM,其采用高效的ISM頻段射頻SX1278擴頻芯片,工作頻率在410 Mhz-441 Mhz免費頻段[8,9]。而NB100模塊是NBIOT產品中的一種,它自身已集成了電源、SIM卡座、天線、ESD防護等電路,上電即可使用[10]。
ATK-LoRa-01實現的是節點間與網關通信,NB100實現的是網關與云端的通信。無論是LoRa模塊還是NB100模塊,他們要正常通信,就必須與MCU直連,才能實現對數據有效處理。根據傳輸原理,設計時只需直接引出ATK-LoRa-01模塊的串口收發引腳RX和TX、NB100模塊的收發引腳RXD和TXD分別接至MCU的PA9、PA10和PB10、PB11腳即可。
該系統中需要采集溫室內環境因子有:光照度、溫濕度、CO2濃度和土壤水分,因此需要用到對應的傳感器,這些傳感器一起構成了采集模塊,他們將所采集到的信息傳送給MCU進行處理,其電路設計如圖2所示。
光照傳感器采用的是BH1750,如圖2(a)所示,具有測量范圍廣(在1-65535LX之間),光譜范圍接近人眼,對光源依賴性不大,受紅外線影響小,工作溫度范圍大等優點[11]。該傳感器共有VCC、SCL、SDA、ADDR和GND這5個接口(即圖2(a)中5至1口),分別表示接3 V-5 V電源,IIC總線時鐘線、IIC總線數據線、IIC地址引腳和接地。在該系統中,此傳感器電源采用了接3.3 V直流電,SCL時鐘線和SDA數據線分別接至MCU中的PB8和PB9。
溫濕度傳感器采用的是DHT11,它有4引腳,分別接至3.3 V電壓、MCU的PA11、懸空和GND端。如圖2(b)所示,其濕度測量范圍在20%-90%RH之間,溫度測量范圍在0 ℃-50 ℃之間,溫濕度的分辨率在1個單位,采樣周期為1 s,能夠滿足系統的采集要求[12]。該傳感器采用校驗和的方式進行數據校驗,一次性可將40 bit濕度和溫度數據傳輸給單片機。傳輸格式為:8 bit濕度數據(整數部分)+8 bit濕度數據(小數部分)+8 bit溫度數據(整數部分)+8 bit溫度數據(小數部分)+8 bit校驗和;其中校驗和數據為前4個字節相加。

圖2 采集模塊電路設計
例如:某次從傳感器中讀取見表1。

表1 溫濕度傳感器DHT11數據處理值計算方法
由以上數據就可得到濕度和溫度的值,計算方法:
濕度=byte4. byte3=44.0 (%RH)
溫度=byte2. byte1=20.0 (0C)
校驗=byte4+byte3+byte2+byte1=64(=濕度+溫度)(即校驗正確)
CO2濃度傳感器采用的是MH-Z19,其利用非色散紅外(NDIR)原理對空氣中存在的CO2進行探測,具有高靈敏度、高分辨率、低功耗、抗水氣干擾、優異的穩定性和可溫度補償等優點[13]。該傳感器有兩種讀取數據形式,即PWM輸出和串口輸出[14]。其中PWM輸出的算法如下
式中:Cppm——通過計算得到的CO2濃度值,單位為ppm;TH——1個輸出周期中輸出為高電平的時間;TL為——1個輸出周期中輸出為低電平的時間。
串口輸出是將傳感器Vin端接5 V,GND端接地,MCU的RXD 端接傳感器的TXD,MCU的TXD端接傳感器的RXD。這樣就可通過傳感器的UART接口直接讀出氣體濃度值。本系統采用此種讀取形式,如圖2(c)所示,所示,直接將傳感器的2、3號引腳接至MCU的PA9和PA10。
土壤水分傳感器485型PR-3000-TR-N01,該傳感器的水分測量范圍在0-100%之間,具有響應快,精度高,受土壤含鹽量影響較小和輸出穩定等特點,適用于各種土質,并可長期埋入土壤中,耐長期電解,耐腐蝕,抽真空灌封,完全防水[15]。由于該傳感器為485型,需外接RS-485收發器才能正常獲取采集數據,因此在傳感器和MCU之間加了SP3485收發器來實現數據的傳輸。根據管腳定義,如圖2(d)中將6、7腳引出至P6端子口,分別接傳感器的RS485-A和RS485-B即可,接收器輸出使能端RE腳接至MCU的PA0腳。
驅動模塊作用是為了讓溫室內環境因子始終控制在有效范圍內而驅動執行設備。在該監控系統中,為了讓室內環境因子維持在一定范圍內,設計了8路驅動,分別是驅動天窗、遮陽網、熱風機、循環風機、噴霧加濕器、滴灌、補光燈、CO2發生器等8個設備。每路驅動原理一致,均采用控制繼電器的方式對其驅動。
通信協議是保證收發雙方能夠可靠通信的約定,該設計中采用定時收發自組協議的方式進行,在采集環境因子實時值時,上位機會定時通過網關下發指令給各采集節點,采集節點會按照定義好的數據幀協議上傳給網關[16,17]。
根據SX1278解析數據時間開銷及系統實時性響應要求,其讀寫各子節點的數據幀由幀頭、節點地址、數據域、幀尾組成,該幀中數據域包含有空氣濕度、溫度、土壤水分、光照度和CO2濃度等值,其中光照度和CO2濃度占2個字節,其它均為1個字節,其格式見表2。

表2 LoRa節點采集數據幀格式
該數據幀中,幀頭幀尾分別固定為9AH和FFH,表示一個完整的數據起始;節點設備號表示各溫室中采集節點的編號,本系統中有2個溫室,即用01H和02H分別表示2個溫室節點號。
系統網關功能是定時收發(預設100 ms)各溫室節點的數據,對其組網后將數據定時(預設250 ms)上傳至云端服務器。主程序中,初始化成功后,當查詢到UART或LoRa數據時,網關中的NBIOT模塊會判斷自身是否收到服務器或者集中器的數據,如果收到則會對數據進行解析并記錄狀態值,如果未收到數據,則會向集中器發送指令,查詢LoRa集中器是否收到數據,若在集中器中收到數據,會將對應的數據賦值給NBIOT中對應的變量,若仍未收到數據,則會繼續往下一級LoRa節點發送指令,同理查詢定時時間是否到,若到定時值也有數據,則將繼電器狀態放入發送數組發送給NBIOT模塊,若到定時值但無數據,則會檢查NBIOT上的定時是否到時間值,若到時間,則會繼續將繼電器狀態往上級發送,直至NBIOT收到數據為止。網關軟件設計流程如圖3所示。

圖3 網關軟件設計流程
節點主要是完成各溫室中環境因子數據的采集,將采集的數據通過自組LoRa協議進行上傳,且及時接收網關中LoRa集中器的指令。
主程序中,當查詢到UART或者LoRa數據符合協議時,節點會判斷是否收到集中器數據,若收到則會解析執行模塊中繼電器的狀態,并根據狀態信息驅動開關和回傳最新的傳感器采集數據,再繼續判斷定時采集時間(預設200 ms)是否到時;若未收到,則會直接判斷定時采集傳感器是否到200 ms,若到定時值,則采集相應傳感器的值,若未到定時值,則節點處于休眠狀態,等待下次協議指令的到來。其節點軟件工作流程如圖4所示。

圖4 節點軟件設計流程
上位機軟件設計主要包含有下行指令的處理、上行數據的處理。上位機軟件設計均采用事件方式處理,網關初始化Socket對應的事件,與云平臺服務器建立連接[18,19]。
在下行指令的處理過程中,按照通信協議,通過PC端監控界面發送操控指令給云平臺服務器,云平臺服務器對指令進行解析并將控制包下發給網關,網關的MCU再根據通信協議解析,解析后的新指令包繼續下發至LoRa集中器,集中器再根據協議配置給各節點,同時將配置成功的信息反饋回PC端監控界面。
而在上行數據處理過程中,云平臺服務器通過網關一直處于偵聽數據狀態,一是不斷偵聽從節點終端、集中器發送過來的數據,并將數據存入云端平臺的服務器中;二是要不斷偵聽從PC端向云端服務器發出的數據讀取請求,服務器響應請求并訪問服務器讀取相應的值,將數據發送至前端進行實時顯示。其軟件設計流程如圖5所示。
為驗證系統遠程通信、在溫室群中各溫室間最大通信距離、數據傳輸的可靠性、PC端監控界面可操作性等,將設計好的系統如圖6所示布局。
同時設定實驗條件如下:
(1)溫室群中有兩個溫室,即2路節點,為更好測試兩個溫室間最大通信距離,假定一路節點為固定狀態,一路節點為可移動狀態;

圖5 上位機軟件設計流程

圖6 系統節點布局
(2)每個溫室節點中配有相同的光照度、溫濕度、CO2濃度和土壤水分4種傳感器;
(3)兩個節點和網關中LoRa模塊發射功率均為100 mW,覆蓋頻率均為410 MHz-441 MHz;
(4)在程序中,兩個節點中傳感器采集數據時間均預設為200 ms,網關定時收發節點數據時間預設為100 ms,定時上傳至云端服務器時間預設為250 ms。
通信的成功與否是實現溫室群遠程監控的第一步,將兩大節點和網關均上電,在上位機輸入云端IP地址和端口號,點擊上位機“連接服務器”,即可顯示通信連接成功提示,且能收到云端發送的兩個節點數據,表示上位機與云端已成功建立連接;同時在云端也能接收到兩個節點采集到的數據信息和上位機傳送回的數據,如圖7所示。此時表明兩個節點、網關、上位機已經成功建立了通信,實現了遠程連接。
為了準確測試兩個溫室間距離在2 KM范圍內能正常通信,在實驗過程中將一路節點固定放重慶城市職業學院物聯網應用技術推廣中心的實驗溫室中,另一路節點分別從相對空曠區域每隔500 m直線距離模擬測試一次,所測數據見表3。
從測試結果看,在2.5 KM范圍內的兩個溫室互相通信成功率極高,能滿足系統設計需求,也表明在2.5 KM直徑范圍內的溫室群均能正常通信,只需將溫室間數據通過網關發送到云端后,就能實現對溫室群的遠程監控。

圖7 系統遠程通信測試結果

表3 溫室間通信距離的測試結果
經過在谷雨云透傳平臺的數據調試,在通信距離為1000 m、1500 m、2500 m時系統的數據傳輸狀態見表4。

表4 數據傳輸實時性和可靠性測試結果
從表4分析可知,該系統在溫室間通信距離2500 m時的誤碼率為
即傳輸10 000個字符時可能出現3字符錯誤信息,能夠滿足監測需求;
同時從表中可知,從1500 m時有數據延時現象發生,隨著距離的增加,數據延時現象較多,但在系統性能允許范圍之內。
為了方便農戶遠程實時監控溫室群,為該系統設計了如下監控界面,如圖8所示。在該監控界面,只需輸入云端服務器IP地址和端口號,即可實時觀測兩個溫室中各環境因子的值,并能實時觀測各執行設備的開關狀態,同時還可方便地手動設置溫室中所監測對象的范圍及調控溫室內各執行設備。

圖8 遠程PC端監控界面
本文從實際應用出發,根據現代化溫室群監控的需要,設計了一種基于LoRa技術的智能溫室群遠程監控系統。從實驗結果可知,該系統在具備無線遠程通信、實時可靠等功能的基礎上,還具備低功耗、易操作、可遠距離同時監控溫室群(2 KM范圍內的多個溫室)的特點。
由于以上實驗均是在較空曠地帶臨時所測,因此在未來的設計中,還需在更加復雜環境中對系統進行測試與改進,復雜環境中溫室群的智能監控將是下一步研究的重點。