彭東旭,范文兵,楊云開
(鄭州大學 信息工程學院,河南 鄭州 450001)
目前大多車輛狀態檢測系統依靠自身傳感器對車輛狀態進行判斷,不能夠有效表明車輛狀態的好壞,存在數據單一、有效性和實時性差等問題,而且對于車輛電子控制單元出現的故障碼匹配度不夠準確,兼容的OBD-II標準協議也較少,這樣車輛存在的一些潛在故障并不能及時被發現,從而影響車輛的正常使用以及駕駛員的人身安全[1,2]。目前大部分車輛原有防盜系統都過于單一,被盜時車輛并不能準確反映當時的情況,由于引起車輛報警的因素過多,而真正被盜的情況很少,導致誤報率過高,而且當車輛被盜時,車主一般距離車輛過遠,警報無法被聽到,進而不能及時發現車輛被盜,這說明傳統的防盜系統實時性、有效性較差[3]。
為此,本文設計開發了基于車聯網技術的車載智能監測系統,該系統可以隨時隨地對車輛狀態進行監測,發現故障后及時告知車輛故障碼和故障內容;實時對車輛防盜預警,在車輛被盜時遠程鎖定車輛,以及車輛被盜后的定位追蹤。并且對車輛電源系統進行統一管理。該系統對車輛狀態實時監測避免了車輛潛在故障的危害,提高了車輛的防盜能力,保證了車輛的安全性,同時也為將來汽車車況分析、防盜預警等應用提供技術基礎。
圖1為車載智能監測系統總體設計,該系統主要由車載終端、手機App、云服務器3部分組成。每個車載終端都安裝SIM卡,可以通過GPRS或SMS通信,并具有GPS定位、OBD數據讀取等功能;當GPRS網絡穩定時,車載終端通過GPRS網絡負責發送車輛定位信息、車輛故障等信息到云服務器;云服務器負責信息的存儲與轉發。車主需要在智能手機上安裝終端助手軟件,并與車載終端綁定,該軟件從云服務器上獲取到車載終端上傳的信息,顯示到智能手機上;當GPRS網絡不穩定時,車載終端通過SMS與智能手機通信,在此通信模式下車載終端只發送車輛防盜預警信息到智能手機終端。反之車主也可以通過智能手機對車輛進行控制[4]。以這樣的系統設計方式實現人車“形影不離”,隨時隨地對車輛狀態進行監控。

圖1 車載智能監測系統總體設計
本系統采用模塊化的思想進行設計,車載終端設計框架如圖2所示。中央控制模塊是整個系統的核心,通過相應的引腳與其它模塊接口連接,對其它模塊采集的信息進行分析整理以及信息的交換,根據信息分析的結果對相應的模塊發出指令。

圖2 車載終端設計框架
通信模塊:實現車載終端與外界的無線移動通信,其中包含定位功能的GPS+北斗、GSM/GPRS以及藍牙。
防盜模塊:附加于原車防盜系統,完全保留原車防盜系統功能和使用方式,即在原來防盜系統基礎加上新的探測和告警功能。
傳感器模塊:采集車輛多個傳感器信息。
車輛診斷模塊:診斷數據是由OBD模塊從車輛上的OBD接口讀出,OBD芯片會將故障碼解析得出車輛存在故障的位置,因此可以提前對潛在的故障進行預警并處理,避免事故的發生。為了更高速處理采集的OBD數據,OBD模塊與中央控制模塊獨立設計。
電源管理模塊:由電源控制芯片和繼電器控制,可以實現對車輛的空調、車輛的ACC等設備的電源控制,可以對其進行遠程開啟或者關閉,更智能化對車輛各種設備電源進行管理。
終端支持OTA在線升級,利于終端軟件的維護和更新[5]。
如今車輛都配備OBD接口,不同廠家的車輛配備的OBD接口使用的OBD-II標準通信協議不同,通信協議普遍有ISO 9141-2、ISO 14230-4、ISO 15765-4,其中ISO 9141-2、ISO 14230-4通信協議基于K線的診斷協議,ISO 15765-4通信協議基于CAN總線的KWP2000診斷協議。由于不同的通信協議基于不同的驅動電路,所以為了車載終端更好兼容多種OBD-II標準通信協議,需要設計CAN總線驅動電路以及K線驅動電路。車載終端需要一個高性能、低成本、低功耗的微型處理器,該微型處理器還要有很高的實時性、可靠性以及豐富的外設接口等[6]。
依據車載終端設計框圖進行車載終端硬件電路框架設計,車載終端硬件電路框架如圖3所示。圖中STM32F302RBT6為中央控制芯片,通過的串口與無線移動通信芯片MC20連接進行通信;MC20的定位功能基于內嵌的GNSS平臺MT3333芯片與定位衛星進行信息傳輸,無線通信功能由MC20內嵌的GSM平臺MT6261芯片與外界進行數據傳輸。STM32F105RBT6為車輛OBD信息采集診斷芯片,不是簡單的用ELM327等芯片來做數據解析,芯片的數據解析完全由C語言實現,便于后續修改。中央控制芯片通過串口與OBD模塊連接,OBD模塊再由CAN總線或者K線連接車載OBD接口。中央控制芯片通過多個引腳經過芯片ULN2003放大電流控制繼電器繼而控制車輛電源系統。防盜系統由中央控制芯片引腳連接原車防盜系統,通過芯片引腳通信實現車輛防盜預警,另外增加了片外FLASH,保證了芯片的存儲資源充足。

