电子门锁是现代星级酒店管理电子化、智能化的重要电子设备。相较于传统的机械锁,基于RFID技术的电子门锁使用方便,易于管理,安全性高,可实现对开锁用户的分优先级自动管理,对房间入住信息实现自动统计与报表输出。

1  系统整体分析

MF1 S50和S70卡是遵守ISO14443A国际标准的非接触式逻辑加密卡,S50卡内共有1024字节非易失性存储空间,分为16个扇区,每个扇区包含4个数据块,每个扇区都有一组独立的密码A和B,扇区内的每个数据块都可单独设置存取条件。S70存储结构与S50类似,存储空间为4096字节,分为40个扇区。

旅客入住酒店时,酒店前台将旅客的入住时间、退房时间、房间号等信息写入已授权卡片指定扇区的数据块。客人在选定的房间门锁前刷卡,门锁射频读卡模块使用定时红外线扫描,当探测到卡片后启动读卡程序,读出卡片的全球唯一序列号和卡内的旅客入住信息,并比对房间号和入住与退房时间,决定是否开门,并将事件记录在门锁的E2PROM中。

卡内使用一个字节作为卡类型标识,除了客人卡、还可识别管理卡、清洁卡、楼层卡、报警卡、时钟卡等不同功能的卡片,并设置不同的权限。卡内的门锁操作记录可以使用MF1 S70卡片采集,以便定期导出进行汇总统计。

2  系统硬件设计

如图1所示,整个系统以ATMEGA88V为核心,外围电路包括RC522读卡操作模块、门锁电机驱动控制模块、红外探测模块、E2PROM存储模块以及电源、时钟、声光指示等功能模块。ATMEGA88V进行红外线探测,当探测到红外线有遮挡时启动RC522进行读卡操作,根据卡内信息决定是否进行开门操作,并通过实时时钟获得时间信息,最后将事件记入E2PROM中;如果是设置卡,则对系统进行参数设置。蜂鸣器和LED灯可以在卡片和门锁操作的过程中指示不同的状态,ISP接口实现应用程序的下载和更新。

图1 系统框图

2.1 主控芯片电路

由于门锁工作时对能耗指标的要求非常苛刻,所以选取主控芯片的原则是运行速度快,耗电少,内部资源够用即可,尽量减少闲置不用的资源。因此综合考虑选用美国ATMEL公司的高性能、低功耗的 AVR 8位微处理器ATMEGA88V作为本系统的核心。

该微控制器特点如下:

◆ 先进的 RISC 结构(工作于16 MHz 时性能高达16 MIPS)。

◆ 23个可编程的I/O口,8路10位ADC通道。

◆ 1K字节内部数据RAM,8K字节FLASH存储器,可以在系统编程。

◆ 3个通用计数器、定时器阵列, SPI串口。

◆ 多种节电休眠和停机方式,掉电模式下最低仅需0.5μA。

2.2   RC522读卡接口电路

读卡电路读取卡片信息供单片机用于控制门锁或进行参数设置,并在导出记录时将记录信息写入S70卡。射频接口芯片选用了体积小、低电压、低功耗的RC522芯片,以满足门锁控制模块对体积和能耗的要求。RC522支持ISO14443 TYPEA及MIFARE CRYPTO1加密协议,最大读写距离6cm,具备硬件掉电、软件掉电和发送器掉电等多种节电工作模式[2]。RC522读卡接口电路如图2所示。

图2  RC522读卡接口电路

RC522与单片机之间的通讯可以使用UART、I2C、SPI接口,此处我们选用SPI接口。硬件上电路板分为两个部分,天线和红外探测以及LED显示组成PCB前板,其它元件作为硬件底板,TX1和TX2连接PCB前板上的天线。Q1控制RC522的电源,在单片机休眠时RC522完全断电,以节省能量延长更换模块电池的间隔时间。

2.3   门锁电机控制电路与红外探测电路

门锁电机控制电路选用一片BA6287作为驱动。BA6287的供电电压范围4.5-15V,最大输出驱动电流可达1A。M+和M-分别接门锁直流电机的正负极,FIN和RIN接单片机的I/O口。BA6287可以实现电机的正转、反转、刹车以及芯片本身的掉电休眠模式,非常适合于门锁电机的驱动控制。

图3  门锁电机控制电路与红外探测电路

红外探测电路用于探测天线区域内是否有卡片存在。探测时,单片机将IR_E_D置高电平,Q21导通,二极管IR_E向模块正前方区域发射红外线,同时置位IR_R_D电压,并通过ADC通道读取IR_R的电压值。当射频场内有卡片时,发射的红外线通过卡片反射回来被Q22接收,Q22导通, IR_R的电压高于基准值,单片机据此启动RC522读卡电路。反之当没有卡片时,红外线没有反射,Q22不导通,此时IR_R电压为基准值。

3  软件设计

