基于GPS的公交車(chē)自動(dòng)報站系統的設計
目前城市公交系統飛速發(fā)展,且已基本都是無(wú)人售票,報站也由原來(lái)的售票員報站改為由司機手動(dòng)控制報站。但是由于公交司機既要開(kāi)車(chē),又要兼顧手動(dòng)按鍵報站,所以時(shí)常出現誤報、漏報等現象,不能滿(mǎn)足公交系統的要求;另外,由于司機開(kāi)車(chē)時(shí)為報站分散精力,也對公交的安全運行埋下了隱患。應用自動(dòng)報站系統即可以節省員工開(kāi)支,增強公司效益,又可以利用報站器播報標準的普通話(huà)站名,使各城市更利于交流和發(fā)展。
GPS衛星定位語(yǔ)音報站系統具有定位精度高、語(yǔ)音自動(dòng)播報等特點(diǎn)。目前市場(chǎng)上已有基于GPS的公交車(chē)自動(dòng)報站系統的試用,但這些系統都是基于各種單片機為處理芯片的。
車(chē)載設備安裝于公交車(chē)上,其工作環(huán)境比較惡劣,因此對設備的結構也有一定的要求,本系統采用工作穩定可靠、抗干擾能力強的ARM9處理器。嵌入式系統固化于存儲器中,其可靠性高、成本低、體積小、功耗低。鑒于此,本研究設計了一種基于GPS的嵌入式公交車(chē)自動(dòng)報站系統,可以實(shí)現公交車(chē)到達站點(diǎn)后的實(shí)時(shí)報站,預報下一站的信息,播放語(yǔ)音、視頻等信息,結合LCD進(jìn)行報站顯示,讓乘客可以更方便地了解周邊信息,也可以降低司機的勞動(dòng)強度。
1 GPS技術(shù)概述
全球定位系統GPS(Global Positioning System)是美國從20世紀70年代開(kāi)始研制,歷時(shí)20年,耗資200億美元,具有海、陸、空全方位實(shí)時(shí)三維導航與定位能力的新一代高精度衛星導航與定位系統。GPS定位的基本原理是根據高速運動(dòng)的衛星瞬間位置作為已知的起算數據,采用空間距離后方交會(huì )的方法,確定待測點(diǎn)的位置。假設t時(shí)刻在地面待測點(diǎn)上安置GPS接收機,可以測定GPS信號到達接收機的時(shí)間?駐t,再加上接收機所接收到的衛星星歷等其他數據可以確定以下4個(gè)方程式,如圖 1 所示。
2 GPS通信的NMEA0183協(xié)議
通常GPS模塊支持兩種格式:二進(jìn)制消息格式和NMEA-0183 ASCII消息格式。前者的通信協(xié)議為9 600 b/s、無(wú)校驗、8 bit數據位、1 bit停止位;后者的通信協(xié)議為4 800 b/s、無(wú)校驗、8 bit數據位、1 bit停止位。由于NMEA-0183 ASCII格式直觀(guān)、易于識別及應用, 因此本設備采用ASCII格式。目前GPS廠(chǎng)商遵循NMEA0183協(xié)議提供串行通信接口,串行通信參數為:波特率=4 800 b/s,數據位=8 bit,停止位=1 bit,無(wú)奇偶校驗。
GPS與系統通信時(shí),通過(guò)串口發(fā)送數據。系統接收到的GPS數據主要由幀頭、幀尾和幀內數據組成。根據數據幀的不同, 幀頭也不相同, 主要有 GPGGA、 GPGSA、GPGSV以及 GPRMC等。各類(lèi)數據幀分別包含了不同的信息。
由于幀內各數據段由逗號分割, 因此在處理緩存數據時(shí)通過(guò)搜尋ASCII 碼“ ”來(lái)判斷是否是幀頭。在對幀頭的類(lèi)別進(jìn)行識別后, 再通過(guò)對所經(jīng)歷逗號個(gè)數的計數判斷出當前正在處理的是哪一種定位導航參數, 并做出相應處理。
如果與衛星的通信正常,則可以接收到的數據格式如下:
GPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6E
數據說(shuō)明如下:
GPRMC:代表 GPS 推薦的最短數據;204700:UTC_TIME 24h制的標準時(shí)間,按照h/min/s的格式;
A:A或者V,A表示數據OK,V表示一個(gè)警告;
3403.868:LAT緯度值,精確到小數點(diǎn)前4位,后3位;
N:LAT_DIR N表示北緯,S表示南緯;
11709.432:LON經(jīng)度值,精確到小數點(diǎn)前5位,后3位;
W:LON_DIR W表示西經(jīng),E表示東經(jīng);
下面是一個(gè)接收不到衛星信號的例子:
GPRMC,204149,V,…,170698,*3A
3 報站系統模塊設計
3.1 GPS數據解析模塊
在接收進(jìn)程receive中收到“n”之后,表示收到一條完整的信息。在gps_parse子程序中實(shí)現GPRMC格式數據的解析,show_gps子程序中實(shí)現數據的顯示。
從GPS原始采集的數據可以解析出年月日、時(shí)間、狀態(tài)、緯度經(jīng)度以及高度等信息,然后可以通過(guò)GPS的報站程序,按照設定的格式,只要條件滿(mǎn)足就執行報站程序及數據的顯示。
3.2 串口通信的設計
打開(kāi)串口:打開(kāi)串口是通過(guò)標準的文件打開(kāi)函數來(lái)實(shí)現的。
串口設置:最基本的設置串口包括波特率設置、校驗位和停止位設置。串口的設置主要是設置struct termios結構體的各成員值,關(guān)于該結構體的定義可以查看/arm2410s/kernel-2410s/include/asm/termios.h文件。
讀寫(xiě)串口:設置好串口之后,讀寫(xiě)串口很容易,把串口當作文件讀寫(xiě)就可以了。
讀取串口數據:使用文件操作read函數讀取,如果設置為原始模式(Raw Mode)傳輸數據,那么read函數返回的字符數是實(shí)際串口收到的字符數??梢允褂貌僮魑募暮瘮祦?lái)實(shí)現異步讀取,如fcntl,或者select等操作。
關(guān)閉串口:關(guān)閉串口就是關(guān)閉文件。
3.3 語(yǔ)音報站的設計
語(yǔ)音報站是基于GPS的自動(dòng)報站系統的核心部分,只有實(shí)現了語(yǔ)音報站,整個(gè)系統才算完成。實(shí)驗箱中的音頻驅動(dòng)程序和視頻驅動(dòng)程序都是一個(gè)獨立的程序,要想在GPS的自動(dòng)報站程序中使用音頻驅動(dòng)程序實(shí)現語(yǔ)音報站,就必須用一個(gè)函數來(lái)實(shí)現程序的調用。System函數就有這樣的功能。System函數已經(jīng)被收錄在標準C庫中,可以直接調用。
語(yǔ)音報站程序主要是通過(guò)system函數調用音頻驅動(dòng)程序來(lái)實(shí)現的。如果采集信號的狀態(tài)為“A”,就可以進(jìn)行數據的對比,如果在站點(diǎn)范圍內就用system函數調用一段語(yǔ)音,如果出了站點(diǎn)范圍就調用另外一段語(yǔ)音。站點(diǎn)具體的經(jīng)度和緯度可以用數組來(lái)定義,這樣可以方便修改,也更加直觀(guān)、簡(jiǎn)單。站點(diǎn)的范圍通過(guò)一個(gè)方框限定,經(jīng)度和緯度在站點(diǎn)的100 m范圍內。站點(diǎn)的范圍也可以用一個(gè)圓來(lái)限定,即到站點(diǎn)的距離小于d的范圍,兩個(gè)站點(diǎn)間的距離可以用公式計算。
3.4 多線(xiàn)程的應用
多線(xiàn)程程序作為一種多任務(wù)、并發(fā)的工作方式,有以下的優(yōu)點(diǎn):(1)提高應用程序響應;(2)使多CPU系統更加有效;(3)改善程序結構。LIBC中的pthread庫提供了大量的API函數,為用戶(hù)編寫(xiě)應用程序提供支持。在本程序的代碼中大量使用了線(xiàn)程函數,如pthread_create(線(xiàn)程創(chuàng )建函數)、pthread_join(等待一個(gè)線(xiàn)程的結束)pthread_exit(一個(gè)線(xiàn)程的結束)等。
4 系統總體設計及調試
4.1 系統總體設計
系統的軟件部分主要是GPS數據的解析和報站子程序的設計。目前軍用GPS接收機的定位精度已經(jīng)達到1 m,但是民用GPS定位系統定位精度只有10 m~20 m,而實(shí)際的公交車(chē)報站的精度只要在150 m范圍內就可以,所以本次設計中的站點(diǎn)范圍為100 m,完全可以達到設計的要求。如果是中小城市的話(huà)可以將定位的精度進(jìn)行適當的調整。
由于GPS采集信號的周期是每1 s采一次,而實(shí)際上公交車(chē)站點(diǎn)之間的距離較遠,且報站的時(shí)間需提前一點(diǎn),1 s進(jìn)行一次數據對比比較麻煩,每隔5 s進(jìn)行一次數據對比就可以了,所以程序中將數據對比的周期改成了5 s一次。公交車(chē)上還可以采用車(chē)輪計速的方法,每次車(chē)輪轉夠一定的圈數就進(jìn)行一次數據比對,這樣可以防止公交車(chē)到站停車(chē)后繼續執行報站程序。
采集到的信號狀態(tài)為“A”時(shí),執行相應的報站程序,但是有時(shí)候會(huì )出現信號不好的情況,這時(shí)就要提醒司機臨時(shí)將自動(dòng)報站改成原來(lái)的手動(dòng)報站,以防止乘客下錯站。
系統的軟件流程圖如圖2所示。
GPS公交自動(dòng)報站系統包含硬件和軟件兩部分。硬件以ARM9S3c2410x處理器為核心, 配置存儲器、I/O設備、通信模塊等必要的外設;軟件以嵌入式Linux操作系統為核心,提供應用編程接口A(yíng)PI。嵌入式系統中,軟件和硬件緊密配合,協(xié)調工作,共同完成系統預定的功能。自動(dòng)報站的硬件原理圖如圖3所示。
系統軟件部分在Linux操作系統中用C語(yǔ)言編程實(shí)現,將各模塊的程序整合到一起,配置好開(kāi)發(fā)環(huán)境,進(jìn)入GPS的目錄,用vi命令將代碼進(jìn)行編輯,然后編譯、在minicom下運行,就可以看到結果是否正確。
4.2 系統調試
檢查跳線(xiàn):確定試驗平臺擴展槽上方JP1102/JP1103跳線(xiàn)位于2、3之間,跳線(xiàn)位為EXPORT;確定GPS/GPRS模塊的JP201/JP202跳線(xiàn)位于模塊外側GPS端。
接入設備:關(guān)閉2410-S平臺,將GPS天線(xiàn)連接到GPS/GPRS模塊上,天線(xiàn)接收端置放在能良好接收室外信號的地方,將模塊插入2410-S擴展插槽。
然后運行程序,即可得到實(shí)驗結果。
本研究根據公交車(chē)報站的實(shí)際需要,設計并實(shí)現了基于GPS的公交車(chē)自動(dòng)報站系統。該系統利用嵌入式實(shí)驗設備實(shí)現了公交車(chē)的自動(dòng)報站,具有性能高、能耗低、體積小、播報準確的特點(diǎn),便于在實(shí)際運行的公交車(chē)上使用;采用先進(jìn)的衛星定位技術(shù)與語(yǔ)音播放技術(shù)相結合的方式,徹底改變了傳統公交車(chē)語(yǔ)音報站器由司機手控的方式,進(jìn)站、出站自動(dòng)播報站名及服務(wù)用語(yǔ),準確、及時(shí),完全不需要人工介入。實(shí)驗結果表明,該系統可以用于GPS信號的采集和自動(dòng)報站,但采集到的數據與真實(shí)值之間有一定的誤差,并且有時(shí)由于樹(shù)木、高樓的遮擋會(huì )導致有些路段接收GPS信號效果不佳。因此,采用數學(xué)方法(差分技術(shù))消除數據間的誤差,利用其他輔助定位系統與GPS 定位相結合進(jìn)行定位來(lái)提高定位數據的精度,將是下一步研究的主要方向。
評論