雖然手動報站器使用比較方便,但是因為駕駛員需要在保證安全駕駛的前提下進行報站,所以經常出現報站不及時,甚至錯報、漏報的現象,而且讓駕駛員在駕駛過程中進行報站也存在安全隱患。采用自動報站的方式可以大大減輕駕駛員的工作量,促進公交系統的現代化進程。要實現自動報站,需要實時測出公交車的位置,以確定公交車是否已經到達站點。利用GPS可以確定公交車的地理位置,只需把當前位置同公交站點的位置數據(經、緯度)相比較,就可以知道公交車是否到達站點,使得報站系統具有一定的智能性。這種基于GPS的智能報站系統能夠杜絕駕駛員駕駛過程中因兼顧報站器而帶來的隱患。特別適合因汽車行業高速發展而導致交通問題日益嚴峻的我國國情,還可以在重點線路上加入對城市景點風貌的相關介紹。該系統在GPS導航領域和商業領域都有著非常大的潛力,具有廣闊的發展前景。
1 系統方案
基于GPS的公交車智能報站系統是移動通訊技術和GPS技術的結合,整個系統由S3C24l0ARM9(進階精簡指令集機器)開發板、SIM548CGPS/GPRS模塊、語音播報模塊、AT89S52單片機以及OCMJ5X10B的LED(發光二極管)背光寬溫黃綠屏等器件組成。GSM/GPS模塊由GPS分模塊與GSM(全球移動通訊系統)分模塊組成。GPS模塊負責GPS數據接收。公交車在行進過程中,GPS模塊的實測信息同已存儲的位置信息進行比較即可進行自動報站,無需人為干預,還可實現在固定位置播放某些特定信息,如乘車提示、廣告信息等。GSM模塊用于公交車與調度室之間的數據通訊,實現公交車的聯合調度,實現調度中心對公交車的調度功能。
語音播報模塊負責語音播放,提供進出站以及提示信息等語音的播放。單片機模塊控制按鍵掃描以及LCD顯示。
1.1 硬件設計
系統硬件部分主要由S3C2410ARM9開發板、GPS/GSM模塊、功放模塊、顯示模塊、語音播放模塊及相應的外圍電路組成。GPRS模塊和GPS模塊均通過RS232(串口)與ARM處理器相連,而LCD(液晶顯示器)模塊則由單片機控制通過串口與ARM通訊,語音播放模塊通過IIS(InterICSound)、SPI(串行外設接口)與ARM通訊。硬件連接方式如圖1所示。
圖1 系統硬件結構
GSM/GPS模塊采用SIMCOM公司的GPS/GSM模塊,該模塊是一款四頻GSM/GPRS(通用分組無線服務技術)無線模塊,同時支持SiRFStarIIIAGPS技術。
GSM/GPRS與AGPS技術的整合使得該模塊可以滿足GPS跟蹤、導航、車輛船舶等設備和資產的監控管理以及其他GPS的應用。鍵盤掃描和屏幕顯示由單片機做數據處理。鍵盤顯示板主要實現鍵盤掃描、液晶屏幕的顯示并與ARM處理器模塊進行通訊。硬件系統整體框圖如圖2所示。
圖2 系統組成
1.2 軟件總體設計
系統的主要功能由ARM控制,采用C語言進行編程,采用多線程處理相關功能模塊。執行相關過程如下:
系統初始化完成后,依據GPS定位信息和系統存儲的線路信息計算位置、報站和讀取相關信息,并由ARM控制車內的顯示模塊進行顯示、語音播放以及向數據中心進行數據傳送。
2 設計實現
2.1 系統初始化
在系統運行之前,必須用軟件程序對各部分進行初始化。初始化包括以下幾個部分:
ARM以及系統初始化;
顯示按鍵模塊初始化;
外部器件、接口初始化:主要是GPS、GPRS和語音芯片等設備的初始化;
軟件系統的初始化:設置全局變量、指針和數組、數據結構以及公交信息初始化。
系統軟件部分主要是在主程序中檢測GPS信息,確定公交車當前的地理位置,然后決定是否播放語音信息。同時還需要實現按鍵所要求的功能,如切換到手動播報等。本系統的軟件部分開發工作是基于Linux開發環境實現的。根據系統要完成的功能和各個模塊的運行情況,主程序部分采用了多線程以及消息隊列的方式,可以及時接收GPS數據。
因為只使用GPRMC幀的數據,串行通訊的數據量不大,通訊及數據處理過程比較快,系統能夠及時播放報站及其他語音信息。公交車途經的各站點的經緯度數據需要預先測量好,并存放到系統的數據區,作為對比參考使用。GPRS的信息通過串行口傳遞,采用查詢法,按鍵也使用查詢方式進行接收,以確定按下的是哪個功能鍵。軟件采用C語言編寫,調試成功后燒錄到Flash中,實現脫機運行。
2.2 GPS模塊
由于該GPS模塊設置信息掉電丟失,在每次系統啟動時均要對該GPS模塊進行初始化。將模塊設置成每秒鐘輸出一次GPS信息。
系統啟動后,模塊接收GPS信息,然后解析出GPS信息,根據解析出來的經緯度信息與數據區中存儲的站點信息比較,計算出實際距離。如果距離到達閥值時,啟動GPS報站中斷。
該GPS模塊接收模塊遵循NMEA.0183協議,可以輸出多種格式的數據幀,均以MYM開頭。輸出數據采用的是ASCII碼字符,內容包含了緯度、經度、速度、日期、航向及衛星狀況等信息。幀格式達10余種,該系統所使用的僅限于$GPRMC定位數據幀格式。
系統啟動后,通過串口對GPS模塊進行設置,由于系統對實時性要求不高,將GPS設置為每秒鐘輸出一次RMC數據。提取GPRMC語句的思路是設置一個數據緩沖區,把接收到的GPS數據都放入這個緩沖區,當緩沖區滿了的時候就在緩沖區中查找是否接受到GPRMC定位語句,如果沒有接收到則重新接收GPS數據。如果找到了GPRMC定位語句則還要判斷該語句在緩沖區中的位置離緩沖區的最大字節數是否大于62個字節(因為本程序中需要的GPRMC定位語句所包含的字節數為62),然后通過多程序提取相關經緯度、時間和速度等信息并通過數據處理線程進行相關處理。系統工作流程如圖3所示。
圖3 系統工作流程
2.3 GPRS無線通訊模塊
由于GSM模塊內嵌TCP/IP協議,可以直接調用AT命令與服務器通過TCP、UDP通訊。無線通訊分為上行數據轉換模塊和通訊模塊2個模塊。
上行數據轉換模塊的主要功能是把接收到的GPS數據或是相關的狀態信息轉換成約定好的數據格式以便同主信息中心的通訊。該模塊會判斷需要轉換的數據是GPS數據信息還是相關狀態信息或是二者都有,然后選擇相應的轉換程序。由上面的介紹可以知道接收到的GPS數據都是順序存放在數據緩沖區當中的,需要什么數據就到緩沖區中相應的位置提取就可以了。數據都是以字符形式存放的,所以實際要用的時候必須先轉換成整形數據。
下行數據轉換模塊的功能與上行數據轉化模塊的功能相反,它將主信息中心發送的命令進行識別后發送給車載終端,并通知用戶界面模塊顯示。
通訊模塊的主要任務是完成車載終端與監控中心的通訊,它既可以通過GPRS網絡實現與主信息中心的無線通訊。如果車載終端與上位機的距離隔的很遠可以直接通過GPRS網絡與監控中心進行連接,而且通過SIM548C模塊連接GPRS網絡與監控中心連接也非常方便,只需向GPRS模塊發送幾條AT命令就可以了,但是監控中心必須有因特網的固定IP。啟動車載終端的同時SIM548C模塊也會被啟動,這是模塊會自動連接上GPRS網絡進入命令模式。撥號成功以后就連接上了GPRS網絡了,然后對與SIM548C模塊連接的串口進行讀寫操作就可以實現與監控中心的無線通訊。
在測試中發現,由于無線信號存在差異,在某些網絡信號較差的地方容易與主信息中心失去網絡連接。為解決這一問題,在系統中采用多線程監視網絡連接狀態,一旦失去網絡連接,立即與主信息中心重新連接。
2.4 語音播放模塊
語音播放采用飛利浦SPI接口音頻芯片,驅動為Linux下的聲卡設備。通過S3C2410SPI控制音頻芯片,通過IIS傳送音頻數據,最終將音頻芯片驅動成系統下的標準聲卡設備。
在語音報站時,需要為公交車上的喇叭提供語音信號,功放電路采用MAXIM功放模塊,該功放模塊采用單端輸入的方式,輸入的負端直接接地。
該功放模塊為單聲道/立體聲、D類音頻功率放大器,能向8立體聲負載提供高達221W功率,或向單聲道4負載提供高達142W功率,效率高達87%。該功放模塊兼具D類放大器的效率和AB類放大器的性能,無需大體積散熱器,降低了功耗。該功放模塊采用+10~+18V單電源供電,可驅動BTL配置的負載。
用于播放報站、廣告和信息等語音的播放器選用基于開源的播放器,在源代碼的基礎上進行修改,形成適合播放短小音頻的播放線程,為系統體統音頻播放功能。
2.5 顯示按鍵模塊
鍵盤掃描和屏幕顯示由51單片機做數據處理。
鍵盤顯示板主要實現鍵盤掃描、液晶屏幕的顯示并與ARM處理器模塊進行通訊。
顯示按鍵模塊通過串口與數據處理模塊通訊,將掃描到按鍵發送給數據處理模塊進行處理,同時接受數據處理模塊的顯示數據命令,在相應的液晶屏幕位置顯示數據,從而實現車載報站系統的人機交互功能,實現公交車的調度管理功能。
基于GPS和GPRS的公交自動報站系統,具定位功能,GPRS無線通訊功能,能實現自動報站、調度、信息收發和中心通訊,具有USB接口等優點。
大大降低了公交員工的勞動強度,提高了公交管理的科學性。
3 結語
公交車載GPS智能報站系統采用GPS定位技術、無線通訊技術,具有體積小、播報準確等特點。
能實現自動報站、調度、信息收發和中心通訊等功能。通過USB接口可使系統存儲多條線路,方便公交車臨時更換運營線路;利用按鍵和廣播等作為人機交互界面,方便乘客接收相關信息;可提供廣告等增值業務。系統為建立完整的智能公交調度管理系統提供了關鍵的公交車載系統。