Xbee Pro和網(wǎng)絡(luò )技術(shù)的智能公交系統
公共交通具有個(gè)體交通無(wú)法比擬的強大優(yōu)勢,優(yōu)先發(fā)展城市公共交通系統是解決大、中城市交通問(wèn)題的最佳途徑。近年來(lái), 城市公交系統的智能化已成為公共交通研究領(lǐng)域的主要方向。國內現有試運行的智能公交系統大部分都采用GPS全球定位系統進(jìn)行定位, 同時(shí)采用GPRS網(wǎng)絡(luò )進(jìn)行數據傳輸。車(chē)載GPS模塊可以實(shí)時(shí)獲取位置、方向、時(shí)間等導航定位數據, 然后通過(guò)車(chē)載GPRS模塊將數據傳至監控中心, 從而實(shí)現車(chē)輛的定位和監控。監控中心則可將車(chē)輛的實(shí)時(shí)信息或公告信息通過(guò)電子站牌的GPRS模塊發(fā)送給電子站牌,以估算到站時(shí)間和距離, 然后顯示在電子站牌上。盡管現有試運行的智能公交系統定位覆蓋面廣、精度高, 可以實(shí)現車(chē)輛的全范圍定位和監控。但在實(shí)際運行過(guò)程中, 仍然存在以下不足:
◇ GPS信號在隧道和高架橋等環(huán)境下會(huì )存在盲點(diǎn);
◇ 運行中需將GPS信息通過(guò)GPRS發(fā)到監控中心, 再由監控中心通過(guò)GPRS發(fā)送顯示信息給電子站牌, 因此運營(yíng)費用較高;
◇ GPRS模塊價(jià)格昂貴, 公交車(chē)數量眾多且都必須安裝GPRS模塊, 硬件成本高;
◇ 不能實(shí)現公交車(chē)與站牌的通信, 也不能實(shí)現提前報站等服務(wù)。
1 系統總體方案
由于西安城市面積較小, 道路集中, 公交線(xiàn)路密集, 電子站牌間距大多在500米左右, 因此,監控中心沒(méi)有必要對公交車(chē)進(jìn)行實(shí)時(shí)全范圍的監控, 而只需知道公交車(chē)的站牌區間范圍便可大致定位。
為吸取現有智能公交系統方案的優(yōu)點(diǎn), 克服其缺點(diǎn), 并結合西安城市自身特點(diǎn), 本文把ZigBee短距離無(wú)線(xiàn)通信技術(shù)引入到智能公交系統中, 對國內現有試運行的智能公交系統普遍采用的GPS定位、GPRS信息傳輸的方案進(jìn)行了數據傳輸方式的改進(jìn), 改進(jìn)后的智能公交系統方案的整體架構如圖1所示。
本系統主要由公交車(chē)終端、電子站牌終端和管理監控中心服務(wù)器三部分組成。
公交車(chē)終端可根據車(chē)載GPS模塊實(shí)時(shí)定位公交車(chē)的位置信息, 并與各個(gè)站牌的位置信息進(jìn)行對比, 當其到達某個(gè)站牌時(shí), 公交車(chē)自動(dòng)語(yǔ)音報站, 同時(shí)用LCD屏顯示到站信息。
電子站牌終端和公交車(chē)終端可通過(guò)ZigBee短距離無(wú)線(xiàn)通信網(wǎng)絡(luò )進(jìn)行通信。公交車(chē)可實(shí)現提前報站。當公交車(chē)到達某個(gè)站牌后, 便把自己的車(chē)輛信息、狀態(tài)信息等打包發(fā)送給站牌。電子站牌收到管理中心的信息后, 便將公交車(chē)的位置信息顯示在站牌的電子地圖上。
管理中心服務(wù)器和電子站牌終端可通過(guò)GPRS無(wú)線(xiàn)通信網(wǎng)絡(luò )進(jìn)行通信。電子站牌終端通過(guò)GPRS模塊的無(wú)線(xiàn)聯(lián)網(wǎng), 以對收到的公交車(chē)信息進(jìn)行處理并重新封裝, 然后發(fā)送到無(wú)線(xiàn)網(wǎng)絡(luò )中。服務(wù)器端一般是連接Internet的PC機, 可通過(guò)TCP/IP協(xié)議接收互聯(lián)網(wǎng)上的信息, 同時(shí)可向電子站牌終端發(fā)送運行線(xiàn)路上公交車(chē)的實(shí)時(shí)位置信息和公告信息。服務(wù)器可通過(guò)數據庫進(jìn)行信息的管理和查詢(xún), 以方便公交公司的管理和調度。
2 系統硬件設計
2.1 車(chē)載終端的硬件組成
本系統中的車(chē)載終端硬件主要包括電源模塊或電源接入模塊、ARM處理器、RAM、FLASH、GPS定位模塊、ZigBee射頻傳輸模塊、視頻監控模塊、LCD顯示模塊、串口和調試模塊、車(chē)內人數統計模塊和語(yǔ)音模塊等。圖2所示是系統中車(chē)載終端的硬件組成框圖。
ARM嵌入式處理器是整個(gè)車(chē)載終端的核心,可通過(guò)各種接口與各功能模塊相連接。本車(chē)載終端選用韓國三星公司的一款基于A(yíng)RM920T內核的16/32位RISC嵌入式微處理器S3C2410.S3C2410的運行頻率可以達到203 MHz, 主要面向手持設備等高性?xún)r(jià)比、低功耗的應用。
在智能公交系統中, 系統定位模塊一般采用GPS-OEM ( Original Equipment Manufacture) 板。
在嵌入式車(chē)載終端系統中, 選用GPS模塊時(shí), 通常應考慮定位精度、價(jià)格、功耗、體積、抗干擾能力等幾個(gè)因素。根據以上原則, 本設計選用LEADTEK公司的GPS三代SiRF star III7855模塊來(lái)實(shí)現定位。該模塊的主要性能指標如下:
◇ 有20個(gè)并行通道, 可同時(shí)接收20顆衛星;
◇ 定位時(shí)間: 重捕時(shí)間為0.1 s, 熱啟動(dòng)<1s, 冷啟動(dòng)<42 s, 自動(dòng)搜索少于30 s;
◇ 輸出差分精度可達10米, 功耗小于1 W;
◇ 可通過(guò)RS232接口輸出NEMA-0183協(xié)議的ASCII碼語(yǔ)句, 包括GPGGA、GPGSA、GPGSV、GPRMC、GPVTG、GPGLL等;
◇ 采用5 V電源, 可通過(guò)TX、RX引腳連接一個(gè)DB9的接口來(lái)與嵌入式微處理器的串口進(jìn)行通信。
2.2 ZigBee射頻模塊
在智能公交系統中, GPS模塊只完成信息采集功能, 而在公交車(chē)到站時(shí), 還需要通過(guò)ZigBee模塊信息發(fā)送給站牌。
經(jīng)過(guò)市場(chǎng)調研發(fā)現, Freescale的MC1319x平臺功耗低、價(jià)格低廉、硬件集成度高, 而且方便二次開(kāi)發(fā), 射頻通信系統的穩定性也比較高。所以, 本設計選用了MaxStream公司與ZigBee兼容的、以Freescale MC1319x芯片組為核心的XBeePro RF模塊。XBee Pro模塊設計滿(mǎn)足IEEE802.15.4標準, 工作頻率為2.4 GHz, 其基本性能參數如下:
◇ 發(fā)送功率l00 mW;
◇ 室內傳輸距離為300 m, 室外傳輸距離為1500 m;
◇ RF數據傳輸速率為250 kbps;
◇ 在3.3 V電源下, 發(fā)送電流為215 mA, 接收電流為55 mA.
圖3所示是XBee Pro模塊的引腳排列圖, 該模塊有20個(gè)引腳。RS232接口電路板的引腳可連接到VCC、GND、DOUT和DIN引腳。其中VCC是電源引腳(2.8~3.4 V); GND接地; DIN是信號輸入引腳, 可作為UART數據輸入, 通常與處理器的UART接收端TX相連; DOUT為信號輸出引腳,可作為UART數據輸出, 通常與處理器的UART接收端RX相連。此外, 在XBee/XBee Pro模塊中還集成了一個(gè)UART接口, 該接口的內部數據控制流程如圖4所示。
當串行數據通過(guò)DIN引腳進(jìn)入XBee Pro 模塊后, 數據會(huì )存儲在DI緩沖器中, 直到被發(fā)送器通過(guò)天線(xiàn)發(fā)送出去; 當RF數據由天線(xiàn)接收后, 接收數據進(jìn)人DO緩沖器, 直到被處理。在一定條件下, 模塊可能無(wú)法立即處理在串位接收緩沖中的數據。如果大量的串行數據發(fā)送到模塊, 可能需要使用CTS流控以避免串行接收緩沖溢出。XBeePro 模塊可以通過(guò)UART 接口直接與控制器的UART接口相連, 硬件接口簡(jiǎn)單實(shí)用。
2.3 電子站牌終端的硬件組成
電子站牌終端的硬件組成與公交車(chē)車(chē)載終端相比, 主要是把公交車(chē)上的GPS定位模塊替換成了GPRS -DTU 數據傳輸單元。GF -2008AWGPRS-DTU是北京嘉復欣科技有限公司研制生產(chǎn)的GPRS無(wú)線(xiàn)數據通信產(chǎn)品, 該產(chǎn)品內置西門(mén)子MC39i GPRS模塊, 具有準確性高、環(huán)境適應性好、易于安裝和維護等特點(diǎn), 能夠為用戶(hù)提供高速、可靠、永遠在線(xiàn)的數據傳輸服務(wù)和虛擬專(zhuān)用數據通信網(wǎng)絡(luò )服務(wù), 可廣泛用于遠程抄表、環(huán)保數據采集、交通信息發(fā)布等方面。以下是GF-2008AW GPRS-DTU的主要特點(diǎn):
◇ 可實(shí)現串口透明的無(wú)線(xiàn)數據傳輸, 而且穩定可靠;
◇ 高度集成GPRS和TCP/IP 技術(shù), 可將互連網(wǎng)和無(wú)線(xiàn)網(wǎng)絡(luò )有機的結合起來(lái);
◇ 支持多種TCP/IP 協(xié)議, 如TCP、UDP、DNS、PPP、RAS 等;
◇ 按流量計費, 沒(méi)有流量不計費;
◇ 在標準RS232接口產(chǎn)品中體積最小, 適合嵌入式集成;
◇ 支持點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)、中心對多點(diǎn)的對等數據傳輸;
◇ 基于串口通訊的AT+i指令接口, 可節省開(kāi)發(fā)時(shí)間和開(kāi)發(fā)成本;
◇ 支持ALWAYS ONLINE (永遠在線(xiàn)) 模式,斷線(xiàn)可自動(dòng)重撥;
◇ 采用5~24 V / 1 A供電, 并具有節能模式。
3 ZigBee通信程序設計
3.1 ZigBee組網(wǎng)方案
由于站牌處通常會(huì )有多輛公交車(chē)同時(shí)到達,一個(gè)站牌對應多輛公交車(chē)。鑒于網(wǎng)絡(luò )節點(diǎn)較少、網(wǎng)絡(luò )結構比較簡(jiǎn)單, 本系統采用星形模型組網(wǎng)。
即把分布在公交線(xiàn)路上的電子站牌配置為ZigBee協(xié)調器, 而將到達的公交車(chē)配置為ZigBee終端設備。圖5所示是公交車(chē)與站牌的組網(wǎng)方式。當站牌上ZigBee網(wǎng)絡(luò )協(xié)調器選擇一個(gè)信道和PAN ID并啟動(dòng)時(shí), 便建立了一個(gè)ZigBee個(gè)人局網(wǎng)(PAN)。
而一旦協(xié)調器啟動(dòng)PAN, 便允許路由器和終端設備結點(diǎn)加入PAN.作為ZigBee終端設備的車(chē)載終端加入PAN時(shí), 系統將收到一個(gè)16位的網(wǎng)絡(luò )地址, 同時(shí)發(fā)送和接收來(lái)自作為ZigBee協(xié)調器的電子站牌終端的數據。PAN協(xié)調器的網(wǎng)絡(luò )地址總是0.由于站牌上ZigBee模塊的網(wǎng)絡(luò )物理地址是唯一的, 故可通過(guò)物理地址向站牌發(fā)送信息。
3.2 ZigBee模塊的API操作
XBee Pro具有空模式、接收模式、發(fā)送模式、睡眠模式和命令模式等5種操作模式。對于每一種操作模式, 還有透明方式和應用程序接口(API) 方式兩種操作方式。當工作在透明方式時(shí),模塊可替代串口線(xiàn)的作用, 并以字節為單位操作各種信息; 而當工作在A(yíng)PI 方式時(shí), 所有進(jìn)出模塊的數據均被包含在定義模塊的操作和事件的幀結構中。本文采用API操作方式。
API操作要求模塊之間通過(guò)一種結構化的接口進(jìn)行通信(數據通過(guò)一種定義好序列的幀來(lái)交互通信)。API對通過(guò)串口數據幀進(jìn)行命令發(fā)送、命令響應, 以及模塊狀態(tài)信息的傳送與接收作了規定。
。1) ZigBee發(fā)送請求
公交車(chē)到達站牌后, 應根據站牌的MAC地址將日期、時(shí)間、車(chē)號、公交線(xiàn)路、車(chē)內人數、行駛方向等信息發(fā)送到電子站牌。公交車(chē)ZigBee模塊發(fā)送模式的API幀結構定義如圖6所示。其中的Bytes6-13為站牌的MAC地址。
。2) ZigBee發(fā)送狀態(tài)。
為實(shí)現可靠傳輸, 當公交車(chē)傳送信息給電子站牌的請求完成后, 必須得到電子站牌的確認信息, 因此還必須得到電子站牌回饋給公交車(chē)的發(fā)送狀態(tài)信息。這個(gè)信息將指出數據包是否被成功發(fā)送, 或者發(fā)送失敗。如果發(fā)送失敗必須重新發(fā)送公交車(chē)的信息, 直至發(fā)送成功。
電子站牌根據公交車(chē)的MAC地址, 不斷的向PAN內發(fā)送信息, 并通過(guò)回讀發(fā)送狀態(tài)來(lái)確定是否有公交車(chē)加入網(wǎng)絡(luò ), 如果有, 則根據網(wǎng)絡(luò )地址識別公交車(chē), 并將公交車(chē)的定位信息發(fā)送到監控中心, 從而實(shí)現對GPS定位方式的補充。
其中的Bytes 9為傳送狀態(tài)信息, Bytes6、7為接收模塊的16位網(wǎng)絡(luò )地址。
(3) ZigBee接收包。
電子站牌收到公交車(chē)發(fā)來(lái)的狀態(tài)信息數據包后便進(jìn)行解析, 并通過(guò)站牌的GPRS模塊發(fā)送到監控中心。電子站牌ZigBee模塊接收模式的API幀結構定義如圖8所示。圖中的Bytes5-12為公交車(chē)的MAC地址。
3.3 GPRS網(wǎng)絡(luò )通信設計
電子站牌收到公交車(chē)發(fā)來(lái)的信息后, 將通過(guò)GPRS-DTU發(fā)送到監控中心, 然后由監控中心將所有公交車(chē)發(fā)來(lái)的信息通過(guò)Internet發(fā)送給站牌。
GPRS DTU有透傳模式、AT+i命令模式、自動(dòng)IP注冊模式、遠程維護和流控五種模式。在系統的電子站牌終端中, DTU將使用透傳模式與服務(wù)器進(jìn)行信息的交互。通過(guò)透傳模式可將電子站牌異步串口通信轉換成基于TCP/UDP協(xié)議的網(wǎng)絡(luò )通信。其主要目的是通過(guò)串行通信的簡(jiǎn)單設備實(shí)現在IP網(wǎng)絡(luò )上的通信, 而數據格式不發(fā)生任何改變。這一點(diǎn)非常重要, 由于數據格式在經(jīng)過(guò)DTU前后均不發(fā)生任何變化, 由此, 電子站牌原有的設備及軟件不用作任何升級, 就可直接應用。
DTU的透傳模式可使電子站牌客戶(hù)端在發(fā)起通信請求時(shí), 使DTU必須與服務(wù)器建立網(wǎng)絡(luò )連接。也就是說(shuō), 電子站牌下位機與服務(wù)器進(jìn)行數據傳輸時(shí), 首先是電子站牌下位機要與DTU設備的串口相連, 在DTU進(jìn)入透傳模式后自動(dòng)被調用, 并與服務(wù)器建立網(wǎng)絡(luò )連接, 當網(wǎng)絡(luò )連接建立后, DTU將自動(dòng)完成串口到網(wǎng)絡(luò )通信的轉換, 以便所有數據可透明地在服務(wù)器軟件與電子站牌下位機之間雙向傳輸。
服務(wù)器與電子站牌終端通信可通過(guò)套接字socket 來(lái)實(shí)現。首先在服務(wù)器上建立一個(gè)監聽(tīng)Socket對象, 并綁定在一個(gè)固定端口上, 然后,每當電子站牌客戶(hù)端發(fā)送一個(gè)SOCKET連接請求,服務(wù)器端就會(huì )新開(kāi)啟一個(gè)線(xiàn)程, 并在其中創(chuàng )建一個(gè)socket與電子站牌客戶(hù)端的socket通訊, 直到電子站牌客戶(hù)端程序關(guān)閉, 該線(xiàn)程結束, 然后服務(wù)器主線(xiàn)程的socket在應用程序退出時(shí)關(guān)閉。通過(guò)多線(xiàn)程的Socket程序設計, 可以實(shí)現一個(gè)服務(wù)器與多個(gè)電子站牌客戶(hù)端的通信。
以下是服務(wù)器基于socket多線(xiàn)程的具體實(shí)現程序代碼:
DWORD WINAPI AnswerThread ( LPVOIDlparam) //收發(fā)線(xiàn)程入口
{//創(chuàng )建線(xiàn)程時(shí)把服務(wù)器建立的新套接字傳給lparam
SOCKET ClientSocket = ( SOCKET) ( LPVOID)lparam;
int bytesRecv;char sendbuf [ 32] = " " ;char
recvbuf [32] ="" ;
while (1)
{bytesRecv=SOCKET_ERROR;
for ( int i =0;i < ( int) strlen ( recvbuf) ;i ++ )
{recvbuf [i] ='\0';}
while (bytesRecv==SOCKET_ERROR)
{ bytesRecv =recv ( ClientSocket,recvbuf,32,0) ;} //⑤接收電子站牌客戶(hù)端的數據
…
send ( ClientSocket,recvbuf,strlen ( recvbuf) ,0) ; //⑥向電子站牌客戶(hù)端發(fā)送數據
}
}
…
WSAStartup (MAKEWORD (2,2) ,&wsaData) ;//初始化Winsock
socket ( AF_INET,SOCK_STREAM,IPPROTO_TCP) ;//①創(chuàng )建一個(gè)監聽(tīng)socket
bind ( m_socket, ( SOCKADDR*) &service,sizeof(service)) //②綁定套接字
listen (m_socket,20) //③監聽(tīng)套接字
SOCKET AcceptSocket;
while (1) //一直等待客戶(hù)端的請求, 請求到來(lái)后,建立新的連接套接字
{ AcceptSocket=SOCKET_ERROR;
while (AcceptSocket==SOCKET_ERROR)
{ AcceptSocket =accept ( m_socket,NULL,NULL) ;} /*④等待客戶(hù)請求到來(lái),請求到來(lái)后,接受連接請求, 返回一個(gè)新的對應此次連接的socket*/
hThread =CreateThread ( NULL,NULL,AnswerThread, ( LPVOID) AcceptSocket,0,&dwThreadId) ;} /*創(chuàng )建新線(xiàn)程, 將新的連接套接字傳給AnswerThread入口函數*/
}
4 結束語(yǔ)
本系統中, 公交車(chē)與電子站牌通過(guò)ZigBee網(wǎng)絡(luò )實(shí)現信息交互, 電子站牌與監控中心通過(guò)GPRS網(wǎng)絡(luò )實(shí)現信息交互。公交車(chē)上用價(jià)格低廉的ZigBee模塊取代現有智能公交系統中的車(chē)載GPRS模塊, 可節約硬件成本, 而公交車(chē)與電子站牌之間的ZigBee網(wǎng)絡(luò )通信則可實(shí)現公交車(chē)的定位, 以作為GPS定位的補充, 從而增加了系統的可靠性。
今后, 隨著(zhù)3G、WiMAX、Wi-Fi等無(wú)線(xiàn)通信技術(shù)的成熟以及更加優(yōu)化的衛星定位技術(shù)的出現, 定會(huì )出現越來(lái)越多的智能公交系統方案, 從而在更大程度上推動(dòng)智能公交系統的發(fā)展。
Xbee Pro和網(wǎng)絡(luò )技術(shù)的智能公交系統