设计与开发

51单片机的门禁 【042B】基于51单片机门禁系统(LCD1602显示)实物作品演示

小编 2024-10-31 设计与开发 23 0

【042B】基于51单片机门禁系统(LCD1602显示)实物作品演示

基于 51 单片机门禁系统(LCD1602 显示)。

大家好,下面给大家演示一下门禁系统。

1. 首先看一下电路板,这是一个定位器,另外可调节液晶显示屏的清晰度。这里是 lcd1602 液晶显示屏的接口,液晶显示屏。这个是单片机端口的上拉排组。这是 512 单片机。这边是 512 单片机的下端,前期可通过下海口下载到单片机里面。

2. 这个是复位按键,即单片机的复位按键。旁边这个按键是注册键,按住这个按键可进行注册卡。第二个是撤销键,可删除卡。

3. 注册跟撤销信息,会存储到 at24c70 存储芯片里面。上面是蜂鸣器,当刷卡时如果是无效卡,刷的它会声光提醒,红色指示灯报警,蜂鸣器会鸣叫。

4. 绿色指示灯用于操作删除卡跟注册卡。这边接口是一个 rfid 读卡器的接口,这边有一个继电器,继电器电路用于控制电机。

5. 当这边指示灯亮,主要是继电器结合,电机计算器电机也会工作。同时上面电源是电机的工作电源,下面是电路板的工作电源,下面还有一个电源开关。

6. 首先接上液晶显示屏,接入读卡器,这个是 rc52 这个读卡器型号的读卡器,接上电机接入电源。上面电源如果没接,只是电机不会工作,下面电源是整个电路板的工作电源。

7. 上面可以不用接,开关向左拨打开电开关。看一下,现在上面显示的是 id,现在没刷卡时还是 id,卡号看不到。

8. 这边括号这里显示 id 卡号,刷卡的次数,有记录刷卡次数。

9. 现在总共存储了一张卡的信息。刚才注册的这张卡,一刷就可以进行解锁,刷完后电机开始工作,这边显示卡号,这边是刷卡的次数。

10. 这张卡还没注册,没注册的刷它只会滴两声,提示无效卡。可以通过按住第一个按键进行注册,按住之后绿灯亮了再刷卡就可以注册成功。这边卡号现在总共存储的数量是两张,这时刷这样卡就有用了。

11. 同时也可以进行删除,按住第二个按键进行删除,绿色灯亮的时候开始刷卡,删除成功,这张卡的数量就减一。这时刷这张卡就没用了,卡的信息是有掉电存储的,存储在 at24c70 里面,电拔掉之后再接上电时信息还是记录在里面,这张卡还是刷不了,这张卡就可以刷。主要就给大家演,谢谢大家。

Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)

一. 门禁考勤系统硬件设计

1 .硬件总体结构

PC端的intel处理器作为硬件平台的核心,是衡量系统能否达到标准的主要标志。本文结合考勤系统,采用intel i5处理器的PC与51单片机共同构建了门禁兼考勤系统的硬件平台,相关的硬件将在之后描述。其硬件的总体框图如下图

硬件总体框图

2. 系统硬件实现

系统的主要器材包括PC机,AS608光学指纹模块,51单片机最小系统(STC89C52RC芯片),继电器,电磁锁。

1)PC机。

PC机搭载了Intel(R)Core(TM)i5-7200U CPU @2.50GHz 2.71的处理器,拥有4GB的RAM,自带30万像素的摄像头以及两个USB端口。其中一个USB端口(COM4)用于控制指纹模块,另外一个USB端口(COM3)用于控制单片机。

2)AS608光学指纹模块,如下图。

AS608指纹识别模块是ALIENTEK出品的一种性能优异的光学指纹识别模块。该模块采用了杭州晟元芯片技术有限公司的AS608指纹识别芯片。芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征[4]。该模块配备了串口、USB 通讯接口,用户无需研究复杂的图像处理及指纹识别算法,只要通过简单的串口、USB 按照通讯协议,发送相应的指令数据包,便可控制模块。

AS608指纹模块

3)51单片机最小系统。

①12V电源电路,由于单片机最大能提供的电源只有5V,所以该电源为电磁锁提供12V的通电电源,实现门禁开锁。原理图如下。

12V供电电源

②复位电路与晶振电路,如下图。

