趙廣元,周 亮,薛振諾,薛 龍,李 強
(1.西安郵電大學 自動化學院,陜西 西安710121; 2.西安郵電大學 通信與信息工程學院,陜西 西安710121)
隨著高速路網與物流業的迅猛發展,貨運車隊管理系統在現代化的生產和生活中得到了廣泛的應用[1]。奔馳公司的FleetBoard系統不僅擁有GPS導航、GSM通信等功能,還能通過豐富的統計、計算功能分析駕駛員的駕駛習慣,給出改進建議,實現節能減耗,延長車輛壽命[2];沃爾沃公司的DynaFleet系統主要特點是基于互聯網提供在線應用程序,使車輛得到合理調度[3];雷諾公司的Info-Max系統具有完善的預警體系,實現了對不當駕駛行為和車輛潛在危險的實時反饋[4]。上述系統雖然技術成熟,功能完善,但在普遍應用方面仍有不足:一是多數產品不僅復雜度較高而且價格昂貴,二是未能實現在同一系統中對車隊的駕乘人員、車輛、貨物的全方位實時監測和數據存儲,缺乏廣泛的適用性及靈活性。
本文擬提出一種基于Arduino的貨運車輛實時監測系統設計方案,旨在降低研發成本,簡化系統的復雜程度,并在實現對車隊全面監測預警的同時,完成車隊信息的數據存儲,以滿足在途貨運車隊的應用需求。
系統由主控制器、人員監控模塊、車輛監控模塊、貨物監控模塊以及數據存儲模塊組成。在實現對在途貨運車輛的人、車、貨全方位監測的同時,數據存儲模塊存儲實時監測信息,對事故車輛的分析有極大幫助。駕駛室輔以顯示終端,為駕乘人員提供實時的真實可靠的監控信息,便于駕乘人員對于車輛及貨物的狀態做出預判并提前做出決策[5]。
系統整體架構及模塊組成如圖1所示。

圖1 系統整體架構及模塊組成
為方便驗證設計方案的可行性,同時縮短開發周期,選用Arduino作為主控制器進行系統的原型開發。
Arduino是一款廉價的開源電子原型平臺,在使用上簡化了硬件知識學習,資源豐富,簡單易學,上手容易,讓開發者可以專注于系統的整體設計;應用上為用戶提供了豐富的數字和模擬I/O接口,兼容多種傳感器以感知和影響環境,同時支持SPI、IIC、UART串口通信,能夠實現與Processing、VVVV等其他互動軟件的串口通信[6],本系統涉及的通信方式主要為SPI串口通信。Arduino獨有的開放性、易用性、交流性及其豐富的第三方開源資源使得Arduino受到越來越多電子愛好者的青睞[7]。
1.3.1 人員監控模塊
人員監控模塊作為系統的重要組成部分,主要用于監控駕駛員酒駕行為。通過對駕駛室酒精濃度的檢測,判斷駕駛員是否處于酒駕狀態。
選用MQ-3氣體傳感器對駕駛室內酒精濃度進行監測,對返回值設定閾值,并在硬件電路中添加預警電路,實現實時預警[8]。傳感器通過數據總線與主控制器相連構成了酒精濃度采集電路,采用模擬量數據采集方式。
MQ-3氣體傳感器探測酒精濃度范圍為0.04~4mg/L,靈敏度Rs(in air)/Rs(0.4mg/L酒精)不小于5(其中Rs為敏感體表面電阻),響應時間不超過10s,恢復時間不超過30s。
1.3.2 車輛監控模塊
車輛監控模塊主要負責車輛定位、車速監測以及車輛姿態判斷。通過該模塊采集的車速以及車輛姿態信息便于駕駛員判斷車輛當前行駛狀態是否安全。
車輛的實時定位及車速的采集選用U-BLOX GPS定位模塊。U-BLOX的定位精度:2.5m,時間精度:21ns,與Arduino通過串行口直接通信,采用Arduino提供的3.3V電壓作為模塊工作電壓。系統在其輸出值中提取當前時間、經緯度以及車輛速度信息,并對定位數據的有效性進行驗證。
車輛狀態的監測選用MPU-6050整合性6軸運動處理組件。MPU-6050可在2.5V±5%、3.0V±5%或3.3V±5%三種不同電壓下工作。為保護元器件,系統使用Arduino輸出的3.3V電壓作為MPU-6050的工作電壓。MPU-6050返回值為三個軸的加速度和角速度,經過量化處理后得到單位為g的加速度值和(°)/s的角速度值,再經過積分等算法得到各軸與水平面間夾角。
1.3.3 貨物監控模塊
針對集裝箱運輸,通過對集裝箱內溫度、濕度、煙霧及火焰等狀態的實時監測,為駕駛員反饋準確的貨物狀態。傳感器通過I/O口與Arduino連接進行數據通信,對相應的信息返回值設定閾值,當返回值超限,系統將發出預警。
集裝箱內溫濕度的采集選用DHT11傳感器。DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。測量范圍:0~50℃(溫度),20%~90%RH(濕度);測量精度:±2℃(溫度),±5%RH(濕度);分辨率:1℃(溫度),1%RH(濕度)。
集裝箱內可燃氣體和煙霧進行監測選用MQ-2氣體傳感器。MQ-2氣體傳感器檢測濃度:300~10000ppm,靈敏度:Rs(in air)/Rs(1000ppm 異丁烷)≥5,響應時間:≤10s(70%Response),恢復時間:≤30s(70%Response)。傳感器通過數據總線與主控制器相連構成了煙霧的采集電路,采用模擬量數據采集方式[9]。
系統采用擁有數字量和模擬量雙輸出的火焰傳感器監測貨物狀態?;鹧鎮鞲衅骺梢詸z測火焰及波長在760~1100nm范圍內的光源,火焰傳感器數據輸出端與Arduino模擬數據接口連接,可將外界紅外光的強弱變化轉化為電流的變化,通過A/D轉換器反映為0~255范圍內數值的變化,數值與紅外光強度成反比。本系統選用火焰傳感器的數字量輸出判定貨物的火災情況,若輸出為“1”則表示貨物當前有火源存在的可能,此時系統將自行觸發超限提醒程序。
1.3.4 顯示終端
系統輔以顯示終端,將采集到的人、車、貨相關信息實時直觀的為駕駛員顯示,以便駕駛員準確地作出預判與決策。
選用QC12864B液晶顯示屏作為顯示終端。QC12864B是一種圖形點陣液晶顯示器,可顯示8(列)×4(行)的漢字,為節約I/O口資源,采用SPI串行通信與主控制器通信。接收顯示信號后,主頁面顯示貨物溫濕度等實時信息。安裝于駕駛室內的樣機顯示效果如圖2所示。

