前言:尋找寫作靈感?中文期刊網用心挑選的汽車監控終端系統的設計與實現探析,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:本文闡述了基于ARM架構的i.MX287設計的一種新型汽車監控終端系統,移植并構建了嵌入式的Linux系統,在Ubuntu環境下進行底層驅動程序和應用程序設計,通過交叉編譯生成目標文件,然后燒寫到目標板上運行。該系統具有數字化、小型化、易于編程和調試、運行穩定等特點。本文詳細介紹了該系統硬件設計、軟件驅動、應用程序的基本原理及具體實現方案和最終測試結果。該終端系統通過了高低溫、潮濕、震蕩、電磁兼容等環境試驗,運行平穩無故障出現,顯示了良好的工作性能和環境適應能力。
關鍵詞:i.MX287;汽車監控終端;Linux驅動;內核
1概述
近年來各家車企紛紛在自家量產車型上配置車載終端,期望實現對車輛的遠程監控,以便及時掌握車輛的故障情況和運行狀態,對于單個用戶來說通過手機APP就可以查看這些信息,國家對此也出臺了相應的管理規定[1],但是對于多種不同廠家不同型號的車輛管理起來就顯得捉襟見肘了,另外對于一些沒有配置車載終端的車型也很難統一遠程調度管理。為了滿足這種需求,本文設計實現了一種新型的汽車監控終端系統,可以無縫銜接各類車型。
2系統硬件設計
2.1系統整體設計。監控終端采用明遠智睿公司的MYZR-IMX28-CB142核心板,CPU為NXP的i.MX287,主頻454MHz,內存128MBDDR2-400存儲128MBNandFlash,郵票孔結構,搭載自研的底板,擴展了各種功能模塊,底板上采用中科微電子的ATGM332D-5N導航定位模塊來獲取GPS、北斗等衛星導航系統的衛星信號,實現聯合定位、導航與授時;采用廣和通公司的NL668無線通訊模塊實現車聯網;采用免驅的USB攝像頭獲取車內圖像信息[2];通過OBD轉接線連接車輛的CAN總線;通過GPIO外接DS18B20溫度傳感器感知車內實時溫度[3];通過GPIO外接MQ2煙霧氣敏傳感器感知車內有害氣體濃度[4];另外底板上預留了一路RS232調試串口、一路RS485工業總線、一路百兆以太網RJ45口。系統總體結構組成框圖如圖1所示。限于篇幅,下面僅對底板上電源電路、定位模塊電路、網口電路、CAN總線保護電路的設計進行說明。
2.2電源電路設計。首先電源來源,對于乘用車可以直接從點煙器處取電,對于試驗車可以從底盤供電線纜處取電。電路設計支持9~50V寬電壓輸入,通過高效率的DC/DC變壓器UW2405D-20W,轉成5V直流穩壓為終端設備供電,再通過RT8010將5V降壓到3.3V輸出,電路設計如圖2所示。
2.3定位模塊電路設計。該部分設計采用了低紋波的LDO供電,紋波相對小;使用無源天線,模塊前端增加一級低噪聲放大器(LNA)AT2659保證性能[5],電路設計如圖3所示。
2.4網口電路設計。由于i.MX287內部集成了MAC,所以只需要在底板上外擴獨立的PHY芯片即可,本設計采用低功耗的LAN8720A,通過RMII接口和MAC層通信,同時連接帶網絡隔離變壓器的HR911105ARJ45接頭和外部設備通信,電路設計如圖4所示。2.5CAN總線保護電路設計CAN收發器采用ISO1050,加裝SMBJ12CA瞬態抑制二極管(TVS),確保CAN總線在傳輸數據時能夠隔離浪涌、快速電脈沖群、靜電等的影響,提高可靠性。
3系統軟件設計
3.1系統環境配置和燒寫。系統開發使用了VirtualBox虛擬機,內嵌Ubuntu12.04,交叉編譯工具鏈采用的是gcc-4.4.4,內核版本為Linux-3.14.54,串口調試工具使用SecureCRT8.0,文件上傳下載工具采用SSHSecureFileTransferClient。uboot、內核、文件系統、設備樹的燒寫工具采用了官方提供的MfgTool.exe以及Tftpd32.exe。
3.2Linux驅動程序設計。4G通信模塊采用PPP撥號,需要在內核中添加USB串口驅動,Ubuntu下切換到內核所在目錄,點擊鼠標右鍵打開終端,執行makemenuconfig命令,依次選擇devicedrivers->usbsupport->usbserialconvertersupport,選中如下組件:USBdriverforGSMandCDMAmodems,選中后保存配置。打開內核源碼文件drivers/usb/serial/option.c,在源碼中找到option_ids數組,在數組中添加NL668產品的VID(0x1508)和PID(0x1001),然后交叉編譯到模塊,最后在板卡上執行sudomodprobeoption加載驅動。編輯好幾個配置文件之后,便可以通過pppd命令進行撥號:#pppdcallmodem_NL668&。定位模塊使用/dev/ttyAPP0串口設備節點,需要追加以下命令到文件系統的\etc\rc.d\init.d\myzr中以便上電開機自動執行。USB攝像頭的驅動支持需要編譯進內核,執行makemenuconfig命令后依次選擇Multimediasupport->Videocaptureadapters->V4LUSBdevices->USBVideoClass(UVC),選中UVCinputeventsdevicesupport,然后make編譯。GPIO驅動的配置是通過更改設備樹實現的,可以首先查看管腳功能文件arch/arm/boot/dts/imx28-pinfunc.h,然后更改設備樹主文件arch/arm/boot/dts/imx28-evk.dts。DS18B20需要在內核中開啟w1選項,編譯內核,然后燒寫內核到板卡,這樣便會在文件系統/sys/bus/w1/devices/下發現該設備。CAN通信使用的是FLEXCAN,對應內核代碼中的drivers/net/can/flexcan.c,CAN將被作為網絡設備進行操作,在之后應用程序的初始化中添加如下代碼加載CAN模塊并配置波特率和始能CAN,便可以像操作網口設備一樣操作CAN設備了。
3.3Linux應用程序設計。應用程序采用開源的IDECodeBlocks開發,系統設置“compileranddebuggersettings”對話框中選擇GNUARMGCCCompiler,Linkersettings中添加-lpthread-ljpeg,“Toolchainexecutables”中添加交叉編譯工具。經過編譯生成的二進制可執行程序通過共享文件夾將其拷貝到虛擬機外部的Windows系統上,再通過SSH工具將可執行文件上傳到板卡上,在板卡上對文件再次授權后,便可以在板卡上執行了。終端的應用程序采用C語言設計,多線程編程,為了增強魯棒性,添加了軟件看門狗,通過操作/dev/watchdog設備,設置超時時間,當定時器超時,系統自動執行復位操作。4G模組初始化完成后,會生成一個虛擬網卡,應用程序中可直接通過socket套接字來進行網絡編程,在終端上構建了一個TCP客戶端,和云平臺的TCP服務器進行報文信息交互,實現本地信息上傳和遠程指令的接收和執行。定位模塊初始化完成后,會輸出NEMA-0183報文,應用程序中開辟了一個線程進行定位信息的解析,解析結果將通過消息隊列傳遞給TCP客戶端。煙霧傳感器通過數字IO接到i.MX287上,當連續三次監測到TTL電平為低時,立即點亮告警燈并驅動告警喇叭,同時將信息上報給云平臺。攝像頭模塊通過調用opencv庫進行抓拍駕駛員位置,生成的圖片放到指定路徑下,應用程序將自動定時將圖片通過FTP上傳到云服務器上。
3.4云平臺監控運行效果。我們在阿里云服務器上基于QT開發了可擴展的車輛遠程監控平臺,可以實時查看網絡狀態、車輛位置、車內溫度、是否有可燃氣體等信息,支持遠程重啟設備,支持OTA更新固件,平臺運行效果如圖6所示。
4總結與展望
本文設計的汽車監控終端功能強大,可以對突發狀況進行預警和上報,無人值守幫助節省了人力成本[6],同時多車部署的情況下可以大大提高監控效率。由于自研的底板接口豐富,后面將嘗試接入更多的傳感器,便于云端可遠程掌握更多的車況信息。目前該終端已經在我公司內部開始小批量安裝試用,運行穩定可靠,未來充滿商用價值。
作者:付建寬 張慶余 張蘇林 單位:中汽數據(天津)有限公司