引言 面對龐大的汽車市場以及隨著全國各省市高速公路路網的建設與完善,對交通管理信息化的要求越來越高,gps車載系統的潛力不可估量,其發展前景比較樂觀。日本和西方各大公司都參與了這場高科技的角逐。各發達國家的很多生產商都加快了車載導航系統的研究步伐。隨著嵌入式技術的發展,很多資源不足的瓶頸問題都很大程度上得到了解決。車載定位系統由車載定位終端、無線通信鏈路和車載監控管理系統三部分組成。其主要功能是將移動目標的動態位置(經度和緯度)、時間和海拔等對用戶有用的信息,通過無線通信鏈路傳送到監控中心,而后在電子地圖上對移動目標的運動軌跡進行顯示,并對車輛的準確位置、速度、運動方向和車輛狀態等用戶感興趣的參數進行監控和查詢,為調度管理提供可視化依據,提高車輛運行效率,還能起到節能減排的作用。也在一定程度上起到保護地球的作用。本文將gps定位技術應用于氣車,與現有定位技術組合起來共同完成定位監控任務,將大大提高定位準確性及安全性,同時能夠降低資金投入,具有很廣闊的發展空間。 系統總體設計 系統硬件的結構設計 車輛監控系統由車載端(包括arm工控機、觸摸屏、gps接收模塊和電源等)、通信系統(gprs)、監控中心三大部分組成。車載端的gps模塊實時接收全球定位衛星的位置、時間等數據,一方面發送給車內的arm微型工控機,得到車輛的當前位置并且在電子地圖上顯示:另一方面,數據將通過gprs終端模塊發送到遠程監控中心服務器,使得監控中心能實時得到所有車輛的位置信息,給車輛的安全監控以及遠程凋度提供了基礎。通過spi接口與can總線相連,利用can總線掛接傳感器,檢測汽車主要技術參數,can總線模塊可以使本系統與其他車載模塊的連接,完成收集車輛的狀態信息以及進一步控制。can總線模塊主要包括can總線的控制器和收發器,在這里分別選用的是microchip公司的mcp2510和飛利浦公司的pca82c250。其中,can總線控制器mcp2510實現了can總線的協議,can總線收發器pca82c250提供協議控制器和物理傳輸線路之間的接口。由于can總線控制器mcp2510具有spi接口,因此,系統中將其與s3c2440的spi0相連。故障檢測模塊主要是對汽車的主要技術參數進行檢測,并顯示到lcd顯示器上,如果檢測到故障,會發出報警信號。本文主要檢測的技術參數包括燃油消耗量、制動力、轉向力、發動機溫度、冷卻液溫度、前照燈,以及車內噪聲和尾氣等方面。該模塊主要是通過各種傳感器把各種信號轉換為電信號,再利用信號處理電路把電信號進行相應的處理,使其能與can總線模塊進行數據傳輸。車載端的硬件組成框圖,如圖1所示。 圖1 車載端的硬件組成框圖 應用程序總結構應用程序的總體流程圖如圖2所示。由于gprs模塊和gps模塊都是通過串口和監控終端連接的,程序系統初始化的工作就是對串口進行初始化,使串口按gprs及gps模塊的要求工作。之后創建共享內存是為gprs通信子進程與gps子進程之間的通信做準備。gps子進程負責從串口接收gps信息并把這些信息寫入共享內存內,gprs子進程則將共享內存內的gps信息通過網絡送到遠方的監控服務器。 為了使arm上的應用程序能夠處理gps接收到的導航信號,要編寫gps的驅動程序。 這個gps驅動程序也是屬于字符型驅動程序,首先了解嵌入式開發中應用程序、庫、內核、驅動程序的關系:應用程序調用應用程序庫函數完成功能;應用程序以文件形式訪問各種資源;應用程序函數庫的一部分直接完成功能,一部分函數通過系統調用由內核完成,內核處理系統調用,調用設備驅動程序,設備驅動程序直接與硬件通信。如圖3所示 open= s3c2440_gps_open,.release= s3c2440_gps_release=s3c2440_gps_release, .ioctl=s3c2440_gps_ioctl};繼續向下寫,gps_class=class_create(this_module,device_name);在/sysfs目錄下創建這個設備的類。再是注冊這個設備的類,如device_create(gps_class,null,mkdev(gps_major,0),null,device_name)。 gps應用程序即定位功能的實現 要實現gps的定位必須先要對gps數據包進行解析,gps上電后,每隔一定的時間就會返回一定格式的數據,數據格式為$信息類型,每行開頭的字符都是$,接著是信息類型,后面的是數據,以逗號分開,完整的數據類型如下:$gprmc,080655.00,a,4546.40891,n,12639.65641,e,1.045,328.42,170809,,,a*60信息類型為:gpgsv:可見衛星信息、gpgll:地理定位信息、gprmc:推薦最小定位信息、gpvtg:地面速度信息、gpgga:gps定位信息、gpgsa:當前衛星信息、這里我只解析gprmc和gpgga的信息。一.gprmc數據詳解:$gprmc,《1》,《2》,《3》,《4》,《5》,《6》,《7》,《8》,《9》,《10》,《11》,《12》*hh《1》utc時間,hhmmss(時分秒)格式《2》定位狀態,a=有效定位,v=無效定位《3》緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)《4》緯度半球n(北半球)或s(南半球)《5》經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)《6》經度半球e(東經)或w(西經)……。 最后編寫代碼,把經/緯度解析出來,對于gpgga類型數據,也是一樣,先了解每一位的含義,再寫代碼把海平面高度和大地水平面高度等數據解析并顯示出來。 gprs通信模塊實現 gprs模塊是借助gprs無線網絡實現數據的無線傳輸,從而在不同的車輛或車輛與控制中心之間架起溝通的橋梁,所以軟件的功能主要是建立無線連接,按照gprs通信協議傳輸數據。gprs模塊的通信主要是通過串口驅動實現,在嵌入式linux內核中已經提供了對串設備的支持,因此在配置內核編譯選項時,只需要選中對串口設備的支持,就可以實現對gprs模塊的串口數據通信功能。為了實現與internet的通信,還需要在配置內核編譯選項時選中ppp和tcp/ip協議。這樣一旦網絡連接建立,就可以使用應用程序來實現網絡數據的通信。本系統數據鏈路層采用ppp協議,它是一種面向字符的協議,是為在兩個對等實體間傳輸數據包連接而設計的,使用可擴展的鏈路控制協議lcp來建立、配置和測試數據鏈路。用網絡控制協議族ncp來建立和配置不同的網絡層協議,并且允許采用多種網絡層協議。一個ppp會話分四個步驟:建立連接、連接質量控制、網絡層協議配置和連接終止。 嵌入式linux系統內核源自于linux內核,并保留了對tcp/ip以及其他的網絡協議的支持。在嵌入式linux系統上編寫網絡應用程序與在linux上編寫網絡應用程序沒什么大區別,通常只需要做很小的修改就可以移植到嵌入式linux系統上。至此,gprs模塊完整地集成到嵌入式終端中。 can總線驅動程序要完成的報文發送、接收等任務都是圍繞can總線控制器展開的,因此驅動程序主要是對控制器mcp2510內部寄存器進行操作。can總線控制器mcp2510的初始化按照以下步驟進行:(1)軟件復位,進入配置模式;(2)設置can總線波特率;(3)關閉中斷,設置id過濾器;(4)切換mcp2510到正常狀態;(5)清空接收和發送緩沖區;(6)開啟接收緩沖區,開啟中斷。 實驗結果 本實驗結果能達到基本的要求,參見圖4,圖的右上角是經/緯度。本系統還不完善,還有很多實用的功能有待進一步開發。 結論 該系統能夠通過gps和gprs實現車輛定位以及車輛與控制中心之間的數據通信,還能夠通過can總線檢測汽車主要技術參數,為交通道路的智能管理以及汽車的安全駕駛提供了可靠保 |