复位电路提供单片机复位功能,上电时可给单片机res脚提供相应的复位电平信号,在该系统中复位键还启到关闭电磁锁的作用;晶振电路可以给单片机提供时钟输入。

复位电路与晶振电路

③继电器模块,如下图。

该模块结合PNP三极管,当P3.6高电平时,继电器未吸合,电磁锁处于关闭的状态;当P3.6低电平触发时,继电器吸合,电磁锁接通12V,处于关闭的状态。

继电器模块电路

④串口下载器,如下图。

该串口下载器具备下载.hex程序的功能,可以与PC机进行串口通信,又可以为单片机提供5V电源。

串口下载器

⑤电磁锁。

门禁系统的重点在于电磁锁,执行开锁关锁的动作。异于日常生活使用物品和人力来开锁,电磁锁通过高电平通电来打开锁,不存在传统意义的钥匙。

本文采用的电磁锁采用优质金属,防锈能力强,性能稳定,坚固耐用;表面采用电镀工艺,平滑无刺,开关顺畅,内部使用全铜线圈,通电开,断电锁[5]。本系统选择电磁锁作为系统的动作执行模块,采用广州某公司生产的通电开锁式电磁锁,如下图所示。其工作电压直流12V,使用电流为0.4A,可以长期通电。

电磁锁

二. 门禁考勤系统软件设计

1. 软件运行环境的搭建

搭建基于python+tkinter+opencv+dlib的指纹识别与人脸识别门禁兼考勤系统,需要先在PC端Windows10系统下安装python环境以及相关的库,步骤如下:

1)安装python3.5:选择任意浏览器登陆https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64.exe,下载并安装python3.5版本,安装过程中需要勾上Add Python3.5 to Path,如图1;安装完成后,打开命令提示符窗口,输入python后,会出现如图2的情况,则安装成功,否则安装失败[6] 。

1.python安装过程

2.python安装成功

2)安装系统所需要的库,pyhton3.5自带的有tkinter,sqlite3,time,os,serial,binascii,zlib,io,需要自行安装的有skimage,dlib,numpy,opencv,webbrowser。

安装skimage,dlib,numpy,webbrowser的方法如下:打开命令提示符窗口,依次输入pip install skimage, pip install dlib, pip install numpy, pip install webbrowser。安装opencv的方法如下:任意浏览器登陆http://www.lfd.uci.edu/~gohlke/pythonlibs/,选择opencv_python-3.1.0-cp35-cp35m-win_amd64.whl进行下载,然后拷贝opencv_python-3.1.0-cp35-cp35m-win_amd64.whl到Python安装目录Lib\site-packages下,最后在命令提示符窗口切换到D:\Program Files\Python\Lib\site-packages目录下,输入pip install opencv_python-3.1.0-cp35-cp35m-win_amd64.whl;所有的库安装成功如下图

python相关库安装成功

2. 系统软件的总体设计

1、系统的需求分析:

该门禁兼考勤系统,采用python语言开发,可以通过AS608指纹模块收集每个用户的两枚指纹信息,可以对用户的指纹信息进行录入、验证和删除;可以通过电脑自带的摄像头添加用户的人脸信息,这里涉及到三个具体的问题,一个是怎样去采集、匹配和删除用户的指纹信息和人脸信息。二是持久化地保存这些信息到数据库中去,由于AS608指纹模块拥有存储用户指纹信息和id的功能,要考虑的是把对应的用户id、姓名和人脸信息对应的写入数据库,这里还涉及表的具体设计;另一个基本要求是通过指纹模块和摄像头来进行指纹识别和人脸识别来完成考勤和门禁,PC在通过串口发送一系列的指令包到指纹模块进行指纹识别,通过指纹验证后,可以通过遍历数据库里的用户面部数据与当前摄像头里的面部数据的比对来实现,存在问题有摄像头出现多张人脸[7]。三是需要对用户信息和考勤日志信息进行管理,这里涉及了用户模式与管理模式。扩展要求是添加了网页端的超级管理员模式。

本文希望达到的目标是:

