吳睿超 侯俊
摘 要:針對工業(yè)生產中難以監(jiān)控傳感器狀態(tài)的問題,設計一個物聯(lián)網(wǎng)系統(tǒng),實現(xiàn)遠程傳感器數(shù)據(jù)監(jiān)控與固件更新。該系統(tǒng)由遠程實時監(jiān)控系統(tǒng)與遠程固件更新系統(tǒng)組成,傳感器采用嵌入式實時操作系統(tǒng)。在遠程實時監(jiān)控系統(tǒng)中,傳感器可調節(jié)頻率測量數(shù)據(jù),基于消息排隊遙測傳輸協(xié)議,通過無線網(wǎng)絡將數(shù)據(jù)傳輸?shù)椒掌?。為使遠程固件更新系統(tǒng)運行符合限制應用協(xié)議,傳感器連接至輕量級物聯(lián)網(wǎng)協(xié)議服務器,再通過網(wǎng)關連接到hawkBit服務器中,基于超文本傳輸協(xié)議與輪詢方式,由hawkBit提供遠程更新服務。實踐操作表明,該系統(tǒng)操作簡單,具有可視化、直觀的優(yōu)點,可滿足大型工廠遠程實時監(jiān)控與固件更新需求。
關鍵詞:無線傳感器;遠程固件更新;遠程實時監(jiān)測;消息隊列遙測傳輸;輕量級物聯(lián)網(wǎng)
DOI:10. 11907/rjdk. 182723 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2019)009-0130-04
Design of Remote Real-time Monitoring and Firmware Update
over the Air System Based on Wireless Sensor
WU Rui-chao,HOU Jun
(School of Optical-Electrical Computer Engineering,University of Shanghai for Science and Technology, Shanghai 200093,China)
Abstract: Aiming at the problem that it is difficult to monitor and control sensors in the industrial production, an IoT system is designed to monitor and control sensors remotely and update firmware over the air. The system based on the wireless sensors using an embedded real-time operating system consists of two subsystems: one is a remote real-time monitoring system and the other one is firmware updating over the air system. In the remote real-time monitoring system, the measurement frequency of sensors can be changed remotely and data will be transmitted to the server via a wireless network based on the Message Queuing Telemetry Transport Protocol. In the firmware updating over the air system, in order to implement the restricted application protocol, sensors are connected to server based on lightweight machine to machine (LWM2M) protocol, and then LWM2M sever is connected to hawkBit server through the gateway, afterwards, hawkBit provides a firmware update service remotely based on HTTP and a polling method. This system is proved to be easy to operate with an advantage of visualization and intuition and it can meet the requirements of remote real-time monitoring and firmware update for factories.
Key Words: ?wireless sensor; firmware update over the air; remote real-time monitoring; MQTT; LWM2M
0 引言
工業(yè)生產中采用無線傳感器網(wǎng)絡(Wireless Sensor Network,WSN)可解決傳統(tǒng)工業(yè)監(jiān)測環(huán)境平臺采用有線搭建引起的布局困難、建設成本高、延時長、專用性低等問題[1]。WSN作為物聯(lián)網(wǎng)不可或缺的一部分[2],常用于智能城市[3]、災難預警[4]、智能家居[5]及智能醫(yī)療[6]等方面,主要作用是監(jiān)控環(huán)境、記錄參數(shù)。但WSN需經常增加新功能或修復固件問題,如果通過手動方式對所有節(jié)點進行編程則十分耗時、耗力,因此需要一種有效方法在WSN中通過無線方式對節(jié)點進行遠程升級或更新[7]?;谝陨闲枨?,本文設計一個基于無線傳感器遠程實時監(jiān)控與固件更新系統(tǒng)。
在該系統(tǒng)中,采用FreeRTOS實時系統(tǒng)對傳感器進行編程。在遠程實時監(jiān)控系統(tǒng)中,傳感器數(shù)據(jù)基于消息排隊遙測傳輸(MQTT)協(xié)議,以可調節(jié)的頻率通過WiFi發(fā)送至服務器,使用Grafana實現(xiàn)可視化。在遠程固件更新系統(tǒng)中,文獻[7-11]均對無線傳感器網(wǎng)絡代碼更新技術進行了相關研究與改進。網(wǎng)關是WSN接入互聯(lián)網(wǎng)的瓶頸[8],因此采用LWM2M服務器實現(xiàn)WSN互聯(lián)網(wǎng)接入,同時為在不同協(xié)議之間進行通信,按照HTTP協(xié)議利用hawkBit管理傳感器,使用CoAP協(xié)議將固件傳輸至傳感器節(jié)點,通過網(wǎng)關實現(xiàn)不同協(xié)議之間的信息交換,使系統(tǒng)實現(xiàn)易操作、直觀的工業(yè)生產監(jiān)控及遠程固件升級技術。
1 系統(tǒng)總體設計方案
隨著工業(yè)生產自動化發(fā)展,物聯(lián)網(wǎng)在工業(yè)生產中的應用愈加廣泛。物聯(lián)網(wǎng)允許用戶遠程監(jiān)控物品/對象并發(fā)送配置。有研究者估計,到2020年,物聯(lián)網(wǎng)將覆蓋近500億臺設備[12]。為便于監(jiān)控生產過程,用戶產生可遠程查看傳感器數(shù)據(jù)、調節(jié)監(jiān)控頻率的需求,同時當有新的傳感器系統(tǒng)時,用戶可進行遠程更新,而不是通過USB連接電腦更新。因此,本文根據(jù)以上兩點需求,在傳感器上采用FreeRTOS實時系統(tǒng),在此基礎上,開發(fā)兩個子系統(tǒng),分別為遠程實時監(jiān)控系統(tǒng)和遠程固件更新系統(tǒng),并將其合并成一個總系統(tǒng)。
1.1 傳感器操作系統(tǒng)
傳感器需完成兩個任務,即獲得傳感器數(shù)據(jù)并發(fā)送到服務器,進行即時遠程固件更新,同時還需兼顧工廠環(huán)境監(jiān)測,因此實時性對操作系統(tǒng)十分重要。
FreeRTOS實時操作系統(tǒng)作為一個輕量級操作系統(tǒng),具有一個可擴展的實時內核,采用多線程方法[13]。其中每個進程均可中斷,調度程序可在線程之間切換[14],為低端設備提供實時、搶占式多任務環(huán)境,并確保在任何給定時間段內執(zhí)行更高優(yōu)先級任務。如果兩個任務具有相同的優(yōu)先級,則調度程序根據(jù)同一優(yōu)先級的任務共享CPU使用時間,時間短的任務優(yōu)先運行。任務執(zhí)行遵循基于優(yōu)先級的循環(huán)實現(xiàn)。FreeRTOS內核使用4個C文件(task.c,list.c,queue.c,croutine.c)構建,其中task.c通過使用list.c文件的結構和函數(shù)提供調度功能,queue.c文件提供一個線程安全隊列以實現(xiàn)任務間通信與同步,croutine.c可實現(xiàn)簡單的輕量級任務[15]。因此有必要采用FreeRTOS系統(tǒng),確保在正確的時間內完成必要任務。
1.2 遠程實時監(jiān)控系統(tǒng)
系統(tǒng)通過WiFi傳輸傳感器數(shù)據(jù),并將傳感器數(shù)據(jù)可視化。兩種數(shù)據(jù)傳輸協(xié)議比較如下所示。
1.2.1 MQTT 協(xié)議
MQTT即消息隊列遙測傳輸(Message Queuing Telemetry Transport),是由IBM開發(fā)的一種針對LWM2M通信的協(xié)議。該協(xié)議構建于TCP/IP協(xié)議之上,以發(fā)布/訂閱的方式工作。與傳統(tǒng)發(fā)布/訂閱客戶端相比,該協(xié)議工作方式可滿足物聯(lián)網(wǎng)需求,即無需不斷更新請求。同時,MQTT協(xié)議可大量減少使用的網(wǎng)絡帶寬與資源, 如基于MQTT協(xié)議的Facebook聊天軟件。
1.2.2 HTTP協(xié)議
HTTP即超文本傳輸協(xié)議(Hyper Text Transfer Protocol ),該協(xié)議基于TCP/IP協(xié)議,可提供可靠的通信。然而,由于通過TCP建立連接,訪問的數(shù)據(jù)根據(jù)IP地址、URL及其關系進行轉移,過程動態(tài)可變。在每次訪問時連接會被釋放,即完成一次通信,需要多次建立、釋放同一個連接[16]。
通過比較兩種協(xié)議,可以發(fā)現(xiàn)在通信過程中,HTTP采用大量微小的數(shù)據(jù)傳輸塊,消耗大量網(wǎng)絡資源,導致網(wǎng)絡性能下降,且IP尋址取決于物理位置,引起網(wǎng)絡控制復雜性問題。HTTP協(xié)議是一個對稱協(xié)議,而MQTT協(xié)議是一個輕量級不對稱結構,該結構具有非智能分布式設備與服務器通信所需的智能能力。綜上所述,MQTT協(xié)議更適合傳感器與服務器之間的數(shù)據(jù)交換。
1.3 遠程固件更新系統(tǒng)
物聯(lián)網(wǎng)設備在通信過程中通常采用短消息進行消息傳遞,這對于固件更新是一種大型負載傳遞。
CoAP協(xié)議即受限制的應用協(xié)議(Constrained Application Protocol),采用基于塊的傳輸方式,即塊狀轉移[17],處理大負載消息傳遞。該協(xié)議將大型資源拆分成塊大小的多個資源,通過以消息的有效負載形式進行傳輸。接收方對已接受到的消息塊進行標志后,請求下一消息,當接收到所有消息后,重組所有的塊即接收到完整的資源包。
CoAP協(xié)議由 IETF的CoRE工作組提出,是一種以HTTP協(xié)議為基礎的協(xié)議。由于傳統(tǒng)HTTP協(xié)議對于資源受限制的設備過于龐大,而CoAP協(xié)議基于HTTP協(xié)議,可實現(xiàn)請求與響應同步,并且該協(xié)議基于REST架構風格,用戶可以像使用HTTP協(xié)議一樣應用CoAP協(xié)議[18],所以本文采用CoAP協(xié)議進行傳感器固件傳輸。
系統(tǒng)采用hawkBit服務器在云端管理傳感器固件。 hawkBit是一種基于RESTful的服務器。REST即表述性狀態(tài)傳遞(Representational State Transfer),是一種架構風格,2000年由Roy Fielding博士[19]在其博士論文中提出并被廣泛應用。HTTP被用于定義數(shù)據(jù)格式的開頭,其內容格式依賴于HTTP服務器與其定義文件,主要指XML或JSON。本文使用Python搭建一個HTTP客戶端,可向hawkBit服務器發(fā)起請求,即在服務器中注冊新設備,查看是否有固件更新請求,下載新固件或者更新設備狀態(tài)。
由于傳感網(wǎng)無法與hawkBit服務器直接進行通信,為使管理傳感器同時與CoAP服務器進行通信,系統(tǒng)搭建LWM2M服務器。LWM2M即輕量級物聯(lián)網(wǎng)(Lightweight Machine to Machine),是開放移動聯(lián)盟(OMA)的系統(tǒng)標準,其目標是開發(fā)一個快速部署的客戶機—服務器規(guī)范,以提供物聯(lián)網(wǎng)服務。在M2M中,LWM2M充當OMA設備管理 (OMA- dm)的繼承者,并為使用相同協(xié)議的物聯(lián)網(wǎng)應用程序提供高效的設備管理與安全工作流,從而簡化系統(tǒng),還可解決受約束的M2M設備服務及管理需求[20]。
LWM2M基于CoAP協(xié)議進行開發(fā),LWM2M 定義了3個邏輯實體:LWM2M服務器、LWM2M客戶端 及LWM2M 引導服務器。LWM2M客戶端負責執(zhí)行LWM2M服務器的命令并上報執(zhí)行結果,LWM2M引導服務器負責配置LWM2M客戶端。
為使hawkBit服務器獲得LWM2M服務器中傳感器的信息,利用Python搭建一個HTTP服務器。LWM2M服務器可向HTTP服務器發(fā)起請求,由此HTTP客戶端從HTTP服務器中獲得信息,發(fā)送到hawkBit服務器中,從而可實現(xiàn)LWM2M服務器與hawkBit服務器之間的通信,HTTP服務器與HTTP客戶端被稱為網(wǎng)關。
1.4 系統(tǒng)總體結構
系統(tǒng)總統(tǒng)結構如圖1所示。該系統(tǒng)主要由兩個子系統(tǒng)組成。傳感器作為MQTT客戶端,發(fā)送傳感器數(shù)據(jù)到MQTT代理,同時作為LWM2M客戶端,與LWM2M服務器通信,隨時準備固件更新。
2 系統(tǒng)設計
2.1 傳感器操作系統(tǒng)設計
本文采用ESP32芯片,連接BME280環(huán)境傳感器與MPU-6050空間運動傳感器。ESP芯片是ESP8266的升級版,具有并發(fā)的兩個核心、WiFi模塊及藍牙模塊,因此可滿足系統(tǒng)需求。在ESP32上搭建FreeRTOS系統(tǒng),采用任務調度的方式,設計與MQTT代理進行傳感器數(shù)據(jù)傳輸任務,配合遠程實時系統(tǒng)監(jiān)測系統(tǒng)工作;同時設計與LWM2M服務器通信任務,配合遠程固件更新系統(tǒng)工作,其中與LWM2M服務器通信任務的優(yōu)先級高于與MQTT代理通信任務的優(yōu)先級。
2.2 無線傳感器監(jiān)控系統(tǒng)
在該系統(tǒng)中, 無線傳感器采用BME280環(huán)境傳感器對溫度、氣壓、濕度進行測量,采用BMM150磁場傳感器測量磁場,采用BMA280加速度傳感器測量加速度。各個傳感器初始采樣頻率為10s/次。同時,無線傳感器作為MQTT客戶端將采集到的數(shù)據(jù)采用MQTT協(xié)議作為各個MQTT主題內容發(fā)布到MQTT代理中。例如MAC地址為60:64:05:A4:40:50,傳感器以JSON的形式將其發(fā)布到主題為/60:64:05:A4:40:50/Temperature中。其它傳感器信息與此類似。MQTT代理運行于AWS云中。MQTT代理訂閱所有MQTT客戶端發(fā)布的消息。此時傳感器信息只是數(shù)據(jù)流,為讓用戶更方便地查看傳感器數(shù)據(jù)以及監(jiān)控工業(yè)生產環(huán)境,采用Telegraf作為數(shù)據(jù)采集器,通過監(jiān)控指標的配置,將相應數(shù)據(jù)從MQTT代理采集并存儲于Influxdb,從而進行時間序列化。而Grafana最終通過Influxdb提供的源數(shù)據(jù)進行聚合分析及展示。同時,在Grafana中,用戶可根據(jù)需求查看任意時間的傳感器數(shù)據(jù)。為方便移植該系統(tǒng)到任意系統(tǒng)中,將MQTT代理、Telegraf、Influxdb及Grafana打包到Docker中。
2.3 無線傳感器固件更新系統(tǒng)
在該系統(tǒng)中,Eclipse hawkBit是所有傳感器的控制器。hawkBit是一個 Eclipse公共許可證服務器, 可使邊緣設備實現(xiàn)固件更新,同時可部署、構建管理器, 具有設備報告與監(jiān)視功能。邊緣設備可通過優(yōu)化界面直接連接至hawkBit,或通過聯(lián)合設備管理服務間接連接至服務器[21]。該系統(tǒng)采用基于HTTP以及輪詢機制的直接設備集成API方式(Direct Device Integration API),將傳感器連接到hawkBit服務器中。hawkBit更新服務提供REST資源,設備可以通過該方式接收到固件更新任務。由于傳感器無法直接向hawkBit服務器請求連接,利用Python創(chuàng)建一個HTTP客戶端,向hawkBit輪詢,將新的設備注冊到服務器中,并且監(jiān)測是否有固件更新任務。傳感器同時作為LWM2M的客戶端與CoAP的客戶端。
采用Eclipse Leshan提供的JAVA庫進行LWM2M服務器開發(fā)。該服務器主要用于監(jiān)控傳感器固件更新狀態(tài),也具有RESTful功能。由于同時創(chuàng)建了HTTP服務器,LWM2M可向HTTP服務器進行輪詢。當HTTP客戶端從hawkBit服務器中接收到固件更新任務后,HTTP客戶端將文件下載到本地文件夾中。同時,LWM2M服務器從HTTP服務器接收到消息,傳感器作為LWM2M客戶端,從LWM2M服務器接收到消息,觸發(fā)傳感器中的引導模式并進行模式切換。
為將固件傳輸?shù)絺鞲衅鞯拇鎯ㄖ?,采用CoAP協(xié)議傳輸文件。當采用CoAP協(xié)議進行大文件傳輸時,需采用分塊傳輸,即把文件拆解成多個塊進行傳輸[22]。將傳感器作為CoAP客戶端,將Eclipse Californium中的服務器例子作為CoAP服務器。Californium采用Java編譯,用于物聯(lián)網(wǎng)云服務的CoAP協(xié)議。
LWM2M服務器以180s/次監(jiān)測傳感器狀態(tài),當傳感器與CoAP服務器完成傳輸時,LWM2M服務器將觸發(fā)傳感器固件更新功能,同時向HTTP服務器發(fā)送完成固件更新的消息。hawkBit服務器從HTTP客戶端得到該消息后,服務器傳感器狀態(tài)將切換為完成固件更新狀態(tài)。
將LWM2M服務器、CoAP服務器、HTTP服務器和HTTP客戶端安裝在樹莓派中,并在工廠進行測試。
3 系統(tǒng)測試
3.1 無線傳感器監(jiān)控系統(tǒng)
將多個傳感器放入工廠進行測試,無線傳感器以每秒幾次的頻率進行監(jiān)控。圖2顯示了4個傳感器在2018年8月9日-2018年9月6日期間監(jiān)測到的溫度信息,圖3顯示了MAC地址為60:64:05:9E:DC:41的傳感器在2018年8月9日到2018年9月6日期間監(jiān)測到的溫度、氣壓、濕度及WIFI強度信息。
同時也可以通過MQTT代理發(fā)布以/MAC地址/change為主題、內容以JSON形式的消息改變傳感器監(jiān)控頻率,或改變WiFi,也可改變MQTT代理地址。
3.2 無線傳感器固件更新系統(tǒng)
傳感器通過固件更新系統(tǒng)注冊到hawkBit服務器中,如圖4(見封三彩圖)所示。同時,將需要更新的傳感器固件上傳到服務器中。在hawkBit服務器中對傳感器進行管理。例如可對單個傳感器更新,如圖5所示,可看到MAC地址為6064059C99E7、606405A44050、A81B6A76BB25傳感器狀態(tài)為綠色,表示已經完成固件更新,其余3個傳感器狀態(tài)為藍色,表示傳感器未接收到固件更新任務。也可以對傳感器進行分組,從而實現(xiàn)批量更新,如圖4所示,可以看到MAC地址為A81B6A9C54EC的傳感器狀態(tài)表示已經完成固件更新。MAC地址為6064059C99AC和MAC地址為6064059C99E7的傳感器狀態(tài)為黃色,表示處于準備固件更新狀態(tài)。
4 結語
本文采用ESP32連接環(huán)境與運動傳感器,設計了一個基于無線傳感器的遠程實時監(jiān)控與固件更新系統(tǒng),采用MQTT協(xié)議實時監(jiān)控工業(yè)生產,并將其可視化;同時采用LWM2M協(xié)議,提出了一種將傳感器節(jié)點接入互聯(lián)網(wǎng)的方法。傳統(tǒng)無線傳感器網(wǎng)絡采用有線通信方式對傳感器節(jié)點布置實現(xiàn)網(wǎng)絡代碼更新,相比之下本文方法更符合未來物聯(lián)網(wǎng)發(fā)展需求,更加智能、便利。在大型工廠應用中,用戶只需通過網(wǎng)頁即可監(jiān)測工廠生產狀態(tài),同時無需連接USB即可進行遠程固件更新,具有操作簡單、直觀、可視化等優(yōu)點。
參考文獻:
[1] 羅俊,孫國耀. 基于WiFi無線傳感器網(wǎng)絡的工業(yè)環(huán)境監(jiān)測平臺系統(tǒng)設計[J]. 儀表技術與傳感器,2018,8:65-68.
[2] XIE H M,YAN Z,YAO Z,et al. Data collection for security measurement in wireless sensor networks: a survey[J/OL]. IEEE Internet of Things Journal,2018:1-1.2018-11-26.https://ieeexplore.ieee.org/document/8543865/metrics#metrics.
[3] GAUR ?A,SCOTNEY B,PARR G,et al. Smart city architecture and its applications based on IoT[J]. Procedia Computer Science, 2015, 52:1089-1094.
[4] ROY S D,SINGH S A,CHOUDHURY S,et al. Countering sinkhole and black hole attacks on sensor networks using dynamic trust management[C]. Morocco:IEEE Symposium on Computers and Communications,2008.
[5] CUI K W, KUMAR A,XAVIER N,et al. An intelligent home appliance control-based on WSN for smart buildings[C]. Hanoi:2016 IEEE International Conference on Sustainable Energy Technologies, 2016.
[6] ALAMELU J V,MYTHILI A. Design of IoT based generic health care system[C]. Vellore:International conference on Microelectronic Devices, Circuits and Systems,2017.
[7] 張國萍. 無線傳感器網(wǎng)絡在代碼分發(fā)最新研究進展[J]. 浙江理工大學:自然學報版,2015,33(2): 219-227.
[8] 錢歡,施偉斌. ?基于Android的無線傳感器網(wǎng)絡代碼更新系統(tǒng)設計[J]. 軟件導刊,2017, 16(12): 125-127.
[9] 吳濤,施偉斌,張磊. 基于CC2430的代碼更新系統(tǒng)設計[J]. ?電子科技,2017,30(1):123-125.
[10] 任萬春,馬延淮,劉琦. ?一種基于多播分發(fā)樹的無線傳感器網(wǎng)絡代碼分發(fā)協(xié)議[J]. 傳感器與微系統(tǒng), 2014, 33(11):149-152.
[11] 王海勇,楊庚,許建. ?一種低耗能的代碼分發(fā)協(xié)議[J]. 計算機工程, 2012, 38(23):84-87.
[12] EVANS D. The Internet of Things:how the next evolution of the Internet is changing everything[J]. CISCO White Paper,2011,38:1-11.
[13] GOYETTE R. An analysis and description of the inner workings of the FreeRTOS kernel [EB/OL]. http://richardgoyette.com/Research/Papers/FreeRTOSPaper.pdf.
[14] DéHARBE D,GALV?O S,MOREIRA A M. Formal methods: foundations and applications[M]. ?Berlin: Springer,2009.
[15] FERREIRA J F,He G H, Qin S C. Automated verification of the FreeRTOS scheduler in Hip/Sleek[J]. ?International Journal on Software Tools for Technology Transfer,2014, (16)4:381-397.
[16] YOKOTANI ?T,SASAKI Y. Comparison with HTTP and MQTT on required network resources for IoT[C]. ?Bandung: 2016 International Conference on Control, Electronics, Renewable Energy and Communications,2017.
[17] BORMANN C,SHELBY Z. Block-wise transfers in CoAP [EB/OL]. ?https://tools.ietf.org/html/draft-ietf-core-block-20.
[18] BORMANN C,CASTELLANI A P,SHELBY Z. CoAP:an application protocol for billions of tiny internet nodes[J]. IEEE Internet Computing,2012(2): 62-67.
[19] KR?O S,POKRI? B,CARREZ F. Designing IoT architecture(s): a European perspective[C]. ?Seoul: IEEE World Forum on Internet of Things (WF-IoT),2014.
[20] RAO S,CHENDANDA D,DESHPANDE C. Implementing LWM2M in constrained IoT devices[C]. Melaka:IEEE Conference on Wireless Sensors,2015.
[21] BEATON W. Eclipse hawkBit[EB/OL]. ?https://projects.eclipse.org/projects/iot.hawkBit.
[22] AL-FUQAHA A,GUIZANI M,MOHAMMADI M,et al. Internet of Things: a survey on enabling technologies, protocols, and applications[J]. IEEE Communications Surveys & Tutorials, 2015(4):2347-2376.
(責任編輯:江 艷)