孟 洋
(长沙民政职业技术学院,湖南 长沙 410004)
研究基于STM32的智能门禁系统的设计方法,需了解STM32的基本定义。结合当前门禁系统的基本应用情况,通过指纹识别、射频系统2种技术结合相关辅助设备,以STM32为基础完成智能门禁系统设计,并实现系统在用户登录、信息管理、门锁控制、信息管理等方面的功能,切实提升门禁系统的使用效果,保证建筑内人员安全。
STM32是意法半导体(ST)集团生产的基于ARM公司Cortex-M3内核的32位高性能微控制单元(Micro Controller Unit,MCU),其中ST指芯片制造商意法半导体,M指微控制器,32指32位的微控制器。目前来说,STM32广泛应用于工业自动化控制、扫地机器人、四轴飞行器、智能手环以及智能门禁等多个领域。
硬件电路是整个门禁系统正常运行的物质基础,在考虑开发可行性的基础上,还需要兼顾系统的性能、成本、功能等,以此来确定系统的整体硬件设计方案。硬件系统单片机选择的是STM32F103ZET6,其他模块包括继电器模块(射频识别、指纹识别等)、射频读写芯片(MF RC522)、光学指纹识别模块(AS608),通过C#软件系统进行人机交互界面编写,再以串口进行STM32F103ZET6、上位机通信。系统结构分布情况:中间模块为STM32F103ZET6;上部模块包括上位机、电源、继电器以及蜂鸣器;下部模块包括MF RC522、液晶显示器(Liquid Crystal Display,LCD)液晶显示模块以及AS608指纹识别模块[1]。
选择的主控制器为ARM Cortex-M3内核的32位微处理器STM32-103ZET6,该芯片包括32位内核,存放数据、程序的闪存存储器达到512 kB,工作频率能够达到72 MHz的内置中央处理器(Central Processing Unit,CPU)、静态随机存取存储器(Static Random Access Memory,SRAM),可直接进行周期访问,具备输入输出(Input/Output,I/O)端口、与外围总线(Advanced Peripheral Bus,APB)连接的外设以及相应数量的高级定时器、基本定时器、通用16位定时器、12位数模转换器(Analogue-to-Digital Conversion,ADC)以及通信接口等。同时,配备了可变静态存储控制器(Flexible Static Memory Controller,FMSC)模块,用于连接液晶显示器(Liquid Crgstal Display,LCD)、扩展SRAM,以FSMC直接驱动LCD;为便于后期维护,选择以R8、R7电阻隔离MCU、外部电源[2]。
串行外设接口(Serial Peripheral Interface,SPI)用于解码器、数字信号处理器、实时时钟、FLASH以及EEPROM之间,芯片管脚需通过MISO、MOSI、SCLK、NSS这4根线连接外部器件。其中,MISO指设备输入/输出信号线;MOSI指输出/输入信号线;SCLK指时钟信号线,主机产出输出,并进行设备输入;NSS指从设备选择信号线,在有数个从设备连接MCU时,通过主机操控设备从设备的NSS信号线设定为低电平,选中从设备,如此可规避与SPI可能出现的冲突[3]。
传感器是前端设备,用于采集指纹图像,其对门禁系统能否发挥作用起到重要的影响,可从以下数个方面考虑如何选取传感器。一是对湿手指、干手指等不同手指有着高适应性;二是可进行活体指纹鉴别,例如可直接判断出橡胶手指、指模等并非人的手指;三是抗静电能力强;四是寿命长等。综合以上因素,可选择ATK-AS806光学指纹识别装置,该装置有着丰富的功能,包含31条指令,ATK-AS806指令功能示例分析如表1所示。
表1 ATK-AS806指令功能
指纹传感器在应用过程中可能会因手指干、指纹脏污、磨损等原因造成指纹难以正常识别,针对该种情况,引入射频识别装置,采用的是MF RC522射频读写芯片,可实现自动寻卡[4]。在进行MF RC522接口设计时,考虑到MF RC522支持各种形式的微控制器接口,包括串行通用异步收发传输器(Universal Asynchronous Receiver/Transmitte,UART)接口、内部集成电路(Inter-Integrated Circuit,I2C)总线、SPI等。各种形式的接口模式要求以对应的管脚连接,故而须设定一一对应的程序;门禁系统中的STM32以SPI总线连接MF RC522,传输速率最高可达10 Mb/s,I2C与低电平对接,EA与高电平对接,其他暂时不用的管脚可以悬空处理。SPI接口管脚各种连接方式如表2所示。
表2 SPI接口管脚各种连接方式表
软件系统设计由C#完成,可应用于Windows 11系统,通过Visual Studio22设计应用程序,从以下要点进行分析。
(1)建设Windows窗体项目。点击菜单命令文件,后续按照固定的流程完成建设工作,包括选择适宜的模板,设定保存位置、输入名称,确定项目创建。
(2)添加控件以及设计用户界面。借助工具箱选择窗体适宜位置一一添加各种控件,打开属性窗口,设置各项空间的颜色、位置、大小等[5]。
(3)程序代码设计。通过Windows程序确定基本的编制机制,根据控件或者窗体可支持的事件、方法进行编写。
(4)程序运行、测试。点击菜单启动程序,完成程序测试。
(5)项目保存。点击菜单命令文件,将保存项目全部保存。
(1)登录模块。用户在输入申请的账号、密码后完成身份验证,身份确认无误后方可进入系统。
(2)用户管理。选择具体识别方式包括指纹识别、射频识别,在上位机装设通用串行总线(Universal Serial Bus,USB)转串口的驱动程序,与串口连接后,可智能化完成硬件驱动程序安装,设备管理器可查看并打开串口。该模块用户可输入基本信息、指纹信息、卡号等,并可删除射频卡、指纹信息。用户权限设定为普通用户、高级用户,其中普通用户只能选择1种开门方式,而高级用户拥有2项权限,并定期清理长久不再使用的指纹、卡片信息[6]。
(3)操作日志记录。该模块用于记录软件系统历史操作,按照列表方式呈现,用户可通过输入关键词的形式查询操作日记记录,并可删除相关记录。
(4)信息查询。记录用户各个时间段出入门禁状况,在“起止时间”条框输入查询时间,显示该时间段内门禁使用情况,并可导出查询结果,用户可结合导出记录表统计各个阶段的指纹验证信息、刷卡信息等[7]。
(5)门锁控制。控制中心发送指令,通过STM32控制继电器,确保特定时间开启、关闭大门,如在出现火灾事故时及时开启大门用于人群疏散。
(6)指纹模块功能。启动系统后,实现对微控制器、AS608等装置的初始化处理,再安排后续的检测工作,进行触摸感应状态感应,在感应到触摸键值为删除或者录入指纹后,执行指纹库管理工作,实现指纹清空、删除、登记等任务。指纹识别模块检测到指纹后进行指纹认证,发送PS_GetImage取图像指令,存储到ImageBuffer,通过if语句判定指纹图像获取是否成功。如果成功,则进行指纹图像特征提取,生成模板,并通过PS_HighSpeedSearch以1∶N匹配模式进行指纹库搜索。如果可寻找到匹配指纹,则开门;如果匹配不成功,则重新进行指纹采集以及搜索匹配。若是3次匹配不成功,系统锁定,等待10 min后再次使用[8]。
(7)射频模块功能。启动门禁系统后,进行微控制器、MF RC522端口初始化,涉及MF RC522寄存器初始化配置、SPI初始化等。完成初始化后,在系统感应到射频卡后,自动启动防冲突程序,确保只有1张卡片能进行认证。如果认证成功则开门,如果失败重新寻卡,在3次认证都表示失败后,系统自锁、掉电[9]。
(8)数据库模块。数据库主要是结合数据结构进行各项数据的采集、存储、组织以及管理等,结合用户要求完成需求分析,结合系统功能、需求分析结果,规划数据库实体对象。通过实体-联系(Entity Relationship,E-R)图分析数据结构,其中用户连接用户编号、账号、密码,而用户信息实体数据包括编号、姓名、性别、联系电话、住址以及卡号等,用户开门信息实体数据包括编号、开门编号、开门时间、事件类型,系统日志记录实体数据包括操作编号、操作人编码、操作内容、操作日期以及操作网际互连协议(Internet Protocol,IP)地址。通过数据库模块实现各项数据的综合化、整体化管理,确保数据的真实、有效、可靠、全面以及实时性,提升门禁系统的智能化水平[10]。
基于STM32的门禁系统设计展开了论述与分析,具体实践中需要给予STM32的门禁系统足够的重视,分析各个模块设计的优势与不足,发扬优势、弥补不足,关注门禁系统应用实效,结合其应用反馈其对加以调整、优化,使其发挥出更好的应用效果。