基于ZigBee的出租车调度系统
1 引言
ZigBee无线模块出租车调度系统一定程度上解决了“人找车,车找人”的现象,降低了城市出租车空载率。目前的出租车调度系统主要有:电话调度、GPS调度、站牌调度等。出租车电话调度具有可随时随地叫车的优点,但需乘客拨打出租车调度中心电话与话务员座席沟通确认乘客位置,方能人工调度附近的出租车前往搭载乘客,交互过程长、调度效率低,不适于快节奏的打车需求。GPS调度是根据乘客实时的GPS位置信息进行调度的出租车调度系统,乘客可以通过短信和手机软件发送GPS位置信息至调度中心,调度中心采用Dijkstra算法,自动调度附近的出租车搭载乘客。该方法采取自动调度,节省了人工座席服务的支出。但是,由于乘客位置是GPS信息,需要出租车安装有电子导航仪。电子导航仪价格贵,有升级费用,出租车司机消费高,难以普及。站牌调度系统通过站牌和出租车车载应答子系统进行无线通信,实现城市出租车预约功能。该系统中乘客和出租车司机直接交互,无需调度中心等第三方平台。站牌即乘客位置,各站牌采用统一编码,通过编码信息即可得知乘客所在精确位置,无需GPS定位系统,乘客定位简单准确。站牌调度虽然具有不依赖调度中心和GPS定位系统、交互直接、调度快和设备费用低等优点,但目前的站牌调度系统还存在以下不足:
(1)司机没有乘客信息,仅乘客知道出租车车牌号,而且乘客没有具体凭证,多位乘客叫车时,司机不能辨别乘客,容易出现乘客抢车插队现象;
(2)根据出租车司机响应结果来决定出租车调度对象,没有考虑出租车具体路程,不能确保是最优的调度结果;
(3)缺乏乘客和出租车司机双方的诚信约束措施,爽约现象频发,造成司乘双方支持信心不足,对推广实施不利。
为解决上述不足,本文在传统的站牌调度系统上进行较大改进,提出基于物联网ZigBee无线模块的感知、传输、应用三层架构的出租车调度系统方案。方案采用乘客刷卡预约出租车的方式,用以解决乘客插队和诚信问题;通过增加信号中继节点,扩大出租车调度范围;并采用JN5139作为核心处理模块进行系统设计,用Jennie ZigBee协议组建ZigBee无线数传树状拓扑网络,对信息进行ZigBee数传采集,结合Cskip地址分配算法和AODVjr路由算法,选择最佳出租车调度对象,实现乘客“自助式”、可靠、快速的出租车调度。
2 系统结构
本系统基于物联网感知、传输、应用三层体系架构,三层功能分布在系统的站牌预约点子系统、车载应答子系统、ZigBee数传模块中继节点和调度管理中心四部分实体中实现。系统在原站牌调度系统基础上,增加架构了感知层RFID读写器、ZigBee数传模块中继节点、传输层GPRS(General Packet RadioService)网关模块和应用层调度管理中心等。
站牌预约点子系统安装在经常出现打车行为的道路边(如大型商场、小区、学区、写字楼等),乘客通过RFID刷卡预约车,采用ZigBee无线模块通信方式发布乘客打车信息、接收出租车司机应答信息,并用GPRS上传调度结果信息。车载应答子系统安装在出租车内,用于接收乘客打车信息、发送司机应答信息和乘客上车刷卡核对卡号。ZigBee数传模块中继节点安装在信号较弱处,用于转发ZigBee无线信号,扩大调度范围。调度管理中心负责接收、保持和查询GPRS上传的调度结果信息和司乘双方守约爽约信息等,建立乘客预扣定金、出租车爽约扣罚金和扣罚金补偿给守约方的双重机制,促使双方遵守诚信。系统结构如图1所示。
图1 系统结构
3 系统硬件设计
该系统主要通过感知层实现分布在城市内的多站牌点附近的出租车信息进行ZigBee数据采集调度功能。该层以分布在城市内的站牌预约点为网络协调器节点,信号中继装置为路由器节点,构成不断将行驶进入站牌限定范围内的出租车车载应答子系统加入为网络终端节点的多个动态ZigBee自组网络。站牌预约点子系统主要包括ZigBee无线模块、RFID读写器模块、GPRS网关模块、显示模块和电源模块,站牌预约点子系统框图如图2所示。
图2 站牌预约点子系统框图
站牌预约点子系统ZigBee无线模块负责搭建ZigBee网络,控制RFID读写器模块工作,无线传输乘客打车信息、将违约/调度结果信息通过串口发送给GPRS网关模块;RFID读写器模块供乘客刷卡发送打车信息和预约成功后预扣定金;GPRS网关模块发送调度结果和爽约信息至调度管理中心;显示模块显示乘客预约打车结果。
ZigBee无线模块采用JN5139 Z01 M02(以下简称JN5139),其具有使用免费频段、无线自组网等优点,适用于出租车和乘客之问通信。
RFID读写器模块采用Mifare RC522读写卡芯片,它是一款低电压、低成本、体积小的非接触式读写卡芯片。GPRS网关模块采用SIMCOM公司的SIM300模块,它具有GSM和GPRS功能。显示器模块采用VL TS COG BTl2864(以下简称BTl2864)系列液晶显示器。
站牌预约点子系统中,核心处理器是JN5139,其他各模块都需要和JN5139进行通信。JN5139、RC522、SIM300和BTl2864各通信接口如下:JN5139具有SPI串行接口(可选择五个从属SPI设备)和两个UART;RC522有SPI、12C、UART三种接口,这三种接口的最高通信速率分别为10 Mbit/s、3400 Kbit/S和1 228.8 Kbit/S;SIM300与外部接口为UART;BTl2864有串行接口(SPI接口)和并行接口两种。
系统电路设计按照电路简单、较少使用JN5139的DIO接口和通信速率较快的要求,结合各模块的通信接口标准,设计的通信接口电路如图3所示。
图3 JN5139与各模块接口
图3中,JN5139和BTl2864、RC522采用SPI串行接口通信,通信速率分别为2 Mbit/s、1 Mbit/s;JN5139和SIM300之问采用UART通信,通信波特率为19200 baud/s。
站牌预约点子系统中JN5139、RC522、BTl2864都可采用3.3 V供电。而SIM300需要4 V供电,而且要求能够提供最大2A的瞬时电流,取市电(220V交流电)输入变压器后得12 V电压,采用可以调节输出电压的稳压芯片LM2756。LM2756输出电压Vo=1.23×(1+Rl/R2)。其中R1取4.7kQ,R2取2kQ,经整流滤波后输出4.12V电压,符合SIM300的工作要求。将此4.12 V电压输入稳压芯片LP2985,输出端接电容滤波,得到较为稳定的3.3 V电压,给其它模块供电。本文硬件设计部分主要介绍站牌预约点子系统的硬件电路设计,车载应答子系统各模块与站牌预约点子系统各模块大体相同,将站牌预约子系统的GPRS网关模块(SIM300)换成语音识别模块即为车载应答子系统。ZigBee数传模块中继节点即JN5139模块加上电源模块。
4 系统软件设计
乘客需在站牌预约点刷卡,站牌预约点子系统通过动态ZigBee自组网络组播一则打车消息。若有多位出租车司机回复,选择路由最短的作为调度对象。站牌预约点子系统调度流程如图4所示。
图4 站牌预约点子系统流程
JN5139通过配置RC522寄存器控制读写器进行相应工作,需要注意的是在使用SPI总线读取RC522的FIFO Buffer时,写第一次地址读出来的是无效值,写第二次地址返回第一次的数据,写第三次地址返回第二次的数据,以此类推构建出租车调度系统的动态ZigBee自组网,需对网络内协调器、路由、终端节点进行配置,特别是要不断动态地发现和将行驶进入站牌点限定范围内的出租车车载单元加入成为网络终端节点。
本系统网络默认的信道可能在一些场合中已被其他系统使用,故各站牌预约点子系统可能使用不同信道,终端节点要加入不同信道的ZigBee无线数传网络,需要进行配置,如设置网络信道为0,则可实现终端设备自动搜索所在区域的ZigBee无线数传网络。当信道和个域网ID都匹配时,加入该网络。当ZigBee协议栈一段时间没有收到网络应答信息时,判断为离开网络,需要重新设置,并重新寻找网络。系统无线通信采用Jennic公司的硬件及协议栈,调度中心采用C++Build的Socket套接字编程,在Socket服务器组件中添加OnClientRead事件处理函数,接收、处理GPRS上传的数据,存储在sQLserver数据库中。调度中心、各出租车公司可对出租车司机的基本信息、调度结果和爽约情况进行查询。
5 最佳调度对象选择
本系统采用AODVjr路由,AODVjr对AODV算法进行了简化和改进,这种按需路由协议在移动性高、负载低的场合性能较高。AODVjr路由中,当源节点需要向目的节点发送数据而不知道路径时,则将RREQ分组组播至其邻居节点。
若收到该分组的邻居节点是带路由功能的节点,则该邻居节点先建立反向路由,该反向路由指向源节点,然后继续组播该RREQ分组至其自己的邻居节点。不具备路由功能的邻居节点,则通过上述的地址分配算法将该RREQ分组发送至其子节点或父节点,由其子节点或父节点转发该分组。而目标节点在收到RREQ分组后,向源节点单播回复RREQ分组,并将接收到此RREQ分组的所有节点保存在邻居表中,从而建立到源节点的路由。
在有多个司机回复乘客预约车信息时,系统需要进行最佳调度对象的选择,因布点时相邻中继节点距离基本相同,路由跳数基本上能反映出租车距站牌预约点的距离,可通过路由跳数大小确定较佳的调度对象。但是,当道路中存在护栏或者绿化带时,站牌预约点另一侧的出租车即使路由跳数少,也因出租车不能直接转向到达站牌预约点,而不能作为调度对象。所以,本系统在站牌预约点另一侧添加一个节点(如图5中的F节点,相应增加中继节点后,也可以将F节点做成站牌预约点,供另一侧的乘客预约车),以区分站牌预约点另一侧的出租车,并采用Cskip算法和最短路由相结合确定系统的最佳调度对象。为父节点所能拥有的最大路由节点数上述算法分配的地址为车载应答子系统加入网络时的地址,JN5139采用的协议栈中,除了路由表之外还有一个邻居节点表,它保存了可以直接通信的节点的地址。在实际生活中,乘客可能会在站牌预约点下车,这时出租车空载,从而加入网络。
此时它处在站牌预约点的邻居表中而不是路由表中,所以在比较路由时,需要同时读取路由表和邻居表中的节点进行比较
6 测试结果
实验测试环境为齐齐哈尔市文化大街,道路宽8 m,路旁有10 m高的杨树。测试设备采用连接5db天线的JN5139 Z01 M02模块,经测试信号传输距离在500 m左右,本系统测试时最大调度范围为1500m。测试网络布点如图5所示。
图5 网络布点
节点A、B、C、D、E、F为信号中继装置,除节点C、D外,其他相邻节点问的距离为500m。测试中,车牌号为黑BTl347和黑BTl947的两辆出租车都向站牌预约点行驶。乘客在站牌预约点刷卡预约出租车,两辆出租车均同意乘客打车,其中,黑BTl347出租车消息路由为B-D-C-O,黑BTl947的消息路由为E-D-C-O,二者路由跳数相同,二者距站牌预约点的距离也基本相同(布点时相邻中继节点问距离基本相同)。但是,根据我国行驶规则,黑BTl947出租车不需等待交通灯,能最快赶到站牌预约点,故选择结果最合理的调度对象为车牌号为黑BTl947的空载出租车。
图6 Cskip算法网络地址分配图
结合图6知,黑BTl947出租车通过E节点加入网络,其网络短地址在22~24之问;同理,黑BTl347的网络短地址在28~30之问,所以,根据出租车短地址即可以进行相同路由跳数下的最佳调度对象选择。站牌预约点子系统调度结果如图7所示。
图7 系统调度结果
测试实例中,乘客共发出11次打车请求,其中有一次为司机响应后没有前往站牌预约点接乘客,属于出租车司机爽约,调度管理中心据此对出租车司机扣除相应违约金,以维护乘客和出租车司机双方的诚信约束制度。站牌预约的进程信息通过GPRS传输至调度管理中心。调度管理中心可查询乘客和出租车司机爽约信息、各站牌预约点打车信息和司机详细信息等。实例中调度管理中心对司机李强的详细信息查询结果如图8所示。
图8 司机详细信息查询
7 结束语
本文提出了一种基于物联网ZigBee模块的出租车调度系统,系统基于物联网ZigBee数传模块技术,融合RFID、ZigBee数传采集、GPRS等感知层、传输层技术,实现乘客在站牌预约点刷卡叫车,系统感知层构建的ZigBee自组网络可合理调度网内空载出租车为乘客提供乘车服务。系统传输层、应用层的构建,实现调度管理中心通过记录、保存调度信息、暂扣乘客卡内预约定金和监督出租车司机守约功能,有效防止出租车司机或乘客爽约,建立出租车司机和乘客之间的诚信。各出租车公司也可查询本公司员工调度纪录确保系统长期稳定运行。系统还可以进行升级与扩展,如在应用层增加物联网预约车平台和手机平台后,乘客预约出租车信息通过GPRS网关即可传至相应站牌预约点子系统,乘客可通过互联网与3G/4G技术预约出租车。本系统为乘客提供一种打车新方式,具有一定的实际应用价值。