彭名华,刘建生,钟新梅,刘沁炆
(西南石油大学,四川成都 610500)
在城市中,特别是一些大城市中,就打车而言,常会看到3 个场景:1)乘客需要打车尽快赶到某地,但很长时间都看不到计程车;2)乘客居住地离主干道较远,出门走很长一段路也找不到计程车;3)同一时刻,一些计程车司机可能找不到生意。这3 个场景充分暴露了计程车传统服务模式存在的弊端:1)乘客乘车的效率低下,如果运气差点,甚至有可能一天都乘不到车;2)计程车的运行效率低下,只有看到了乘客才能进行服务,造成巨大的资源浪费;3)计程车的服务范围有限,在城市中可以行车的偏僻地方,因计程车很少前往,所以传统的计程车服务就无能为力了。
针对这些弊端,电召、打车地图、打车软件应运而生。但是,现有的打车方式依然存在一些问题,如电召成功率不高、打车地图无人看、打车软件存在安全隐患、难以监管而被叫停。该文设计并实现了一种基于ZigBee 与WiFi 技术相结合的计程车招呼系统。系统综合运用嵌入式计算机技术、无线通信技术、ZigBee 技术组建无线taxi 站台招呼网络,利用WiFi 技术组建高速无线局域网络,利用ZigBee-WiFi节点实现信息路由,并利用ARM-Linux 实现车载终端开发。
ZigBee 技术是一种工作于免授权的2.4 GHz 频段的无线通讯技术,具有传输距离短、成本低、功耗低、速率低的特点,传输速率为10~250 kbit/s,传输距离可达75 m[1],可以外加功率放大器,增加传输距离。与ZigBee 技术相比,WiFi(Wireless Fidelity) 是一种传输距离远、功耗高的无线网络技术,传输速率可达54 Mbp/s,采用802.11 标准,目前,在无线局域网中得到了较为广泛的应用,便于接入Internet[2-5]。
鉴于ZigBee 和WiFi 各自的优点,将ZigBee 技术与WiFi 技术相结合,设计出一套计程车招呼系统,其硬件系统由taxi 站台、车载终端、高速无线主节点和子节点以及信息中心组成,如图1 所示。该系统利用ZigBee 和WiFi 来实现整个系统的数据传输,形成一个高效的网络,随时监控各个taxi 站台乘客的乘车需求以及每一辆计程车的搭载情况,并通过信息中心(PC 机)的逻辑分析,为每一位有乘车请求的乘客选择最近、最方便的计程车。服务器用数据库技术、JAVA、C 语言实现,整个系统的信息处理、存储及各种服务的调度都由服务器完成。
图1 系统组成框图
该系统的每个模块都有自己的独立功能,它们之间相互协调工作才能有效保证该系统方案的实现。
信息中心由数据库、信息处理中心和信息调度中心组成。数据库用于存储计程车、taxi 站台的各种信息,并且数据库中的定时事件和存储过程还会帮助系统处理过时的计程车招呼信息;信息处理中心是整个系统的核心部分,负责监控整个系统计程车的运行状态(位置、载人申请等)和站台乘客的乘车请求,并根据这些信息进行一系列的逻辑运算,通过调度中心将最近的计程车调度给有乘车请求的站台乘客;信息调度中心负责整个系统信息调度的功能,它会将站台、计程车的信息搜集起来发送给信息处理中心,并将信息处理中心运算好的调度操作从不同的端口发送出去。
高速无线网络主节点是系统通信节点的核心,为所属区域所有数据的汇聚处,负责和站台系统的高速网络子节点通信,也负责和车载设备的无线通信。主节点将汇聚的数据传送给调度中心,调度中心的数据也通过此节点向外发送数据。
高速无线网络子节点由ZigBee 协调器和WiFi组成。负责将ZigBee 协调器搜集到的所有Zigbee 终端节点发送来的信息通过WiFi 传递给高速无线网络主节点,并将高速无线网络主节点发送来的信息发送给对应的ZigBee 终端节点[6-7],同时兼有数据缓冲功能,以解决ZigBee 网络和高速无线网络速度不匹配的问题。
taxi 站台由ZigBee 通信模块和站台人机交互模块组成。每个终端ZigBee 节点负责将乘车站台采集到的信息通过自己所在无线ZigBee 网络发送到高速无线网络子节点上,并且监听整个网络。如果发现有发送给自己负责的站台的信息,则接收后传输给站台,由站台显示器显示计程车的信息供乘客选择。
站台人机交互模块则通过“ZigBee 网络<-->高速无线网络”来建立与信息调度中心的通信。站台负责与乘客之间的信息交流,它将采集乘客“请求乘车”、“同意等待”、“拒绝等待”的信息,并展示“计程车编号”、“计程车到此处距离”、“有车前来”、“无车响应”以及当前站台状态等信息给乘客。
每个车载设备上都有一个无线网卡用来和高速无线网络主节点进行通信。车载设备主要负责计程车司机和信息中心的信息交流,采集计程车司机“前往对应站台”、“设置当前状态”、“接收其他计程车任务”等信息,同时展示“当前申请乘车乘客信息列表”、“乘客位置信息”、“乘客是否同意等待”等信息。
高速无线网络子节点的主要功能是实现路由,连接ZigBee 和WiFi 两个相对独立的网络[8]。当子节点没有连接到主节点时,子节点会将taxi 站台的传输数据存储到本地存储器中,当子节点与主节点间建立连接时,会将这些数据发送出去。如果子节点与主节点一直连接,数据会直接转发给服务器,不需要存储。当服务器需要发送信息给站台节点时,子节点会将数据转发给指定的站台节点。高速无线网络子节点结构框图如图2 所示,以S3C2410 为核心,通过USB 与WiFi 模块相连接,通过RS232 与ZigBee网络的协调器相连[9],并完成ZigBee 和WiFi 两种协议间的数据格式转换,实现打车信息的转发。
图2 高速无线网络子节点结构框图
3.2.1 taxi站台硬件设计
为保证所有的站台节点能够实现自主加入,必须保证网络中所有的节点能够满足共同的协议,只要符合协议标准的节点都能够接入系统。系统中的taxi 站台节点以MCU(Micro Control Unit)为主控芯片,节点将数据通过ZigBee 终端发送到高速无线网络子节点,同时接收子节点转发来的反馈信息指令。taxi 站台原理框图如图3 所示,taxi 站台控制器如图4 所示。
图3 taxi站台原理框图
图4 taxi站台控制器
3.2.2 taxi站台软件设计
taxi 站台招呼功能主要由站台乘客招呼算法、计程车先到处理算法、站台申请超时算法、站台多次申请乘车算法实现。站台乘客招呼算法完成计程车乘车申请、同意等待、拒绝等待功能;计程车先到处理算法完成在业务计程车未到达taxi 站台时,其他空车经过此站台的一种优先上车调度策略;站台申请超时算法针对高峰时刻计程车繁忙而不能申请到计程车的情况,每次申请有规定的最大响应时间,如果超过这个时间,系统会自动取消这次申请,同时向站台发送申请失效信息;站台多次申请乘车算法针对一个站台有多个人申请乘车的情况,当一个人申请成功,获取到前来接送的计程车ID 之后,站台系统马上恢复到初始状态,下一位乘客又可以继续申请计程车。站台软件流程如图5 所示。
图5 站台软件流程
3.3.1 车载终端硬件设计
车载终端平台采用的S3C6410 芯片是基于ARM11 架构的16/32 位RISC 微处理器。它采用ARMv6 指令集,支持从SD Card、NOR Flash、NAND Flash 和One-NAND Flash 中引导系统,是一个低成本、低功耗、高性能的应用处理器解决方案[10]。外围组件主要包括触摸屏显示模块、WiFi 模块、电源模块等,如图6 所示。
图6 车载设备框图
3.3.2 车载终端系统开发
系统软件选择嵌入式Linux 为操作系统,整个系统由引导程序、设备驱动、Linux 内核、文件系统组成[11-13]。在搭建平台的过程中,由于嵌入式设备上的资源非常有限,要对Linux 进行针对性的裁剪,并进行裁剪后的Linux 系统移植[14-15]。
QT/ Embedded 通常为小型化、低功耗、便携式的设备开发带有图形化界面的应用程序[16],所设计的GUI 实用、简洁。该车载终端选用移植性强的QT软件设计图形车载终端界面,利用QT/Embedded 的用户图形界面开发,实现了人机交互[17]。计程车车载软件界面如图7 所示。
图7 车载终端系统界面
在实验室配置一台服务器(PC 机模拟)、6 个taxi站台、一个车载终端、无线高速网络子节点以及主节点,对系统进行模拟测试。图8 为车载终端,显示(申请的站台、站台名称、经度纬度、距离)的是乘客与计程车达成的乘车服务。经过测试,taxi 站台的“请求乘车”、“同意等待”、“拒绝等待”、“计程车编号”、“计程车到此处距离”、“有车前来”、“无车响应”以及车载终端的“前往对应站台”、“设置当前状态”、“接收其他计程车任务”等功能完全能够实现。
图8 车载终端测试结果
ZigBee 和WiFi 技术的结合很好地实现了计程车招呼功能。该系统具效率高、实用性强、成本低廉、网络选择灵活等特点,打破了传统打车的弊端,规避了正在被叫停的打车软件的不足。此外,系统功能还可以进一步扩展,如引进GSM、3G 网络等技术。