引言
国内现有试运行的智能公交系统大部分都采用GPS全球定位系统进行定位, 同时采用GPRS网络进行数据传输。车载GPS模块可以实时获取位置、方向、时间等导航定位数据, 然后通过车载GPRS模块将数据传至监控中心, 从而实现车辆的定位和监控。监控中心则可将车辆的实时信息或公告信息通过电子站牌的GPRS模块发送给电子站牌,以估算到站时间和距离, 然后显示在电子站牌上。尽管现有试运行的智能公交系统定位覆盖面广、精度高, 可以实现车辆的全范围定位和监控。但在实际运行过程中, 仍然存在以下不足:
◇ GPS信号在隧道和高架桥等环境下会存在盲点;
◇ 运行中需将GPS信息通过GPRS发到监控中心, 再由监控中心通过GPRS发送显示信息给电子站牌, 因此运营费用较高;
◇ GPRS模块价格昂贵, 公交车数量众多且都必须安装GPRS模块, 硬件成本高;
◇ 不能实现公交车与站牌的通信, 也不能实现提前报站等服务。
1 系统总体方案
由于西安城市面积较小, 道路集中, 公交线路密集, 电子站牌间距大多在500米左右, 因此,监控中心没有必要对公交车进行实时全范围的监控, 而只需知道公交车的站牌区间范围便可大致定位。
为吸取现有智能公交系统方案的优点, 克服其缺点, 并结合西安城市自身特点, 本文把ZigBee短距离无线通信技术引入到智能公交系统中, 对国内现有试运行的智能公交系统普遍采用的GPS定位、GPRS信息传输的方案进行了数据传输方式的改进, 改进后的智能公交系统方案的整体架构如图1所示。
图1 智能公交系统的总体方案
本系统主要由公交车终端、电子站牌终端和管理监控中心服务器三部分组成。
公交车终端可根据车载GPS模块实时定位公交车的位置信息, 并与各个站牌的位置信息进行对比, 当其到达某个站牌时, 公交车自动语音报站, 同时用LCD屏显示到站信息。
电子站牌终端和公交车终端可通过ZigBee短距离无线通信网络进行通信。公交车可实现提前报站。当公交车到达某个站牌后, 便把自己的车辆信息、状态信息等打包发送给站牌。电子站牌收到管理中心的信息后, 便将公交车的位置信息显示在站牌的电子地图上。
管理中心服务器和电子站牌终端可通过GPRS无线通信网络进行通信。电子站牌终端通过GPRS模块的无线联网, 以对收到的公交车信息进行处理并重新封装, 然后发送到无线网络中。服务器端一般是连接Internet的PC机, 可通过TCP/IP协议接收互联网上的信息, 同时可向电子站牌终端发送运行线路上公交车的实时位置信息和公告信息。服务器可通过数据库进行信息的管理和查询, 以方便公交公司的管理和调度。
2 系统硬件设计
2.1 车载终端的硬件组成
本系统中的车载终端硬件主要包括电源模块或电源接入模块、ARM处理器、RAM、FLASH、GPS定位模块、ZigBee射频传输模块、视频监控模块、LCD显示模块、串口和调试模块、车内人数统计模块和语音模块等。图2所示是系统中车载终端的硬件组成框图。
图2 车载终端硬件组成框图
ARM嵌入式处理器是整个车载终端的核心,可通过各种接口与各功能模块相连接。本车载终端选用韩国三星公司的一款基于ARM920T内核的16/32位RISC嵌入式微处理器S3C2410.S3C2410的运行频率可以达到203 MHz, 主要面向手持设备等高性价比、低功耗的应用。
在智能公交系统中, 系统定位模块一般采用GPS-OEM ( Original Equipment Manufacture) 板。
在嵌入式车载终端系统中, 选用GPS模块时, 通常应考虑定位精度、价格、功耗、体积、抗干扰能力等几个因素。根据以上原则, 本设计选用LEADTEK公司的GPS三代SiRF star III7855模块来实现定位。该模块的主要性能指标如下:
◇ 有20个并行通道, 可同时接收20颗卫星;
◇ 定位时间: 重捕时间为0.1 s, 热启动《1s, 冷启动《42 s, 自动搜索少于30 s;
◇ 输出差分精度可达10米, 功耗小于1 W;
◇ 可通过RS232接口输出NEMA-0183协议的ASCII码语句, 包括GPGGA、GPGSA、GPGSV、GPRMC、GPVTG、GPGLL等;
◇ 采用5 V电源, 可通过TX、RX引脚连接一个DB9的接口来与嵌入式微处理器的串口进行通信。
2.2 ZigBee射频模块
在智能公交系统中, GPS模块只完成信息采集功能, 而在公交车到站时, 还需要通过ZigBee模块信息发送给站牌。
经过市场调研发现, Freescale的MC1319x平台功耗低、价格低廉、硬件集成度高, 而且方便二次开发, 射频通信系统的稳定性也比较高。所以, 本设计选用了MaxStream公司与ZigBee兼容的、以Freescale MC1319x芯片组为核心的XBeePro RF模块。XBee Pro模块设计满足IEEE802.15.4标准, 工作频率为2.4 GHz, 其基本性能参数如下:
◇ 发送功率l00 mW;
◇ 室内传输距离为300 m, 室外传输距离为1500 m;
◇ RF数据传输速率为250 kbps;
◇ 在3.3 V电源下, 发送电流为215 mA, 接收电流为55 mA.
图3所示是XBee Pro模块的引脚排列图, 该模块有20个引脚。RS232接口电路板的引脚可连接到VCC、GND、DOUT和DIN引脚。其中VCC是电源引脚(2.8~3.4 V); GND接地; DIN是信号输入引脚, 可作为UART数据输入, 通常与处理器的UART接收端TX相连; DOUT为信号输出引脚,可作为UART数据输出, 通常与处理器的UART接收端RX相连。此外, 在XBee/XBee Pro模块中还集成了一个UART接口, 该接口的内部数据控制流程如图4所示。
图3 XBee Pro模块的引脚排列图
图4 XBee Pro模块的UART内部数据控制流程
当串行数据通过DIN引脚进入XBee Pro 模块后, 数据会存储在DI缓冲器中, 直到被发送器通过天线发送出去; 当RF数据由天线接收后, 接收数据进人DO缓冲器, 直到被处理。在一定条件下, 模块可能无法立即处理在串位接收缓冲中的数据。如果大量的串行数据发送到模块, 可能需要使用CTS流控以避免串行接收缓冲溢出。XBeePro 模块可以通过UART 接口直接与控制器的UART接口相连, 硬件接口简单实用。
2.3 电子站牌终端的硬件组成
电子站牌终端的硬件组成与公交车车载终端相比, 主要是把公交车上的GPS定位模块替换成了GPRS -DTU 数据传输单元。GF -2008AWGPRS-DTU是北京嘉复欣科技有限公司研制生产的GPRS无线数据通信产品, 该产品内置西门子MC39i GPRS模块, 具有准确性高、环境适应性好、易于安装和维护等特点, 能够为用户提供高速、可靠、永远在线的数据传输服务和虚拟专用数据通信网络服务, 可广泛用于远程抄表、环保数据采集、交通信息发布等方面。以下是GF-2008AW GPRS-DTU的主要特点:
◇ 可实现串口透明的无线数据传输, 而且稳定可靠;
◇ 高度集成GPRS和TCP/IP 技术, 可将互连网和无线网络有机的结合起来;
◇ 支持多种TCP/IP 协议, 如TCP、UDP、DNS、PPP、RAS 等;
◇ 按流量计费, 没有流量不计费;
◇ 在标准RS232接口产品中体积最小, 适合嵌入式集成;
◇ 支持点对点、点对多点、中心对多点的对等数据传输;
◇ 基于串口通讯的AT+i指令接口, 可节省开发时间和开发成本;
◇ 支持ALWAYS ONLINE (永远在线) 模式,断线可自动重拨;
◇ 采用5~24 V / 1 A供电, 并具有节能模式。
3 ZigBee通信程序设计
3.1 ZigBee组网方案
由于站牌处通常会有多辆公交车同时到达,一个站牌对应多辆公交车。鉴于网络节点较少、网络结构比较简单, 本系统采用星形模型组网。
即把分布在公交线路上的电子站牌配置为ZigBee协调器, 而将到达的公交车配置为ZigBee终端设备。图5所示是公交车与站牌的组网方式。当站牌上ZigBee网络协调器选择一个信道和PAN ID并启动时, 便建立了一个ZigBee个人局网(PAN)。
而一旦协调器启动PAN, 便允许路由器和终端设备结点加入PAN.作为ZigBee终端设备的车载终端加入PAN时, 系统将收到一个16位的网络地址, 同时发送和接收来自作为ZigBee协调器的电子站牌终端的数据。PAN协调器的网络地址总是0.由于站牌上ZigBee模块的网络物理地址是唯一的, 故可通过物理地址向站牌发送信息。
图5 公交车与站牌组网方式
3.2 ZigBee模块的API操作
XBee Pro具有空模式、接收模式、发送模式、睡眠模式和命令模式等5种操作模式。对于每一种操作模式, 还有透明方式和应用程序接口(API) 方式两种操作方式。当工作在透明方式时,模块可替代串口线的作用, 并以字节为单位操作各种信息; 而当工作在API 方式时, 所有进出模块的数据均被包含在定义模块的操作和事件的帧结构中。本文采用API操作方式。
API操作要求模块之间通过一种结构化的接口进行通信(数据通过一种定义好序列的帧来交互通信)。API对通过串口数据帧进行命令发送、命令响应, 以及模块状态信息的传送与接收作了规定。
(1) ZigBee发送请求
公交车到达站牌后, 应根据站牌的MAC地址将日期、时间、车号、公交线路、车内人数、行驶方向等信息发送到电子站牌。公交车ZigBee模块发送模式的API帧结构定义如图6所示。其中的Bytes6-13为站牌的MAC地址。
图6 公交车TX请求API帧结构图
(2) ZigBee发送状态。
为实现可靠传输, 当公交车传送信息给电子站牌的请求完成后, 必须得到电子站牌的确认信息, 因此还必须得到电子站牌回馈给公交车的发送状态信息。这个信息将指出数据包是否被成功发送, 或者发送失败。如果发送失败必须重新发送公交车的信息, 直至发送成功。
电子站牌根据公交车的MAC地址, 不断的向PAN内发送信息, 并通过回读发送状态来确定是否有公交车加入网络, 如果有, 则根据网络地址识别公交车, 并将公交车的定位信息发送到监控中心, 从而实现对GPS定位方式的补充。
图7 公交车ZigBee模块的TX状态帧结构
其中的Bytes 9为传送状态信息, Bytes6、7为接收模块的16位网络地址。
(3) ZigBee接收包。
电子站牌收到公交车发来的状态信息数据包后便进行解析, 并通过站牌的GPRS模块发送到监控中心。电子站牌ZigBee模块接收模式的API帧结构定义如图8所示。图中的Bytes5-12为公交车的MAC地址。
图8 电子站牌RX的API帧结构图
3.3 GPRS网络通信设计
电子站牌收到公交车发来的信息后, 将通过GPRS-DTU发送到监控中心, 然后由监控中心将所有公交车发来的信息通过Internet发送给站牌。
GPRS DTU有透传模式、AT+i命令模式、自动IP注册模式、远程维护和流控五种模式。在系统的电子站牌终端中, DTU将使用透传模式与服务器进行信息的交互。通过透传模式可将电子站牌异步串口通信转换成基于TCP/UDP协议的网络通信。其主要目的是通过串行通信的简单设备实现在IP网络上的通信, 而数据格式不发生任何改变。这一点非常重要, 由于数据格式在经过DTU前后均不发生任何变化, 由此, 电子站牌原有的设备及软件不用作任何升级, 就可直接应用。
DTU的透传模式可使电子站牌客户端在发起通信请求时, 使DTU必须与服务器建立网络连接。也就是说, 电子站牌下位机与服务器进行数据传输时, 首先是电子站牌下位机要与DTU设备的串口相连, 在DTU进入透传模式后自动被调用, 并与服务器建立网络连接, 当网络连接建立后, DTU将自动完成串口到网络通信的转换, 以便所有数据可透明地在服务器软件与电子站牌下位机之间双向传输。
服务器与电子站牌终端通信可通过套接字socket 来实现。首先在服务器上建立一个监听Socket对象, 并绑定在一个固定端口上, 然后,每当电子站牌客户端发送一个SOCKET连接请求,服务器端就会新开启一个线程, 并在其中创建一个socket与电子站牌客户端的socket通讯, 直到电子站牌客户端程序关闭, 该线程结束, 然后服务器主线程的socket在应用程序退出时关闭。通过多线程的Socket程序设计, 可以实现一个服务器与多个电子站牌客户端的通信。
以下是服务器基于socket多线程的具体实现程序代码:
DWORD WINAPI AnswerThread ( LPVOIDlparam) //收发线程入口
{//创建线程时把服务器建立的新套接字传给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] =‘’;}
while (bytesRecv==SOCKET_ERROR)
{ bytesRecv =recv ( ClientSocket,recvbuf,32,0) ;} //⑤接收电子站牌客户端的数据
…
send ( ClientSocket,recvbuf,strlen ( recvbuf) ,0) ; //⑥向电子站牌客户端发送数据
}
}
…
WSAStartup (MAKEWORD (2,2) ,&wsaData) ;//初始化Winsock
socket ( AF_INET,SOCK_STREAM,IPPROTO_TCP) ;//①创建一个监听socket
bind ( m_socket, ( SOCKADDR*) &service,sizeof(service)) //②绑定套接字
listen (m_socket,20) //③监听套接字
SOCKET AcceptSocket;
while (1) //一直等待客户端的请求, 请求到来后,建立新的连接套接字
{ AcceptSocket=SOCKET_ERROR;
while (AcceptSocket==SOCKET_ERROR)
{ AcceptSocket =accept ( m_socket,NULL,NULL) ;} /*④等待客户请求到来,请求到来后,接受连接请求, 返回一个新的对应此次连接的socket*/
hThread =CreateThread ( NULL,NULL,AnswerThread, ( LPVOID) AcceptSocket,0,&dwThreadId) ;} /*创建新线程, 将新的连接套接字传给AnswerThread入口函数*/
}
4 结束语
本系统中, 公交车与电子站牌通过ZigBee网络实现信息交互, 电子站牌与监控中心通过GPRS网络实现信息交互。公交车上用价格低廉的ZigBee模块取代现有智能公交系统中的车载GPRS模块, 可节约硬件成本, 而公交车与电子站牌之间的ZigBee网络通信则可实现公交车的定位, 以作为GPS定位的补充, 从而增加了系统的可靠性。
评论
查看更多