劉濤 肖磊



【摘 要】為了解決一些單位員工在上下班路上等待班車,因不能及時獲取班車當前的運行位置,造成時間浪費或者錯過班車等問題,設計了一種基于GPS和GPRS技術的班車定位系統,結合手機電子地圖,來實現車輛的實時定位,用戶可以通過手機地圖實時查看車輛的位置信息。
【關鍵詞】車輛;GPS;電子地圖;定位
【Abstract】Many employees often waste a lot of time or miss the bus when they waiting for the vehicle, because they cannot access to the bus position timely. This paper designed a system based on GPS and GPRS technology, combined with the mobile phone map, to achieve real-time positioning of the vehicle, the user can view real-time vehicle location information through the mobile phone map.
【Key words】Vehicle; GPS; Electronic map; Positioning
0 引言
很多學校和企事業單位都有自己的班車,會根據員工的居住地點,設置不同的線路和站點。比如,作者所在的單位,有早、中、晚三班班車,早班和晚班班車又分為三條不同的線路,每條線路有兩輛班車,設置6至10個站點。在道路擁堵及極端天氣情況下,經常會發生班車不能按照預定時間到達站點的現象。而欲乘坐班車的人員可能并不知道班車的運行情況,比如,在預定的時刻,班車未按時出現,這種情況究竟是班車還未到達,還是已經開過站點了,如果班車未到距離本站的距離還有多遠,這種情況往往會造成乘車人員的焦急。如果能夠實時采集班車的運行位置,并通過手機地圖進行顯示,那么用戶就可以方便的查看班車的運行狀態,獲取班車的位置信息,以便決定是否繼續等待,還是選擇乘坐其他交通工具。本文設計了一種基于單片機和GPS定位技術的車載終端,實時獲取車輛的經緯度信息,并通過GPRS網絡將數據發送到服務器端,服務器監控程序接收數據并處理后,將數據存放到數據庫。用戶可以通過手機APP訪問服務器,系統會根據不同線路不同班車,在電子地圖上實時顯示車輛當前的運行位置。
1 系統整體架構
系統的架構主要分為三個部分:車載終端、服務器監控程序、手機客戶端,如圖1所示。
車載終端放置在班車上,上面帶有GPS模塊,用來接收GPS衛星信號,獲取車輛的經緯度信息,并通過GPRS網絡傳送至Internet網絡,最終傳送至服務器端[1]。服務器監控程序接收到車輛的數據后,會進行坐標的變換,轉換成百度地圖坐標,并存儲到數據庫中。手機客戶端需要安裝一個APP,可以選擇不同的班車路線,定時向服務器發送查詢請求,服務器會返回當前的車輛經緯度,并在電子地圖上實時標注出來。
2 車載終端
2.1 硬件設計
車載終端主要由單片機、GPRS模塊、GPS模塊、串口模塊、電源模塊、LCD顯示屏組成[1]。
其中,單片機采用8051系列STC12C5A60S2單片機,是整個終端設備的控制中心,它有兩個全雙工串行通信接口(UART1、UART2)。GPRS模塊采用SIM900B,它是一款新型無線模塊,可實現語音、SMS、數據的傳輸,并且功耗很低[2]。SIM900B與單片機是通過UART1串口通信的。GPS模塊采用瑞士ublox NEO模塊,定位精度可以達到2.5m,它與單片機通過UART2串口通信。RS-232串口主要用來與PC通信,實現單片機程序的下載,GPS模塊采集的數據也可以通過該串口直接發送到上位機。LCD液晶采用 NOKIA5110,可以用來顯示車輛的經緯度、速率、溫度等信息。車載終端的工作原理是:GPS模塊采集車輛的經緯度信息,通過UART2串口傳送給單片機,單片機通過UART1串口發送給SIM900B模塊,SIM900B模塊采用GPRS方式發送到遠端的服務器監控程序。
2.2 GPS信號處理
系統上電后,GPS模塊每隔固定的周期就會返回以字符‘$開頭的一定格式的數據[3],如$GPRMC,022451.00,A,3658.87945,N,11710.19702,
E,0.768,316.57,131115,A*63,其中GPRMC代表推薦的最小定位信息。GPRMC數據格式為:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh。其中:<1>代表時間;<2>代表定位狀態,如果為A,則表示定位有效,數據可以使用,如果為V,表示定位無效,數據舍棄;<3>代表緯度;<4>代表緯度半球;<5>代表經度;<6>代表經度半球;<7>代表地面速率[3]。
其中,經緯度為度度分分.分分分分(ddmm.mmmm)格式,在實際計算中需要轉換成度分秒的格式。如接收的GPS信號中緯度是:3658.87698,計算步驟如下:
1)計算度
3658.87698/100=36.5887698
可以得到36度
2)計算分
3658.87698-36*100=58.87698
可以得到58分
3)計算秒
58.87698-58=0.87698
0.87698*60=52.6188
可以得到52秒
所以緯度是:36度58分52秒。
2.3 GPRS數據發送
為了區分不同的車載終端,需要為每個終端增加標識符,并與經緯度信息、速率等一起進行打包,生成一個新的字符串,通過GPRS模塊發送到服務器監控中心。封裝后的數據格式為:CarID,1,Lat:36.588640, Lon:117.102200,Spd:45.863950,Y。其中,CarID代表車輛的標識符,每個終端是唯一的,Lat代表緯度,Lon代表經度,Spd代表速率,Y代表字符串結束符。
GPRS模塊與服務器之間的通信協議采用UDP協議。TCP是一種面向連接的協議,可以提供可靠的數據傳輸,但是以增加網絡資源消耗作為代價,UDP是面向非連接的協議,使用UDP連接,當網絡擁塞時,會丟棄部分數據包,但可以改善接收數據滯后的情況。班車定位系統對數據的實時性要求很高,超過一定時間的數據就沒有參考價值了[4],因此我們采用UDP協議。
3 服務器監控程序
3.1 主要功能
服務端主要實現三個功能:(1)與不同車載終端的GPRS模塊建立UDP連接,實時接收車輛的經緯度信息,并進行解析、坐標轉換、存儲,如圖3所示;(2)響應手機客戶端查詢請求,定時向客戶端返回班車經緯度信息;(3)存儲車輛、班車路線等基本信息。
3.2 系統設計
服務器監控程序采用java語言實現,采用Struts+Spring+Ibatis的框架,使用MySQL數據庫。
為了便于系統維護,將大部分處理邏輯放到服務器端實現,手機APP界面上的一些菜單數據也放到數據庫中管理,這樣如果APP界面有改動,比如班車路線、發車時間等發生變化,就不需要修改客戶端程序,只需要修改服務器端程序,或修改數據庫中的數據就可以,減少用戶更新客戶端的次數。
3.3 坐標轉換
GPS模塊采集的經緯度屬于地球坐標,即WGS-84坐標,而我們國家出于安全考慮,將地球坐標重新進行加密,形成火星坐標。由于我們采用的是百度地圖,需要在火星坐標的基礎上進行二次加密,形成百度地圖上的坐標。坐標轉換順序如圖4所示。
4 手機客戶端
手機端應用程序(APP)基于Android系統開發,整個系統的界面分為三部分:登錄界面、線路選擇界面和地圖定位界面。登錄界面如圖5所示。
線路選擇界面如圖6所示。用戶登錄手機APP后可以選擇查詢的路線,在地圖定位界面會用圖標標出各個站點,繪制出該路線車輛的運行軌跡,及車輛當前的位置,并定時進行更新,用戶可以很方便地查看該線路班車是否到達本站等信息,如圖7所示。
5 系統測試結果
通過對不同線路、不同時間的班車進行真實測試,定位誤差基本在3m以內,完全可以達到系統的需求。
6 結束語
該系統的設計與實現,可以極大的解決各企事業單位、學校等人員乘坐班車的問題,方便乘客及時查詢車輛的實時位置,減少不必要的等待,節省花費在上班路上的時間,提升企業的人為關懷。后期系統還可以擴展更多的功能,比如車內溫濕度的監測、車輛到達站點的時間預估、車內視頻監控、歷史軌跡回放等。
【參考文獻】
[1]劉爽,賈傳熒,賈銀山,馬文耀.基于GPS/GSM和電子地圖的車輛定位系統設計與實現[J].遼寧石油化工大學學報,2005,25(1):82-85.
[2]李濤,馬殷元,楊東.基于STM32的GPRS遠程監測終端設計[J].電子世界,2012.06:126-127.
[3]郭濤,郝亮,曹景勝,王群,于繼開.基于GPS的汽車電動助力轉向模擬系統設計[J].汽車工程師,2014,12:34-37.
[4]郭龍.基于GPS/GPRS車輛遠程監控系統車載裝置的設計[D].南京:東南大學,2007.
[責任編輯:王楠]