- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于Linux系统的指纹识别门禁系统设计
指纹作为人体的身体特征,具有唯一性、稳定性和不易盗用等特点。随着指纹识别理论逐渐成熟、指纹采集工具这一难题得到解决,指纹识别已经成为目前最广泛应用的生物识别之一,逐渐取代了传统的认证识别方式,广泛应用于金融、公安、证券、门禁系统等领域。指纹识别技术的研究已经成为当前建筑智能化研究的热点。但是对于在Linux 系统下的由FPI 指纹识别模块、Raspberry Pi 主控模块、AVR 模块组成的,采用无线通讯方式定时向用户发送邮件来监控门锁状态的指纹识别系统的研究至今未见诸报端。本文在不改变现有门锁结构的前提下,通过设计编程,开发了一套基于指纹识别的门禁系统,定时检测门锁状态并向用户发送报警邮件,大大增强了门锁的安全性。
1 指纹识别的技术原理
指纹识别的技术原理是从指纹数据库中查找与采集指纹是否匹配的指纹数据,达到通过辨别身份实现开关门锁的目的。其基本原理如图1 所示,指纹识别系统由指纹图像采集、指纹图像预处理、指纹特征提取、指纹特征匹配、特征数据库等几部分组成。指纹图像预处理采用了Gabor 滤波的方法进行灰度图滤波去噪,通过将图像滤波后,对其进行二值化处理使各种噪声得到滤除或者修正。指纹特征提取是建立在对该点8 邻点统计分析基础之上,特征点通过计算CN(Croosing Number)得到。指纹特征匹配的过程是计算两幅指纹相似程度的过程,在做指纹匹配前必须把不同的指纹图像校准,找到输入特征点集和模板特征点集之间的最佳变换。
指纹识别系统大体上可分为两个内容:指纹注册和指纹比对。指纹注册主要包括指纹采集、指纹图像预处理、特征点提取和特征值存储。指纹比对的前3 步操作与指纹注册完全相同,在特征点提取后,生成的指纹特征值将与存储在指纹特征数据库的特征值作特征匹配,最后输出匹配结果。
图1 指纹识别技术的基本原理
2 指纹识别系统硬件开发
指纹识别系统主要由FPI 指纹识别模块、Raspberry Pi 主控模块、AVR 模块3 部分组成,该硬件结构如图2 所示。三方通讯实现用户的指纹录入和匹配,以及门锁的开关,并且以发送邮件的方式来监控门锁的状态。FPI 指纹识别模块强大的图像处理功能对指纹识别非常灵敏,及时处理接收到的指纹信息,并与Raspberry Pi 通讯;Raspberry Pi 模块,一方面控制AVR 去检测门的开关状态以及开关门锁,另一方面控制FPI 指纹录入和匹配,并在Raspberry Pi 上建立数据库记录用户信息;控制器AVR 反馈给Raspberry Pi 门的开关状态,并且控制电机来开关门锁,加强了在硬件方面的拓展,可通过硬件在更多方面对门进行监测。此外,使用了无线通讯模块,避免了过多布线可能对原本门锁结构的破坏,使该系统的硬件组成方便快速。
图2 系统的硬件结构
2.1 指纹识别模块
指纹模块基于TI 公司的TMS320VC5509 高级数字DSP处理器为主核,芯片结构框图如图3 所示。高精光学采集头(TFS-D0307),高速、稳定; 标准UART 接口通讯,标准8 字节通讯协议, FPI 完成处理接收到的指纹信息, 并与Raspberry Pi主控模块通讯的工作。
图3 指纹识别芯片FPI
2.1.1 图像采集芯片
FPI 芯片上集成了图像采集芯片FPC1011F,FPC1011F指纹传感器是电容式半导体传感器件,该电容式指纹传感器利用了反射式探测技术,属于平面式采集指纹传感。相比传统的电容式传感器,它采集的是指头的真皮层,且对干湿手指有良好的适用性。FPC1011F 的指纹采集原理:FPC1011F指纹传感器是由152×200 个传感器阵列组成的,每一个阵列是一个金属电极,充当电容器的一极,安在传感面上的手指头的对应点则作为另外一极, 其工作原理是基于变极板间距的电容式传感器,其电容量由式(1)确定:
(式中:C 为电容量;d 为极板间距;ε0为真空介电常数;εr为极板间介质的相对介电常数;s 为极板的有效面积)
当手指接触传感器导电框以后, 由式(1) 可知, 谷和脊因为离传感器阵列的距离不同, 产生了不同的电容值C, 经过运算放大电路, 形成不同的电压值, 通过内部的A/D 转换, 获得高质量的数字指纹图像。
2.1.2 处理器
该系统采用的主处理器是TMS320VC5509 的32 位定点高速数字DSP 处理器,开发板的硬件包括:USB2.0 FullSpeed接口用以传输图像、视频等高速数据; 片外外扩1M BytesFLASH; RTL8019AS 网络接口芯片,实现以太网通讯太网电路;开发接口:UART(RS232)与上位机实现通讯;2 路10 位A/D 输入接口。
2.2 主控模块
该系统采用的主控模块Raspberry Pi,代替了体积庞大的电脑实现控制功能。Raspberry Pi 是一款基于ARM,操作系统采用开源的Linux 系统的个人电脑, 配备一枚700MHz 的处理器, 支持SD 卡和Ethernet, 拥有两个USB 接口, 以及HDMI 和RCA 输出支持。Raspberry Pi 一方面控制AVR 去检测门的开关状态以及开关门锁,另一方面控制FPI 的指纹录入以及匹配并在Raspberry Pi 上建立数据库记录用户信息。
利用这些硬件便可以进行嵌入式开发,快速的建立起指纹识别系统的硬件系统。
3 指纹识别系统软件开发
该系统基于Linux 操作系统, 将自动指纹识别系统移植到嵌入式Linux,在Linux 上进行指纹识别系统的软件设计,指纹识别系统的软件设计包括四个方面: 上位机与AVR 串口通讯、上位机与指纹模块串口通讯、维护MYSQL 以及脚本发送报警。
3.1 指纹识别的处理过程
如图4 所示:首先对串口进行初始化,打开串口设备0、1,设置串口参数,恢复串口未阻塞状态,串口初始化成功后执行用户选择功能: 注册开门账号或注册关门账号或运行门禁服务[N/C/R]。选择系统功能N 后注册新开门用户,对同一指纹共获取3 次图像,与传统采集一次图像相比,杜绝了随意采集造成的注册指纹不精和验证时不易识别的问题。采集指纹成功后输入用户个人信息,注册来自上位机数据库的新ID 号并把该用户指纹信息存入数据库,然后选择是否继续添加用户。同理用户选择系统功能C 后完成注册关门用户的操作。
用户选择系统功能R 后运行门禁服务, 一方面AVR 查询当前门锁状态, 例如把开门的命令赋给门的匹配状态,如果指纹匹配操作FPI 和门的匹配状态相同,则由继电器接收来自AVR 的开门命令,带动电机执行开门动作,并且记录当时时间,向本地数据库添加一条新的用户使用记录并写进日志里。同理执行关门命令。另一方面AVR 查询当前电机电流等级,将门锁的实时开关状态,由谁执行开关门动作和当前门锁电机电流状态通过邮件的方式发送给用户,实现对门的实时监控,大大增强了门禁系统的安全性。
3.2 邮件的发送
图4 系统工作方式流程图
Raspberry Pi 上的ARM 通过RS 232 串口接收来自AVR定时地对门禁状态和电流状态的查询信息,并编写Shell 脚本程序,利用wifi 通过串口传送给邮件发送模块,将报警内容发送到指定的用户邮箱中来定时监控门锁的状态。程序如下:
这一部分完成信息的打包并将报警内容发到指定邮箱中的功能。AVR 定时检测门的状态和当前电流的状态,当没有人执行开关门操作时,door.log 的内容为“0”,当有人执行开关门操作或者电流超过一定数值时,door.log 内容为“1”,其中开关门锁包含两种情况:一是已注册的用户通过指纹识别成功实现开关门锁;二是没有注册过的用户指纹识别失败但是打开了门锁。文件夹从数据库调用这一数据并将数据发送到指定用户的邮箱里,然后door.log 重新变为“0”,如此循环检测门的状态。
Raspberry Pi 上的ARM 通过RS232 串口接收来自AVR定时地对门禁状态和电流状态的查询信息, 并编写Shell 脚本程序,利用wifi 通过串口传送给邮件发送模块,将报警内容发送到指定的用户邮箱中来定时监控门锁的状态。
4 系统测试
为检验该指纹识别门禁系统的性能,打开Linux 程序,注册登记4 个不同的指纹, 然后用不同的手指作指纹识别测试。分别观察指纹识别成功和失败时执行机构的动作,一共测试50 次,部分系统测试结果的邮件正文内容如表1 所示。
表1 系统测试结果表
由表1 可以看出,邮件的内容包括ID、Name、Action、Date四项。其中前七行是已注册过的用户通过指纹识别成功实现开关门锁,所以邮件中会有他们的ID 号和姓名信息,而最后一行的用户指纹识别失败但是打开了门锁,所以邮件中将他们的ID 和姓名设置为NULL,提醒管理员特别注意当时门锁状态以实现管理员对门状态的定时监控。
5 结论
文中基于指纹识别技术采用FPI 指纹识别模块, 结合Linux 设计了指纹识别门禁系统, 设计的一个特点是基于Linux 操作系统,建立并发执行环境,提高CPU 的利用率,并且用Raspberry Pi 主控模块和无线通讯模块使得整个结构更加简单,对系统性能有一个明显的提高。另外一个特点是定时检测门锁状态并采用无线通讯方式向用户发送报警邮件,大大增强了门锁的安全性。实用测试结果表明,系统运行良好,能够进行可靠安全的指纹识别,准确、快速地完成个人身份的验证实现开关门功能和定时快速的邮件报警操作。在后续的工作中,系统可以实现现有程序的稳定性提升,以提高系统的性能使指纹门锁功能更加完善。