基于单片机的宿舍安全管理门禁系统
2023-09-11吕云飞冯舒扬兰德鑫刘成宇戚诺凡
吕云飞,冯舒扬,兰德鑫,刘成宇,戚诺凡
(哈尔滨理工大学 自动化学院,黑龙江哈尔滨,150080)
0 引言
门禁系统存在的意义允许符合条件的人通过,禁止不符合条件的人进入宿舍。如今大多数高校的宿舍并没有建立真正意义上的门禁系统,都是由管理人员守在宿舍门口,这种方式过于依赖管理员负责认真的心理和精力,且并不可靠,只有来往的人特征明显不同于公寓内人员时,才能辨别出来。随着科技的发展,信息识别技术种类越来越多,技术越来越成熟,对来往人员做身份信息识别,依靠人们的生理特征数据辨别是否符合通过门禁的条件,例如依靠人脸识别技术可以大大提高门禁系统的安全可靠性,同时减少人力资源消耗,更好地保障宿舍内同学的人身和财产安全,也为宿舍管理人员提供了很大的便利。
近两年国内外的疫情形势严峻,疫情防控已经成为了公共场所日常管理的重点工作。大学校园内人员流动密集、老师、同学和工作人员接触频繁,一旦发生病毒感染,就容易出现疫情的大面积扩散。体温是新冠肺炎筛查的重要指标之一,但是平时学校并不能及时掌握学生的体温状况,只能通过学生自查,自觉上报的方式检查体温,校园中也很少设置体温测量装置,一些高校会在食堂、教学楼等学生来往密集的地方设置温度检测装置,即使这样,学校对学生进行体温监测的覆盖面积也并不全面,宿舍是同学们每天必经的场所,而每一位同学进出宿舍的时候都会经过门禁,所以在门禁系统处增加测温装置可以实现对每一位同学进行体温监测,及时掌握进入宿舍的同学的温度状况,为学校疫情防控加上一把有力的“门锁”。
单片机作为一种具有强大的数据存储和指令发布能力的微型的计算机处理系统,随着单片机技术的发展,单片机的功能逐渐强大。在宿舍安全未能实现智能化、信息化的今天,可以将单片机的使用投入到宿舍安全管理体系中,利用单片机同时实现采集、分析、处理温度和身份信息数据,既可以提高门禁系统信息识别的可信程度,又可以让建设科技校园更进一步,具有提高宿舍管理的便捷程度和门禁的可靠性,为宿舍内人员提供更好的安全保障的重大意义。
1 总体设计方案
本文设计的系统以单片机为控制器,驱动图像采集模块,温度采集模块,信号灯模块和显示模块,由上位机完成人脸识别和用户界面设计,摄像头和温度传感器分别负责采集包含人脸信息的图像和体温,单片机对采集到的数据进行分析和处理,将处理好的数据显示在显示模块并传递给上位机,数据经过上位机解析显示在用户界面,系统对图像数据进行人脸检测和识别,将检测结果返回给单片机,单片机综合温度检测结果和人脸识别结果,如果符合条件,则允许通过,不符合条件则给出相应提示。系统结构框图如图1 所示。
图1 系统结构框图
2 硬件设计系统
■2.1 系统概述
在本次设计中,单片机需要驱动的设备有摄像头、显示屏和红外温度传感器,分别使用SCCB 协议、SPI 协议和I2C 协议控制设备,除了控制外设,单片机还需要从读取设备中的和数据进行分析处理,并与上位机建立通讯渠道。单片机从红外温度传感器中读取到数据之后进行数据处理,通过串口将数据发送到上位机,显示在用户界面上,从摄像机模块读取数据之后直接发送给上位机,由Qt 平台进行数据解析,同时单片机对读取到的数据进行分析处理,将摄像机捕获的画面复原,显示在LCD 上。最后,单片机需要根据温度数据比较结果和上位机反馈的人脸识别结果控制警示灯的状态,提示工作人员。系统硬件执行流程图如图2 所示。
图2 硬件执行流程图
■2.2 单片机介绍
2.2.1 单片机的性能STM32 单片机采用了具有哈佛结构的ARM Cortex-M3系列的CPU,单片机的片上资源非常丰富,配备了 FLASH存储器、静态随机存取存储器,多个基本定时器和通用定时器,DMA 控制器。在通讯方面,单片机支持SPI 通讯、I2C 通讯和串口通讯,内置三个SPI 通讯接口,2 个I2C 通讯接口和5 个串口通讯接口,单片机兼容2.0V ~3.6V 的电源供电和I/O 口的供电电压,内嵌多种频率的晶振,可用于中央处理器的锁相环和实时时钟,芯片的最高工作频率可达72MHz。
2.2.2 单片机的引脚
STM32 单片机共有144 个引脚,其中包括11 个3.3V的VDD 供电引脚,11 个GND 接地信号线,112 个I/O 口PA[15:0] ~ PG[15:0],这些I/O 口中,多数具有复用功能,可用作普通I/O 口驱动自己的外设。STM32 单片机的每个I/O口都具备7个控制寄存器,每个寄存器都需要32位数据控制,每一个端口的初始化都需要为其打开相应的时钟,配置相应寄存器,选择工作模式和工作速率,最后拉高端口电位。
■2.3 OV7725 鹰眼摄像头介绍
图像采集模块使用了带FIFO 存储器的OV7725 鹰眼摄像头,它的优势在于体积小,灵敏度高且工作电压低,使用单片机驱动时只需要接3.3V 的供电电压。摄像头支持SCCB 总线通讯,可以输出分辨率为小于等于640×480 的8 位影像数据,每次输出一帧,输出的格式有很多种,有RGB、YUV 等,本设计中使用的输出格式为RGB565。另外,摄像头还支持多种自动控制和图像质量控制,可以调节图像的输出质量。
■2.4 红外温度传感器性能及引脚介绍
温度检测部分采用MLX90614 测温器,芯片根据Stefan-Boltzmann 定律进行工作,即所有物体都会放射IR能量,并且该能量的强度与物体的温度成正比。传感器中的感应器测量出目标物体发射的红外能量,经过计算单元使用ADC 转换为温度值,传感器在测量物体温度时也会测量环境的温度用来校准温度值,最后再把数据通过IIC 总线发送至单片机。
MLX90614 的工作电压在3.6V ~5V 之间,可测量的物体温度范围是-70℃~382.2℃,可以适应的环境温度是-40℃~125℃,分辨率为0.02℃。测量物体的距离与传感器视野范围相关,视野范围越宽,测量距离越近,本次设计采用10cm 左右的测温距离。
芯片共有四个外接引脚,VCC 是芯片的供电引脚,可接3.3V 和5V 电源,GND 为接地引脚,SCL 是I2C 总线的时钟线,用来控制数据传输,SDA 为数据总线,可供通讯双方传递数据信息。
3 系统软件设计
■3.1 软件执行流程图
系统软件执行流程图如图3 所示。
图3 软件执行流程图
■3.2 人脸识别部分
人脸识别部分代码编写是在Qt creator 平台上完成的,分为两个功能模块:人脸识别和人脸数据添加。人脸识别技术需要先采集包含人脸信息的图像,从获取的图像中框选出人脸部分区域,之后提取出人脸的特征与库中的数据做对比,最后输出对比结果,从而达到识别的目的,人脸识别具有唯一性和不可复制性的特点,非常适合应用于身份鉴别。
■3.3 摄像头驱动与通讯
摄像头采用OV7725 鹰眼摄像头,其引脚分为数据线、信号线和控制线三大类。驱动摄像头需要拉低片选信号,通过控制线写入寄存器,达到控制摄像头输出的目的,数据线有FIFO 寄存器连接,摄像头输出的数据会先保存在存储器中,单片机通过读取存储器获取数据。
OV7725 使用的控制总线是SCCB 总线,它与I2C 总线相似,有两线也有三线,两线默认SIO_E 信号线为低电平,摄像头上采用的是两线制,也就是负责传送数据的SIO_D(数据线)和提供时钟源的SIO_C(时钟线)。时钟信号由单片机发出,高电平有效。启动传输之后,时钟引脚被拉低时数据开始传输,随后信号线被拉高表示数据正在传输,在下一个数据开始传送之前拉低引脚,如此反复指导全部数据被传输完毕。SIO_D 引脚的信号可双向传输,这里被用来传输数据。其中,SCCB 总线时序图如图4 所示。
图4 SCCB 总线时序图
SCCB 总线的主要作用是写寄存器,OV7725 共有172个寄存器,使用摄像头模块时需要先配置好寄存器才能使摄像头的图像传感器正常工作,输出画质较好的图像,但是这些寄存器并不是都需要配置,很多寄存器可以采用默认的值,寄存器初始化时只需要配置与视频图像流、采样画质、输出格式等有关的几个比较重要的寄存器就可以了。SCCB写寄存器的流程是先发送设备的ID 地址,再发送要配置的目的寄存器的地址,最后传输要写入的数据,如果是连续给寄存器写地址,写完一个寄存器后,寄存器地址会自动加1,配置OV7725 摄像头寄存器时,采用了连续写寄存器的方式,先写入设备ID,再循环写入寄存器数据。寄存器初始化完成之后,可以通过写入对应寄存器进行色度、对比度、白平衡等功能设置,为配合显示器,图像窗口输出要设置为QVGA 模式。OV7725 电路图如图5 所示。
图5 OV7725 电路图
在读FIFO 存储器中的数据时,单片机先向摄像头发送允许写入FIFO 的指令,等待场同步信号VSYNC 触发中断,表示写入FIFO 完成,单片机再开始复位读指针,复位结束之后读取像素点,每读取一个像素点,就要将读数据时钟拉低,读取完成再拉高,以此类推按照从左往右,从上往下的顺序读取所有像素点。
■3.4 温度传感器驱动与通讯
系统测温模块采用MLX90614 红外非接触式温度计,模块支持PWM 和SMBus(系统管理总线)两种输出模式,默认为SMBus 输出,单片机可以使用I2C 总线来驱动MLX90614 模块,模块中有一个EEPROM 和一个RAM,EEPROM 可读可写入,RAM 只能读取,前者用来控制模块,设置模块的工作模式,后者用来读取处理好的温度数据。MLX90614 的控制信号线只有时钟线SCL 和数据线SDA,与上述摄像头数据传递方式相同,时钟线被拉低时开始传送数据,数据将在SCL 上升沿被主机读取,每次按照先发送低八位,再发送高第八位的顺序传送一个字节的数据,模块每完成一个字节的数据传送,就要向主机发送校验位数据表示发送完成,单片机读取出来的数据是浮点型数据,使用显示器显示或者向上位机发送时,需要先拆分数据,按数字位操作。温度传感器引脚时序图如图6 所示。MLX90614 电路图如图7 所示。
图6 温度传感器引脚时序图
图7 MLX90614 电路图
图8 ILI9341 内部结构图
■3.5 显示屏驱动与通讯
本次设计使用的显示屏是由ILI9341 驱动IC 驱动的TFT_LCD,支持SPI 总线控制,图像分辨率是320×240,在完成显示屏驱动时,只需要向ILI9341 控制器发送指令和读写数据即可。
ILI9341 驱动IC 主要由GRAM、LCD 驱动电路,电源、接口电路等组成,GRAM 被称为帧存储器,用来存储将要被显示在屏幕上的图像的信息,被显示在屏幕上的每一帧图像都是被分割成一个一个的像素,使用18 位的数据来表示像素的颜色,然后将一帧画面中包含的所有的数据存放在帧存储器中等待被使用。驱动显示屏之后需要向控制寄存器中写入需要放置图像的位置,之后芯片计算出每个像素的地址并写入相应的数据,从而改变GRAM 存储器的内容,刷新显示屏的显示界面。
TFT-LCD 的常用控制指令包括读取驱动器ID,帧存储器扫描方向控制指令,设置显示窗口像素格式控制指令,写存储器指令,读存储器指令以及初始化。显示屏的初始化工作包括将LCD 复位,初始化寄存器和设置LCD 显示方向,LCD 显示方向是通过给LCD 重要参数结构体中的参数赋值实现的,像素格式和窗口显示可以通过配置寄存器改变,写存储器和都存储器通过SPI 总线实现。写入数据之前,需要先写入0x2C 指令,使行寄存器和列寄存器自动复位,此时发送的数据会被写入帧存储器对应的地址中。显示屏刷新同样需要先写入0x2C 指令,再写入数据,数据是从设置窗口的起始地址开始写入,先写行,行地址自增到该行的终止地址,列地址会自动加1,数据再从下一行的起始地址开始写入,如此循环直到将窗口显示的所有数据写入帧存储器中。设置帧存储器扫描方向时,先发送0x36 指令,再发送18位的设置参数,其中2 ~7 位是有效位。
4 系统测试结果
下位机操作主要由两个按键完成,单片机复位后显示屏被清屏,显示为白色屏幕,当按下两个按键中的任意一个时,信息采集外设开始工作。
按下KEY_UP 键后,红外温度传感器开始工作,测得的题为被显示在屏幕上,并且屏幕上有提示文字,当温度符合要求时,屏幕上显示The temperature is normal(温度正常)字样,同时,LED0 被点亮,若温度不符合要求,屏幕上显示Temperature abnormalities(温度异常)字样。如果用户体温检测结果正常但还未进行人脸识别的检测,屏幕中会出现Press another key 的字样提示用户下一步操作。测温模块工作显示如图9 所示。
图9 测温模块工作显示
按下另一个按键之后摄像头开始工作,摄像头每读取一个像素点,就向LCD 存储器中写入数据,单片机同时将数据发送给上位机,当上位机判断人脸识别成功时,单片机接收到信号,屏幕上显示Recognition success(识别成功)字样,同时LED1 被点亮,若未接收到识别成功的信号,显示屏上会显示Identification failed!(识别失败)的字样,如果两盏灯都被点亮,屏幕上显示Detection complete(检测成功),表示用户符合通过门禁的要求,两秒之后两盏灯都熄灭。如果第一次按下的按键是图像采集的按键,人脸识别成功之后,LED1 被点亮,屏幕上显示识别成功,并显示按下另外一个按键的提示语,提示进行温度检测,若温度符合要求,LED0 被点亮,屏幕显示提示语Detection complete,表示检测完成,随后经过两秒的延时,两盏灯同时熄灭。人脸识别工作显示如图10 所示。
图10 人脸识别工作显示
5 结论
本次设计综合了单片机、传感器、显示屏和OpenCV的使用,完成了基于单片机的宿舍安全管理门禁系统的设计,设计使用STM32 单片机控制驱动硬件设备并且实现与上位机的通讯,单片机驱动摄像头、温度传感器采集用户信息,使用显示屏展示信息采集结果,采集到的数据信息分别使用单片机和上位机识别程序进行分析处理,实现了对用户进行测温和人脸识别的功能。