王 佳,董 元,高君語(yǔ),趙瑪龍,趙耕云
(蘭州工業(yè)學(xué)院 汽車工程學(xué)院,甘肅 蘭州 730050)
車載終端作為汽車運(yùn)行數(shù)據(jù)采集設(shè)備,是實(shí)現(xiàn)汽車遠(yuǎn)程監(jiān)控、管理調(diào)度、道路風(fēng)險(xiǎn)預(yù)警等多種功能服務(wù)的基礎(chǔ)設(shè)備[1]。車載終端主要功能是獲取汽車在運(yùn)行過(guò)程中的各種狀態(tài)信息數(shù)據(jù),上傳至云端功能服務(wù)中心,也能接收云端功能服務(wù)中心下發(fā)的各種數(shù)據(jù)信息,為駕駛員提供預(yù)警信息,對(duì)車輛進(jìn)行遠(yuǎn)程控制[2]。
目前,部分國(guó)產(chǎn)品牌乘用車已具有車聯(lián)網(wǎng)功能,具備全球定位系統(tǒng)(Global Positioning System,GPS)、遠(yuǎn)程啟動(dòng)等功能,為用戶提供了更好的用車體驗(yàn)。但原車具備的車聯(lián)網(wǎng)功能并不能實(shí)現(xiàn)與第三方開(kāi)發(fā)的特定云端服務(wù)平臺(tái)通信,不能為開(kāi)發(fā)更加個(gè)性化的車聯(lián)網(wǎng)功能提供助力。本文基于汽車車載自動(dòng)診斷系統(tǒng)(On Board Diagnostics,OBD)技術(shù)和GPS技術(shù),設(shè)計(jì)了一種能夠采集汽車信息數(shù)據(jù),并發(fā)送到多個(gè)云服務(wù)器的多車型通用的車載終端。
車載終端采用模塊化方式設(shè)計(jì)[3],主要由微控制器、GPS模塊、4G通信模塊、液晶顯示器(Liquid Crystal Display, LCD)等組成,結(jié)構(gòu)如圖1所示。
圖1 車載終端總體結(jié)構(gòu)
車載終端接入汽車OBD診斷接口,通過(guò)控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)總線與汽車電子控制單元(Electronic Control Unit,ECU)建立通信,從CAN總線上接收由汽車ECU發(fā)送的CAN報(bào)文信息[4],經(jīng)過(guò)解析后獲得車輛的各項(xiàng)狀態(tài)數(shù)據(jù),即汽車OBD數(shù)據(jù)流。同時(shí),車載終端通過(guò)GPS模塊采集車輛的實(shí)時(shí)位置信息,將車輛的各項(xiàng)狀態(tài)數(shù)據(jù)和位置信息顯示在LCD中,并按照設(shè)計(jì)的通信協(xié)議組成一幀數(shù)據(jù)包,通過(guò)4G通信模塊發(fā)送至云端。車載終端通過(guò)4G通信模塊接收來(lái)自云端的信息并進(jìn)行信息處理及顯示。
車載終端微控制單元(Microcontroller Unit,MCU)選用 STM32F103ZET6單片機(jī),屬于中低端的32位ARM微控制器,其內(nèi)核是Cortex-M3,具有72 MHz CPU速度,內(nèi)部含256 KFlash存儲(chǔ)器和1 M閃存,內(nèi)部資源豐富,功耗低。MCU各主要功能接口規(guī)劃如下:
CAN—引腳 PB8(CAN_RX),PB9(CAN_TX)。用于CAN總線通信。
USART2—引腳 PA2(TX),PA3(RX)。用于4G通信模塊數(shù)據(jù)通信。
USART3—引腳 PB10(GPS_RX),PB11(GPS_TX)。用于L80 GPS模塊數(shù)據(jù)通信。
FSMC—用于LCD驅(qū)動(dòng)。
LCD液晶屏選用9.37 cm ×5.62 cm(4.3寸)TFT LCD電容觸摸屏,分辨率為800×480,16位真彩顯示。該液晶屏自帶觸摸屏,可以用來(lái)作為控制輸入。LCD的驅(qū)動(dòng)芯片為ILI9314,該芯片自帶顯存,顯存總大小172 800字節(jié)。STM32通過(guò)外部總線連接LCD,通過(guò)FSMC驅(qū)動(dòng)LCD,可以提高刷屏速度。電路如圖2所示。
圖2 LCD接口電路
STM32F103ZET6片內(nèi)集成有1個(gè)CAN模塊,可以實(shí)現(xiàn) CAN總線數(shù)據(jù)協(xié)議。CAN收發(fā)器選用TJA1050,TJA1050 是控制器區(qū)域網(wǎng)絡(luò)協(xié)議控制器和物理總線之間的接口,是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器,完全符合ISO11898協(xié)議標(biāo)準(zhǔn)[5]。TJA1050可以為總線提供差動(dòng)發(fā)送性能,為CAN控制器提供差動(dòng)接收性能[6]。收發(fā)器TJA1050的CAN_H引腳接汽車OBD診斷接口的第6引腳,CAN_L引腳接OBD診斷接口的第14引腳。電路如圖3所示。
圖3 CAN收發(fā)器電路
GPS模塊選用移遠(yuǎn)公司的L80 GPS模塊,采用LCC封裝,如圖4所示。這是一款集成了貼片天線的超緊湊型GPS模塊,擁有極強(qiáng)的捕獲和追蹤能力,水平精度2.5 m,冷啟動(dòng)時(shí)間小于15 s,輸出信號(hào)為NMEA-0183標(biāo)準(zhǔn)信號(hào)格式[7]。該GPS模塊與STM32單片機(jī)的串口USART3連接,接口電路如圖5所示。
圖4 L80 GPS模塊
圖5 L80接口電路
4G通信模塊選用正點(diǎn)原子公司推出的 ATKM751 4G DTU,如圖6所示。該模塊是一款高性能全網(wǎng)通4G DTU產(chǎn)品,支持移動(dòng)4G/3G網(wǎng)絡(luò),支持TCP/UDP/HTTP/MQTT協(xié)議,支持連接原子云、阿里云、百度云等多種云服務(wù)器,支持RS232串行接口[8]。通過(guò)正點(diǎn)原子提供的 ATK-M751配置軟件發(fā)送AT指令將該4G DTU配置為透?jìng)髂J?,波特?15 200 bps,連接原子云和阿里云。原子云是正點(diǎn)原子推出的物聯(lián)網(wǎng)云服務(wù)平臺(tái),具有遠(yuǎn)程監(jiān)控、轉(zhuǎn)發(fā)和管理登功能,原子云域名為cloud.alientek.com,端口號(hào)59666。本文申請(qǐng)的阿里云服務(wù)器公網(wǎng)地址為 47.109.82.205,端口號(hào)5000,連接類型TCP。4G DTU通過(guò)RS232電平轉(zhuǎn)換后與STM32F103的串口USART2連接。
圖6 ATK-M751 4G DTU
由于車載終端功能較多,且對(duì)實(shí)時(shí)性要求較高,故在車載終端 STM32F103ZET6單片機(jī)的程序框架中引入華為L(zhǎng)iteOS操作系統(tǒng),可以實(shí)現(xiàn)多任務(wù)調(diào)度,大幅提高中央處理器(Central Processing Unit, CPU)的運(yùn)行效率。設(shè)計(jì)編寫(xiě)主程序,首先進(jìn)行底層硬件初始化,包括串口初始化設(shè)置、CAN初始化設(shè)置、可變靜態(tài)存儲(chǔ)控制器(Flexible Static Memory Controlle, FSMC)初始化設(shè)置、LCD初始化設(shè)置。初始化完成后,根據(jù)車載終端的功能需求創(chuàng)建相應(yīng)的任務(wù),并分配優(yōu)先級(jí),每個(gè)任務(wù)只執(zhí)行其中一個(gè)功能,如表1所示。
表1 車載終端功能及優(yōu)先級(jí)劃分
創(chuàng)建的TaskGPS任務(wù)用于處理從串口USART3接收的GPS信息。L80-R模塊輸出9種信息類型,TaskGPS任務(wù)只接收“$GPGLL”和“$GNGLL”兩種信息類型,其余情況不接收。接收的數(shù)據(jù)按信息類型格式分割后提取出經(jīng)度數(shù)據(jù)和緯度數(shù)據(jù)。
創(chuàng)建的TaskOBD任務(wù)用于獲取從CAN總線得到的汽車OBD數(shù)據(jù)流。該任務(wù)設(shè)計(jì)編寫(xiě)有實(shí)現(xiàn)ISO15765-4、SAEJ1939、ISO14230等多種汽車診斷協(xié)議的程序,可以通過(guò)汽車OBD診斷接口與汽車ECU交互,讀取國(guó)內(nèi)常見(jiàn)品牌汽車的OBD數(shù)據(jù)流,因此,車載終端具有一定的通用性。
創(chuàng)建的TaskTCP任務(wù)用于建立4G DTU模塊和云服務(wù)器之間的TCP通信。該任務(wù)將TaskGPS任務(wù)中獲得的經(jīng)緯度數(shù)據(jù)和TaskOBD任務(wù)中獲得的汽車OBD數(shù)據(jù)流按定義的標(biāo)準(zhǔn)數(shù)據(jù)包格式打包后,通過(guò)串口USART2發(fā)送到4G DTU,再由4G DTU發(fā)送到云服務(wù)器。設(shè)計(jì)的標(biāo)準(zhǔn)數(shù)據(jù)包格式為$NLDS,[IMEI],[緯度],[經(jīng)度],[參數(shù) 0],[參數(shù) 1],[參數(shù) 2],[參數(shù) 3],[參數(shù) 4],[參數(shù) 5]*[校驗(yàn)值]。其中“IMEI”為選用的4G DTU模塊的國(guó)際移動(dòng)設(shè)備識(shí)別碼,具有唯一性,可防止云服務(wù)器誤接收其他終端發(fā)送的數(shù)據(jù),“$NLDS”是數(shù)據(jù)包的功能標(biāo)識(shí)符,便于云服務(wù)器準(zhǔn)確接收并分析處理數(shù)據(jù)包。同時(shí),由于4G 數(shù)據(jù)傳輸單元(Data Transfer unit, DTU)模塊配置在透?jìng)髂J较?,能夠接收從云服?wù)器發(fā)出的控制命令。TaskTCP任務(wù)從串口USART2接收4G DTU轉(zhuǎn)發(fā)的自云服務(wù)器發(fā)出的控制命令,并進(jìn)行處理,將以“#GYCMD”開(kāi)頭的標(biāo)準(zhǔn)格式控制命令存儲(chǔ)在緩存區(qū)域中,非標(biāo)準(zhǔn)格式的控制命令丟棄不保存。
創(chuàng)建的TaskLCD任務(wù)用于LCD顯示功能。該任務(wù)將前面三個(gè)任務(wù)獲得的經(jīng)緯度數(shù)據(jù)、汽車OBD數(shù)據(jù)流、向云服務(wù)器發(fā)送的標(biāo)準(zhǔn)數(shù)據(jù)包、接收到的控制命令數(shù)據(jù)顯示在LCD中,并根據(jù)相關(guān)數(shù)據(jù)的變化情況實(shí)時(shí)更新。
創(chuàng)建的四個(gè)任務(wù)在LiteOS操作系統(tǒng)的管理調(diào)度下各自循環(huán)運(yùn)行,相互聯(lián)系但互不干擾。車載終端程序流程如圖7所示。
圖7 車載終端程序流程圖
試驗(yàn)車采用長(zhǎng)城哈弗H6 SUV,試驗(yàn)地點(diǎn)位于蘭州市安寧區(qū)安寧堡附近道路。熱車后,開(kāi)始試驗(yàn),將汽車OBD診斷接口通過(guò)延長(zhǎng)線引出,車載終端的CAN_H線(圖中紅色導(dǎo)線)接于OBD診斷接口的第6針腳,CAN_L線(圖中藍(lán)色導(dǎo)線)接于OBD診斷接口的第14陣腳。
試驗(yàn)車在怠速情況下,車載終端LCD顯示的車速為0 km/h,發(fā)動(dòng)機(jī)轉(zhuǎn)速為817 r/min,與汽車儀表顯示數(shù)據(jù)相同,油量、水溫、油軌壓力、進(jìn)氣溫度等數(shù)據(jù)基本符合車輛的實(shí)際工作狀態(tài)。經(jīng)度和緯度數(shù)據(jù)由WGS-84坐標(biāo)換算為BD-09坐標(biāo)后通過(guò)百度地圖定位,與車輛實(shí)際所處位置基本一致。
試驗(yàn)車在一擋低速行駛狀態(tài)下,車載終端LCD顯示的車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速等數(shù)據(jù)隨著汽車行駛狀態(tài)的變化而變化,且與汽車儀表盤(pán)顯示數(shù)據(jù)的基本一致,經(jīng)緯度數(shù)據(jù)隨著車輛的位置變化而不斷更新。
在試驗(yàn)過(guò)程中,同時(shí)登錄原子云服務(wù)器和阿里云服務(wù)器。原子云服務(wù)器接收到的標(biāo)準(zhǔn)數(shù)據(jù)包如圖10所示,原子云服務(wù)器發(fā)送的提示信息“#GYCMD,前方道路擁堵請(qǐng)繞行,*51”,車載終端能夠?qū)崟r(shí)接收并顯示在LCD上,如圖8、圖9所示。在阿里云服務(wù)器中,網(wǎng)絡(luò)調(diào)試助手接收到的數(shù)據(jù)包如圖11,兩個(gè)云服務(wù)器同步接收到數(shù)據(jù)包。
圖8 車輛怠速狀態(tài)
圖9 車輛一擋低速行駛狀態(tài)
圖10 原子云服務(wù)器
圖11 阿里云服務(wù)器
更換試驗(yàn)車型,車載終端分別接入馬自達(dá) 6轎車和奔馳E200K轎車的OBD診斷接口進(jìn)行試驗(yàn),取得了相同了試驗(yàn)效果。
經(jīng)過(guò)試驗(yàn)驗(yàn)證,車載終端能夠采集多種品牌車輛的狀態(tài)數(shù)據(jù)和位置數(shù)據(jù),并將相關(guān)數(shù)據(jù)信息同步發(fā)送到原子云服務(wù)器和阿里云服務(wù)器,能夠接收云服務(wù)器發(fā)送的簡(jiǎn)短指令,并顯示在LCD上。車載終端運(yùn)行穩(wěn)定,功能正常。
本文以 STM32F103ZET6單片機(jī)為核心,設(shè)計(jì)了一款結(jié)合GPS模塊和4G DTU模塊,具有一定通用性的車載終端。針對(duì)車載終端進(jìn)行了詳細(xì)的硬件設(shè)計(jì)和軟件設(shè)計(jì),并將車載終端接入實(shí)車進(jìn)行了功能驗(yàn)證試驗(yàn),試驗(yàn)表明,設(shè)計(jì)的車載終端能夠可靠地讀取車輛OBD數(shù)據(jù),能夠準(zhǔn)確地獲得車輛的定位數(shù)據(jù),并將獲得的數(shù)據(jù)信息實(shí)時(shí)發(fā)送到多個(gè)云服務(wù)器,能夠可靠地接收云服務(wù)器發(fā)送的提示信息。本文設(shè)計(jì)的車載終端運(yùn)行穩(wěn)定,功能可靠,可以作為實(shí)現(xiàn)汽車遠(yuǎn)程監(jiān)控、管理調(diào)度、道路預(yù)警等多種功能服務(wù)的車載基礎(chǔ)設(shè)備。