黄鹤松,刘容良,郭恒兰,魏国招

(山东科技大学 电气与自动化工程学院,山东 青岛266590)

针对传统门禁系统采用普通IC卡存在可被破解的安全问题,设计了一种基于FM1208-10型号CPU卡和新华龙C8051F340微控制器的门禁系统。该门禁系统集成了MFRC530射频读卡模块和SIM900A GPRS通信模块,采用CPU卡作为用户验证卡片,解决了传统的门禁系统安全性低、管理人员操作麻烦等缺点。

CPU卡;射频读卡模块;C8051F340;门禁系统

中图分类号:TN409;TP29

文献标识码:A

DOI:10.16157/j.issn.0258-7998.2017.01.036

中文引用格式:黄鹤松,刘容良,郭恒兰,等. 一种基于CPU卡的门禁系统的设计[J].电子技术应用,2017,43(1):137-140,144.

英文引用格式:Huang Hesong,Liu Rongliang,Guo Henglan,et al. The design of access control system on CPU card[J].Application of Electronic Technique,2017,43(1):137-140,144.

0 引言

随着计算机技术和通信技术的不断发展,门禁系统已经成为企业、学校、公寓出入口管理不可或缺的一部分。目前市场上大部分的射频卡门禁系统多采用普通IC卡开门,自从2008年德国研究员亨里克·普洛茨和美国弗吉尼亚大学计算机科学在读博士卡尔斯滕·诺尔破解了恩智浦半导体的Mifare经典芯片的安全算法起,传统射频卡门禁系统在安全性上便具有了巨大的安全隐患[1]。本文设计了一种具有更高安全性的基于CPU卡的门禁系统。

1 系统的功能与结构

设计的门禁系统包含门禁终端、发卡器和上位机三部分。门禁系统与上位机通过GPRS网络或串口通信实现门禁终端以及发卡器的用户信息同步。在硬件上,门禁系统发卡器采用了与门禁终端射频读卡电路类似的设计,本文只介绍门禁终端硬件设计。门禁终端主要由以下几个部分组成:射频读卡模块、GPRS通信模块、键盘显示模块、存储模块以及功放模块。门禁终端的结构如图1所示。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(1)

当住户需要进出时,可以从键盘直接输入住户号以及密码开门或者刷CPU卡开门。当用户通过键盘输入住户号及密码或通过刷CPU卡时,微控制器从键盘或射频读卡模块读取用户的信息,并与存储器内的用户信息进行比对,如信息验证成功则打开电磁锁,否则门禁终端通过功放模块进行语音提示。若是来访人员则仅需要通过门禁终端直接拨打住户的电话,住户可以用手机远程操控门禁开门。对于管理人员,可通过上位机或者手机短信将用户的信息从门禁终端存储器写入或擦除来实现门禁系统的管理。

2 硬件设计

门禁终端的硬件部分主要为射频读卡电路、微控制器电路、GPRS通信电路以及键盘显示电路等。

2.1 射频读卡电路设计

MFRC530是一款由NXP公司生产、工作在13.56 MHz频率且支持ISO14443A协议的射频芯片,其有效识别距离能达到10 cm[2]。该芯片可以兼容SPI接口,可以有效节省微控制器的GPIO资源。在与CPU卡的通信过程中,芯片支持的CRC校验和奇偶校验能有效增加通信的准确性。采用了三电源设计,对于芯片的数字部分、模拟部分和驱动部分用不同的电源供电。具体硬件电路如图2所示。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(2)

TX1OUT、TX2OUT以及RXANT为芯片连接天线的接口。芯片通过天线向外发射13.56 MHz的能量载波,如果CPU卡产生应答信号,其信息会附加到能量载波上,经过拾取电路传到RX引脚上。MFRC530内部将得到的信息进行处理,以A2、A0、ALE、D0 4个引脚作为SPI接口与单片机进行通信。

2.2 FM1208-10 CPU卡

由复旦微电子公司开发的FM1208-10 CPU卡是一款具有多种应用和很高安全性的CPU卡。其工作原理类似于一台微型计算机,在其内部安装了复旦微电子公司开发的CPU卡操作系统FMCOS。整个CPU卡支持DES、3DES加密算法、线路加密保护等功能。一张CPU卡上可以建立三级目录,在本门禁系统所使用的CPU卡中,只建立了二级目录。其文件体系如图3所示。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(3)

