基于无避让智能立体停车设备的智慧停车系统
2022-07-01刘湘煜罗花芝
刘湘煜,唐 伦,罗花芝
(1.湖南汽车工程职业学院信息工程学院,株洲 412001;2.湖南汽车工程职业学院车辆工程学院,株洲 412001)
0 引言
随着汽车的进一步普及,停车已经变成许多城市的一大难题。立体停车应运而生。大型的立体停车库虽然好用,也可提供很多停车位,但因所需初期投资较多,同时多数情况下也不需要,因而产生了比较简单的双层立体停车库。张涛等设计了三层停车库;王中原等设计了基于ADAMS 的无避让侧方位立体停车设备升降机构。这些设计均已经对侧方位立体停车库的机械设计进行了分析,本文基于无避让侧方位智能停车设备的嵌入式智能控制系统软件进行分析和设计。
1 系统整体架构
基于无避让智能立体停车设备的智慧停车系统分为三部分,分别是车库管理云平台,智慧停车App 以及智能立体停车装置,作为Iot(internet of things,物联网)系统,其架构如图1所示。
图1 智慧停车系统架构
系统开发分为前端智慧停车App 以及后台车库管理云平台,同时针对后台平台管理的Web页面。
其中,车库管理云平台作为整个停车服务的中心,承接了App 与立体停车设备间的通信,停车流程如下:
(1)当用户发起停车请求时,服务器生成订单,记录起始时间。
(2)服务器对指定停车设备下达指令,同时监测停车设备状态。
(3)当停车设备正确打开且车辆停入后,服务器收到反馈,对数据库中该设备状态进行更新。
(4)当用户停车结束后,将车辆驶离停车设备。
(5)服务器监听到设备状态发生改变,对该次服务的订单进行更新,记录结束时间。
(6)服务器推送账单信息给用户。
流程简图如图2所示。
图2 停车流程简图
2 车库管理云平台设计
2.1 车库管理云平台架构设计
服务器后台采用Spring+SpringMVC+MyBatis的经典SSM 框架。由Spring 统一所有实体类的创建与使用,SpringMVC 拦截用户请求并处理,再通过MyBatis对数据库表进行更新。
考虑到服务器需要对多个停车设备硬件下达指令,并且接收到反馈结果更新设备状态,轮询对服务器压力过大,因此需要建立服务器与终端间的TCP 长连接,通过心跳检测来确保连接状态,同时还需要对不同的设备指令进行异步处理。
因此在SSM 框架的基础上,整合了Netty 开源框架,由Netty 专门处理对于长连接的异步通信及状态更新。它提供了对TCP、UDP、HTTP(S)等几乎所有的通用协议以及文件传输的强大支持。在保证应用程序安全性、健壮性的同时又隐藏了其API 的复杂性,为不同传输类型提供了几乎完全一致的API接口。
停车设备通信与服务器流程如图3 所示。NettySocketListener 对服务器与停车设备的TCP连接进行监听,心跳包中包括了当前停车设备的状态,这些数据在专有的通道Channel 中传输。如果停车设备状态发生改变,NettyServer ChannelInitalizer 将 通 知TCPServer Handler 把 这次数据更新,并交给Spring 生成相应容器,同时在SpringMVC 中进行处理,由Mybatis 更新数据库该设备状态和本次服务订单详情。
图3 SSM+Netty框架下停车设备与服务器通信流程
如果是用户主动发起请求,通过Netty Util与服务器建立连接、发出请求,请求由SpringMVC 拦截进行处理,通过Spring 生成具体指令,交由TCPServerHandler执行。
2.2 车库管理云平台模块划分
车库管理云平台作为智慧停车App 和智能停车设备的后台服务器,同时对用户及停车设备进行管理模块。
云平台主要分为3个模块,分别是用户管理模块,订单管理模块和停车设备管理模块。
(1)用户管理模块。用于用户登录,包括注册功能和信息查询。
(2)订单管理模块。订单中包含停车设备id,用户id,起始时间与结束时间。用户发起的初始订单不包含结束时间,当停车服务结束后,订单更新并推送给用户。
(3)停车设备管理模块。仅对管理员开放,可以查看所有设备的状态,添加新设备与删除设备。同时可以对设备直接下达指令进行状态更改。车库管理云平台用例图如图4所示。
图4 车库管理云平台例图
2.3 数据库设计
数据库设计分为停车场信息表(Car_Park),停车设备信息表(Pillar_info),订单表(Order),以及用户表(User)。
其中停车场信息表包含其本身编号C_id,以及所在省市地区。
停车设备信息表包含设备编号P_id 以及所处停车场编号C_id,校验码crc,登记时间setup_time,以及status 状态,其中0 代表关闭,1代表正在使用,2表示故障其他。
用户表包含用户登录基本信息以及用户编号,同时需要记录用户手机号码与车牌信息。为方便管理,将管理员也加入到User 表中,用permission 来表示权限,0 为用户,1 为管理员。管理员可对后台的web 端进行操作,而用户只可使用App前端。
订单表包含本身订单编号O_id,发起的用户U_id,使用的停车设备P_id,订单状态status,起始时间startTime,以及结束时间endTime。
其中O_status 用于表示订单当前状态,0 为进行中,1为结束,2为异常申报。
新生成的订单endTime为空,当停车服务结束后,对该次订单结束时间进行更新,便于计算账单。
其中,订单表Order结构见表1。
表1 订单表(Order)
3 智慧停车App设计
3.1 App功能划分
智慧停车App 功能划分为三个部分,分别是“我的”,“停车”和“历史”。
功能结构图如图5所示。
图5 App功能结构图
(1)“我的”用于用户登陆后显示自己信息,可对资料进行完善,也可看到自己当前是否在停车状态中。
(2)“停车”是主要功能模块,根据移动设备的LBS 定位获取经纬度信息,使用百度定位SDK 获取具体所在地区,并在数据库中与停车场信息表进行匹配,显示附近的停车场位置。
到达停车场后,停车设备上贴有二维码,用户扫码获取停车设备信息,并发起停车请求,生成订单。
通过停车结束功能结算当前订单,订单更新结束时间,用户需要在五分钟内完全驶离该停车桩。
(3)“历史”功能可以查询历史停车记录,包括所处停车场,使用的停车设备信息以及起止时间和支付金额。同时可以对有异议的订单进行申报。
3.2 扫码停车
为了方便用户使用停车功能,使得用户不用下车也能便捷停车,采用App 扫描二维码来发起订单请求。二维码生成基于Zxing 的开源库。
二维码包含该停车设备编号P_id,停车场编号C_id,上次维护时间maintenance_time 以及校验码,以Json 数据的格式编译为二维码张贴在停车设备上。
当用户扫码之后获取Json 数据,App 使用Google 的开源库Gson 工具对数据进行解析,验证校验码,并确定该设备在使用年限中。然后获取停车设备编号P_id,将自己的编号U_id 加上当前时间current_time 打包成新的Json 数据,并向服务器发送订单请求。
服务器接到用户请求,向指定停车设备下达指令,并且生成订单。
流程图如图6所示。
图6 扫码停车流程图
4 结语
本文完成了基于无避让智能立体停车设备的智慧停车系统,该系统包含一个车库管理云平台以及智慧停车App,结合智能立体停车设备可以大大提高停车场的空间利用率,使得停车更加规范化,缓解道路压力,同时使用户停车过程更加便捷,具有良好的经济效益和社会效益。