射频卡门锁电路的软件主要由射频卡探测与读写程序、门锁驱动与状态指示程序以及门开关记录保存与导出程序三部分组成。射频卡探测与读写程序实现了卡片探测与卡片操作,门锁驱动与状态指示根据读取的卡片信息对电机进行驱动,并显示门的当前状态信息,这两部分是软件程序的重点。开关记录保存与导出程序将开关记录记入模块的E2PROM并可导出到S70卡片,供PC主机采集与分析使用。门锁电路软件总框图如图4所示。

图4 软件总流程图

3.1 RC522卡操作程序

红外探测到射频场内有卡片后,单片机启动RC522进行读卡操作。由于模块每间隔250ms探测一次卡片,在间歇期内RC522处于掉电休眠状态,因此读卡的第一步是先给RC522上电复位,然后进行端口和RC522寄存器配置,之后开启天线进行卡呼叫、卡防冲突、卡选择和卡认证。只有获得授权的卡片才能通过卡认证一步,之后单片机根据卡类型进行判断,如果是MIFARE S50卡,则读取两个BLOCK的卡内配置信息,并根据这些信息调用门锁驱动程序执行开、关门操作或进行系统参数设置;如果是S70卡,则调用开关门记录导出程序,将模块内存储的开关门记录写入S70卡片。

如果红外探测到场内有卡片,但卡呼叫未成功,则可能是有其他物体遮挡红外线或可见光干扰,此时单片机将启动ADC基准值的动态平滑机制,将本次采样值加入样本,同时剔除最老的样本并计算样本平均值作为下次ADC采样比较的基准。经过较短时间的采样平滑后,基准值实现跟随外部干扰变化动态调整,从而消除干扰的影响。

3.2 门锁驱动与状态指示程序

门锁驱动程序根据读取的MF1 S50卡片配置信息进行各种操作。卡片内的配置信息使用卡片的两个BLOCK共32字节,第一个BLOCK的16个字节格式固定,第二个BLOCK的内容根据不同的卡类型所存储的信息有差别。其结构如下:

00       01       02  06  07    0B   0C      0D     0E    0F   10    11  16    17  1C 1D   1E   1F

卡型

FLAG

BEGIN

END

楼号

楼层

房号

卡型:一个字节的卡类型标识不同功能类型的卡片。常见的卡片类型可以分为两大类,开门卡和设置卡。开门卡可以实现开关门,如客人卡、楼层卡、清洁卡、楼号卡、应急卡、常开卡等;设置卡用来设置模块参数,不能开门,如退房卡、管理卡、房号设置卡、时钟设置卡、勿扰卡、报警卡等。

FLAG:标志字节,可以设置8个标志,比如是否允许开反锁,是否比较开门时间,是否比较房号等。

BEGIN和END:开始时间和结束时间,格式为年、月、日、时、分,只有在这个时间区间内,才能开门。当卡片为时钟设置卡时,使用BEGIN来设置系统时钟。

楼号、楼层和房号:用来比较房间是否正确。房号有两个字节,第一个字节为主房间号,第二个字节为子房间号。有些高级套房内部有子房间,并具有独立的门锁控制。没有子房间的客房在比较时忽略子房间号。

第二个BLOCK的内容根据不同的卡类型,其意义有所不同,比如清洁卡可用来设置清洁区域号和清洁时间段,设置卡用来存放模块的授权码等。

门锁驱动程序根据上述卡片信息对门锁电机驱动或将设置卡的设置参数写入模块内的E2PROM。

门锁状态指示程序用来显示门锁的当前状态。门锁状态使用一个蜂鸣器和一个双色LED来表示。正常开门蜂鸣器和绿灯同时动作0.5秒;发生错误时蜂鸣器和红灯同时动作0.2秒;设置卡设置成功后蜂鸣器和绿灯同时动作0.2秒;宾客在房间内将门反锁,绿灯每隔5秒闪烁一次;正常开门卡开门后5秒门未正常关闭,则蜂鸣器和红灯每隔1秒动作一次;电池电压低则蜂鸣器发出旋律可变的报警声。

3.3 开关门记录存储与采集程序

系统扩展了一片AT24C64 E2PROM芯片用来存储系统参数和开关门记录。AT24C64的容量为8K字节,其中前256字节(地址00H~FFH)用来存储系统参数,包括卡片密码、楼号、楼层号、房间号等。AT24C64剩余的存储空间(100H-1FFFH)用来存储开门记录,每条记录的长度为16个字节,其结构如下:

00     01                    04   05           0  A     0B        0C                          0F

卡型

卡序列号

操作时间

操作类型

备注

卡型占用一个字节,记录所刷卡片的类型;卡序列号记录卡片的全球唯一4字节序列号;操作时间记录刷卡的年、月、日、时、分、秒,占用6个字节;操作类型记录开关门的类型,包括正常开门、常开卡开门、常开卡关门、机械钥匙开门等。一片AT24C64共可以存储496条记录。

