当前位置:文档之家› 中南大学RFID课程设计报告

中南大学RFID课程设计报告

CENTRAL SOUTH UNIVERSITY 课程设计报告
课程: RFID课程设计
班级:物联网工程1201班
学号: 0909120316 姓名:王兆岳
指导教师:李刚
日期: 2015年4月25日
第一节课程设计选题 (1)
1.1选题背景 (1)
1.2课程设计目标 (1)
1.3课程设计使用的相关语言及数据库 (2)
1.4测试环境 (2)
第二节总体设计 (2)
2.1处理流程概要 (2)
2.2总体架构设计 (3)
2.3总体处理流程 (4)
第三节 PC端具体设计 (4)
3.1PC端模块划分 (4)
3.2出入库控制模块 (5)
3.3信息查询模块 (6)
3.4账号注册模块 (8)
3.5充值缴费模块 (8)
3.6硬件通讯中间件 (10)
第四节移动端具体设计 (11)
4.1剩余车位展示 (11)
4.2停车场线路导航 (12)
4.3个人记录、余额查询 (13)
第五节主要算法 (13)
6.1避免刷卡同时激活入库和出库 (13)
6.2多张卡同时在区域内时的屏蔽 (14)
6.3屏蔽偶发错误 (15)
第六节实验总结 (15)
第一节课程设计选题
1.1选题背景
近几年随着我国高速发展,我国的机动车保有量也在不断攀升,因此楼宇、社区和商业区构建停车场及管理系统就显得十分迫切,构建一套包含车辆进出、停车泊位、缴费结算、资料查询、信息提示等功能的相对完善的管理系统,已成为停车场管理部门的共同愿望,同时由于传统停车场并没有与互联网实现对接,经常造成停车位的浪费或是由于驾驶员不能及时获知停车位已满的消息而导致能源的极大浪费、加剧交通拥堵的状况,基于此我选择停车场管理系统作为本次RFID课程设计的题目。

1.2课程设计目标
在本方案中,效率、正确率、信息的整合、以及便捷性是重点追求的目标。

1.3课程设计使用的相关语言及数据库
编程语言采用JA V A和C++混合编程,C++主要进行底层数据的获取,JA V A主要控制数据的相关算法控制及前台界面展现
数据库部分采用MYSQL,主要基于以下原因:
1)MySQL是一个跨平台的轻量级数据库
2)操作简单,易于使用
3)免费、开源
1.4测试环境
第二节总体设计
2.1处理流程概要
当用户进行刷卡操作时首先经过RFID读卡器及底层C++接口获取到卡信息,随后由JA V A程序进行数据的处理及显示,并存储到数据库以备查询。

安卓终端通过服务器获取到数据库中的相关信息并进行相应的展示(空余车位、
个人记录、余额等等)
2.2总体架构设计
系统分为停车场终端和用户手机终端。

其中停车场终端包括RFID读卡器、管理控制软件、后台数据库三部分组成。

2.3总体处理流程
第三节PC端具体设计
3.1PC端模块划分
PC端模块分为在库查询模块、信息查询模块、账号注册模块、充值缴费模块。

3.2出入库控制模块
在库信息实时显示当前车库内车辆信息,右上角区域模拟停车场的LED显示屏提示收费金额及相关信息
出入库控制通过刷卡操作进行触发,第一次刷卡为入库操作,数据库将记录相应信息;
第二次刷卡为出库操作,由系统判断卡类型及余额金额是否足够实现自动扣费或提示现金缴费。

3.3信息查询模块
信息查询模块提供三种不同的查询方式,其中按照卡片查询需要将卡片放置在RFID读卡器上,系统获取到请求之后会返回与此卡号对应的信息记录并进行相关的显示。

历史记录支持Excel表格导出,方便进行管理
查看车辆信息时需要将卡片放置在RFID阅读器上,界面将显示出该车辆的信
息及相关记录
3.4账号注册模块
按照实际停车场的功能需求将账号分为三个不同的类别(临时卡、储值卡和内部车辆卡)基本初始化流程如下:
3.5充值缴费模块
充值部分需要更改数据库和RFID卡片内存储区两部分的数据:
缴费部分会根据停车时间、卡类型、账号余额来确定需要缴纳的现金的数额(卡余额不足时提示现金收费),大体流程如下:
3.6参数设置
可以对停车场车位总数、收费金额进行灵活地调整,以适应不同的实际需求。