1)此门禁兼考勤设计成软件UI操作界面,通过点击菜单进行操作,菜单拥有可用性和不可用性[7],具备用户模式和管理员模式,进入管理员模式需要输入正确的管理员账号和密码,如图2.1。而右边区域用于展示系统的LOGO图案和日志信息,如下图2.2;左边区域做控制台输出,打印相关信息,比如提示录入用户指纹信息、人脸信息与个人信息是否成功及其原因,提示用户验证信息,进行打卡成功、打卡失败及其原因,并通过串口通信控制51单片机实现门禁的功能。在添加指纹信、人脸信息和进行打卡的时候,人是必须和操作界面进行交互的。

2.1系统的菜单

2.2系统LOGO和部分日志信息

2)系统通过建表来存储用户信息,考勤日志信息和管理员信息,每次新建录入用户指纹信息和人脸信息时,要求输入未存在的id和姓名,如查重证明id和姓名已存在,将无法进行下一步。接着用户进行指纹录入时,需要进行按压两次指纹,录入两枚相同的指纹,作为用户的指纹信息。当用户指纹录入成功后,开始进行人脸录入,此时只取面积最大的人脸,也就是距离屏幕最近的人脸,这是考虑到用户需要依次进行打卡验证。用户在进行人脸录入时存在两种情况:第一是一旦识别到人脸就自动捕获截图,连续截图达到10张就结束录入;第二是用户手动点击菜单结束录入,不一定要得到10张。结束录入后就开始从刚才捕获的用户面部提取人脸特征数据并连同之前输入的用户姓名等数据作为一行记录保存到数据库中,如果没有捕获到员工面部或者刚才捕获的面部信息不是同一个人,这行记录就被丢弃。

考勤时,须满足三个条件:用户的指纹信息和面部信息已录入、没有重复打卡,一旦打卡成功,用户的id、姓名、打卡日期及时间,是否迟到等信息,作为一行记录保存到数据库日志表logcat,并在左边控制台输出打卡成功信息,否则会在控制台输出失败及其原因信息。但是不管是否迟到,只要用户指纹信息和人脸信息都验证通过,电磁锁就可以自动打开5s。

3)系统拥有管理员模式与超级管理员模式。管理员模式是在管理员菜单栏中,点击进入管理员模式,输入正确的账号和密码后,管理员的所有菜单将变为可用,可以进行删除特定的指纹,一键删除指纹,删除本地用户人脸信息,删除数据库日志和用户信息,直接打开锁,进入网页端管理平台,在点击退出管理员模式之后,除了进入管理员模式,其他管理员的功能菜单将会再度变灰。而超级管理员模式,则是需要在网页端输入正确的超级管理员账号与密码后,将拥有修改用户信息,日志信息,管理员账号和密码的功能。

2、系统软件的目标:

1)为了实现需求分析的目标一,程序的界面初始化分为三部分,界面上方为菜单栏,界面左下方作为消息打印控制台,界面右下方为logo图案或日志信息展示面板,这界面的三部分是独立分开的;数据逻辑部分的初始化分为两部分,第一部分是初始化数据库,如果数据库/表不存在就新建,存在则加载相关数据,第二部分是初始化一些需要循环使用的变量,比如新建录入时的员工姓名、工号、截图数目计数器等,每当完成录入时这些数据都应该被重置成初始化以待下一次录入,把这些初始化语句写成一个函数可以提高代码复用度。

2)完成需求分析目标二主要是一些限制性条件,可以通过添加判断语句来实现:

①比如对输入id的合法性检验:

id = int(self.entry.get())

print(self.knew_id)

while id < 0:

messagebox.showwarning(title = "系统提示",message = "id不能为负数")

for knew_id in self.knew_id:

if int(knew_id) == id:

messagebox.showwarning(title = "系统提示",message =

"id已存在,请重新输入")

return False

其中id是从输入框得到的,self.knew.id是从数据库里加载出来的id列表,如果id非法(为负数),就会出现新的弹窗来提示id不能为负数。

②比如需要先指纹录入通过后才能进行人脸信息录入:

self.infoText.insert(INSERT,"\r\n对比两次指纹\r\n" )

sleep(1)

while True:

match = [0x01,0x00,0x03,0x03,0x00,0x07]

self.sendcmd(match)

self.receive()

if self.flag == 1:

self.infoText.insert(INSERT,"\r\n对比成功,两次指纹一样\r\n" )

sleep(1)

print("对比成功,两次指纹一样")

break

else:

print("对比失败,请重新录入指纹")

self.infoText.insert(INSERT,"\r\n对比失败,请重新录入指纹\r\n" )

