时间:2024-05-04
陈泓昌,喻家明,李庆霖,黄镇建
(韩山师范学院物理与电子工程学院,潮州521000)
随着汽车的普及,很多城市往往会出现“一位难求”的情况,因此非常有必要开发一款接入互联网的小型智能设备,满足人民群众出行的停车的需求。
本系统设计的基于加密二维码的智能停车系统,可以实现网上预约停车。用户在线预约停车后,即可获可用智能手机获得加密二维码,该二维码具有时效性。在规定时间内,用户凭获得的加密二维码至停车场刷码停车,用户停车完毕后,刷码结算。车辆离开后,云端数据库增加一个停车位。一位难求已成为“城市的痛”,系统可应用到大型公共停车场,实现车位的在线智能化管理,用户完全可“按需”驾车出行。
停车场管理方只需购买本作品设计的智能设备,并在网上注册绑定即可使停车场处于无人值守的管理状态。这既节省了人力,还可以实时共享停车数据,从而改善人们的出行体验。
二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息[1]。目前,最流行的莫过于QR Code,QR 表示Quick Response 即快速响应,QR Code 码具有全方位(360°)识读特点,QR Code 码的超高速识读特性使它能够广泛应用于工业自动化生产线管理等领域,因此QR Coded 在很多领域得到广泛应用。
目前,国内外市场上,也出现了很多二维码门禁,广泛应用于酒店房间,住宅等,但并没有将二维码技术应用到智能停车系统的门禁系统开发中,实现预约和结算功能,并且大多数应用并没有注意到QR Code 由于其开源特性,容易被篡改、假冒,因此本文对QR 码进行了加密处理。基于加密二维码的智能停车预约系统开发成功后,将其适当修改,还可应用于电梯门禁、门诊预约、车站、地铁的验票、大型赛事集会的签到等领域,应用十分广泛。该“钥匙”很容易分发,制作成本也极低廉,如获得资金支持,可满足社会公共事业建设的需要,为智慧城市的建设添砖加瓦。
目前,QR 二维码已经在很多领域得到大量应用。本文将在线生成的二维码的信息当做“钥匙”,只有遇到正确的“钥匙”,智能停车系统的门禁设备才会启动,允许停车。系统的实施分为线下硬件设备、MQTT 协议服务器控制脚本和线上网站三部分。
硬件部分使用ESP8266+Arduino+GM65 围绕MQTT 协议来开发。在物联网大肆发展的今天,乐鑫的ESP8266 模块,能快速实现物联网领域的多种实践,逐渐在嵌入式领域占据了领先地位[2]。
服务器控制端使用Python 语言,接收设备发送过来的数据,解密,与用户存储在数据库中的信息做比对,正确才发送开门信号给设备。
Web 页面使用Python 的Flask 框架搭建,给注册用户提供生成加密二维码的预约页面[3]。管理员则可以通过后台管理页面操作数据,实现停车场数据的增删改查,以及对用户进行管理。
系统的设计及实现包括以下三部分:
(1)线下停车场硬件设备,主要实现用户二维码信息的传输给服务器,接收服务器回传结果并做出相应的处理;
(2)线上网站。提供用户注册、信息存储、停车场信息展示、后台管理等功能;
(3)MQTT 协议服务器控制脚本,主要接收线下停车场硬件设备发送过来的信息,并进行比对,将结果回传给对应的硬件设备[4]。
本作品硬件设备包括两大部分,一部分属于通信设备,为主设备;另一部分为控制设备,为从设备。主设备ESP8266 模组通过MQTT 协议与服务器通信,处理服务器回传的数据,控制从设备Arduino UNO[5-6]从而做出相应的动作,其工作流程如图1 所示。
ESP8266 模块是乐鑫公司生产的32 位Tensilica处理器。CPU 时钟速度最高可达160MHz,支持实时操作系统(RTOS)和Wi-Fi 协议栈,可将高达80%的处理能力留给应用编程和开发。
GM65 扫描模块功耗低,工作电流小于150mA,一体化设计,体积小;支持TTL232 和USB(中文免驱)接口;支持所有通用一维条码及常用二维码,可直接识别手机屏幕。
图1 硬件流程图
Arduino UNO 通过串口接收到ESP8266 发送过来的命令信息,进而控制舵机开启闸门,接着,通过超声波测距模块判断车辆是否完全进入,从而使舵机放下闸门,完成车辆进入停车场的程序,硬件部分的电路如图2 所示。
图2 硬件电路图
服务器端开发语言为Python,程序基于MQTT 通信协议,将数据发送到云端服务器,且云端也能主动发消息到设备端。ESP8266 模块通过串口接收GM65 扫码模块传过来的二维码信息,并将该加密信息加上驶入/驶出扫描设备自身的加密信息一同传输到服务器。服务器对信息进行解密,对比数据库已有信息,从而做出判断,并将结果加密,通过MQTT 协议发送给ESP8266。ESP8266 再将信息解密后通过串口控制从设备Arduino UNO 做出相应的动作。
Web 的开发框架是Flask,后台的数据库为MySQL,支持手机浏览器、传统PC 两种访问方式。后台的主要数据表有7 张,主要用于存储管理员信息、用户信息、用户积分、用户预订信息以及用户停车账单、硬件设备、停车场信息等。服务器控制脚本一直在后台运行着检测预约情况。注册用户可看到停车场的情况,随时随地可根据自已的情况进行预约。Web 部分的结构图如3 和图4 所示。
图3 普通用户模块功能结构图
图4 管理员模块功能结构图
系统使用Docker 技术打包本作品的Web 应用以及依赖包到一个轻量级、可移植的容器中,然后部署上线。服务器用的是阿里的云服务器,系统为Ubuntu Server 18.04,这些应用程序分别运行在不同的Docker容器中,相互隔离,使服务尽可能的安全运行。一共开启三个容器,分别为:Python-Flask+uwsgi+Nginx 网站运行环境、MySQL 运行环境、MQTT 服务器运行环境。
在使用基于加密二维码的智能停车场前,用户必须通过网页端注册网页帐号,填写相应的资料,并且通过验证为合法用户之后才能使用本系统进行线下停车,注册成功后会自动跳转到用户主页(http://49.234.8.226)。主页的侧边栏为导航栏,中间部分为各停车场信息页面,分块显示,网站主页界面如图5所示。
点击侧边导航栏的用户→停车,可生成一个有时效性的经过加密的二维码,并将相应信息存储到数据库,然后用户将此二维码于停车场扫码设备识别,进而上传到服务器进行对比,从而开启停车场闸门,实现停车的功能。系统支持手机浏览器,用户获得的加密二维码如图6 所示。
图5 网站主页
图6 用户获取二维码停车界面
这里二维码的加密算法使用的是恺撒加密方法。设备开机后会主动向服务器发送一条算子特定的加密信息,然后服务器将算子存储到数据库中,之后的加密通信都由此算子加密。
服务器端生成的加密二维码为一段带get 参数的URL,其中所带的get 参数即为加密后的信息。门禁系统扫描设备接收到信息后只需在尾部拼接上自己的驶入/驶出加密信息,并发送给服务器即可。服务器再根据对应设备在数据库找到相应算子来解密信息,并做出处理,其中算子会定时更新。此时,二维码中加密信息包含如下字段内容。
表1
管理员登录Web 后台后显示的主页仪表盘信息界面如图7 所示。后台可以添加设备、添加停车场、删除设备、删除停车场、添加管理员、删除管理员,其中添加新的停车场前需添加新的设备,一个设备只能属于一个停车场。若能得到资金的支持,将每座城市分散的停车场接入互联网,实现线上线下的停车数据同步,一定能够为人民群众出行提供更好的服务。
图7 主页仪表盘
目前,常见的停车系统大多还需要人工值守,或者刷卡通过门禁。部分高端设备即使能实现车辆自动识别,但没办法实现在线预约,用户出行前根本不了解停车场车位状况,“按需”出行没有办法实施,在线支付或者无感支付更是无从谈起。也就是说,基于“互联网+”思维,使用加密二维码实现在线车位预约,而且还能在线支付结算的智能停车系统目前尚属空白。此外,大多数停车场还处于分散经营,各自为政状况,因而,公共部门无从获取各停车场的停车数据,并对这些数据进行统计分析,为用户的出行或停车场的经营提供建议。本系统如获得资金的关注和支持,能够将一座城市的所有停车场接入互联网,实现停车数据的在线共享,用户将获得更好的出行体验。尤其在节假日或出行高峰,公共管理部门可以对停车需求进行预警或通报,人们可以根据互联网提供的数据“按需”出行,从而解决“一位难求”的城市痛点。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!