NFC的智能门锁设计
2021-06-16甘国霖张德鑫黄杰华赖朝健张晓洁
甘国霖 张德鑫 黄杰华 赖朝健 张晓洁
(广西民族师范学院数理与电子信息工程学院 广西壮族自治区崇左市 532200)
基于NFC 的无线智能门锁是利用NFC 技术实现智能锁的控制,通过把NFC 技术和智能锁的结合,让智能手机利用NFC 功能实现对家庭门锁的控制。本文利用NFC 的短距离高频通信技术,实现手机刷卡即开锁的便捷。同时NFC 智能门锁还配置一键指纹解锁和输入设定密码解锁,做到手机不在身边也能开锁。NFC 技术应用于门禁锁,使得门禁的开锁方式更快捷、便利,使用户摆脱了按键密码的繁琐操作和因手指破损无法使用指纹锁。
1 系统总体设计
使用Arduino Mega2560 作为主控板(以下简称主控板),NFC智能门锁有四种开锁模式用于应对不同的情况。NFC 开锁可以使用带有NFC 的手机、手环、NFC 戒指、非接触式IC 卡等方式打开门锁。指纹开锁是用来应对手机、NFC 设备和IC 卡不在身边时,使用指纹实现开锁。密码开锁应用于客人来家做客或指纹破损的情况,可通过输入密码来打开门锁。钥匙开锁是为应对锁体无电或其三大模块无法工作的意外情况,使用钥匙即可开锁。系统整体设计思路如图1 所示。
2 Arduino Mega2560微处理器
Arduino 是一款由意大利工程师共同研制出来的一款便宜好用的微处理器,通过在Arduino IDE 上编写程序代码通过USB 传输线将程序编译上传以后,只需对Arduino 和所需的硬件进行相对应的接线,主控板就会完成程序中所有功能的执行。
3 NFC模块设计
3.1 NFC-PN532原理
近场通信(NFC)是由射频识别(RFID)演变而来的,它既具备有射频识别技术的高频无线传输功能,又有优于射频识别技术的安全性能。NFC 分有两种传输模式,主动模式和被动模式,本文中的PN1-532 使用被动传输模式。被动模式是由发起设备,也就是PN-532 作为能量传递者,通过产生电磁场的方式,将能量传递给目标设备,目标设备接收能量后开始运行。目标设备在运转后,通过负载调制技术,调制电磁场,回传识别数据,实现设备间的数据传输。
3.2 NFC模块设计思路
NFC 模块主要核心为PN-532,实现的功能是保证锁安全的前提下,使开锁更为便捷。NFC 模块是由PN-532 和主控板构成,两个元器件的连接如表1 所示。
主控板通过PN1-532 以电磁场的形式向周围发送寻卡信号,若有NFC 功能ID 卡或电子模拟设备进入电磁场范围,PN-532 通过RQ 引脚向主控板放送中断请求信号,主控板中断当前程序的运行,并按标准ISO14443A 发送指令,读取卡片信息。信息读取完毕,使用数据传输引脚(SDA)与串行时钟引脚将卡片信息传入设定变量,并通过调取原存储数据与现引入数据进行对比,对比成功,执行开锁,返回信息;对比失败,仅返回信息。
3.3 存储处理
PN-532 所使用芯片80C50 微控芯片没有存储功能,对于读取到的ISO14443A 标准数据需要在主控板实行存储。数据的存储位置为主控板的上电可擦可编程只读存储器(EEPROM),它可保证在断电情况下,内部数据不丢失,但主控板的EEPROM 存储空间仅为4k 字节,不能满足ISO14443A 标准协议所需的32 位存储空间。对此,本文采取梯归提取方法,将ISO14443A 标准数据提取为10个仅1 字节的存储数据,以存储10 个1 字节数据,实现数据的断电储存。如表1 所示。
4 AS608指纹模块设计
4.1 AS608指纹模块原理
AS608 模块是ALIENTEK 的一块高性能光学指纹识别模块。光学指纹识别是最早的指纹识别,也是现应用较广泛的指纹识别,它的指纹提取方式是以棱镜为采集平面,将采集的指纹通过光打到电荷耦合器件。电荷耦合器件通过对指纹纹路和纹路间凹陷部分的刻画,形成算法可以识别的多灰度指纹图像。
AS608 模块内有细分算法,对捕获的指纹图像进行去躁、增强、分割、二值化和细化预处理,从而达到去除多余背景,获得清晰图像的目的。将清晰的二值化图像映射到模板上,对模板指纹进行特征提取,提取出指纹中的分叉点、终止点、中心点和三角点。提取的特征点,通过AS608 模块内置的特征文件缓冲区存入特征文件。
4.2 AS608指纹模块设计思路
指纹模块的配置,用于NFC 设备丢失或遗忘情况,元器件连接如表2 所示。
用户使用指纹模块,按下手指,主控板调取AS608 模块存储特征点,对当前提取的特征点进行1:N 匹配模式,也就是对输入的特征点模板与存储库中存储的所有特征点模板进行匹配。指纹特征点匹配相似度达到90%,主控板判断指纹为一致,动作电磁锁,完成开锁。
图1:NFC 智能门锁总体设计图
5 矩阵模块设计
5.1 4*3矩阵键盘原理
矩阵键盘又称为行列式键盘,本文使用的是4*3 矩阵按键,其原理是以4条IO线作为矩阵的行端口,3条IO线作为矩阵的列端口。行端口提供高电平,列端口提供低电平,通过扫描行端口电平是否被拉低来判断有无按键按下,有,确认按键所在行,并扫描列端口,找出电平拉高所在列。由电平变化所在行列的交接点按键作为用户输入的按键。
5.2 4*3矩阵键盘软件设计
本文智能锁的设计采用矩阵按键作为人机对话方式,通过行列的变化,确定具体的输入按键,配以程序回应用户的操作。
矩阵按键的行列分别与主控板的7 个数字端口相连(如表3 所示),主控板为行端口输出高电平,为列端口输出低电平。检测按键状态时,将各行端口进行逻辑或运算,通过运算结果判定按键是否按下,若有按键按下,确定按键所在行;再将各列端口进行逻辑与运算,确定动作按键所在列,借由行列的确认,最终完成动作按键的确定。
检测到按键输入,主控板将按键信息持续存入预设变量,直至用户完成密码的输入。用户输入完整密码,主控板调取原存储矩阵密码与现输入密码对比,密码输入正确,主控板动作电磁锁开锁,并返回信息,否则仅返回信息。
6 结论
本文采用PN532、AS608、4*3 矩阵键盘、Arduino Mega2560和电磁阀锁体做出了一个NFC 智能门锁,该锁具有电路结构简单、使用方便、制作成本低廉、提升空间大等优点。
表1:PN-532 与Arduinomega2560 各引脚连接
表2:AS608 指纹与Arduinomega2560 各引脚连接
表3:矩阵按键与Arduinomega2560 各引脚连接
7 未来展望
本文对智能锁的制作提供了一种性价比较高的制作方法,通过了解Arduino Mega2560、AS608、PN532、4*3 矩阵键盘的基本原理和编程方法,将他们通过一块Arduino Mega2560 实现在一个锁具内控制,探讨智能锁的一个制作方法和大众需求,通过多方面的测试和意见收集,表明了该作品具有良好的效果和较好的稳定性符合大众的需求和预期效果。