CPU卡的高安全性主要体现在CPU卡的安全体系上,其安全体系主要分三大部分:安全状态、安全属性和安全机制。安全状态指的是CPU卡当前所处的安全级别。安全属性指的是对文件执行某个操作时所必须要满足的条件。安全机制就是从某种安全状态到另一种状态要采取的方法[3]。简言之,当门禁终端或发卡器要读取CPU卡的某个文件时,CPU卡会判断当前安全状态寄存器的值是否达到了文件的操作权限,如果达到了就继续操作,否则需要门禁系统发送外部验证来重设安全状态寄存器的值。

2.3 微控制器选择

本文设计的门禁系统采用新华龙C8051F340作为微控制器,其具有64 KB 片内Flash和4 352 B的片内RAM[4],能满足整个门禁系统程序运行的需要,另外该微控制器具有2个UART、1个SPI接口和足够多的GPIO口,满足了门禁系统的硬件设计需要。该芯片本身内部集成的Silicon Labs二线开发接口可以支持芯片在线调试,这在门禁系统的开发过程中提供了很大的便利。C8051F340具有可编程数字IO和交叉开关,可将内部资源随意锁定在相应IO口上,可以使PCB整体布局更加合理整洁。在这里门禁系统的微控制器采用了典型的外围电路,具体可以参照技术手册[4]

2.4 GPRS通信模块及音频解码电路选择

为方便管理人员以及用户远程操控门禁终端,选择SIMCOM公司的SIM900A 作为远程GPRS通信模块。SIM900A使用简单,设计人员只需要通过AT指令即可完成对其的操作;且具有较低的功耗,当模块工作在待机模式时,系统的电流仅1 mA。在本系统中主要应用了SIM900A的串口、音频接口、天线接口以及电源接口等。在SIM900A音频接口处门禁终端还添加了以MT8870为主体的双音频解码电路。图4为双音频解码电路[5],这个电路可以接收DTMF(双音多频)信号,是一个完整的DTMF接收器。在接收了DTMF信号后,内部将信号分成高频带和低频带,并将此信号送至数字译码器,通过数字译码器解出键值。当来访人员通过门禁终端与住户进行语音通话时,用户如果允许其进入楼宇,可以通过手机的相关按键向门禁终端发送开门指令。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(4)

2.5 键盘及显示驱动芯片选择

为了节省微处理器的GPIO资源和CPU运行程序时的负担,本设计选择具有串行接口的数码管和键盘智能控制芯片HD7279。该芯片可控制最多64个键盘和8位共阴式数码管,LED数码管可无需外围原件直接驱动,内含键盘去抖电路,增加了键盘按键的可靠性[6]。在本系统中,共设计了13个按键和8位LED数码管作为用户操作面板。

用户从键盘输入住户号和密码时,其信息会在数码管上显示。当信息输入完毕时,按下“#”键,单片机会把从HD7279得到的数据进行处理。当住户号和密码正确时,门禁终端会打开楼宇门。来访人员需要输入住户号和住户电话号码,门禁终端会从存储器中比对信息,防止骚扰电话,当住户号和电话号码正确时,系统会向住户拨打电话,住户可以使用电话按键远程操控门禁终端。

2.6 其他电路

整个门禁终端除了包含以上模块外,还包含了电源模块、Flash存储模块和语音存储模块等。

在电源模块上采用了开关电源芯片LM2576-5.0将12 V电源转换为5 V,为射频芯片MFRC530提供电源;采用可调电压芯片MIC29302将5 V转换到4.2 V,供给SIM900A模块;采用低压差稳压芯片AMS1117-3.3实现5 V到3.3 V的转换,为单片机以及存储器等器件供电[7]

用户在刷卡开门或按键开门时,系统都需要进行信息比对,判断能否开门。为了记录用户信息,需要采用掉电保存的大容量Flash存储芯片。设计中选择了AT45DB041D作为存储模块的主芯片。该存储器具有4 MB内存,分为2 048页,每页264 B。除主内存之外,AT45-DB041D还有2个264 B的SRAM数据缓存,每个缓存使得主内存的一页正在编程的同时可以接收数据。

