基于 RFID 的小区门禁管理系统设计与实现
扫描二维码
随时随地手机看文章
引 言
由于安全问题越来越突出,人们对社区安保措施的要求也不断提高,许多社区、写字楼、校园等公共区域已广泛应用各类门禁系统 [1]。目前使用最为普遍的智能门禁系统分别是密码式门禁系统、刷卡式门禁系统与采用生物识别技术的门禁系统三种。密码式门禁系统安全性较差,容易造成密码泄露 ;生物识别技术的门禁系统一般采用指纹、人脸及虹膜等人体特征作为识别手段,不可复制性与唯一性决定了其安全性,但其价格昂贵,不利于大量部署。射频识别技术(Radio Frequency Identification ,RFID)是一种非接触式自动识别技术,通过射频信息识别目标对象并获取相关数据。随着RFID 技术的发展,非接触式 IC 卡门禁系统由于其技术成熟、价格低廉、使用方便等优良特性已成为住宅、企业等安防系统的重要组成部分 [2-3]。
无线射频识别技术在计算机技术、通信技术及机械电子技术迅猛发展的过程中快速成长,其安全便捷、成本低廉、故障率低等优点在当今门禁系统中得到了广泛应用 [4]。本文基于 51 单片机与 RFID 研究并设计一套小区门禁系统,实现在小区出入口门禁进行 RFID 识别获取住户身份信息,通过与数据库已有的居民信息进行比对,进行高效、安全的社区管理。
1 系统整体设计
本文设计的门禁管理系统包括由控制器、读卡器、电控锁、LCD 液晶显示等模块组成的控制器与门禁管理程序两部分。其中,门禁控制器是系统的核心单元,由微处理器与外围电路组成,微处理器 STC89C52RC 是宏晶科技公司生产的一种低功耗、高性能的 8 位处理器,具有 8 KB FLASH 和512 B RAM,32 个 I/O 端口 [5]。射频读卡器模块采用 NXP 公司生产的 MF RC522 模块,该芯片具有高度集成的非接触式(13.56 MHz)低功耗读写功能,在无需其他电路的情况下可通过内部发送器部分驱动读写器天线在 ISO 14443A/ MIFARE 卡与应答机之间通信,支持 SPI,UART,I2C 三种不同的接口与微处理器通信 [6],本文设计使用 SPI 接口与单片机通信。LCD 液晶显示模块为 J12864 模块,是一款低电压低功耗的中文汉字图形点阵液晶显示器,可用来显示汉字与图形,分辨率为 128×64,内有 8 192 个 16×16 点阵中文汉字,价格低廉,同时显示效果满足设计要求。门禁管理系统通过串口与控制器通信,开发环境为微软 Visual Studio 2013,用户界面使用 C# 编程语言的 WinForm 窗体框架,用户数据存储采用轻量级关系型数据库系统 SQLite 即可满足要求 [7]。系统整体结构如图 1 所示。
图 1 系统整体结构框图
本文门禁管理系统可有效解决日常门禁使用过程中用户信息管理不够直观的缺点,实现快速、高效、准确的社区安全管理,主要实现以下功能 :
(1)门禁管理,通过 RFID 技术绑定用户身份信息到电子标签上,当用户刷卡时与后台数据库连接识别身份信息, 开启小区门禁 ;
(2)用户数据管理,可对用户信息进行增加、删除、修改、查找,对于新入住的居民可以添加读写卡号与用户信息, 删除已搬离社区的居民信息,修改居民可能更换的信息,查找用户的相关信息 ;
(3)开关门动作,在没有刷卡开门的动作下,可直接按下手动开关键实现开门 ;
(4)报警动作,当用户卡号没有在后台数据库查询到时,门无法开启,并且通过蜂鸣器进行报警。
2 系统实现
本文系统软件部分包括单片机控制器程序与门禁管理程序。单片机控制器程序实现对硬件电路的控制,包括 RFID 读卡识别、串口通信、LCD 显示、声光提醒等功能。门禁管理程序主要完成用户信息管理、存储以及与单片机通信等功能。
2.1 控制器程序实现
控制器程序是单片机控制系统程序,使用 C 语言进行编程设计,开发平台为主流的单片机开发软件 Keil C51,该软件提供了包括 C 编译器、宏汇编、链接器、库管理及功能强大的仿真调试器等在内的完整开发框架 [8]。RFID 卡号就像每个人的身份证号一样具有唯一性,并且固化在芯片中无法被修改,当住户刷卡时,门禁控制器读取 RFID 卡号并利用串口通信将卡号上传至管理软件,管理软件查询用户数据库中是否有对应的卡号绑定的居民信息,若存在则返回确认数据以开启小区门禁并提示正常出入,不存在则拒绝开启门禁并在液晶显示屏上提示用户卡无效以及蜂鸣器报警。当用户离开小区时无需刷卡只需通过按下手动开关键即可实现开门,具体工作流程如图 2 所示。
2.2 门禁管理程序实现
门禁管理程序采用 C# 编程语言的 WinForm 窗体用户界面应用程序,其开发平台为微软公司推出的最流行的Windows 平台应用程序开发环境 Visual Studio 2013。上位机主要实现用户信息与 RFID 卡号绑定以及存储、查询、管理功能,详细功能包括以下三个部分 :
(1)用户交互界面设计 ;
(2)串口通信,实现与单片机进行数据收发操作 ;
(3)数据库操作,用户信息增加、删除、修改、查询。界面设计采用 WinFom 可视化设计器设计, 使用 .Net Framework框架提供的丰富类库与控件布局。本文设计中使用的控件有 Label,TextBox,Button,PictureBox,RadioButton, ComboBox 等控件,主界面如图 3 所示。主界面包括门禁管理功能、人员管理、人员添加、远程开门。门禁管理功能可设置门禁时间以及控制器串口通信参数 ;当用户刷卡时人员管理功能显示从数据库中查询出来的用户信息 ;人员添加功能实现添加新人员门禁权限,同时将该卡与人员信息绑定存放到数据库中,需要保存的信息包括姓名、卡号、性别、年龄、民族、手机号码、籍贯、住址、身份证号等。
图 3 门禁管理程序主界面
串口通信使用 C#的串口控件 SerialPort控件, 端口号由硬件识别结果确定, 波特率为 9600bit/s, 数据位为 8位,检验位为 None,停止位默认设置为 1。串口打开通过 SerialPort.Open()函数实现,打开后即可进行正常的数据收发 [9]。串口发送数据通过 SerialPort.Write(byte[]data, intstart,intlength)函数实现,其中 data是一个待发送数据的字节数组,start 是数据数组发送的起始位置,一般为 0, length是发送的数据长度。串口异步接收数据,使用串口控件 SerailPort的 DataReceived事件处理函数进行接收,当单片机发送数据至管理程序时自动处理数据接收,串口配置主要实现代码如下。
2.3 通信协议实现
门禁系统管理软件与单片机程序通过串口进行通信,串口通信的特点是一个字符接着一个字符进行传输,并且传输字符时总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求,因此双方必须共同遵循同一套通信协议才能保证数据传输完整正确 [10]。本文通信需要实现控制器用户卡号上传与管理软件查询结果返回的功能。通信协议主要包括数据帧头、数据长度、命令类型、设备号、数据正文、CRC 校验。数据帧结构如图 4 所示。
图 4 通信协议数据帧结构
控制器单片机通过硬件串口设备收发数据,门禁系统管理软件通过 SerialPort 类调用硬件设备收发数据。为保障数据正确传输,程序设计时需要实现数据检验与重发机制。接收串口数据较为复杂,结合串口协议分析需要解决的问题为 :缓存串口收到的所有数据 ;找到一条完整数据帧 ;分析数据帧的命令内容 ;将分析出的命令通知上层应用。缓存接收所有数据最高效的方法是利用 C# 中的 List〈B〉结构,该结构能够方便地实现数据元素的增、删、改操作,因此利用SerialPort 类的 DataReceived 增加接收事件将串口接收数据全部放入 List〈B〉结构后再分析。找出一条完整的数据帧,首先在缓存的数据中找到帧头,找到后检测后面一个字节的数据长度,然后计算缓存剩下的数据是否足够,数据不够就停止分析以减少时间消耗,如果剩余数据大于数据长度,计算出数据帧CRC 校验码并与缓存数据中的CRC 校验码对比, 如果校验码一致说明数据帧传输正确,解析帧内容并通知上层应用处理,否则丢弃掉该帧等待重发。
3 结 语
门禁系统已经是现代安保设施的一个重要环节,也是社区、办公、商场领域智能化与数字化管理的重要应用之一。本文设计的小区门禁管理系统采用自动射频识别技术,其方案成本低,使用便捷,技术成熟,满足小区管理现代化、智能化、易用性的要求,通过 RFID 即可实现全区域出入人员的有效管理,是现代社会智能化的一个重要应用。