sleep(1)

self.Buffer1()

self.Buffer2()

其中每个指纹进行录入的时候,需要录入两次相同的指纹,即调用函数self.Buffer1()和self.Buffer2();两个指纹对比成功之后,才可以跳出循环。

③再比如对拒绝多张人脸时、只处理距离屏幕最近的员工的面部信息:

if len(dets) != 0:

biggest_face = dets[0]

#取占比最大的脸

maxArea = 0

for det in dets:

w = det.right() -det.left()

h = det.top()-det.bottom()

if w*h > maxArea:

biggest_face = det

maxArea = w*h

dets是在视频流中出现的所有人脸数组,biggest_face是占面积最大的人脸。

3)完成需求分析目标三,需要在数据库多建一个管理员账号密码表,多增管理员菜单栏,完成管理员模式。超级管理员模式则是通过python+Django搭建网页端的管理后台。

2、本程序的设计思想大致可分为以下几个方面[7] :

1)面向对象的原则,整个系统程序的主体基本是一个System()类,所有函数的实现都围绕这个类展开。

2)界面的显示和数据逻辑分离的原则,System类的初始化过程包括界面的初始化和数据初始化,两者相互独立。

3)代码封装原则,程序包含多个函数,大部分语句集写成接口函数供调用,没有冗余的代码。

4)接口隔离原则:拥有多个功能性的接口函数,而不是单一的总接口函数。

3、系统的软件设计框图如下图:

系统程序框图

主界面

管理员登陆界面

此文未完,将持续更新。转发本文,关注私信小编,将可获得python学习资料

相关问答

正在做一个基于 51单片机的 rc522 门禁 系统,数据手册太难啃了,求大佬给点建议?

前一段刚刚搞了个非接触卡的项目,当时确实费了点功夫。网上有的例程还是可以参考的。有的例程直接移植就可使用前一段刚刚搞了个非接触卡的项目,当时确实费了...

基于 51单片机 中等难度的毕业设计题目?

TOP1.基于51单片机人脸简易识别系统TOP2.基于51单片机智能非特定人声语音识别系统TOP3.基于51单片机指纹考勤系统TOP4.基于51单片机智能小型穿戴手表TOP5...

门禁 控制器上设计的双看门狗电路是做什么的?

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统...

门禁 视频智能系统设计方案是怎么样的?

根据实际需求,在门外和门里各安装1台摄像机,摄像机就近取电。离机房远的摄像机,通过视频光端机将视频信号转换为光纤号,通过光纤传至嵌入式硬盘录像机里。离...

同志们我想咨询 安康闸机 门禁 安装方案,闸机 门禁 够不够专业...

[回答]店面都是临街的方正格局的屋子1、安装不是看多大面积,要考虑店内是否有安装死角。2、使用深圳的国产摄像头即可,3、录像机自身有一个压缩比,每1.找...

你们谁清楚!什么是智慧景区 门禁 票务系统?

[回答]这个有很多种叫法,比如说无人值守入园系统、景区票务系统等等,这是实现智慧旅游的重要一步,选择景区的票务系统最重要的是看是否能够打通物理硬件数...

门禁 开关电源原理什么

[回答]门禁系统,又称出入管理控制系统,是一种管理人员进出的数字化管理系统。常见的门禁系统有:密码门禁系统,非接触IC卡(感应式IC卡)门...

什么叫磁力锁门反馈功能?

磁力锁(或称电磁锁)的设计和电磁铁一样,是利用电生磁的原理,当电流通过硅钢片时,电磁锁会产生强大的吸力紧紧的吸住吸附铁板达到锁门的效果。只要小小的电流...

帮个忙大神们,问一下,快捷 门禁 闸机安装方案, 门禁 闸机专业吗??

[回答]1、单片机实现简单近距离传输数据玩玩的确实很简单,只要你懂得配置串口,此时应该没有什么技术难点。2、如果你希望在工程上实现多个单片机间或是长...

怎么选择 快捷 门禁 闸机系统国内安装, 门禁 闸机系统效果好不好??

[回答]玛斯特尔自主研发生产的硬件产品有:人脸识别闸机,人证票一体闸机,车站专用闸机,景区专用闸机,智能辊闸、翼闸、摆闸、一字闸、全高闸、半高闸、速通...

猜你喜欢