摘 要:為預(yù)防很多不定時(shí)或不可預(yù)知因素(暴雪、颶風(fēng)、暴雨和道路傾斜等)會(huì)對(duì)車輛行駛環(huán)境安全構(gòu)成威脅,該文實(shí)現(xiàn)一種基于物聯(lián)網(wǎng)的龍芯架構(gòu)和Loongbian操作系統(tǒng),采用多采集節(jié)點(diǎn)與中心處理節(jié)點(diǎn)架構(gòu)設(shè)計(jì)的道路氣象環(huán)境監(jiān)測(cè)系統(tǒng),旨在提高道路氣象環(huán)境監(jiān)測(cè)安全,系統(tǒng)具有良好的可靠性和擴(kuò)展性,能夠滿足實(shí)際應(yīng)用需求。
關(guān)鍵詞:物聯(lián)網(wǎng);邊緣計(jì)算;氣象信息;道路監(jiān)測(cè);系統(tǒng)設(shè)計(jì)
中圖分類號(hào):U495 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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
很多不定時(shí)或不可預(yù)知因素(暴雪、颶風(fēng)、暴雨和道路傾斜等)會(huì)對(duì)車輛道路環(huán)境安全構(gòu)成威脅。近年來,國務(wù)院辦公廳、國家發(fā)展改革委、交通運(yùn)輸部等頒布關(guān)于推行交通運(yùn)輸信息化、智慧交通、數(shù)字交通等舉措。同時(shí),2021年5月6日,住房城鄉(xiāng)建設(shè)部、工業(yè)和信息化部確定北京、上海、廣州、武漢、長沙和無錫6個(gè)城市為智慧城市基礎(chǔ)設(shè)施與智能網(wǎng)聯(lián)汽車協(xié)同發(fā)展第一批試點(diǎn)城市。
為了獲取到道路氣象環(huán)境的實(shí)時(shí)信息,設(shè)計(jì)出了基于龍芯的道路氣象環(huán)境監(jiān)測(cè)系統(tǒng),系統(tǒng)采用基于國產(chǎn)化的處理器芯片2K1000,是面向工業(yè)控制與終端等領(lǐng)域的低功耗通用處理器,同時(shí),操作系統(tǒng)也采用國產(chǎn)自研的Loongbian的操作系統(tǒng)??紤]到道路的惡劣環(huán)境,在傳感器方面選擇了3款工業(yè)級(jí)氣象傳感器模塊作為感知端,分別為德國Luff 氣象傳感器、芬蘭維薩拉氣象傳感器、Luff 雪深傳感器,具有良好的精確度和抗干擾、穩(wěn)定性。在網(wǎng)絡(luò)傳輸方面考慮到后續(xù)客戶針對(duì)數(shù)據(jù)的解析和利用,采用MQTT協(xié)議對(duì)數(shù)據(jù)進(jìn)行傳輸,CJSON格式對(duì)數(shù)據(jù)進(jìn)行封裝處理。
1 系統(tǒng)整體架構(gòu)
本系統(tǒng)采用物聯(lián)網(wǎng)架構(gòu),系統(tǒng)完成各個(gè)層之間的鏈接。系統(tǒng)體系架構(gòu)4個(gè)層次為:感知層、傳輸層、處理層、應(yīng)用層。系統(tǒng)架構(gòu)圖如圖1所示。
感知層由3個(gè)分別是德國Luff氣象傳感器、芬蘭維薩拉氣象傳感器、Luff 雪深傳感器的數(shù)據(jù)發(fā)生器或傳感器模塊構(gòu)成數(shù)據(jù)感知模塊,利用傳感器采集氣象環(huán)境信息。
傳輸層由軟硬件龍芯終端及Loongbian操作系統(tǒng)構(gòu)成,在系統(tǒng)中編寫接收傳感器數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行CRC校驗(yàn)、數(shù)據(jù)的JSON格式封裝、Sqlite數(shù)據(jù)庫存儲(chǔ),圍繞著數(shù)據(jù)采集、分析、處理、封裝和傳輸整個(gè)流程實(shí)現(xiàn)。采用了ARM的采集終端,在通信方面可使用有線或無線的方式把數(shù)據(jù)傳輸?shù)椒?wù)器,從而實(shí)現(xiàn)對(duì)各類數(shù)據(jù)資源的共享和優(yōu)化管理。
處理層搭配MQTT云端服務(wù)器,以及通過MQTT協(xié)議把數(shù)據(jù)發(fā)布到Mqtt Broker的下位機(jī)程序。主要是獲取采集終端送過來的數(shù)據(jù),在云服務(wù)器端部署Mqtt Broker,并為應(yīng)用層應(yīng)用程序平臺(tái)提供接口。
應(yīng)用層直接面對(duì)用戶,為用戶提供豐富的服務(wù)功能,主要解決數(shù)據(jù)獲取處理、人機(jī)界面問題,采用MQTT客戶端,在應(yīng)用層我們開發(fā)了客戶端程序,用來顯示傳感器數(shù)據(jù)信息和報(bào)警信息等。部署在PC端的Mqtt Client程序構(gòu)成,負(fù)責(zé)從Mqtt Broker服務(wù)器訂閱數(shù)據(jù)并實(shí)時(shí)顯示(圖2)。
2 系統(tǒng)構(gòu)成
道路氣象環(huán)境監(jiān)測(cè)系統(tǒng)由3部分構(gòu)成:數(shù)據(jù)感知層,通過連接龍芯采集終端UART端口,即RS485總線采取輪詢的方式實(shí)時(shí)或按時(shí)間間隔采集獲取傳感器數(shù)據(jù)。數(shù)據(jù)處理層:數(shù)據(jù)服務(wù)器。存儲(chǔ)各數(shù)據(jù)終端送過來的數(shù)據(jù),具有數(shù)據(jù)查詢和統(tǒng)計(jì)結(jié)算功能。應(yīng)用層:包含PC端web登錄及移動(dòng)端APP??蛇M(jìn)行分類分項(xiàng)查詢,以圖形、報(bào)表等方式顯示數(shù)據(jù),同時(shí)具有管理控制功能。
2.1 數(shù)據(jù)感知層
本系統(tǒng)選擇了3款工業(yè)級(jí)氣象傳感器模塊作為感知層模塊用于感知?dú)庀笮畔?,分別為德國Luff氣象傳感器、芬蘭維薩拉氣象傳感器、Luff雪深傳感器,3款傳感器均采用RS485接口作為數(shù)據(jù)通信接口,通過UMB-ASCII 2.0數(shù)據(jù)協(xié)議作為測(cè)量值的通信與輸出,統(tǒng)一配置半雙工RS485,波特率9 600,無校驗(yàn),8位數(shù)據(jù)位,1位停止位等配置。也可以通過模擬器來模擬傳感器數(shù)據(jù),對(duì)系統(tǒng)進(jìn)行測(cè)試(圖3)。
2.2 數(shù)據(jù)處理層
數(shù)據(jù)采集終端選擇基于龍芯2K1000處理器的龍芯終端,板子運(yùn)行Loongbian操作系統(tǒng),基于Linux 5.7 內(nèi)核。
基于Loongbian操作系統(tǒng)的下位機(jī)程序采用2套程序來完成以下工作:通過RS485接收傳感器數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行CRC校驗(yàn)、數(shù)據(jù)的JSON格式封裝、Sqlite 存儲(chǔ),以及通過MQTT協(xié)議把數(shù)據(jù)發(fā)布到Mqtt Broker服務(wù)器端。
考慮到以后產(chǎn)品的成型,龍芯2K1000芯片下位機(jī)程序采取2套程序,建立多個(gè)采集節(jié)點(diǎn)-中心節(jié)點(diǎn)的模式,如圖4所示。
采集節(jié)點(diǎn)-中心節(jié)點(diǎn)模式的主體思想是在每一個(gè)數(shù)據(jù)采集端需要部署一套氣象環(huán)境監(jiān)測(cè)系統(tǒng)作為采集節(jié)點(diǎn),每一個(gè)采集節(jié)點(diǎn)對(duì)應(yīng)實(shí)際場(chǎng)合的某路段的某個(gè)監(jiān)測(cè)點(diǎn),該監(jiān)測(cè)點(diǎn)部署多個(gè)不同類型的傳感器用于采集不同氣象信息和采集節(jié)點(diǎn)終端,對(duì)該監(jiān)測(cè)點(diǎn)的環(huán)境進(jìn)行實(shí)時(shí)監(jiān)測(cè)。
在數(shù)據(jù)中心再部署氣象環(huán)境數(shù)據(jù)處理系統(tǒng)作為中心節(jié)點(diǎn)來接收每一個(gè)采集節(jié)點(diǎn)終端發(fā)送過來的數(shù)據(jù)。
2.2.1 采集節(jié)點(diǎn)的工作流程
傳感器數(shù)據(jù)的接收采用RS485總線,連接到教育派UART5口,設(shè)備節(jié)點(diǎn)為“/dev/ttyS3”,通過RS485轉(zhuǎn)USB口連接到電腦,用來接收數(shù)據(jù)發(fā)生器的模擬數(shù)據(jù)。
龍芯教育派接收到數(shù)據(jù)后,首先需要對(duì)數(shù)據(jù)頭和長度進(jìn)行判斷,判斷是否符合相應(yīng)傳感器數(shù)據(jù)報(bào)文;符合后,進(jìn)行CRC校驗(yàn),采用逆向算法進(jìn)行CRC校驗(yàn),校驗(yàn)完成,進(jìn)行入隊(duì)列InQueue操作,同時(shí)存儲(chǔ)到sqlite數(shù)據(jù)庫。另外再起一個(gè)TcpClient網(wǎng)絡(luò)處理線程,此線程首先進(jìn)行出隊(duì)列OutQueue操作,此時(shí)創(chuàng)建一個(gè)結(jié)構(gòu)體來對(duì)數(shù)據(jù)進(jìn)行打包處理,加入幀頭、幀尾、監(jiān)測(cè)點(diǎn)、正向算法加入CRC校驗(yàn)等數(shù)據(jù)進(jìn)行封裝,最后進(jìn)行TCP socket發(fā)送數(shù)據(jù)。
2.2.2 中心節(jié)點(diǎn)工作流程
中心節(jié)點(diǎn)同樣采用龍芯終端模塊,Loongbian系統(tǒng)下開發(fā)程序,中心節(jié)點(diǎn)首先創(chuàng)建一個(gè)TCP Service服務(wù)器監(jiān)聽線程,接收來自不同采集節(jié)點(diǎn)終端客戶端的連接,接收的數(shù)據(jù)首先進(jìn)行幀頭、CRC以及幀尾判斷,緊接著對(duì)不同傳感器的數(shù)據(jù)進(jìn)行入隊(duì)列和保存數(shù)據(jù)庫操作,對(duì)數(shù)據(jù)進(jìn)行處理時(shí)加入獲取時(shí)間數(shù)據(jù)塊;另外一個(gè)線程進(jìn)行出隊(duì)列操作、調(diào)用cJSON庫對(duì)數(shù)據(jù)進(jìn)行JSON對(duì)象格式的轉(zhuǎn)換并通過MQTT協(xié)議調(diào)用mosquitto庫發(fā)布數(shù)據(jù)到Mqtt Broker。
2.3 應(yīng)用層
應(yīng)用層為PC端的Mqtt Client程序。數(shù)據(jù)處理層的龍芯終端程序把數(shù)據(jù)發(fā)送到MQTT服務(wù)器端,MQTT是基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,在PC端通過mosquitto代理服務(wù)軟件搭建了MQTT服務(wù)器。有了服務(wù)器,自然就需要Mqtt Client端,因此需要開發(fā)一款PC Mqtt Client端用來訂閱數(shù)據(jù),并實(shí)時(shí)顯示數(shù)據(jù)的功能程序。
根據(jù)MQTT協(xié)議特點(diǎn),對(duì)于數(shù)據(jù)的訂閱,只要向MQTT服務(wù)器“訂閱”某個(gè)topic,服務(wù)器就會(huì)自動(dòng)創(chuàng)建該topic,另一個(gè)client就可以往這個(gè)topic發(fā)布消息。
MQTT的服務(wù)器就是“代理”(broker)功能,負(fù)責(zé)client管理和消息轉(zhuǎn)發(fā)。
只要訂閱了某個(gè)topic,當(dāng)該topic被另一個(gè)client發(fā)送消息時(shí),broker會(huì)自動(dòng)地向訂閱了這一topic的client轉(zhuǎn)發(fā)消息,不管訂閱者有多少個(gè),都能夠訂閱到數(shù)據(jù),即形成了單服務(wù)器(broker)-多Mqtt Client的模式。
3 傳感器數(shù)據(jù)報(bào)文格式設(shè)計(jì)
道路氣象環(huán)境監(jiān)測(cè)系統(tǒng)終端采集各大傳感器數(shù)據(jù),需要明確每個(gè)感知模塊的數(shù)據(jù)格式,根據(jù)各個(gè)傳感器模塊的數(shù)據(jù)手冊(cè)確定其數(shù)據(jù)格式。
3.1 風(fēng)速傳感器數(shù)據(jù)格式設(shè)計(jì)
根據(jù)WS600發(fā)送數(shù)據(jù)確定WS600數(shù)據(jù)報(bào)文格式如下:
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表示測(cè)量指令,42 893表示[+60 ℃-(-50 ℃)]/65 520×42 893+(-50 ℃)=22 ℃,空氣溫度值,46 825表示100/65 520×42 893=65.5%,相對(duì)濕度值,51 890表示[1 200-300]/65 520×51 890+300=1 012.8 hPa,絕對(duì)氣壓值,00 376表示75/65 520×376=0.43 m/s,實(shí)時(shí)風(fēng)速值,65 357表示360/65 520×65 357=359.1°,實(shí)時(shí)風(fēng)向值。65 520表示100/65 520×65 520=100%。
確定好感知模塊的數(shù)據(jù)格式后,在龍芯終端程序中對(duì)數(shù)據(jù)格式建立相對(duì)應(yīng)的結(jié)構(gòu)體。
3.2 雨量傳感器數(shù)據(jù)格式設(shè)計(jì)
雨量提供獲取數(shù)據(jù)信息的協(xié)議有3種:ASCII協(xié)議、SDI-12協(xié)議、NMEA 0183 V3.0,考慮到與其他傳感器的兼容性,本系統(tǒng)采用ASCII協(xié)議,統(tǒng)一掛載在一根RS485總線。
根據(jù)wxt520傳感器ASCII 協(xié)議通信協(xié)議的數(shù)據(jù)命令和數(shù)據(jù)信息格式分析得出wxt520數(shù)據(jù)包格式如下
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為合成數(shù)據(jù)信息,Dm為風(fēng)向,Sm為風(fēng)速,Ta為溫度,Ua為濕度,Pa為大氣壓,Rc為累計(jì)雨量,Ri為降雨強(qiáng)度。
3.3 雪深傳感器數(shù)據(jù)格式設(shè)計(jì)
選用一款激光雪深探測(cè)器,可以遠(yuǎn)距離測(cè)量雪深,數(shù)據(jù)精確,測(cè)量范圍為0~15 m,使用光學(xué)測(cè)量方法,不受溫度和風(fēng)的影響。
報(bào)文格式如下:
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 數(shù)據(jù)庫設(shè)計(jì)
龍芯Loongbian操作系統(tǒng),基于Linux 5.7內(nèi)核屬于嵌入式Linux操作系統(tǒng)內(nèi)核。在選擇數(shù)據(jù)庫方面從占用空間和操作便利性方面考慮,選擇SQLite數(shù)據(jù)庫作為數(shù)據(jù)的存儲(chǔ)載體。在建立數(shù)據(jù)庫表方面從采集的數(shù)據(jù)源劃分我們建立了3個(gè)表格,見表1—3。
5 客戶端程序設(shè)計(jì)
客戶端Mqtt Client客戶端采用C#語言開發(fā),采用發(fā)布/訂閱模式傳輸機(jī)制從MQTT服務(wù)器獲取數(shù)據(jù),采用MQTT的服務(wù)器中間件為Mosquitto,界面上通過設(shè)定服務(wù)器地址,創(chuàng)建Mqtt Client客戶端,點(diǎn)擊“訂閱數(shù)據(jù)”按鍵后會(huì)自動(dòng)發(fā)送訂閱主題獲取數(shù)據(jù)(圖5)。
6 結(jié)論
針對(duì)道路氣象環(huán)境數(shù)據(jù)監(jiān)測(cè)、自主國產(chǎn)化等需求,提出來一種基于國產(chǎn)龍芯芯片與系統(tǒng)的道路氣象環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì),系統(tǒng)采用全新的基于物聯(lián)網(wǎng)的“龍芯2K1000芯片+Loongbian系統(tǒng)”下的邊緣端開發(fā),以及多采集節(jié)點(diǎn)與中心節(jié)點(diǎn)的架構(gòu)方式??梢詽M足道路氣象信息環(huán)境數(shù)據(jù)采集處理等需求,系統(tǒng)運(yùn)行穩(wěn)定可靠,數(shù)據(jù)采集處理實(shí)時(shí)性高,說明采用此架構(gòu)進(jìn)行系統(tǒng)設(shè)計(jì)合理可靠,為后續(xù)國產(chǎn)化系統(tǒng)應(yīng)用和數(shù)據(jù)處理提供經(jīng)驗(yàn)。
參考文獻(xiàn):
[1] 石龍龍,林寶軍,王正凱,等.基于龍芯的高可靠性衛(wèi)星數(shù)據(jù)處理系統(tǒng)[J].微電子學(xué)與計(jì)算機(jī),2021,38(7):25-29.
[2] 張卓.基于氣象信息的變電站監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[D].太原:中北大學(xué),2023.
[3] 李長亮,馬宗普.氣象信息在寧夏高速公路運(yùn)行監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].中國交通信息化,2022(S1):304-306.