羅玉海,王椿曦,熊正燁
(廣東海洋大學(xué)電子與信息工程學(xué)院,廣東 湛江 524088)
農(nóng)作物生長需要適宜的環(huán)境,而且不同作物適宜的生長條件會有所不同[1],在農(nóng)業(yè)溫室中部署物聯(lián)網(wǎng)設(shè)備對環(huán)境參數(shù)進行實時監(jiān)控是解決問題的一個重要途徑[2]。有學(xué)者從系統(tǒng)的實時性、靈活性、智能化、成本等方面對溫室環(huán)境監(jiān)測系統(tǒng)進行了研究[3-5],這些研究在一定程度上促進了智慧溫室大棚技術(shù)的發(fā)展,但未涉及測控終端固件或軟件的OTA 遠程升級。農(nóng)業(yè)物聯(lián)網(wǎng)方案部署時,物聯(lián)網(wǎng)設(shè)備需要運行自定義的系統(tǒng)軟件,實現(xiàn)數(shù)據(jù)的收集或執(zhí)行操作。然而,隨著需求的變更,該系統(tǒng)軟件可能還需要更新和改進,包括軟件缺陷修復(fù)、新功能添加以及系統(tǒng)安全增強等[6-7]。OTA 固件更新功能可為物聯(lián)網(wǎng)設(shè)備提供多種便捷,如可遠程修補系統(tǒng)缺陷或安全漏洞,無需技術(shù)服務(wù)人員或用戶親臨設(shè)備現(xiàn)場執(zhí)行更新,從而降低設(shè)備維護成本等。
本研究基于鴻蒙系統(tǒng),設(shè)計一種支持OTA固件升級的農(nóng)業(yè)大棚測控系統(tǒng),實現(xiàn)終端設(shè)備的遠程監(jiān)測和控制,提供支持OTA 固件升級的網(wǎng)絡(luò)方法,使系統(tǒng)可通過網(wǎng)絡(luò)遠程更新終端系統(tǒng)固件。
基于鴻蒙系統(tǒng)的農(nóng)業(yè)大棚測控系統(tǒng)使用MQTT作為傳輸協(xié)議,系統(tǒng)邏輯分為3 層,自下而上分別為感知層、網(wǎng)絡(luò)層和應(yīng)用層。感知層負責(zé)采集大棚環(huán)境參數(shù),如測量空氣溫濕度、光照強度、二氧化碳濃度等環(huán)境信息數(shù)據(jù),然后通過網(wǎng)絡(luò)層WiFi 無線網(wǎng)絡(luò)傳輸?shù)綉?yīng)用層MQTT 服務(wù)器,再由MQTT 服務(wù)器轉(zhuǎn)發(fā)信息給Web 設(shè)備管理系統(tǒng)。Web 設(shè)備管理系統(tǒng)提供Web 服務(wù),用戶可以通過瀏覽器與農(nóng)業(yè)大棚內(nèi)的終端設(shè)備進行交互。系統(tǒng)層次結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)層次結(jié)構(gòu)
系統(tǒng)以Hi3861 作為主控制器,連接相關(guān)外圍功能模塊。主要模塊包括空氣溫濕度測量模塊、光強度測量模塊、二氧化碳測量模塊、OLED 顯示模塊、LED 燈和直流電機等。系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)
由于用戶無需與采集終端設(shè)備的程序界面直接進行交互,終端設(shè)備的程序界面僅用于顯示采集的數(shù)據(jù)信息,因此,可采用OLED 顯示器作為系統(tǒng)的顯示單元。在本設(shè)計中,通過遠程控制設(shè)備的通用輸入輸出端口(General-purpose input/output,簡稱GPIO)輸出高低電平對LED 燈進行亮/滅控制,遠程控制設(shè)備脈寬調(diào)制輸出來控制風(fēng)扇電機轉(zhuǎn)動。在實際應(yīng)用中,可將設(shè)備與繼電器連接,通過遠程控制設(shè)備的輸出控制繼電器,進而控制農(nóng)業(yè)大棚的燈光設(shè)施、通風(fēng)設(shè)施等。
本設(shè)計采用的主控板為基于海思Hi3861 芯片的WLAN 模組的核心板,Hi3861 芯片內(nèi)置SPI、UART、I2C、GPIO、PWM 和ADC 等多種外設(shè)接口[8],同時內(nèi)置SRAM 和Flash,可獨立運行,并支持在Flash 上運行程序。由于Hi3861 芯片同時支持WiFi 功能和常用的外設(shè)接口,使用該芯片可低成本,簡單、快速地實現(xiàn)網(wǎng)絡(luò)連接和設(shè)備控制功能,因此特別適用于智慧農(nóng)業(yè)等物聯(lián)網(wǎng)智能終端領(lǐng)域。Hi3861 主控板如圖3 所示。
圖3 Hi3861 主控板
感知能力是測控系統(tǒng)最為基本的能力。通過部署各類傳感器作為系統(tǒng)的采集單元,感知大棚環(huán)境的各種參數(shù),實現(xiàn)對大棚環(huán)境的監(jiān)測。本設(shè)計采用如下傳感器模塊:
1)DHT20 溫濕度傳感器模塊,其工作電壓為2.2~5.5 V,溫度測量范圍為-40~80 ℃,濕度測量范圍為0~100 %RH,該模塊具有低功耗、穩(wěn)定性高、響應(yīng)迅速、抗干擾能力強等特點,通過IIC 與主控制器連接,實現(xiàn)空氣溫濕度的采集。
2)BH1750FVI 光強度傳感器模塊,其工作電壓為3~5 V,光強度測量范圍為1~65 535 lx,該模塊可測量較大范圍的光強度變化,非常適合應(yīng)用于農(nóng)業(yè)大棚每日光照變化幅度較大的場景;支持IIC 接口,能直接輸出相對應(yīng)的光照強度的數(shù)值,可滿足農(nóng)業(yè)大棚測控系統(tǒng)的開發(fā)需求。
3)SGP30 氣體傳感器模塊,該模塊支持IIC 接口,主要用于對空氣質(zhì)量進行檢測,可測量甲醛和二氧化碳濃度。
該研究采用Hi3861 硬件搭載基于OpenHarmony 3.0 源碼的鴻蒙系統(tǒng)[9],在該系統(tǒng)中植入設(shè)備開發(fā)者自定義的程序。設(shè)備上電后,先進行鴻蒙系統(tǒng)的初始化,然后進入自定義的程序,包括主程序和傳感器采集子程序。主程序用于建立網(wǎng)絡(luò)連接,上報傳感器測量數(shù)據(jù)和處理遠程控制命令;傳感器采集子程序用于讀取和更新傳感器數(shù)據(jù)。主程序流程如圖4所示。
圖4 主程序流程
初始化WiFi 并建立網(wǎng)絡(luò)連接后初始化MQTT 客戶端,設(shè)置消息回調(diào)函數(shù)地址,根據(jù)MQTT 服務(wù)器的IP 地址及端口號與之建立連接,訂閱指定主題的MQTT 消息;之后定期更新傳感器數(shù)據(jù)并判斷是否需要上傳,若需要上傳則以JSON(JavaScript Object Notation,JavaScript 對象表示法)格式封裝傳感器數(shù)據(jù)并通過MQTT 上報信息;若接收到來自MQTT 服務(wù)器的消息,系統(tǒng)會執(zhí)行消息回調(diào)函數(shù)。在處理MQTT消息時,先解析消息的內(nèi)容得到遠程指令類型,然后根據(jù)指令類型執(zhí)行相關(guān)的操作。若指令類型為設(shè)備控制指令,則進一步解析設(shè)備控制的指令參數(shù),根據(jù)參數(shù)控制LED 或電機的狀態(tài)。若指令類型為OTA升級指令,則進一步解析指令參數(shù)得到OTA 服務(wù)端的IP 地址和端口號,然后根據(jù)IP 地址和端口號連接OTA 服務(wù)端,請求并下載升級文件并對其進行簽名驗證,驗證通過后調(diào)用Hi3861 系統(tǒng)的升級接口進行升級。
傳感器采集子程序流程如圖5 所示。首先對各傳感器模塊及OLED 顯示模塊進行初始化,然后定期讀取各傳感器數(shù)據(jù)并更新OLED 的顯示內(nèi)容。
圖5 傳感器采集子程序流程
為確保OTA 文件的合法性,本設(shè)計自定義一種基于RSA 算法[10-11]的文件簽名及驗簽方法,對OTA文件進行簽名及驗證,以保證OTA 文件數(shù)據(jù)的完整性和安全性。該文件簽名及驗簽方法具有普適性,可用于其它文件的簽名。
自定義的文件簽名格式為:
1)簽名文件=原始文件+簽名信息;
2)簽名信息=簽名頭信息(44 字節(jié))+簽名數(shù)據(jù)(256 字節(jié));
3)簽名頭信息=魔術(shù)字(4 字節(jié))+密鑰指紋(16 字節(jié))+簽名時間(7 字節(jié))+預(yù)留(17 字節(jié))。
其中,魔術(shù)字定義為0x3C4D5E6F 作為簽名標志,可用于快速判斷文件是否含有簽名;密鑰指紋為基于公鑰數(shù)據(jù)的MD5[12]值;簽名時間為該文件的簽名時間;預(yù)留字段為以后擴展備用。
文件的簽名原理:對原始文件進行SHA-256 運算得到哈希值;使用PKCS#1(v1.5)標準[13]將哈希值填充為256 字節(jié)的數(shù)據(jù)塊;使用RSA 私鑰對填充后的數(shù)據(jù)塊進行RSA 加密運算,得到256 字節(jié)的簽名數(shù)據(jù);按自定義的簽名格式生成簽名信息,并將簽名信息追加到原始文件的尾部,得到最后的簽名文件。OTA 文件的簽名流程如圖6 所示。
圖6 OTA 文件的簽名流程
文件的驗簽原理:從文件尾部讀取簽名信息,判斷是否有簽名標志,若無簽名標志則驗簽失敗,若有簽名標志則繼續(xù)驗簽流程;取出256 字節(jié)的密文簽名數(shù)據(jù),并使用RSA 公鑰進行RSA 解密運算,若解密失敗則驗簽失敗,若解密成功則繼續(xù)驗簽流程;從解密后的明文數(shù)據(jù)中取出32 字節(jié)的哈希值HASH1;使用與簽名流程相同的方法對除去簽名信息的文件內(nèi)容進行SHA-256 運算得到哈希值HASH2;對比HASH1 與HASH2,若不同則驗簽失敗,若相同則驗簽成功。OTA 文件的驗簽流程如圖7 所示。
圖7 OTA 文件的驗簽流程
該研究設(shè)計的OTA 固件升級功能由設(shè)備端與OTA 服務(wù)端協(xié)同完成,其中OTA 服務(wù)端程序內(nèi)嵌于基于Django[14]開發(fā)的Web 設(shè)備管理系統(tǒng),用戶可通過瀏覽器登錄該系統(tǒng),查看大棚氣象環(huán)境數(shù)據(jù),可對大棚設(shè)施進行相應(yīng)的控制,也可對終端設(shè)備進行OTA 固件升級。采用客戶端/服務(wù)器(C/S)架構(gòu),設(shè)備端作為客戶端,OTA 服務(wù)端作為服務(wù)器端,通過socket 實現(xiàn)2 個進程間的通信,從而實現(xiàn)信息傳遞與數(shù)據(jù)交互。OTA 固件升級流程如圖8 所示。用戶通過Web 瀏覽器進入Web 設(shè)備管理系統(tǒng)的OTA升級頁面,輸入OTA 服務(wù)器端的IP 地址和端口號,然后選擇要升級的OTA 文件版本,再通過HTTP 發(fā)起升級請求。Web 設(shè)備管理系統(tǒng)解析HTTP 請求的參數(shù),然后以JSON 數(shù)據(jù)格式封裝升級參數(shù),再通過MQTT 向設(shè)備發(fā)送OTA 升級請求。設(shè)備端接收到升級請求后解析消息得到OTA 服務(wù)端的IP 地址和端口號,并與OTA 服務(wù)端建立socket 連接,然后向OTA 服務(wù)端請求下載升級文件。OTA 服務(wù)端接收到socket 請求后,根據(jù)請求參數(shù)選擇相應(yīng)版本的OTA文件,然后讀取OTA 文件數(shù)據(jù)并發(fā)送給設(shè)備端。設(shè)備端下載升級文件完成后對文件進行簽名驗證,驗證通過后調(diào)用系統(tǒng)的升級接口進行升級,最后重啟設(shè)備完成升級。
圖8 OTA 固件升級流程
基于MQTT 協(xié)議的開源消息代理Mosquitto[15]搭建MQTT 服務(wù)器對系統(tǒng)進行測試。通過瀏覽器登錄Web 設(shè)備管理系統(tǒng),進入系統(tǒng)首頁,首頁的內(nèi)容主要分為2 部分,一部分為用圖表顯示濕度和溫度的實時數(shù)據(jù)(橫軸為時間,縱軸為溫濕度),另一部分為用文本顯示設(shè)備固件版本號和環(huán)境數(shù)據(jù)(包括溫度、濕度、光照強度、二氧化碳濃度)。為驗證數(shù)據(jù)監(jiān)測的有效性,對設(shè)備進行了對比試驗。將設(shè)備置于光線偏暗的環(huán)境下,在設(shè)備傳感器附近放置蠟燭,如圖9 所示。對比點燃蠟燭前后的Web 頁面數(shù)據(jù),從圖10 和圖11 可看出,當(dāng)點燃蠟燭時,環(huán)境數(shù)據(jù)出現(xiàn)明顯的變化,具體表現(xiàn)為溫度升高,濕度降低,光照變強,二氧化碳濃度變高。這些環(huán)境數(shù)據(jù)的變化符合預(yù)期,說明數(shù)據(jù)的監(jiān)測實時有效。
圖9 系統(tǒng)實物測試環(huán)境
圖10 點燃蠟燭前的Web 頁面數(shù)據(jù)
圖11 點燃蠟燭后的Web 頁面數(shù)據(jù)
Web 設(shè)備管理系統(tǒng)的設(shè)備管理頁面分為“設(shè)備控制”和“OTA 升級”2 部分,如圖12 所示。通過“設(shè)備控制”一欄中的“LED 開關(guān)”和“風(fēng)扇開關(guān)”可遠程控制終端設(shè)備的LED 和電機。通過“OTA 升級”一欄,可對終端設(shè)置進行OTA 固件升級。在界面中分別輸入OTA 服務(wù)器端的IP 地址和端口號,然后選擇要升級的OTA文件版本,最后點擊“升級”按鈕下發(fā)升級指令。升級完成后,返回系統(tǒng)首頁可以查看到設(shè)備升級后的固件版本號和預(yù)期一致,OTA固件升級功能正常。
圖12 設(shè)備管理頁面
基于鴻蒙系統(tǒng)和OTA 技術(shù)研究的農(nóng)業(yè)大棚測控系統(tǒng)可以實現(xiàn)對農(nóng)業(yè)大棚的遠程監(jiān)測和調(diào)控,并能夠?qū)r(nóng)業(yè)大棚的終端設(shè)備進行OTA 固件升級,在一定程度上提升了系統(tǒng)維護的靈活性、降低了物聯(lián)網(wǎng)設(shè)備的維護成本,提高了農(nóng)業(yè)大棚的智能化程度。經(jīng)過測試驗證,該系統(tǒng)能夠有效地完成對農(nóng)業(yè)大棚空氣溫度、空氣濕度、光照強度、二氧化碳濃度等大棚環(huán)境數(shù)據(jù)的實時監(jiān)測,用戶可以通過Web 設(shè)備管理系統(tǒng)觀察大棚環(huán)境數(shù)據(jù)并對大棚設(shè)施進行相應(yīng)的控制。該研究選用的是國產(chǎn)自主研發(fā)的鴻蒙操作系統(tǒng),在當(dāng)今我國面臨很多技術(shù)被“卡脖子”的情況下,對基于國產(chǎn)操作系統(tǒng)的應(yīng)用研究及推廣有一定的意義。