圖3 車載終端硬件電路框架
2.1.1 車載終端高頻降壓電路設計
車輛電源供電電壓為12 V,車載終端主要供電電壓為5 V,需要對車輛供電電壓進行降壓轉換,將車輛供電電壓12 V轉換為5 V,選用集成內部高端高壓功率MOSFET的MP1584芯片,它是一款高頻降壓開關穩壓器;通過在MOS管Q引腳上加上開關信號PWM,控制開關管的導通與關斷,使電感和電容充放電達到將電源進行降壓的目的。提供高達3 A的電流輸出,具有電流模式控制,實現快速回路響應和簡單的補償;提供輸入電壓范圍寬達4.5 V至28 V,適用于汽車輸入環境中的降壓應用。結合實際應用情況,輸入為B+接口電壓為12 V,輸出為5 V,電路實際應用情況穩定,電路設計如圖4所示。

圖4 開關穩壓器MP1584硬件電路
2.1.2 OBD車輛故障檢測電路
電路中設計了兩種驅動電路,更好適配不同車輛的不同通信協議,電路設計如圖5所示。一種是CAN總線驅動電路,驅動電路芯片選擇的是TJA1040T,速度高達1 Mbaud,具有很強的EMC性能,是局域網CAN協議控制器和物理總線之間的接口,適用于車輛的高速應用,又在TJA1040芯片的基礎上增加了AU5790芯片,AU5790功能是把高速CAN轉單線CAN,它可以為CAN總線控制器之間數據傳輸提供單線的物理接口,總線負載達到32節點時,總線速度可以高達33 kbps,當車輛未啟動時,芯片處于睡眠模式,減少芯片的功耗[7]。另一種是K線驅動電路,K線包括ISO 9141-2、ISO 14230-4兩種傳輸協議,這兩種協議具有相同的電平標準,驅動電路選擇的芯片為LM2903,與相應的電阻、電容元件共同構成。OBD-II協議驅動電路支持協議如下:
* ISO 9141-2
* ISO 14230-4 地址模式/快速模式
* ISO 15765-4 標準 11 bit 500 K/250 K
* ISO 15765-4 擴展 29 bit 500 K/250 K
2.2.1 系統線程調度程序算法設計
程序中編寫了線程創建函數和線程調度函數,線程工作流程如圖6所示。線程函數中包含創建線程函數、啟動線程函數、線程喚醒和線程超時處理函數,線程調度函數會為已創建的線程創建一個線程隊列,每個線程都會有一個固定的ID號,根據程序的運行需要的線程ID號,線程指針會指向隊列中對應的ID號,然后將線程推出運行;采用這種方法實現整個系統運行,系統線程隊列生成后,不需要重新線程創建,當再次調用線程時,指針會跳到相應的線程子函數進行線程喚醒,這樣可以更好分配CPU資源,優化系統反應時間。
2.2.2 防盜預警模塊程序設計
當車載終端探測到車輛ACC由ON轉為OFF時,防盜程序開始設防,熄火5 min后,探測是否鎖車,若未鎖車,車載終端把獲取到的車門狀態數據按照通信協議進行打包,通過GPRS網絡發送到云服務器,云服務器再將信息轉發到車主的智能手機,告知車主車輛未鎖。當車輛在已鎖車狀態下,車載終端檢測到車輛車門打開或者到車輛位置發生變化,車載終端會發送相應的告警信息到車主的智能手機[8]。若GPRS網絡斷線,車載終端立即通過SMS發送告警信息,提高了車輛防盜預警的有效性、實時性。防盜預警程序流程如圖7所示。

