基于Raspberry Pi和arduino的智能停车场设计与实现
2021-08-09潘昊飞王晓乐李浩宇陈涛
潘昊飞,王晓乐,李浩宇,陈涛
(安徽新华学院大数据与人工智能学院,安徽合肥,230088)
0 引言
随着停车场的规模越来越大,人们对其安全性、便捷性的要求也越来越高,在管理上也需要一种高效快捷的管理模式,实现对停车空间的最大利用。如图1所示,智能停车场由硬件系统和软件系统组成。硬件系统包括车位检测、门禁系统和车牌识别系统。软件系统分为管理系统和用户界面。车位检测系统可以判断车位是否被占用,并将车位的状态上传至上位机。系统经过数据分析后,会将空余车位数显示在屏幕上。车牌识别和门禁系统在出入口处实现车辆进出以及车牌信息的采集,同时会将采集到的信息传入管理系统并开始计费。通过各个子系统的相互配合实现无人管理、智能引导和车位查询等方便快捷的操作,不仅给车主带来方便,也给停车场管理人员带来方便,同时也提高了经济效益。
图1 智能停车场系统功能图
1 硬件系统
1.1 硬件设计
智能停车场硬件组成框图如图2所示,主要硬件有SG90微 型 舵 机、E18-D50NK光 电 开 关、Raspberry Pi Camera Rev 1.2摄像机、DHT11数字温湿度传感器、LCD1602显示屏、HC-SR04超声波传感器和一块7寸主显示器。光电开关负责收集汽车到来的信号,并将信号传Raspberry Pi主板,主板会根据此信号控制摄像头拍照采集数据。摄像头再将采集到的数据回传给Raspberry Pi。Raspberry Pi会根据数据来控制门禁舵机的开启和关闭。DHT11负责进行温度采集,将采集到的数据传递给Arduino主板。LCD1602则负责接受Arduino传来的数据并将其在LCD屏幕上显示。超声波传感器负责收集当前停车场内车位是否被占用的情况,Arduino同时控制多个超声波传感器,同时对超声波传感器采集数据分析,从而得出停车场的剩余位置的数量。
图2 硬件框图
1.2 门禁系统
门禁系统控制舵机和光电开关完成车辆的入库和出库。需要为光电开关添加一个边沿检测函数。当车辆进入时,光电开关会输出一个由低到高的电平跳变信号,系统检测到这一变化,随即发生中断,触发回调函数。这样可以保证系统得到及时的响应,也不会受到其它进程的影响而导致检测滞后。
GPIO.add_event_detect(CHECK_BUTTON_NUMBER,GPIO.RISING,callback=StartCheck)
在回调函数中,系统会创建一个线程,调用车牌识别系统,当成功识别到车牌后,系统调用舵机驱动函数,打开门禁,让车辆进入。等待车辆完全进入后,门禁会自动关闭。在车辆进入过程中,需要通过光电开关不断监测电平的变化以确定车辆是否完全进入,保证在车辆进入的过程中,门禁不会突然关闭,避免对汽车和驾驶员造成伤害。主要代码如下:
def allowPass():
setServoAngle(DJ_BCM_NUMBER,OPEN)#控制舵机打开门禁
while GPIO.input(CHECK_BUTTON_NUMBER):#不断检测电平变化
time.sleep(2)# 延迟两秒后关闭门禁,避免汽车没有来得及驶入
setServoAngle(DJ_BCM_NUMBER,CLOSE)#关闭门禁
1.3 车位检测
车位检测由Arduino主板控制超声波传感器完成。传感器置于车位顶部或则地下,利用超声波传感器得到车辆与传感器间的距离。通过对距离参数的判定,确认车位是否被占用。在获得数据后,开启串口,将此信息发送给Raspberry Pi主板。
在主程序中,创建一个监听串口的线程,当新传入的参数与上一次不一样时,更新数据库中的信息,反之丢弃。主要代码如下:
if park_num != oldpark_num: #新传入的数据与旧数据不一致
oldpark_num = park_num #更新数据
mydb.updatePark(park_num)#更新库
1.4 车牌识别
在本系统中,由于设计了门禁系统,可判断待识别区域是否有需要识别的车辆,这样不用在系统中频繁的调用车牌识别功能,提高了系统运行效率。车牌识别的流程如图3所示。
图3 车牌识别流程图
系统完成车牌识别后,还要对输出的车牌信息判断。如果车牌号码在库中存在,则说明车辆已经入库。用户需要完成缴费后,门禁系统才会放行。
2 软件系统
2.1 管理系统
(1)主程序
主程序负责组合各个子功能模块,其流程图如图4所示。
图 4 主程序流程图
(2)车辆管理
管理人员通过管理系统,随时查看车辆的状态,判断某一辆车是否在车库内。同时也要对每一辆入库的时长进行统计,对“僵尸”车及时清理,避免遭受损失。
(3)车辆计费
当车辆进入车库时,车辆信息自动录入数据库内,同时也开启计时。当用户出库时,系统扫描车牌号,计算出费用。用户通过web完成付款后,便可离开。
2.2 用户界面
用户通过浏览器访问系统网站,实现三大主要功能:
(1)车辆缴费:用户任何时候都可以查询到缴费信息,也可以在任何时候付款。为了防止用户过早付款造成经济损失,在出口处也设置了二次验证。当车辆经过出口时,会再次统计费用。如果此次费用和用户付款金额不匹配,那么就不允许放行,用户必须再次付款。
(2)车辆查询:用户可以在任何时候查询到自己的车辆信息,包括入库时间,停放时间,以及缴费信息。用户可以在此界面对车辆进行付款。
(3)车位查询:用户未驶入车库时,可以在此界面上查询到车库车位情况,并且会为用户自动规划合理路线。规划路线中的车位并不会和用户车辆进行绑定。
3 功能测试
(1)测试模型
测试模型如图5所示。
图5 测试模型
(2)主程序界面
主程序界面如图6所示。经测试,可以实现对入口的实时监控,能自动识别处理车牌信息并且自动控制车辆入库出库。
图6 主程序界面
(3)用户界面
用户界面使用web进行设计,这样不需要用户下载其他的软件,方便用户操作。如图7所示,是部分用户界面的截图,基本满足了车辆缴费、车辆查询和车位查询。
图7 车辆查询和付款
4 结果分析
(1)系统进行车牌识别时拍摄角度对结果有影响。所以在设计时应当考虑多次扫描识别,进行统计后选取置信度较高的车牌作为实际输出结果,可以大大提高识别率。
(2)本设计整体结构较为完善,且模拟运行情况良好,可以用作商用停车场设计的参考模型。