近年来,随着城市公交事业的迅速发展,国内公交车报站的方式已经有了很大改善,由传统的售票员喊话报站逐渐变为驾驶员使用报站器手动报站。
虽然手动报站器使用比较方便,但是因为驾驶员需要在保证安全驾驶的前提下进行报站,所以经常出现报站不及时,甚至错报、漏报的现象,而且让驾驶员在驾驶过程中进行报站也存在安全隐患。采用自动报站的方式可以大大减轻驾驶员的工作量,促进公交系统的现代化进程。要实现自动报站,需要实时测出公交车的位置,以确定公交车是否已经到达站点。利用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接口可使系统存储多条线路,方便公交车临时更换运营线路;利用按键和广播等作为人机交互界面,方便乘客接收相关信息;可提供广告等增值业务。系统为建立完整的智能公交调度管理系统提供了关键的公交车载系统。