freedom

【无线】智能公交控制系统

0
阅读(2665)

利用无线通信芯片NRF24L01特定的通信距离特点来实现对于公交车辆的位置定位,用无线数据传输芯片APC220-43来实现站牌与站牌间的通信,这两种芯片均价格低廉,且其特定的通信距离十分符合系统的要求。

 站牌与公交车的通信模块:


当前成熟的方法均使用昂贵的GPS来实现车辆定位,这样能够做到基本10m范围精确度的准确定位,对乘客来说这么高的精度是不需要的,因为乘客想要知道的也就是大概的车辆位置信息,考虑到城市一般的站牌之间距离就是1000m左右,也就是说公交车一般在两个站牌之间也就是用2、3分钟左右,这个时间乘客完全可以忍受的误差范围。因此,在车辆到站距离约为20m左右时,在公交车与站牌之间来实现通信即可说明车辆目前在这一站,以达到对车辆定位的目的。

 站牌间通信模块:

目前的方法是由GPS定位得到车辆精确位置后,利用GPRS的传输网络来直接发布到各个站牌上,这样需要耗费很大一笔信息费,因此我们考虑用一种适合站牌间距离(1000m左右)相互通信的数据传输模块,此站牌将获得的车辆信息传至一个站牌,下一个站牌再往下一站传输,这样依次往下传的思想,如此避免了长距离的数据传输,大大的降低了信息发布成本。

车载NRF24L01子模块发送车辆信息,当公交车即将靠站时,站牌NRF24L01子模块获得公交车的进站信息,并将站牌信息反馈给车载NRF24L01子模块,进而实现定位。该站牌将车辆信息通过无线数传芯片APC220-43传送给下一个站牌,下一个站牌再依次传下去,让每一个站牌都收到此时车辆的位置信息。每一站牌MCU根据本站牌所收到的公交车信息更新显示模块的显示内容,以提醒乘客。

系统流程框图如下:


1. 系统硬件设计

本系统分为:站牌与公交车的通信模块,站牌间通信模块,显示模块共三个大模块。

1站牌与公交车间通信模块

本模块又分为两个子模块:车载NRF24L01子模块,站牌NRF24L01子模块。主要功能是实现对各路公交车的定位。当公交车即将靠站时,站牌NRF24L01子模块能获得公交车的进站信息,并将站牌信息反馈给车载NRF24L01子模块,进而实现定位。

无线通信芯片NRF24L01适合进行短距离高速通信,实际通信半径约20m。故在公交车距站牌较远时车载NRF24L01子模块与站牌NRF24L01子模块之间不进行通信,站牌NRF24L01子模块不会检测到公交车信息。只有当公交车距离站牌20m以内时,车载NRF24L01子模块与站牌NRF24L01子模块才会实现通信,也就证明公交车即将到站,由此实现对公交车的定位。

                  

2.站牌间通信模块

本模块的主要功能是使公交车线路上的各个站牌能获得公交车的当前位置信息。

无线数传芯片APC220-43适合于在强干扰恶劣的环境下通信,且通信距离能达到1500米左右,故在每个站牌部分中置入无线数传芯片APC220-43,进行站牌间通信,本站牌APC220-43将本站所获得的公交车位置信息发往下一站牌的APC220-43,下一站牌的APC220-43又将本站牌所获取的公交车位置信息发往下下个站牌APC220-43,依次传递。既可在保证实现功能的同时,又比常用的方法经济简单许多。


3显示模块

本模块又分为:站牌显示模块,车载显示模块共两个子模块。主要功能是实现信息的显示。

站牌显示模块:

本站的MCU根据本站所接收到的所有信息进行处理,在站牌显示器上显示经过本站的每一路公交车中距离本站最近的公交车的当前位置信息,并实时更新,以提醒候车乘客。


车载显示模块:

车载MCU根据本车所接收到的所有信息进行处理,在车载显示器上显示下一站的名称。并实时更新,以提醒下车乘客。


2. 系统软件设计

本系统软件分为两个部分:车载部分软件、站牌部分软件。

车载部分软件

此程序功能是实现车载NRF24L01子模块与站牌NRF24L01子模块之间的信息交互及车载显示模块的显示控制。

采用子程序轮询方式工作,为站牌与公交车间通信模块子程序、按键处理子程序、车载显示模块子程序这三个子程序分配MCU的使用时间。由于这3个子程序的优先级不同,从高到低依次为:站牌与公交车间通信模块子程序、按键处理子程序、车载显示模块子程序。轮询工作的实现是利用定时器A进行加计数,将计数结果对6取余,余数为345这三种情况下运行站牌与公交车间通信模块子程序,余数为12这两种情况下运行按键处理子程序,余数为0时运行车载显示模块子程序。

站牌与公交车间通信模块子程序

公交到站后,车载NRF24L01子模块给站牌NRF24L01子模块发送到站信息,在通信距离内,站牌NRF24L01子模块才会接收到公交车到站信息,及时回复车载NRF24L01子模块应答信息。若车载NRF24L01子模块在设定时间内未收到应答,则重新发送到站信息,直到收到站牌NRF24L01子模块的应答为止。由于将NRF24L01置为Enhanced ShockBurst 收发模式,若站牌模块通过CRC校验码发现数据错误,则发送请求信息请求公交模块重新发送到站信息。

无线通信芯片NRF24L01     通信过程示意如下:

                   

数据帧设计如下:

无线通信芯片NRF24L01每次可以以约1Mbps的高速率发送8bit大小的数据。我们设计一个数据帧的大小为3个字节。选用第一字节数据表示公交车车次信息,存储公交车次的编号,可最多为256路公交车编号。选用第二字节数据表示公交车控制信息。考虑到上行和下行公交站牌的距离可能较近,为区分上行与下行公交车信息,在本字节中选用1bit数据作为公交车行驶方向的标志位。因为在每个站点处有三种数据帧(到站信息数据帧,请求数据帧,应答数据帧)在传输,故在本字节中设置2bit的数据帧类型标识位。剩于5bit作为保留位,暂不使用。选用第三字节数据表示公交站牌的地址信息