圖2 系統顯示效果
1.3.5 數據存儲模塊
數據存儲模塊是本系統的核心模塊,作為汽車黑匣子使用。模塊的存儲數據包含人、車、貨實時數據和歷史數據。實時數據可以很好的還原事故發生時人、車、貨整體狀態,主要用于分析事故發生的原因和事故的責任。歷史數據輔助事故分析,并可以作為貨物在途狀態分析依據[10]。
采用Arduino的SD卡擴展模塊及可插拔的SD卡組成系統的數據存儲模塊。模塊用SPI通信方式連接到主控制器,主要存儲實時的人、車、貨狀態信息以及地理位置和時間信息。存儲文件的格式為FAT格式。
系統軟件部分選用開源硬件Arduino的集成開發環境實現,編程語言基于 Wiring,語法及風格類似于C語言。
系統軟件設計主要包括對系統所采集數據的處理以及數據的顯示與存儲兩部分。同時,自動超限提醒程序是系統的亮點,當環境變量存在危險時能夠對駕駛員進行實時的預警。
系統所需數據主要通過酒精傳感器、火焰傳感器、煙霧傳感器、溫濕度傳感器、GPS定位模塊以及姿態傳感器獲取。系統中將酒精傳感器作為人員狀態傳感器,火焰傳感器、煙霧傳感器、溫濕度傳感器作為貨物狀態傳感器。
2.1.1 數據采集程序設計
系統中各傳感器均與主控制器Arduino采用直接通信,Arduino接收到各傳感器返回值后,根據返回值類型,判斷是否需要對返回值進行處理。人員和貨物狀態傳感器程序流程圖見圖3。

圖3 人員和貨物狀態傳感器程序流程
以溫濕度傳感器程序為例,主要語句如下。
c=(String)DHT11.humidity;//執行讀數據命令
long int a=c.toInt();//數據類型強制轉換
c=c+"#";//不同數據信息用'#'隔開
meg=meg+c;//數據疊加至存儲變量
2.1.2 姿態檢測模塊程序設計
從姿態檢測模塊MPU-6050的返回值中獲取三個軸的加速度和角速度,通過量化后的加速度計算相應角度值,從而判斷車輛實時姿態。姿態檢測模塊程序流程圖見圖4。
程序中主要語句如下。
accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,
&gz);//獲取三個軸的加速度和角速度
Ax=ax/16384.00;//對加速度進行量化,得出單位
為g的加速度值
Angel_accX=atan(Ax/sqrt(Az*Az+Ay*Ay))*
180/3.14;//用加速度計算三個軸和水平面坐標系
之間的夾角
ggx=gx/131.00;//對角速度做量化
Gx=Gx+(ggx-Gx_offset)*TimeSpan/1000;//通
過對角速度積分實現各個軸的角度測量

圖4 姿態檢測模塊程序流程
2.1.3 GPS定位模塊程序設計
GPS定位模塊返回值包含多組數據,讀取其中一組結構為