门锁中的记录使用MF1 S70卡导出。S70卡的容量为4K字节,除去制造商块和每个区的区尾块,每张S70卡可以记录215条记录,导出全部模块中的记录共需要3张S70卡。当用授权的S70卡刷卡时,门锁控制模块自动将E2PROM中记录读出,然后依次写入S70卡的BLOCK中,每一条记录对应一个BLOCK。写完第一张卡片后,模块自动等待第二张卡片进入射频场,直到写完第三张卡片。如果等待超过10秒钟未检测到卡片,程序将超时退出。

射频识别技术漫谈(28)——基于MF1射频卡的酒店门锁设计的更多相关文章

  1. 射频识别技术漫谈(20)——RC系列射频接口芯片

    目前基于13.56MHz的射频识别技术主要有ISO14443A.ISO14443B.ISO15693和FELICA技术.针对13.56MHz的射频识别技术,NXP开发了一系列名字以RC(Radio C ...

  2. 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】

    从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...

  3. 射频识别技术漫谈(29)——射频接口芯片TRF7960

    TRF7960系列是TI推出的载波为13.56MHz.支持ISO15693.ISO14443A/B和FeliCa协议的射频接口芯片.许多人更关心它能不能读写MF1卡片,就我的理解及实际验证,由于MF1 ...

  4. 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】

    Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...

  5. 射频识别技术漫谈(11)——Mifare系列卡的共性

    Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...

  6. 射频识别技术漫谈(1)——概念、分类

    现代社会智能卡已经渗透到生活的方方面面,公交卡.考勤卡.身份证.手机卡等等数不胜数.    智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡,接触式智能卡上有6-8个触点,使用时插在卡 ...

  7. 射频识别技术漫谈(3)——能量、调制【worldsing 笔记】

    无源和免接触是非接触式IC卡相对于接触式IC卡的两大特点.无源是指卡片上没有电源,免接触是指对卡片的读写操作不必和读写器接触.非接触式智能卡也是IC卡,而卡上的IC即集成电路工作时肯定是需要电源的,卡 ...

  8. 射频识别技术漫谈(25)——Felica简介

    Felica是SONY公司开发的射频识别技术,该技术使用的载波频率与ISO14443A和ISO14443B一样,都是13.56MHz,所以有人把它称为ISO14443C,但SONY并没有正式接受这样的 ...

  9. 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】

    通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...

随机推荐

  1. 原来你是个这样的JVM

    第一节 本文将与其它文章不同,我们采用章节制来讲述每个知识点,但每个章节之间只有较低的耦合度,只要了解大概主线思路,一般都能看懂! OK啦,进入主题!虚拟机的发展史就不讲啦,和java之间的关系也不言 ...

  2. 加密传输SSL协议1_OpenSSL的安装

    终于在自己不断的奋斗之后,来到科大的一波考试过去了,但是为了不使自己过于放松,回顾一下之前的东西,做一下笔记.所以新开一个专题笔记: Using Apache with SSL 引入:首先我们在平时的 ...

  3. PHP基础示例:用正则表达式修改配置信息

    各php工作原理图: 以下是扯代码时间: <?php //配置文件信息 define("HOST","localhost"); //主机名 define( ...

  4. QF——iOS程序运行原理(APP的生命周期)

    iOS程序的运行原理: main.m: 1. main.m 主函数是所有程序的入口函数. 2. 在main函数里是UIApplicationMain函数,开启了一个无限循环,以监听该应用. 该UIAp ...

  5. c 陷阱与缺陷(一)

    1.程序在设计时,往往得出正确的结果,但是它并不是程序员自己想要的. 例如: printf("hello world!") 编译器进行编译时不会出现任何问题,但是结果: 提示竟然出 ...

  6. 数字时钟DigClock

    首先建立数字显示类: using System; using System.Drawing; namespace CsDev { class SevenSegmentDispay { Graphics ...

  7. this的用法this.name=name 这个什么意思

    public Employee(string name, string alias){ // Use this to qualify the fields, name and alias: this. ...

  8. 谈谈文件增量同步算法:RSYNC和CDC

    谈谈文件增量同步算法:RSYNC和CDC 分类: 数据同步 增量备份 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在研究文件的增量同步问题,着重研究了文件差异编码部分,因为这个其实是文件 ...

  9. INFOQ几篇论文

    http://www.infoq.com/cn/articles/java-profiling-with-open-source http://www.infoq.com/cn/articles/Vi ...

  10. UI设计中与字号有关的知识

    在我们设计APP.设计前端页面时,免不了要和各种文字大小打交道.字体的大小有多种单位,不明究里的话使用起来很容易出问题.今天整理了这方面的东西做了个图片,方便查看. 图上的资料来自互联网,感谢大家的负 ...