目 录
摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 物联网技术 3
1.2 JFinal框架技术 3
1.3 uni-app技术 4
1.4 本章小结 4
2 智能辅助泊车系统的分析 5
2.1 需求分析 5
2. 1.1 系统的功能需求 5
2. 1.2 系统的非功能需求 5
2. 1.3 系统业务需求角色分析 5
2. 1.4 车主需求分析 6
2. 1.5 停车场管理员需求分析 7
2.2 系统的工作流程分析 7
2.3 本章小结 8
3 智能辅助泊车系统的设计 9
3.1 系统总体设计 9
3. 1.1 系统功能结构 9
3. 1.2 软件的体系结构 10
3.2 系统详细设计 10
3. 2.1 微信小程序设计 10
3. 2.2 后台服务器设计 12
3. 2.3 数据库设计 14
3. 2.4 硬件设计 16
3.3 本章小结 18
4 智能辅助泊车系统的实现 19
4.1 开发环境 19
4. 1.1 硬件环境 19
4. 1.2 软件环境 19
4.2 开发规范 19
4.3 系统核心功能的实现 19
4.4 本章小结 24
5 智能辅助泊车系统的测试 25
5.1 测试计划 25
5.2 测试用例 25
5.3 测试结果 26
5.4 本章小结 30
结 论 31
致 谢 32
参考文献 33
附录1 相关硬件技术数据 35
附录2 源程序清单 36
摘 要
随着物联网时代的到来,人们的生活水平逐步提高,导致人均机动车保有量也越来越高,由此带来的“泊车难,找位难”等一系列问题亟待解决。在此种情况下,传统的城市停车设施规划管理系统已经无法满足泊车者的客观要求。本文针对当前存在的此种迫切需求,实现了基于物联网技术的智能辅助泊车系统,以改善泊车难问题。
通过对物联网大环境下辅助泊车系统业务流程的调研,并充分考虑到未来停车场规模、车位硬件检测设备等可变需求因素,本文运用微信小程序开发者工具设计用户端界面,采用JFinal框架作为后台系统体系架构,以Tomcat和jdk为应用服务器,MySQL作为后台数据库,光电传感器和树莓派作为物联网硬件,开发实现了智能辅助泊车系统。该系统共包含硬件、后台、前端等三大模块,突出之处在于用户只要使用手机端的微信小程序就可以查看整个停车场的平面图以及车位状态信息,由此达到快速泊车的目的。通过使用本文系统进行停车场泊车管理工作,可以使得车主的找位效率大大提升,具有精确、方便、快捷、高效等优点,在很大程度上降低了停车场的人工管理成本,提升了车主泊车过程的舒适度和满意度等。
本文系统采用的物联网技术和小程序框架使得整个系统具有可用性强、可扩展性高等特点。经过具体的编码实现和系统用例测试,智能辅助泊车系统中各模块功能均已成功实现。经实际运行证明,本文所设计的辅助泊车系统架构完整,性能良好,整体运行稳定,可以满足车主泊车方面的需要。
关键词:物联网; 辅助泊车; 车位状态管理; 微信小程序
Abstract
With the advent of the Internet of things, people’s living standard has been gradually improved, resulting in an increasing number of motor vehicles per capita, resulting in a series of problems, such as “difficult to park, difficult to find a place”, which need to be solved urgently. In this case, the traditional urban parking facilities planning and management system has been unable to meet the need of the parking. In this paper, aiming at the current urgent needs, the intelligent aider parking system based on Internet of things technology is implemented to improve the parking problem.
Through the auxiliary parking system under Internet environment, and fully consider the future scale of the parking lot, parking space hardware testing equipment such as variables, this paper uses WeChat small application user interface design, using JFinal frame as a background system architecture, using Tomcat and JDK as application server, MySQL database as the background, photoelectric sensor and PI as iot hardware, developing intelligent auxiliary parking system is realized. The system consists of three modules, including hardware, background and front end, the outstanding point is that users can view the plan of the entire parking lot and parking status information by using WeChat small program, thus the purpose of fast parking is achieved. By using this system for parking lot parking management work, can make the owners find a efficiency greatly, has the advantages of accurate, convenient, fast and efficient, to a large extent reduce the parking lot of the artificial management costs, improve the comfort and satisfaction of car owners in the parking process.
The IoT technology and small program framework adopted in this paper make the system highly available and expandable. Through the concrete code realization and the system case test, each module function in the intelligent auxiliary parking system has been successfully realized. Proved by actual operation, this article has designed the system architecture is complete, the performance good, can meet the needs of the owner parking aspects.
Keywords: IoT; Assist parking; Parking status management; WeChat applet
引 言
随着科技的发展和社会的进步,机动车在我国的普通家庭已经开始普及,由此带来的“泊车难”问题也成为了阻碍我国城市化发展的重要难题。各城市停车场规模建设开始不断扩大,一些升降式停车场、重叠式停车场、多层地下封闭式停车场也渐渐开始问世[1],因此,开发出一款能够帮助车主快速找到空车位的智能辅助泊车系统的要求也越来越迫切。
据相关数据显示,截止2016年初,在一些大型城市有十分之三的石油资源浪费在停车场找寻合适车位的路程中,而在繁华的市中心,假如是一个对所去停车场内部结构完全不熟悉的车主,想要找到一个合适的停车位,大概需要花费8分钟的时间,这在很大程度上降低了人们的生活品质[2]。对于大多数车主而言,不可能对所有停车场的内部行车路线及车位占用信息都了如指掌,所以,想要快速在泊车过程中找到一个合适的空车位,是一件非常困难的事情。这就使得停车场整体运行效率不高,甚至还会造成场内交通拥堵、排放过多尾气污染环境等情况[3]。由此而来,设计出一个能直观显示停车场内部结构平面图信息和车位使用信息的辅助泊车系统,成为缓解当前城市停车难题的有效手段之一。
本文将物联网技术中的光电传感器、树莓派等硬件设备与后台管理数据库相结合,融入到停车场的车位状态管理系统中,不仅加速了其现代化步伐,还提高了车主的泊车效率,让停车场的管理工作更加规范有序,同时还解决了停车场浪费人力的问题,缓解了车辆在场内反复巡游的情况,减少了汽车尾气对城市环境的破坏,改善了目前城市的交通状况,最主要的是还在无形之中提高了人们的生活品质[4]。
本课题拟完成一个基于物联网大环境下的智能辅助泊车系统,并对如何通过硬件改变车位状态的方法进行详细的研究。该系统以停车位是否空闲为核心,以车主和停车场管理员为两个主体,通过快速帮助车主找寻空闲车位,达到辅助其前往泊车的目的,该方法是解决停车难题的重要管理措施和手段。本课题的主要难题是如何基于物联网中的光电传感器和树莓派将车位状态信号上传到后台数据库,并通过服务器相连,最终显示在用户端和停车场管理员端。
本文从车主用户的需求出发,首先明确智能辅助泊车系统的组成部分,然后详细阐述了包括车位信息采集模块,用户端模块,停车场管理员系统模块等在内的整个系统框架和各个子系统的工作方式以及子系统之间的数据传输方式,最终实现给车主提供最佳车位和最佳停车提示路线的功能[5]。物联网硬件设计方面拟将光电传感器嵌入到停车位中,再将其通电并将输出信号线连接上树莓派的引脚,然后由树莓派作为中间介质,将数据变化信号传递给后台数据库,再由系统管理员更新车位状态信息,最终显示到用户端界面,达到运用物联网技术实现对整个停车场局域控制的目的。本文最后通过简单的停车场案例和测试用例,实现整个辅助泊车系统的业务流程。
本课题需要重点解决的问题有以下几条:
(1)车主用户如何从手机设备获取停车场平面图及空闲车位信息;
(2)如何为车主用户提供辅助泊车路线;
(3)停车场管理员如何实时了解到所有车位是否被占用的信息。
(4)如何通过物联网技术中的硬件设备将数据变化信号传递给后台管理数据库,并由其对前端车位状态进行更新。
本文第1章介绍了系统开发时所用到的相关技术,其中包括物联网技术、JFinal框架技术和uni-app技术等。第2章为系统的分析部分,主要包括系统各角色的需求分析和整体工作流程分析。第3章为系统的设计部分,主要包括总体设计和详细设计。第4章是系统的实现部分,介绍了实现功能时必要的开发环境、开发规范以及实现功能演示过程等。第5章是智能辅助泊车系统的测试环节,主要包括制定测试计划、设计测试用例以及得出测试结果三部分[6]。
1 相关技术
1.1 物联网技术
物联网技术最初起源于传媒领域,是指通过一系列的信息传感设备,按照相关的约定协议,将任意物体与互联网相连接,然后通过信息传播媒介进行信息交换和通讯,以实现智能化识别、跟踪、定位、监控和管理等功能[7]。简单来说,只要涉及到各类传感器和移动通讯网络相互交换信息的过程就可以归纳到物联网的范畴。
本文将物联网技术运用到车位状态的检测装置中,将光电传感器的黑色输出信号线与树莓派主板的引脚相连,然后通过控制树莓派桌面系统,最终达到改变车位状态的目的。此外,物联网的相关技术应用领域也十分广泛,其中主要包括传感器技术应用、射频识别技术应用、嵌入式系统技术应用等[8]。从技术架构上来看,其体系架构可分为三层,分别是感知层、网络层和应用层,如图1.1所示[9]。
图1.1 物联网典型体系架构
总的来说,物联网是继互联网之后一次新的信息技术革命,它在未来的发展潜力不可估量。目前,我国政府还大力支持物联网产业的发展,其行业应用领域广阔,涉及到安防、医疗、电力、物流、海关、智能交通、智慧城市等,且规模也日趋完善。但物联网的发展也面临着众多难题,比如国内现在缺乏相关技术人才和核心技术等,所以要想建立更完整的物联网体系我国还有很长的路要走。
1.2 JFinal框架技术
JFinal是一款基于Java语言的极速Web开发框架,其核心设计目的是以尽可能少的代码量来进行快速的开发过程。JFinal框架由Handler、Interceptor、Controller、Render、Plugin五大部分组成,它的结构非常简单,顶层是一个责任链模式变种,ActionHandler内部是一个Command模式变种[10],其体系结构如图1.2所示。Handler是请求处理器,完成对所有请求的公共处理;Interceptor是拦截器,用于对action请求的拦截处理;Controller是控制器,是JFinal核心技术之一,所有Web应用的控制器都需要继承该类;Render是渲染器,负责将服务器端的数据组装成不同的视图类型并返回给客户端;Plugin是插件部分。
图1.2 JFinal框架体系结构
1.3 uni-app技术
uni-app是一个使用Vue.js来开发的跨平台应用的前端框架,使用uni-app技术通常只需要编写一套代码就可以编译到多个平台上进行应用。uni-app框架是在HBuilderX上进行开发的,因为其vue语法完备,开发效率高,一套代码可以同时生成APP和微信小程序等,因此,本项目的微信小程序设计部分采用的就是uni-app模板,其中模板内自带的框架样式,对于初学者来说是十分友好的一项技术。
1.4 本章小结
本章主要描述了实现智能辅助泊车系统所使用到的相关技术,比如物联网技术、后台IDEA中的Jfinal框架技术,辅助微信小程序开发的uni-app技术等,这三个核心技术的使用涵盖了本系统的硬件、后台以及前端界面的设计。
2 智能辅助泊车系统的分析
2.1 需求分析
2. 1.1 系统的功能需求
智能辅助泊车系统旨在解决现有城市交通的“泊车难”问题。该系统可帮助车主寻找目的地附近停车场,并提供停车场平面图以及场内车位状态信息,减少车主在寻找合适停车位过程中的反复巡游,缓解场内交通压力,减轻停车场工作人员的工作量[11]。
2. 1.2 系统的非功能需求
智能辅助泊车系统除了要实现辅助用户快速泊车的核心功能外,还应该具有美观的前端界面,完整的系统结构组织用来提高用户的体验度。尤其体现在给用户提供寻找车位的路线提示时,本系统采取简单的弹窗设置搭配通俗的文字语言描述,实现了系统的最佳路线辅助泊车的过程。此外,在保证各部分功能需求实现的基础上,还应该完善系统的可维护性、可扩展性和全面性等。
2. 1.3 系统业务需求角色分析
本系统围绕着车主和停车场管理员两大角色展开,设计相应的系统功能模块,系统的角色用例图如图2.1所示。
图2.1 系统角色分析用例图
车主使用手机端进入微信小程序,主要功能有登录注册、完善个人信息、预约车位、查询附近停车场、查看停车场平面图、辅助快速泊车等。停车场管理员使用JFinal框架对后台进行管理,主要功能有管理车主用户基本信息、管理车位状态信息等。智能辅助泊车系统在满足车主需要的同时,也站在停车场管理员的角度,采用人性化的设计,不仅能为用户提供空车位泊车指示,让用户实时了解场内的车位状态,还减少了停车场管理员的工作量,让其只需要进行定期的系统维护即可。
2. 1.4 车主需求分析
对于智能辅助泊车系统的功能结构而言,车主需求主要包括:查看停车场平面图、查询场内空车位信息、点击车位给出辅助前往车位提示路线、预约车位、查询附近停车场信息等。相较于以往传统的停车方式来讲,其泊车过程通常是:车主到达目的地后,先寻找目的地附近合适的停车场,然后再去该停车场寻找合适的空车位进行泊车,如果所去停车场没有空车位了,则需要前往下一个停车场再次找寻空车位,如图2.2所示是在没有使用辅助泊车系统下的泊车过程图[12]。
图2.2 无辅助泊车系统的泊车过程图
从图2.2可以看出,在没有辅助泊车系统的情况下,车主由于不了解目的地附近的停车场情况,就会在寻找停车场和车位的过程中进行盲目搜寻。这个过程是十分费时费力的,而且在场内反复巡游寻找空车位的车主,将长时间占用停车场内通道资源,进而引发道路堵塞,导致停车场内车辆难进也难出。况且人的观察能力有时候也是有局限性的,因此可能需要很长一段时间,车主才能找到一个比较合适的停车位置[13]。
为了解决车主在停车场内盲目找寻空车位的问题,本文结合当下最流行的物联网技术,将停车场系统设计成可辅助车主泊车的智能系统。使用该系统进行泊车,不仅可以提前预约车位,还能清楚直观的看到停车场的平面图信息以及空闲车位的信息,系统还会根据车主的选择提供前往车位的路线信息。为了更直观的对比有无辅助泊车系统对泊车过程的影响,将使用辅助泊车系统后的泊车过程图演示在图2.3所示[14]。
图2.3 有辅助泊车系统的泊车过程图
2. 1.5 停车场管理员需求分析
停车场管理员对于系统的主要需求是车位状态信息管理,在此功能管理基础上还应该包括对车主用户的登录注册信息、预约车位订单信息进行管理。根据停车场管理员系统的需求设计出其用例图如图2.4所示。
图2.4 停车场管理员用例图
如图2.4所示,在系统管理员的权限下可对车位信息、用户信息、预约信息进行相应的管理,管理员系统的存在保证了整个系统的数据正常流向[12],因此,在设计小程序的同时,完善管理员系统是十分有必要的。
2.2 系统的工作流程分析
完成智能辅助泊车系统的设计,需要了解完整的数据流向过程,该过程包括数据采集、数据通信、数据处理、数据存储这四个部分[15]。系统的数据流向与系统的工作流程息息相关,其工作流程是先通过物联网技术中的光电传感器和树莓派对车位的状态信息进行采集并上载到后台,然后通过后台服务器对数据信号进行处理,处理完后的数据通过网络系统发送到用户端上并同时存储到数据库中,其中数据服务器是整个系统的核心和中心枢纽,它既能够接收硬件设备传来的车位变化信号,也能够在每次用户预约车位或完成停车操作后实时的更新数据库中剩余的车位数量和当下的停车状况。如图2.5所示是系统的工作流程图[16]。
图2.5 智能辅助泊车系统流程图
从图2.5可以看出,车位状态信息采集过程是通过安装在停车位上的车位检测装置(光电传感器)对每个车位的停车情况进行实时的数据采集,然后通过后台数据库在每一次有车辆停入对应车位时,将数据信息进行更新并统计场内的车位情况,随后将能够继续停车的车位信息发布到用户端的微信小程序上[13]。然后车主用户进入微信小程序后,就可以访问到当前停车场的空车位信息,并根据自己的需求选择合适的停车位,最后系统根据用户的选择,提供最佳的引导路线辅助其顺利泊车[17]。
2.3 本章小结
本章主要讲述了智能辅助泊车系统的需求分析以及具体工作流程分析,详细介绍了该系统各个角色的用例图以及功能需求和非功能需求,对系统整体工作流程的数据流向进行了梳理,为之后系统的设计与实现奠定了良好的基础。
3 智能辅助泊车系统的设计
3.1 系统总体设计
3. 1.1 系统功能结构
本文根据车主和停车场管理员两大角色需求分析中提出的问题进行总体功能结构设计,功能的组织结构如图3.1所示,包括数据采集系统、数据传输系统、中央处理系统和输出显示系统四部分,其功能结构是:首先通过停车场的数据采集系统对场内车位信息进行采集,并按照一定方式通过数据传输系统将信息传送到停车场管理员系统中的车位管理模块,然后再由中央控制系统对这类数据信息进行分析处理后,将数据存储到后台数据库服务端,同时分送给信息发布系统,最终将信息输出显示在用户端界面。对于后台管理数据库中的车位信息,系统还提供了数据查询接口,以便系统管理员随时对数据进行管理[12]。
图3.1 系统功能的组织结构图
从图3.1可以看出,智能辅助泊车系统下的四个子系统主要功能为:(1)数据采集系统:实时通过硬件设备以及用户端设备的预约信息采集停车场内各个车位的使用情况,分为“空车位”、“已停车”、“已预约”三种状态。(2)数据传输系统:传输系统顾名思义是要在保证数据安全的情况下,快速的将相关数据信息传递到合适的位置,它是整个系统之间的纽带,只有通过数据传输系统的连接,才能形成一个完整的辅助泊车系统。(3)中央处理系统:该系统实现对各个停车位信息的汇总,并将相关信息进行分析和处理,实时反馈到信息发布系统和输出显示系统,它是整个系统的中心枢纽。(4)输出显示系统:该系统是实现人机交互的一个重要途径,它将机器语言转换成用户可识别和使用的图画或文字语言,是用户和系统进行有效交流的方式之一[18]。
智能辅助泊车系统在功能设计上分为客户端、数据库端、服务器端三个部分。客户端主要运行在微信小程序上,面向车主提供辅助泊车服务,主要的功能模块分为登录注册模块、附近停车场查询模块、预约车位模块以及个人中心模块等。数据库端无疑是用来进行数据操作的,主要包含数据处理和数据存储[13]。服务器端主要负责对从数据采集系统收集到的车位状态信息进行数据处理,并且实现给车主用户提供辅助泊车信息的功能,将相应请求处理结果从服务器端传送给客户端[19]。
3. 1.2 软件的体系结构
该系统软件功能主要是实现停车场管理和辅助用户泊车,所以软件体系结构包括两个部分,分别是停车场管理员系统的软件和辅助用户泊车的软件。在设计停车场管理员系统软件时可以借鉴市面上现有的一些管理系统软件来设计软件体系结构,因此本文的设计难题是做一个如何实现辅助用户泊车的软件[20]。
停车场管理员系统是采用IDEA编程环境下的JFinal框架技术进行Web项目开发的,该软件的核心是开发迅速、代码量少等,而且跟MySQL数据库的连接只需要在一个类里面编写一个接口代码即可。但在安装IDEA软件的时候需要注意破解和激活的过程,并且激活之后的使用过程中注意不要随意更新软件版本。用户端的功能是基于HBuilderX软件下的uni-app框架的微信小程序来开发的,该软件还需要协同微信开发者工具一起开发,数据库的设计采用MySQL软件,如图3.2所示为该系统的软件分层体系说明图。
图3.2 软件分层体系说明图
3.2 系统详细设计
3. 2.1 微信小程序设计
智能辅助泊车系统的客户端功能主要体现在微信小程序上,本文微信小程序主要以HBuilderX中的uni-app框架开发为基础,基于JavaScript语言,配合微信开发者工具使用,最终成功开发出一款辅助用户找车位的微信小程序,该小程序还有很多为了完善功能结构和提高用户体验度而设计的其他功能。
uni-app模板框架搭配使用HBuilderX进行开发,其对vue语法支持完备,因此开发速度较快,学习成本低。最主要的是uni-app模板中有很全的前端界面样式设计的代码,比如:布局设计、按钮样式、弹窗样式、标签样式、图标样式、颜色样式、进度条设计等等。
基于车主用户的需求分析,设计出的微信小程序中各功能模块架构图如图3.3所示,主要包括:停车场平面图车位信息模块、预约信息模块、查询附近停车场模块、个人中心模块等,其中车位信息模块包括查看停车场平面图及场内各个车位状态并选择合适的车位给出辅助路线提示泊车;预约信息模块包括预约车位编号信息和时间日期信息等;查询附近停车场模块包括查询车主所在目的地的附近其他20个停车场位置信息,标记显示在附近地图中;个人中心模块包括普通车主的登录注册信息、完善个人资料信息、查看自己预约信息等。
对于车主来说,该平台不仅为其提供了停车场的内部结构信息和车位状态信息辅助泊车,还能在登录后进行预约车位的操作,在很大程度上减少了停车过程中所花费的时间,极大满足了用户的出行需要[21]。
图3.3 微信小程序平台结构图
基于物联网的智能辅助泊车系统的两大核心分别是:物联网技术和智能辅助泊车功能,其中物联网技术的使用在后面的硬件设计中有详细介绍,而智能辅助泊车功能是结合微信小程序端的车位信息模块、后端数据和预约信息模块共同实现的。由于硬件设备的数量限制,所以本文设计了一个简易型停车场的平面图,如图3.4所示。
图3.4 简易型停车场平面图
停车场平面图决定引导用户泊车的路线具体是什么样的,因此,本文根据先前设计好的简易型平面图图片在微信小程序中用代码循环的形式画出与此结构类似的停车场平面图,并为其赋予了三种车位状态信息。当车位被车辆占用时,界面中该被占用车位会显示“已停车”信息;而当车位被用户选择预约时,界面则会把预约车位的状态改为“已预约”信息,所以之后再进场的用户只能选择“空车位”状态的车位进行泊车。车位占用信息是从硬件设备端传到后台数据库的数据信号所改变的,而预约信息则是从客户端传来的预约数据,两者相互配合构成整个停车场的车位状态信息,不仅使车主用户更加方便快捷的泊车,还让停车场后台管理人员直观地了解到整个系统的运行状况。
随着各类软件应用的快速发展,微信小程序成为了目前十分流行的应用形式,其自带的微信风格样式和随开随用、不需要下载安装、不需要更新版本的优点让其能与原生应用程序相媲美。本文根据软件应用的流行趋势,选择用微信小程序作为与用户交互的一种前端工具,紧跟时代发展的步伐。
3. 2.2 后台服务器设计
该系统的后台服务器端主要负责对光电传感器采集到的车位状态变化信号进行数据处理和运营微信小程序,实现停车场内的车位信息管理和辅助泊车功能,当车主通过微信小程序客户端向后台服务器发送辅助泊车服务的HTTP请求时,后台将相应服务的处理结果返回给客户端,服务器端所提供服务的功能结构如图3.5所示,主要分为系统设置、运营管理、数据统计和微信管理这几个方面,系统设置主要负责对管理员的操作日志和网站的基本信息进行管理;运营管理主要负责的是车位管理、用户管理和预约管理等;数据统计主要负责对访问网站的次数进行统计;微信管理主要负责对微信基本信息进行设置管理。
图3.5 服务器端功能结构图
本文后台管理系统采用Tomcat + jdk的方式作为服务器,使用方式很简单,只需要将开发的应用程序部署到服务器上,就可以通过访问Tomcat相应数据接口请求获取相应的数据。在本系统的设计中,微信小程序端通过HTTP协议请求方式中的url_Request的请求方法,访问后台服务器的对应功能接口,其中,应用服务器的设计架构如图3.6所示[22]。
图3.6 应用服务器的设计架构图
对于微信小程序而言,需要通过微信服务器的验证后才能调用第三方数据接口,当应用服务器捕捉到前端的URL请求后,将请求交予服务器前端控制器来解析并匹配到相应的逻辑处理器中,然后逻辑处理器根据业务逻辑需求进行处理得到结果,并将结果返回到服务器前端控制器和储存到数据库端,最后前端控制器将视图进行渲染后返回到前端的微信小程序上,至此,用户的请求得以实现[23]。
3. 2.3 数据库设计
智能辅助泊车系统的数据库设计采用管理型数据库MySQL来实现,MySQL是一种开放源代码的关系型数据库管理系统,使用最常见的SQL语言进行数据库管理,其概念结构设计模型主要关注于研究课题所属领域的元素及其属性,不包含实际操作[24]。本系统的模型对象主要有车位信息表、普通用户信息表、预约信息表、系统管理员表、操作日志表等,如图3.7所示是本系统数据库的实体关系图。
图3.7 数据库的实体关系图
根据概念结构模型画出如图3.7所示的数据库实体关系图,现将其转化为数据库的表结构,得到表的关系视图,其中重要的表结构如下。
(1)车位信息表
如表3.1所示为车位信息表。记录了车位的状态信息,主要有车位编号、车位状态信息、车位类型、辅助路线导航提示等车位信息[6]。
表3.1 车位信息表
字段名 类型(长度) 约束 说明
id INT(11) 主键,非空 车位编号
state INT(1) 非空 车位状态
type INT(11) 非空 车位类型
route VARCHAR(200) 非空 辅助路线导航提示
(2)普通用户信息表
如表3.2所示为普通用户信息表。记录了普通用户的登录、注册时的手机号、密码、姓名、性别以及个人中心页面的基本资料信息等[25]。
表3.2 普通用户信息表
字段名 类型(长度) 约束 说明
id INT(11) 主键,非空 普通用户编号
mobile VARCHAR(45) 非空 登录手机号
password VARCHAR(255) 非空 登录密码
nickname VARCHAR(45) 非空 用户姓名
sex VARCHAR(2) 用户性别
order INT(11) 用户预约车位信息
(3)预约信息表
如表3.3所示为预约信息表。普通用户的预约车位操作需要在使用手机号和密码登录后才能预约。预约信息表记录了预约车位时用户的手机号、预约车位编号、预约时间、预约日期和特殊备注等预约信息。
表3.3 预约信息表
字段名 类型(长度) 约束 说明
id INT(11) 主键,非空 预约编号
phonenumber VARCHAR(45) 非空 登录手机号
carnumber VARCHAR(45) 非空 车位号码选择
time VARCHAR(45) 预约时间选择
date VARCHAR(45) 预约日期选择
remarks VARCHAR(45) 非空 预约车位备注
(4)系统管理员表
如表3.4所示为系统管理员表。记录了系统管理员的编号、登录名、登录密码等信息。此外,管理员系统还要运营和管理车位信息、普通用户信息、预约信息、操作日志信息等。
表3.4 系统管理员表
字段名 类型(长度) 约束 说明
user_id INT(11) 主键,非空 管理员用户编号
login_name VARCHAR(20) 非空 管理员登录名
user_password VARCHAR(64) 非空 管理员用户密码
(5)操作日志表
如表3.5所示为操作日志表。记录了系统管理员的登录和退出的操作日期和时间以及操作的详细信息等。
表3.5 操作日志表
字段名 类型(长度) 约束 说明
logid INT(11) 主键,非空 序号
user_id VARCHAR(20) 管理员用户编号
user_name VARCHAR(50) 管理员用户名称
function_name VARCHAR(200) 功能
oper_date DATE 操作日期
oper_time DATETIME 非空 操作时间
oper_desc VARCHAR(128) 非空 操作类型描述
status CHAR(1) 非空 操作状态
3. 2.4 硬件设计
本系统的硬件设计主要是基于物联网技术来实现的,它分为光电传感器和树莓派两大部分的设计,要想实现智能辅助泊车系统中的车位检测装置,需要以下电子器件。
(1)光电传感器,所选版本:E18-D80NK漫反射光电开关#MK671;(2)树莓派3B+主板、新款ABS镂空外壳、散热风扇、极速充电器、电源带开关;(3)microSDXC读卡器;(4)SD存储卡;(5)双头HDMI线;(6)杜邦线若干(公对母、母对母);(7)大容量可充电锂电池(含充电器);(8)24V/12V转5V电源转换器;(9)螺丝刀等。
光电传感器作为车位检测装置,其内部结构由发射器和接收器两部分组成,如图3.8所示。工作原理是当电开关有足够的组合光返回接收器时,开关状态发生变化,进而用来检测车位上是否有车辆遮挡,此外需要根据实际情况适当地调节其感应头的灵敏度,确保其是因为有车辆驶入车位才发生数据变化的,避免一些无关因素的影响,做到防误判[26]。
图3.8 光电传感器内部结构原理图
树莓派实际上相当于一个微型的电脑主机,它是为了学习计算机编程而设计的,可以实现在计算机上远程控制树莓派系统。树莓派系统环境的安装和搭建是一项比较复杂的工作,首先需要获取合适的镜像文件,然后通过读卡器把SD卡采用SDFormatter软件格式化,最后使用相关软件来进行镜像烧录。烧录完成后的SD卡需要插到树莓派主板上,为了延长主板的使用寿命,应该提前给其安装外壳和散热风扇。当一切工作都准备就绪后,将树莓派通过双头HDMI高清线与电视机相连,然后插上电源线,按下开关按钮,查看树莓派系统是否正常启动。在电视机上运行树莓派系统的图形界面时,需要把鼠标和键盘插到树莓派的USB端口,若没有多余的键盘,可以为其安装虚拟键盘。此外,最重要的一步是将树莓派联网,可以采用网线连接或打开SSH的方式连接WIFI,联网后的树莓派才能进行远程登录,打开终端使用ifconfig的命令就可以查询获取到树莓派的IP地址,计算机通过这个IP地址,对其进行远程登录,进而利用Windows的远程桌面协议控制树莓派系统,最终实现其作为介质传输数据信号的功能。树莓派3B+主板的各模块分布结构如图3.9所示,在使用过程中要注意各个端口和引脚的具体功能并选择合适的进行使用。首先,需要一块锂电池给光电传感器以及树莓派通电,锂电池需要经过降压电源转换器与光电传感器的正负极相连以及树莓派相连,然后将光电传感器的黑色信号输出线连接在树莓派恰当的引脚上,这个引脚的选择跟python代码有关,要连接与gpio.py中对应的引脚编号,信号才能成功传递。
图3.9 树莓派3B+模块分布图
3.3 本章小结
本章主要讲述了该系统的总体设计结构以及各部分的详细设计,包括微信小程序设计、后台服务器设计、数据库设计和硬件设计等。如何将各个设计部分联系在一起,是本章重点研究的问题。系统设计是实现系统功能的前提和基础,因此,良好的系统设计方案会对系统的实现带来好处。
4 智能辅助泊车系统的实现
4.1 开发环境
4. 1.1 硬件环境
(1)操作系统:Microsoft Windows 10,64位;
(2)处理器:Intel® Core™ i5-5200U CPU @ 2.20GHz 2.19GHz;
(3)内存:8.00GB(7.74GB可用)。
4. 1.2 软件环境
(1)前端:HBuilderX + 插件安装 + uni-app开发框架 + 微信开发者工具;
(2)后台服务器端:IntelliJ IDEA 2020.1 + JFinal框架+ tomcat-7.0.85 + jdk1.8.0_112;
(3)数据库端:MySQL Workbench 6.3 CE;
(4)树莓派端SD存储卡格式化和烧录镜像软件:SDFormatter + Win32DiskImager。
(5)远程登录控制树莓派系统软件:VNC Viewer + PuTTY_0.67.0.0 + Windows远程桌面协议(mstsc)。
4.2 开发规范
开发规范也叫做项目编码规范,主要包括变量、接口、参数的命名规范以及注释规范等。对于命名而言,应尽量采用完整的英文描述符,避免使用缩写,注意像接口这种混合名字要区分大小写,使整体名字可读[27]。例如本系统的后台端接口文件命名都是采用BaseController的形式;变量和参数命名规范与数据库参数命名相对应,使用实物属性的英文名称等。代码注释规范决定其编写的程序是否能让人容易解读,应注意以下几点:
(1)在写代码之前写注释,说明下面这段代码的功能。
(2)对于不同模块的代码注释形式不同,比如有
、//、#、/**/等,应该根据代码原则选取适合的注释形式。
(3)注释要指出该处代码的编写思路和逻辑方法。
4.3 系统核心功能的实现
基于物联网的智能辅助泊车系统的核心功能主要有:(1)车主用户通过微信小程序查看停车场平面图以及空车位信息,再选择合适的停车位并由系统给予引导路线提示辅助其泊车。(2)车主用户通过微信小程序提前预约好车位。(3)车主用户通过微信小程序查询自身附近的停车场信息。(4)系统管理员通过连接树莓派远程控制系统管理后台数据库中的车位状态信息。下面分别对这些核心功能的实现做详细的业务流程介绍和实际操作。
(1)辅助车主泊车。该功能是当车主进入停车场后,通过扫描二维码的方式进入到“找车位”的微信小程序中,就可以查看到所在停车场的平面图以及车位信息,如图4.1所示,然后车主可以选择任意“空车位”,选择完毕后会弹出去往该车位的引导路线提示,辅助车主前往泊车,如图4.2所示,而且车主只有在点击“空车位”时,才会有辅助泊车提示,点击“已停车”或“已预约”,系统都不会出现弹窗提示。
图4.1 查看停车场平面图以及车位信息功能界面 图4.2 辅助泊车提示功能界面
辅助泊车过程是整个系统最核心最亮眼的功能,其业务流程是:先在home.vue文件下设计停车场的平面图,包括车位样式(横排或竖排)、车位状态(空车位、已停车、已预约)、弹窗路线等信息,然后再在JavaScript里通过http请求的方式调用后台CarController接口下的对应功能函数(searchCar()函数),最终实现整个停车场的自动更新车位信息和辅助车主泊车的功能。其中在实现辅助弹窗提示的功能中,核心代码如下:
图4.3 车主用户注册(左)、注册成功(中)、登录成功(右)界面
图4.4 后台数据库用户表界面
车主登录成功后就会自动弹到微信小程序的首页,此时预约服务页面和个人中心页面也会显示登录后的姓名和手机号等基本信息,然后车主就可以根据日期和时间开始预约车位了,如图4.5所示,车主只能预约这个时间点下的空车位,所以在车位选择的选择器中没有此刻“已停车”和“已预约”状态的车位供车主选择。当车主预约车位成功后,系统管理员可以在后台数据库的预约表或用户表中查看已预约的车位信息,这时首页的停车场平面图也会自动更新该预约车位状态,而且在个人中心页面也可以看到自己的预约信息,如下图4.6所示。
图4.5 车位预约服务功能界面
图4.6 车位预约成功后的功能界面
预约车位操作的核心代码如下:
order () {//预约车位
//发送一个http请求到"/order/order"
this.$http.url_Request(“/order/order”, {
//传参,跟后台接口对应
phonenumber: this.phonenumber,
carnumber: this.picker[this.index].replace(‘号车位’, ‘’),
time: this.time,
date: this.date,
remarks: this.remark,
uid: uni.getStorageSync(“user”).id
}).then(res => {
console.log(res);//打印到那个控制台
uni.showToast({//弹出提示
icon:res.state==‘ok’?‘ok’:‘none’,显示提示信息 icon是图标 title是显示文字
title:res.msg
})
})
}
(3)车主查询附近停车场。该功能可以实现当车主用户进入“附近停车场”页面后,第一次访问时会提示是否允许获取自身位置,点击“是”之后就会出现与自己当前定位距离最近的20个停车场标点信号。该功能的实现需要基于腾讯地图的相关API,因此需要提前申请一个API-key编号,然后调用腾讯地图的相关经纬度参数对用户当前位置进行精准定位和附近停车场信息标点显示,这个过程比较复杂,而且必须要有微信开发者工具的AppID才能调用API,所以还需要申请一个AppID。查询附近20个停车场信息并标点显示在地图端,实现效果如图4.7所示:
图4.7 查询附近停车场信息功能界面
查询附近停车场信息功能的核心代码如下:
//引入腾讯地图的js文件
import QQMapWX from ‘@/pages/qqmap-wx-jssdk.js’;
export default {
//页面的初始数据
data() {
return {
qqmapsdk: undefined,
latitude: 0,//经度
longitude: 0,//纬度
marks: []//标记位置
};
},
mounted() {
// 实例化API核心类
this.qqmapsdk = new QQMapWX({
/API key/
key: ‘TI2BZ-SKDRD-OEK4O-P4TUP-VKLH5-M3FNR’
});
wx.authorize({scope: “scope.userLocation”})//自身地理位置授权
this.initPosition();
},
}
(4)系统管理员通过连接树莓派远程控制系统,管理后台数据库中的车位状态信息。该功能是基于物联网硬件的实现部分,因此,测试效果放在后面的系统测试部分来详细编写,本节不作过多描述。
4.4 本章小结
本章主要描述了开发此系统所需的软硬件环境和开发规范,介绍了系统核心功能的实现方法以及操作流程,通过相关实现效果抓图和核心代码体现出项目的核心功能。
5 智能辅助泊车系统的测试
5.1 测试计划
先将测试环节所需的电子器件连接在一起,如图5.1所示,然后通过电脑对其树莓派桌面系统进行远程登录,如图5.2所示。当硬件环境和远程控制桌面搭建好之后,就可以设计测试计划了,由于光电传感器数量限制,每次只能测试一个车位,由车位编号决定,测试计划分为两大类,分别是车辆停入和车辆离开,详细情况在测试用例中进行说明[28]。
图5.1 硬件连接图
图5.2 Windows的远程桌面的协议控制树莓派桌面系统
5.2 测试用例
首先,选择测试车位编号cid,此处选用1号车位进行测试。情况一:当车辆驶离车位时,相当于原本覆盖在光电传感器上的障碍物消失了,它是否能检测到对应的离开信号,将该数据变化传递到后台数据库端,然后后台对其车位状态进行更新至微信小程序。情况二:当车辆驶入“空车位”的时候,相当于原本空的车位被车辆这个障碍物覆盖了,光电传感器能否检测到对应的驶入信号数据,并传递给树莓派,然后树莓派在终端运行gpio.py脚本,将数据变化信号传回到后台数据库端,并由管理员将微信小程序的前端用户界面给予更新。情况三:当车辆驶入“已预约”车位的情况,与情况二类似。
5.3 测试结果
情况一:先刷新一下此时的停车场平面图车位状态信息,如图5.3所示,后台数据库的车位表信息如图5.4所示。接下来按照测试用例对1号车位进行“车辆驶离”测试,如图5.5所示,将光电传感器的感应头对准空气,模仿空车位无车辆的情况,然后远程运行gpio.py文件,得到结果如图5.6所示。此时回到后台数据库刷新一下,看硬件设备的“车辆驶离”数据变化信号是否传递过来了,观察车位编号为1的车位状态是否发生了改变,如图5.7所示,1号车位已经由原来的“状态1”变为“状态0”了,再看一下微信小程序端的平面图是否已经更新,如图5.8所示。至此,“车辆驶离”情况用例测试完毕。
图5.3 没有进行测试前的停车场平面图车位状态信息
图5.4 没有进行测试前的后台数据库车位表信息
图5.5 感应头指向空气模仿空车位无车辆情况
图5.6 当感应头指向空气时运行gpio.py结果图
图5.7 “车辆驶离”用例测试后台数据库结果图
图5.8 “车辆驶离”用例测试平面图
情况二:由于刚才已经测试得出了车辆驶离的结果,此时1号车位成为了“空车位”,因此,继续对1号车位进行“车辆驶入”用例测试。如图5.9所示将光电传感器的传感头对准障碍物模仿有车辆驶入的情况,然后运行gpio.py文件,如图5.10所示,接着回到后台数据库观察车位表中1号车位的状态变化情况,如图5.11所示,然后刷新微信小程序的平面图信息,如图5.12所示。至此,“车辆驶入”情况用例测试完毕。
图5.9 感应头指向障碍物模仿有车辆驶入的情况
图5.10 当感应头指向障碍物时运行gpio.py结果图
图5.11 “车辆驶入”用例测试后台数据库结果图
图5.12 “车辆驶入”用例测试平面图
情况三:接下来额外演示一个“已预约”车位驶入车辆后的情况,选择4号“已预约”车位进行测试,如上图5.12所示为此时的停车场平面图车位状态信息情况。首先将gpio.py文件下的url语句的请求参数cid更改为4号车位,如图5.13所示,然后根据命令:python3 /home/pi/Desktop/gpio.py运行该引脚文件,最终查看后台数据库的车位表和更新后的停车场平面图车位状态,如图5.14、5.15所示。至此,预约车位驶入车辆情况测试完毕。
图5.13 修改gpio.py文件中的车位编号cid
图5.14 “已预约”车位车辆驶入后的后台数据库结果图
图5.15 最终测试完毕后的停车场平面图
以上三种情况的车位状态测试已经成功实现,如图5.16所示是树莓派40个引脚的详细编号信息:
图5.16 树莓派引脚详细编号图
5.4 本章小结
本章主要测试了当后台数据库连接树莓派远程控制系统时,树莓派引脚上的光电传感器发生变化时,车位的状态是如何变化的,主要分为三种情况进行了测试,经过测试环节,不断调整和修改项目代码,最终达到预期设计的要求。
结 论
实时更新车位状态和辅助用户找车位工作是智能辅助泊车系统的重要组成部分,其准确快速的执行对于解决城市的停车难题意义重大。为此,本文针对车主和停车场管理人员的迫切需求,设计并实现了基于物联网的智能辅助泊车系统。本文首先分析了智能辅助泊车系统的开发背景及意义,然后分析了构建智能辅助泊车系统所需要解决的一些问题,最后对智能辅助泊车系统的设计及实现方法进行了详细的说明和探讨。本文所开发的智能辅助泊车系统已经具备基本的业务功能,并应用到微信小程序的实际工作中,可以基本满足车主和停车场管理员对于停车场快速泊车的业务需求。
本文系统在设计与实现的过程中充分考虑了系统的可扩展性及未来需求变更等要求,具有代码易于理解、可修改性、安全性高等特点,所采用的物联网技术、JFinal技术、uni-app开发技术保证了系统具有先进、美观、跟上时代潮流的优势。实际应用效果说明了本系统设计的合理性和高效性。
本系统的设计与实现有效的提高了停车场的泊车管理工作,人工和维护成本低,增强了停车场管理系统的兼容性以及车主泊车的效率,对于其他的停车场管理系统具有广泛的借鉴意义和参考价值。由于整个项目涉及知识面较广和各方面因素的不确定性,本文系统还存在一定的不足。比如在辅助车主找车位的路线提示模块中,不应该只是进行简单的文字说明,而应该采用寻找最短路径的算法和结合停车场地图路线进行图文结合导航等细节问题,这是将来需要进一步完善的工作。
致 谢
时光流逝,岁月如梭,四年的大学生活即将结束。回首过去的这几年,有太多的人需要感谢,太多的事情需要感恩。
首先,我想感谢大学四年来所有的任课老师,孜孜不倦的教导我们知识和做人的道理,教会我们如何凭自己的专业和本事在社会上生存和立足。我特别要感谢我的毕业设计导师和实习指导教师王飞老师和陈佳美老师,王老师是一位在专业上很有自己想法的老师,他平易近人,经常在我项目遇到瓶颈的时候为我指点迷津,他还经常鼓励我,相信我一定能完成这么有挑战性的题目。感谢老师们的陪伴和付出,祝愿你们能够身体健康,桃李满天下。
其次我要感谢我的家人,由于今年发生的不可控因素(疫情),对我们的生活和学习都带来了特别大的影响,因此我大部分毕业设计工作都是在家完成的。当我设计项目面临困难的时候,家人们就像一颗定心丸,一直在我身边安慰和鼓励我,这在精神上给了我极大的支持。你们永远是我不断前进的动力,我也终将会成为你们依靠的港湾。
然后我想感谢陪伴了我四年的大学同学和学校,世界那么大,很高兴遇见你,愿我们都能顺利毕业,前程似锦!
最后,向百忙之中对我论文进行评阅的评审老师表示最诚挚的感谢,希望你们事事顺意。
参考文献
[1]张秀媛, 董苏华等. 城市停车规划与管理[M]. 北京: 中国建筑工业出版社, 2017:17-21
[2]陈峻, 周智勇等. 城市停车设施规划方法与信息诱导技术[M]. 南京: 东南大学出版社, 2007:20-50
[3]陈名开. 基于无线传感器网络的停车诱导系统的研究[D]. 广州: 华南理工大学, 2012
[4]周思浩. 基于无线传感器网络的停车场内智能引导系统[D]. 陕西: 长安大学, 2015
[5]崔景超, 张丽丽, 沈忱林. 基于移动物联网的智慧泊车系统设计[J]. 电脑知识与技术, 2015, 20(11) :139-140
[6]李磊. 智能泊车服务系统的设计与实现[D]. 安徽: 安徽师范大学, 2018
[7]杨瑞, 赵娥. 关于物联网公共技术的探究[J]. 科技信息, 2011, (18) :235-236
[8]马建. 物联网技术概论[M]. 无锡: 机械工业出版社, 2012:129-139
[9]荣光伟. 基于物联网技术的封闭式开关柜在线测温系统研究[D]. 山东: 山东大学, 2014
[10]张绍斌. 乡镇党员系统的开发与实现[D]. 天津: 天津大学, 2016
[11]孙利民. 无线传感器网络[M]. 北京: 清华大学出版社, 2005:5-85
[12]徐欣. 基于物联网技术的智能共享车位管理系统设计与开发[D]. 浙江: 浙江理工大学, 2018
[13]徐潭. 基于物联网的智能停车诱导系统的研究[D]. 安徽: 安徽理工大学, 2016
[14]吴新胜, 周军, 王荆茜, 刘超超. 基于物联网的泊车系统研究[J]. 绥化学院学报, 2019, 39(06) :158-160
[15]白志青, 郑勇. 基于物联网的智能订位泊车计费系统设计[J]. 长春师范大学学报, 2019, 038(002) :32-37
[16]沈益明, 金娣. 车位引导系统设计[J]. 现代建筑电气, 2012, 10(008) :27-30
[17]Warneke B, Last M, Liebowitz B, et al. Smart dust: Communicating with a cubic-millimeter computer[J]. IEEE Computer Magazine, 2001, 34(1) :44-51
[18]张珍军. 基于物联网的智能停车管理系统的设计与实现[D]. 山东: 聊城大学, 2015
[19]张哲. 智能泊车管理系统的设计与实现[D]. 陕西: 长安大学, 2010
[20]熊昕, 熊茂华, 谢景明. 一种基于物联网的智能泊车系统及其方法[D].广州: 广州番禺职业技术学院, 2015
[21]王玉洋. 基于微信小程序的移动学习平台环境构建与系统设计开发[D]. 南京: 南京大学, 2018
[22]Leephakpreeda Thanancha. Car-parking guidance with fuzzy knowledge-based decision making[J]. Building and Environment, 2007, 42(2) :803-809
[23]刘炎. 基于移动终端的公共自行车信息系统[D]. 浙江: 浙江理工大学, 2018
[24]El-Zonkoly A, Coelho L D S. Optimal allocation, sizing of PHEV parking lots in distribution system[J]. International Journal of Electrical Power & Energy Systems, 2015, 67(1) :472-477
[25]薛松. 基于协同过滤的新闻推荐系统的设计与实现[D]. 山东: 山东师范大学, 2019
[26]Pottie J.G, Kaiser J.W. Wireless Integrated Network Sensors[J]. Communications of the ACM, 2000, 43(5) :551-558
[27]张建源. Android开发技术的学习及应用[J]. 现代工业经济和信息化, 2014, 4(12) :62-64
[28]霍兰. Raspberry Pi树莓派实作应用[M]. 北京: 人民邮电出版社, 2014:5-65
附录1 相关硬件技术数据
树莓派3B+主板的有关技术参数说明如下:
光电传感器的有关技术参数说明如下:
附录2 源程序清单
设计停车场平面图的首页(home.vue):
返回智能辅助泊车系统
简易型停车场平面图
后台CarController接口下的查询车位函数:
public void searchCar() {//查询的函数
List list = Db.find(“select * from car
”);//查询数据库的车位表
renderJson(list);//往前端发送一个json数据
}