的數據作為系統的GPS采樣值[11],并且只需提取的字段數值有
<1> UTC時間,hhmmss(時分秒)格式
<2> 定位狀態,A=有效定位,V=無效定位
<3> 緯度ddmm.mmmm(度分)格式
<5> 經度ddmm.mmmm(度分)格式
<7> 地面速率
<9> UTC日期,ddmmyy(日月年)格式
GPS定位模塊程序流程圖見圖5。

圖5 GPS定位模塊程序流程
系統采用Arduino的SD擴展模塊作為存儲器件,系統程序在各感知模塊子程序末端都加入了數據累加命令,程序中全局變量meg用來累加各感知模塊的信息。
數據存儲的主要命令語句如下。
#include<SD.h>//調用SD卡庫文件
.......
meg+=lat[i];//變量累加
meg+="#";//各模塊信息值用'#'隔開
.......
File data File = SD.open("data.txt",FILE_
WRITE);//在SD卡建立文件名為data.txt的文件
if(dataFile){dataFile.println(meg);
//將meg存儲至data.txt中
dataFile.close();}
else{Serial.println("error opening file");}
meg="";//將meg重新置為空值
系統的測試主要分為兩個部分,即信息采集與顯示測試和數據存儲測試。測試環境設定為兩種:一為室內,即在實驗室內進行各傳感器參數采集和顯示存儲功能測試;二為室外,即將終端放置于貨車駕駛室內,并設置貨車環境,在城市道路和環山路上采集數據并測試其數據存儲功能。
系統上電后,各感知模塊正常工作,顯示屏正確顯示實時監測變量。當改變感知模塊監測環境時,顯示屏及時響應相應的變化過程。當檢測值超過預先設定的門限值,系統能夠及時對駕乘人員發出警報。系統的數據采集周期為3s。系統所設置的各類監測信息的門限值如表1所示。

表1 報警門限列表
當系統穩定工作一段時間后,用戶可以查看到SD卡中存有系統運行時生成的文件名為data.txt的數據文件,且文件中存儲的數據信息為系統實時采集的監測信息。圖6為室外環境測試中SD卡存儲的data.txt文件,數據內容為某特殊運行車輛在城市道路的測試數據,實測路線為西安郵電大學長安校區至西安三森國際家居城。

圖6 存儲模塊文件內容
data.txt數據文件的內容詳解如表2所示。

表2 存儲模塊數據信息
以Arduino為主控制器,設計開發了在途貨運車輛實時監控系統,該系統能有效地全面監測人、車、貨的安全狀況。該設計方案具有開發周期短、系統控制單元穩定可靠等優點;同時Arduino豐富的I/O口為系統以后的功能擴展提供了可能。主動的安全預警程序,可以有效的控制了事故的發生概率,同時在事故不可避免的情況下,提醒駕駛人員提前做出預判,減小事故損害。全面監測和實時的數據存儲是系統的亮點。單車的數據存儲不僅方便了車輛的日常管理,同時可為車輛事故的鑒定提供依據。
原型系統的開發研究已實現了預期功能,在以下方面仍具有進一步研究價值:(1)將存儲模塊采用耐火材料封裝,與系統主體分離,獨立安裝于駕駛室儀表盤周圍安全系數較高的位置,將系統向產品化發展;(2)改進數據處理的算法,保障數據的穩定性;(3)擴展系統監測功能,如增加視頻監控單元,使監控人員更加直觀的監測貨物實時狀態。
[1]王淑蓉,王全.基于 Web的貨運管理系統設計[J].價值工程,2011,30(27):130-130.
[2]韓超.奔馳FleetBoard(R)系統:讓物流企業做得更好[J].商用汽車,2013(1):66-67.
[3]王須巒.沃爾沃卡車Time Machine“時間機器”亮相南京[J].物流技術與應用:貨運車輛,2013(5):20-21.
[4]馬廣寧.作用明顯不同的5種國外車隊管理系統介紹[EB/OL].(2013-01-28)[2013-12-14].http://www.360che.com/market/130124/24734.html.
[5]崔少飛,朱建勇,董偉,等.基于 GPS_GPRS_GIS的菌毒種運輸監控系統[J].物聯網技術,2012(1):49-50.
[6]程晨.Arduino開發實戰指南:AVR篇[M].北京:機械工業出版社,2012:2-14.
[7]Banzi M.Getting Start with Arduino[M].2nd Ed.USA CA:O’REILLY,2011:5-26.
[8]李旭.車載傳感器網絡的應用及關鍵技術研究[D].上海:上海交通大學,2009.
[9]劉琳琳.基于物聯網的?;愤\輸泄漏事故仿真系統[D].大連:大連理工大學,2012.
[10]魏秋月.溫度數據采集并存儲的一種實現方法[J].西安郵電學院學報,2011,16(3):77-80.
[11]孫家澤.基于CDMA2000的GPS車載臺的設計和實現[J].西安郵電學院學報,2007,12(3):14-16.