3.7硬件通讯中间件
由于RFID读取接口由C++语言编写,而程序主要语言选择使用JA V A因此应在最大程度上减少对读取接口语言的修改。

基于此采用反向调用的设计理念,由C++来调用JA V A发送硬件数据,JA V A收到信号后进行json打包并通过UDP协议进行网络传输,这样可以最大程度减少对底层代码的修改,并且支持多个数据采集终端(停车场出口往往可能不止一个,而数据存储应该放在同一个服务器上)
由此完成了多张卡数据的获取,及分布式数据采集功能。

第四节移动端具体设计
4.1剩余车位展示
首页显示剩余车位的数量(虽然目前看来没有什么太大作用,但设想将整个城市的停车场并入系统,就能够找到最近的车位,从某种程度上减轻城市交通压力和市中心区停车难的问题)
4.2停车场线路导航
停车场路线导航调用高德导航的SDK并植入到程序当中,为路线导航提供支持
4.3个人记录、余额查询
通过输入车牌号或车主名可查询当前的余额信息及相关停车记录情况
第五节主要算法
5.1避免刷卡同时激活入库和出库
在实际使用中由于每1s就会对附近是否有卡片进行一次扫描,经常会出现在A 时刻检测到卡片进行入库,在A+1时刻由于卡片依然在读卡器范围内而被再次扫描导致出库操作的发生。

我们不可能期待用户以很快的速度经过读卡器,也不应该延长扫描的间隔(这样可能会导致某些时刻刷卡无效)。

经过这样的流程能够在连续独到同一张卡时自动屏蔽多余的操作,从而避免多次读取的问题,当卡片离开后再次进入则正常地执行出库操作。

5.2多张卡同时在区域内时的屏蔽
当卡片距离RFID读卡器距离较近时,可能会对正常读写产生干扰,比如充值时应该同时只有一张卡被进行充值处理。

通过下面的路程能够屏蔽多张卡同时处于读写区域时的冲突问题:
1)随机获取一张卡的EPCID并且将其显示在界面上
2)将该ID记录,在次读卡
3)若存在此ID对应的卡片则对其它卡片进行丢包处理
4)否则认为卡片已经离开,重复(1)的步骤开始处理其它卡片或显示未读到。

5.3屏蔽偶发错误
实际情况中可能会出现读不到的现象,针对于此程序采用类似嵌入式系统看门狗定时器的思路对读取信息进行管理,只有当连续2s读不到信息时才认为卡确实已经离开范围,从而屏蔽读取偶发错误导致的程序异常
第六节实验总结
这次课程设计使我进一步了解了RFID卡的相关知识,同时通过这次试验掌握了如何调用硬件的相应API接口,虽然有一些不完善的地方,但自己对于这次课程设计的结果总体还是比较满意:
首先是各项功能都已经完成,在设计之初我并没有草率地开始代码的编写,而是尽可能地将事件处理的整个流程考虑周全,因而在实际编
程的过程中并没有遇到太大的困难,在最后测试的过程中也很少遇到bug。

很多时候编写程序的过程与生活中解决问题的过程并没有太大的差别,比如此次课程设计中使用到的一些数据处理算法都是来自于生活当中的一些体验,只是应用在程序设计中通过编程的形式把它表现出来。

其次是此次的选题,很早之前就希望能够做一些贴近生活的应用,“城市让生活更加美好”,程序也应该如此;所以很感谢这次老师没有去指明某个应用场景而是让我们自由发挥来选择自己感兴趣的方向确定题目,并进行研究。

第三是关于安卓端的应用,关于安卓的编程之前并没有什么经验,第一次写安卓程序可以说是一边学一边做,我想手持终端作为物联网应用中一个非常重要的设备节点在今后的应用中会有越来越重要的地位,通过这次课程设计的编写过程,我进一步加深了对安卓编程语言的理解,了解到安卓应用的运行机制,虽然并没有能够精通安卓编程的全部功能但至少为今后进一步深入学习打下了一定的基础。

最后感谢李刚老师的指导,以及检查课设时的耐心聆听,还有身边同学的热情帮助。

希望在以后的编程中自己能够有进一步的提升。

2015年4月25日。

相关主题