在用户从键盘输入信息时,需要有语音提示来指示输入信息正确与否。本设计采用一次性编程语音芯片AP89170来存储语音提示。AP89170采用标准的CMOS工艺制作而成,存储空间4 MB。在6 KB采样率下存储语音时长达170 s,满足了系统语音提示的需要。

3 程序设计

整个门禁系统的程序设计包含三大部分:门禁终端程序、发卡器程序和上位机程序。这里只介绍与硬件设计相关的门禁终端程序以及发卡器程序。

3.1 门禁终端程序设计

门禁终端主程序设计思想是: 当有CPU卡进入到射频读卡模块的工作范围内以后,门禁处主机通过射频读卡模块获得该卡的卡号信息,并对存储器进行读操作,检查该卡号信息在系统中是否存在,如果存在,则打开电磁锁。如果键盘有按键按下,则语音提示“请输入房间号码”,对存储器进行读操作,判断该房间号是否正确,如果正确则语音提示“请输入密码”,密码正确则拨打该住户绑定的电话号码,若系统检测到住户按下电话上的“*”键作为回复,系统自动打开楼宇门。门禁终端主程序包括系统的初始化、系统的自检、读卡程序、中断服务程序等。图5为门禁终端主程序的流程图。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(5)

门禁终端在识别CPU卡时,首先门禁终端会通过MF RC530发出请求命令REQA,如果寻卡区域内有卡片,则会返回请求应答ATQA,成功后刷卡模块进入防冲突环,从多张卡片选出一张卡片并发送选择命令RATS。卡片会返回选择应答请求ATS,ATS中包含了生产厂家、COS版本以及卡号等信息。射频模块得到卡号后,会发送选择文件指令和取随机数指令,从而完成外部验证。若外部验证成功,则读取二进制文件,并判断文件内容。若所有指令均执行成功,将获得的卡号与Flash存储器的内容比对,若比对成功即打开楼宇门。

3.2 门禁系统发卡程序设计

作为门禁系统设计,除了门禁终端外,CPU卡发卡器设计也十分重要。当一张FM1208-10的CPU卡出厂时,其内部已经加载了FMCOS系统。默认的FMCOS系统会在卡片存储器内建立主文件MF和16 B 0xFF的主文件密钥。为了将CPU卡作为用户的验证卡片在门禁系统中使用,发卡器需要将原来的文件系统清洗掉并建立自己的文件系统。图6为发卡器主程序流程图。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(6)

图7为发卡器在发卡时的指令流程,发卡器在向CPU卡发送指令时,每条指令执行后都会有相应的信息传回到发卡器上,这些信息包含了指令执行情况的状态字和数据。如果在执行发卡命令时,向CPU卡发送的任意一条指令失败,就认为CPU卡发卡失败,不再执行后续的指令。

基于单片机的小区门禁系统设计 一种基于CPU卡的门禁系统的设计(7)

4 结论

本文设计的基于CPU卡的门禁系统有效地减少了门禁卡片复制的可能性,在安全性上有了极大的提高。同时用户和管理人员在操作门禁系统的便利性上也有了极大的改善,目前该门禁系统已投入生产并得到使用。

参考文献

[1] 张建军,包国峰,马一兵.FM1208非接触CPU卡读写系统的研制[J].单片机与嵌入式系统应用,2009(12):56-59.

[2] 程伟,何俊华.基于MFRC530的非接触式IC读卡系统设计[C].微计算机信息,2009(7):1013-1017.

[3] 复旦微电子股份有限公司.新版FMCOS2.0设计手册 [EB/OL].(2008-05)[2016-04].http://www.fmsh.com/index.shtml.

[4] 新华龙电子有限公司.C8051F340/1/2/3/4/5/6/7全速USB FLASH型微控制器数据手册[EB/OL].(2016-01)[2016-04].http://www.xhl.com.cn.

[5] 隋绍勇,孙义卓,庄克良.基于CPLD和MT8880的远程控制及播音系统设计[J].电子元器件应用,2011,13(1):14-16.

[6] 凌志比高科技有限公司.HD7279A串行接口8位LED数码管及64键键盘智能控制芯片数据手册[EB/OL].(2001-12)[2016-04].http://www.bitcode.com.cn.

[7] 薛琳,魏兰磊,朱述川,等.基于GPRS和RFID技术的门禁控制系统[J].电子技术应用,2012,38(6):145-148.

,