摘 要:為預防很多不定時或不可預知因素(暴雪、颶風、暴雨和道路傾斜等)會對車輛行駛環境安全構成威脅,該文實現一種基于物聯網的龍芯架構和Loongbian操作系統,采用多采集節點與中心處理節點架構設計的道路氣象環境監測系統,旨在提高道路氣象環境監測安全,系統具有良好的可靠性和擴展性,能夠滿足實際應用需求。
關鍵詞:物聯網;邊緣計算;氣象信息;道路監測;系統設計
中圖分類號:U495 文獻標志碼:A 文章編號:2095-2945(2024)29-0138-04
Abstract: In order to prevent many uncertain or unpredictable factors (blizzard, hurricane, rainstorm, road inclination, etc.) from threatening the safety of the vehicle driving environment, this paper implements a Loongson architecture and Loongbian operating system based on the Internet of Things. The road meteorological environment monitoring system is designed with the architecture of multiple acquisition nodes and central processing nodes, which aims to improve the safety of road meteorological environment monitoring. The system has good reliability and scalability, and can meet the needs of practical applications.
Keywords: Internet of Things; edge computing; meteorological information; road monitoring; system design
很多不定時或不可預知因素(暴雪、颶風、暴雨和道路傾斜等)會對車輛道路環境安全構成威脅。近年來,國務院辦公廳、國家發展改革委、交通運輸部等頒布關于推行交通運輸信息化、智慧交通、數字交通等舉措。同時,2021年5月6日,住房城鄉建設部、工業和信息化部確定北京、上海、廣州、武漢、長沙和無錫6個城市為智慧城市基礎設施與智能網聯汽車協同發展第一批試點城市。
為了獲取到道路氣象環境的實時信息,設計出了基于龍芯的道路氣象環境監測系統,系統采用基于國產化的處理器芯片2K1000,是面向工業控制與終端等領域的低功耗通用處理器,同時,操作系統也采用國產自研的Loongbian的操作系統。考慮到道路的惡劣環境,在傳感器方面選擇了3款工業級氣象傳感器模塊作為感知端,分別為德國Luff 氣象傳感器、芬蘭維薩拉氣象傳感器、Luff 雪深傳感器,具有良好的精確度和抗干擾、穩定性。在網絡傳輸方面考慮到后續客戶針對數據的解析和利用,采用MQTT協議對數據進行傳輸,CJSON格式對數據進行封裝處理。
1 系統整體架構
本系統采用物聯網架構,系統完成各個層之間的鏈接。系統體系架構4個層次為:感知層、傳輸層、處理層、應用層。系統架構圖如圖1所示。
感知層由3個分別是德國Luff氣象傳感器、芬蘭維薩拉氣象傳感器、Luff 雪深傳感器的數據發生器或傳感器模塊構成數據感知模塊,利用傳感器采集氣象環境信息。
傳輸層由軟硬件龍芯終端及Loongbian操作系統構成,在系統中編寫接收傳感器數據、對數據進行CRC校驗、數據的JSON格式封裝、Sqlite數據庫存儲,圍繞著數據采集、分析、處理、封裝和傳輸整個流程實現。采用了ARM的采集終端,在通信方面可使用有線或無線的方式把數據傳輸到服務器,從而實現對各類數據資源的共享和優化管理。
處理層搭配MQTT云端服務器,以及通過MQTT協議把數據發布到Mqtt Broker的下位機程序。主要是獲取采集終端送過來的數據,在云服務器端部署Mqtt Broker,并為應用層應用程序平臺提供接口。
應用層直接面對用戶,為用戶提供豐富的服務功能,主要解決數據獲取處理、人機界面問題,采用MQTT客戶端,在應用層我們開發了客戶端程序,用來顯示傳感器數據信息和報警信息等。部署在PC端的Mqtt Client程序構成,負責從Mqtt Broker服務器訂閱數據并實時顯示(圖2)。
2 系統構成
道路氣象環境監測系統由3部分構成:數據感知層,通過連接龍芯采集終端UART端口,即RS485總線采取輪詢的方式實時或按時間間隔采集獲取傳感器數據。數據處理層:數據服務器。存儲各數據終端送過來的數據,具有數據查詢和統計結算功能。應用層:包含PC端web登錄及移動端APP??蛇M行分類分項查詢,以圖形、報表等方式顯示數據,同時具有管理控制功能。
2.1 數據感知層
本系統選擇了3款工業級氣象傳感器模塊作為感知層模塊用于感知氣象信息,分別為德國Luff氣象傳感器、芬蘭維薩拉氣象傳感器、Luff雪深傳感器,3款傳感器均采用RS485接口作為數據通信接口,通過UMB-ASCII 2.0數據協議作為測量值的通信與輸出,統一配置半雙工RS485,波特率9 600,無校驗,8位數據位,1位停止位等配置。也可以通過模擬器來模擬傳感器數據,對系統進行測試(圖3)。
2.2 數據處理層
數據采集終端選擇基于龍芯2K1000處理器的龍芯終端,板子運行Loongbian操作系統,基于Linux 5.7 內核。
基于Loongbian操作系統的下位機程序采用2套程序來完成以下工作:通過RS485接收傳感器數據、對數據進行CRC校驗、數據的JSON格式封裝、Sqlite 存儲,以及通過MQTT協議把數據發布到Mqtt Broker服務器端。
考慮到以后產品的成型,龍芯2K1000芯片下位機程序采取2套程序,建立多個采集節點-中心節點的模式,如圖4所示。
采集節點-中心節點模式的主體思想是在每一個數據采集端需要部署一套氣象環境監測系統作為采集節點,每一個采集節點對應實際場合的某路段的某個監測點,該監測點部署多個不同類型的傳感器用于采集不同氣象信息和采集節點終端,對該監測點的環境進行實時監測。
在數據中心再部署氣象環境數據處理系統作為中心節點來接收每一個采集節點終端發送過來的數據。
2.2.1 采集節點的工作流程
傳感器數據的接收采用RS485總線,連接到教育派UART5口,設備節點為“/dev/ttyS3”,通過RS485轉USB口連接到電腦,用來接收數據發生器的模擬數據。
龍芯教育派接收到數據后,首先需要對數據頭和長度進行判斷,判斷是否符合相應傳感器數據報文;符合后,進行CRC校驗,采用逆向算法進行CRC校驗,校驗完成,進行入隊列InQueue操作,同時存儲到sqlite數據庫。另外再起一個TcpClient網絡處理線程,此線程首先進行出隊列OutQueue操作,此時創建一個結構體來對數據進行打包處理,加入幀頭、幀尾、監測點、正向算法加入CRC校驗等數據進行封裝,最后進行TCP socket發送數據。
2.2.2 中心節點工作流程
中心節點同樣采用龍芯終端模塊,Loongbian系統下開發程序,中心節點首先創建一個TCP Service服務器監聽線程,接收來自不同采集節點終端客戶端的連接,接收的數據首先進行幀頭、CRC以及幀尾判斷,緊接著對不同傳感器的數據進行入隊列和保存數據庫操作,對數據進行處理時加入獲取時間數據塊;另外一個線程進行出隊列操作、調用cJSON庫對數據進行JSON對象格式的轉換并通過MQTT協議調用mosquitto庫發布數據到Mqtt Broker。
2.3 應用層
應用層為PC端的Mqtt Client程序。數據處理層的龍芯終端程序把數據發送到MQTT服務器端,MQTT是基于客戶端-服務器的消息發布/訂閱傳輸協議,在PC端通過mosquitto代理服務軟件搭建了MQTT服務器。有了服務器,自然就需要Mqtt Client端,因此需要開發一款PC Mqtt Client端用來訂閱數據,并實時顯示數據的功能程序。
根據MQTT協議特點,對于數據的訂閱,只要向MQTT服務器“訂閱”某個topic,服務器就會自動創建該topic,另一個client就可以往這個topic發布消息。
MQTT的服務器就是“代理”(broker)功能,負責client管理和消息轉發。
只要訂閱了某個topic,當該topic被另一個client發送消息時,broker會自動地向訂閱了這一topic的client轉發消息,不管訂閱者有多少個,都能夠訂閱到數據,即形成了單服務器(broker)-多Mqtt Client的模式。
3 傳感器數據報文格式設計
道路氣象環境監測系統終端采集各大傳感器數據,需要明確每個感知模塊的數據格式,根據各個傳感器模塊的數據手冊確定其數據格式。
3.1 風速傳感器數據格式設計
根據WS600發送數據確定WS600數據報文格式如下:
Lufft 600: $ 28 673 M 00 100 42 893 00 200 46 825 00 300 51 890 00 401 03 499 00 501 65 357 00 805 65 520 00 620 00 000 00 820 00 000 00 700 00 000×49 743\r。
其中,M表示測量指令,42 893表示[+60 ℃-(-50 ℃)]/65 520×42 893+(-50 ℃)=22 ℃,空氣溫度值,46 825表示100/65 520×42 893=65.5%,相對濕度值,51 890表示[1 200-300]/65 520×51 890+300=1 012.8 hPa,絕對氣壓值,00 376表示75/65 520×376=0.43 m/s,實時風速值,65 357表示360/65 520×65 357=359.1°,實時風向值。65 520表示100/65 520×65 520=100%。
確定好感知模塊的數據格式后,在龍芯終端程序中對數據格式建立相對應的結構體。
3.2 雨量傳感器數據格式設計
雨量提供獲取數據信息的協議有3種:ASCII協議、SDI-12協議、NMEA 0183 V3.0,考慮到與其他傳感器的兼容性,本系統采用ASCII協議,統一掛載在一根RS485總線。
根據wxt520傳感器ASCII 協議通信協議的數據命令和數據信息格式分析得出wxt520數據包格式如下
0r0,Dm=134 D,Sm=10.0 M,Ta=26.2 C,Ua=61.3 P,Pa=959.4 H,Rc=0.00 M,Ri=0.3 MGez,
式中:0r0為合成數據信息,Dm為風向,Sm為風速,Ta為溫度,Ua為濕度,Pa為大氣壓,Rc為累計雨量,Ri為降雨強度。
3.3 雪深傳感器數據格式設計
選用一款激光雪深探測器,可以遠距離測量雪深,數據精確,測量范圍為0~15 m,使用光學測量方法,不受溫度和風的影響。
報文格式如下:
B001:4E:SS;1=085;003.011 7;+02.125 3;185;+15;17.8;15:00:8E。
其中,+02.125 3 代表雪深2.12 m。
4 數據庫設計
龍芯Loongbian操作系統,基于Linux 5.7內核屬于嵌入式Linux操作系統內核。在選擇數據庫方面從占用空間和操作便利性方面考慮,選擇SQLite數據庫作為數據的存儲載體。在建立數據庫表方面從采集的數據源劃分我們建立了3個表格,見表1—3。
5 客戶端程序設計
客戶端Mqtt Client客戶端采用C#語言開發,采用發布/訂閱模式傳輸機制從MQTT服務器獲取數據,采用MQTT的服務器中間件為Mosquitto,界面上通過設定服務器地址,創建Mqtt Client客戶端,點擊“訂閱數據”按鍵后會自動發送訂閱主題獲取數據(圖5)。
6 結論
針對道路氣象環境數據監測、自主國產化等需求,提出來一種基于國產龍芯芯片與系統的道路氣象環境監測系統設計,系統采用全新的基于物聯網的“龍芯2K1000芯片+Loongbian系統”下的邊緣端開發,以及多采集節點與中心節點的架構方式??梢詽M足道路氣象信息環境數據采集處理等需求,系統運行穩定可靠,數據采集處理實時性高,說明采用此架構進行系統設計合理可靠,為后續國產化系統應用和數據處理提供經驗。
參考文獻:
[1] 石龍龍,林寶軍,王正凱,等.基于龍芯的高可靠性衛星數據處理系統[J].微電子學與計算機,2021,38(7):25-29.
[2] 張卓.基于氣象信息的變電站監測系統設計[D].太原:中北大學,2023.
[3] 李長亮,馬宗普.氣象信息在寧夏高速公路運行監測系統中的應用[J].中國交通信息化,2022(S1):304-306.