基于 STM32 单片机的智能公交设计
扫描二维码
随时随地手机看文章
引 言
目前人们大多采用交通卡刷卡的形式乘坐公交,排队上车刷卡或由检票员人工询问站点后刷卡 [1]。这种方式存在如下缺点 :
(1) 无法获取公交信息以及道路拥堵情况,人车互动性不强 ;
(2) 在购票遇上客流量大的情况时,需要长时间排队。
互联网具有更新速度快、互动性强、不受空间限制且数据存储量大,高效快速等特点,使得其在传递行车信息及检测车内乘客数据信息时可以做到快速、高效、及时。
通过设置在公交车上的 WiFi 探针设备 [2] 获取每位 WiFi 使用者的手机信号和 MAC 地址 [3],并通过算法实现对手机的定位,及时获知乘客在哪一站上车以及在哪一站下车 [4-5], 并基于此信息对乘客扣费。本文将介绍一种基于 STM32 单片机作为处理芯片并通过 WiFi 探针实现对手机信号进行检测的装置,由该装置进行自动扣费。
1 系统设计
1.1 硬件设计
本系统的硬件部分主要基于 STM32 单片机开发板进行开发,配合全球定位系统(GPS)模块、ESP8266 无线网络模块以及串口转 USB 模块使用。
1.1.1 STM32F103单片机
本设备采用意法半导体公司设计生产的 STM32 处理器作为单片机平台,相比 51 单片机而言,STM32 单片机具有更丰富的函数库,更多的引脚,更强大的计算能力和多任务处理能力。它采用 ARM 构架,性能高、成本低、功耗低且体系结构超前。
1.1.2 DHT11温湿度传感器
DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器与单片机相连,以确保反应速度 [6]。
1.1.3 NEO-6MGPS 模块
NEO-6M GPS 模块带有外部天线, 内置 E2PROM, 其默认的波特率为 9 600 bps,支持标准的 NMEA(美国国家海洋电子协会)。它有四个引脚,分别为 VCC,RX,TX 和GND。该模块使用 TX 和 RX 引脚与 STM32 单片机通信, 接线简单,通过 nmealib 库解码就可以得到相应的坐标和速度信息。
1.1.4 ESP8266模块
ESP8266 是一款超低功耗的串口无线透传模块,具有小尺寸的封装和超低能耗等特点。它能实现用户串口数据到无线网络之间的交换,有如下两种解决方案 :
(1) 使用内部自带处理器对芯片进行二次开发,通过I/O 口控制设备,节省成本但难度大 ;
(2) ESP8266 模块外接单片机,完成网络相关任务,使用 AT命令,通过串口和外接单片机通信,开发速度快,性能稳定 [7-8]。
1.2 算法核心
1.2.1 乘车判定
在公交车进入公交站台后,会利用车载 WiFi 探针设备来检测用户手机信号 [9],将检测到的手机信号即 MAC 地址存储到一个二维数组中。当公交行驶了规定距离后,公交车的信号探测设备将继续检测,将第二次检测到的手机信号再次存储,并与第一次检测到的数组进行比较,发现在公交站附近检测到部分 MAC 地址,待公交驶离过后一段时间无法再检测到,则证明此人可能没乘车,或者第二次扫描时无手机信号,则需多次检测,存储对比数据,若某 MAC 地址只在第一次检测时出现,后面几次检测均未出现,则将此手机信号在数组内删除,同时判定此人未乘坐公交 [10]。
1.2.2 乘坐站点判定
在公交车驶进 A站进行信号检测的同时,公交车 GPS 模块检测当前公交车的位置并存储。然后公交车到下一站台 B时将再次检测手机信号与位置信息并存储。行驶到 C站, 仍旧搜索手机信号与位置信息并存储,之后与 B站存储的二维数组进行比较,若发现手机信号在 B 站有而 C 站无,则可判定此手机信号拥有者从 A站上车,B站下车。以此类推得出乘客的乘坐站点。
1.2.3 公交数据的统计
系统统计乘客上下车的情况可以通过组成一个站间到发客流表,见表 1所列。实验中使用 4个站(A~D),其中横向表示下车,纵向表示上车。表中(C,A)为 3,即表示有 3位乘客在 C站上车 A站下车。通过计算即可获得各站上下车人数、全日及高峰时段客流信息等。再根据这些信息可以制定相应的车辆开行计划,在减少乘客等待时间的同时避免资源的浪费 [11]。
2 结 语
本文采用手机代替公交卡,高效便捷,提高了乘客乘车的体验度。通过车载的 WiFi 探针设备不断检测乘客的实时位置,无需通过刷卡进行上客判断。通过温湿度传感器检测车内温湿度并告知乘客,方便乘客选择合适的出行公交。
但不足之处依旧存在 :例如有的老年人未携带智能手机, 或者不会使用智能手机导致扣费失败等。但我们相信,随着智能手机的普及,本系统将得到更好的应用。