圖5 OBD車輛故障檢測電路

圖6 線程調度流程

圖7 防盜預警程序流程


表1 車載智能監測系統通信數據包格式
車輛數據提取分析代碼中定義了相應的結構體,用來定義車輛各種數據打包封裝的數據,這樣不僅提高了代碼的閱讀性,還可以分類管理函數和數據的屬性,主要是對數據進行封裝,增加代碼再次利用的效率。
云服務器是基于阿里云服務器(elastic compute ser-vice,ECS)是一種彈性可伸縮的計算服務,低成本,運維效率高。使用C# 編寫服務器程序,程序中創建了Socket服務類,綁定監聽端口。服務器程序只提供TCP/IP服務,為了終端整體系統測試,進行數據的轉發,不做數據處理。
手機端App編寫了車載終端的手機端登錄界面以及功能界面,車主通過輸入賬號和密碼進入App,點擊App中的按鈕,手機會發送指令給服務器,然后服務器再將相應的指令發送給終端,初步添加了OBD數據讀取、車輛故障碼提示、防盜報警、查詢車輛位置等功能[10],可以根據需要添加相應的控制模塊。
車載終端可以讀取100多項OBD數據,這里只是顯示了部分OBD數據,可以根據實際需要在手機App程序內添加相應的數據。手機App客戶端讀取到車輛OBD數據如圖8(左),其中OBD數據包括發動機轉速、車速、水溫、空氣流量、點火提前角、里程等。手機客戶端獲取到車載終端上傳的車輛故障碼,與OBD-II標準故障碼檢索表進行對比,然后將對比結果顯示出來。手機客戶端顯示的內容包括故障碼編號、故障碼的數量以及故障碼內容。這樣有效避免了潛在故障對車輛安全的影響,從而也保證了車主的人身安全。故障診斷界面顯示效果如圖8(右)。

圖8 OBD數據讀取(左)、車輛故障碼讀取(右)
當車輛ACC由ON轉為OFF時,車載終端開始計時,如果超過5 min車輛未鎖,車載終端會發送車輛未鎖信息到手機App客戶端;如果車輛在鎖定狀態下,當車輛位置發生大范圍變化時,車載終端會發送車輛位置變化異常的信息到手機App客戶端。如果車輛在鎖定狀態下車門被打開,車載終端會發送車門非法打開信息手機App客戶端,測試結果如圖9(左);手機App客戶端搭載百度地圖開放平臺,實時查看車輛位置,顯示與車輛的距離,實時顯示車輛在地圖上的位置。當車輛被盜時,可以對車輛進行定位跟蹤。測試效果如圖9(右)。

圖9 防盜預警(左)、車輛定位(右)
本系統基于車聯網技術,初步實現了智能終端、服務器端、手機端的數據通信與控制,具有實時性高、適用性廣、擴展性強等特點。在車輛故障檢測方面,系統不僅解決了車輛潛在故障無法及時處理的問題,避免了車輛潛在故障產生的危害,而且使車輛狀態更加直接地展示給車主,解決了大多車主對車輛故障不知所以的問題。在車輛防盜方面系統的實時性、有效性高,隨時隨地都可以知道車輛防盜狀態,增加了車輛防盜預警的準確性,有效減少了車輛防盜預警的誤報率。車載終端自適應多種OBD-II標準協議,讀取車輛狀態信息準確,很大程度上增加了人與車的信息交互。由此該系統對汽車安全性方面有很大幫助,具有一定的應用價值和開發前景。