基于ESP8266的智能门禁系统设计与实现
2022-05-06王思婷梁浩明
王思婷 梁浩明
1.广东水利电力职业技术学院 广东 广州 510635;2.广州盖得信息科技有限公司 广东 广州 510000
引言
随着物联网技术的发展,智能硬件产品不断涌现,越来越多的智能化产品出现在市场上。智能门禁有别于传统门禁,不仅采用了先进的电子锁,还设计了丰富多样的开门方式,例如:磁卡、射频卡、指纹、虹膜、指脉等验证方式,不但提高了便利性,还具有很高的安全性[1]。除了电子化的解锁方式,智能门禁还能连接互联网,让用户通过手机查看门禁状态,浏览开门记录,甚至可以实现远程授权开锁和防盗报警等功能。目前市面上的智能门禁系统依然存在价格较高的问题,平均售价基本在2000元左右,性价比较低。
针对以上问题,本文设计了一套基于ESP8266的智能门禁系统,该系统包含主控模块、指纹模块、红外模块、按键模块、感应模块、执行电机和后台服务器。能够实现指纹开锁、密码开锁、远程开锁、人体感应和记录开门信息等功能,具有价格实惠、性价比高、安装方便等优势。
1 硬件设计
1.1 系统设计
本设计智能门锁系统框图如图1所示,采用ESPRESSIF(乐鑫)的ESP8266主控模块,该主控模块内置32位RISC处理器和Wi-Fi芯片,具有性能稳定、高度集成、低功耗等优点,是一款高性价比的面向物联网应用的MCU。指纹模块采用市面上常见的电容指纹模块,该模块使用串行口通信,能够存储1000枚指纹信息,识别速度快,精度高,能够检测生物电容,有效防止指纹膜等手段。出于简洁考虑,使用红外接收模块来获取密码输入,用户可以使用红外遥控器对门禁进行密码输入。系统采用内置的Wi-Fi模块进行网络通信,该Wi-Fi模块内封装了TCP/IP协议栈,可以方便地与后台服务器连接,后台服务器内置数据库,能够存储开门的信息,如开门时间、开门方式和开门人员等。为了提高用户体验,本系统还添加了感应模块,感应模块分为开关门感应模块和用户感应模块,开关门感应模块用于识别门禁是否关门,用户感应模块用于感应门前是否有人。执行电机模块用于连接锁体,通过转动门锁或拉扯门锁实现开锁功能。
图1 系统框图
1.2 指纹模块
指纹模块采用的是FPC1020A模组,FPC1020指纹模块由电容式指纹传感器及高性能指纹比对算法等软硬件构成,功能非常完善,兼具指纹采集、指纹登记、指纹比对和指纹搜索等功能,具有超高的防伪性能,应用活体指纹探测技术,有效杜绝伪造指纹、指模等假指纹的误识别,同时,该类产品对干、湿手指也具有非常强的适应性,对指纹纹路不清晰、纹路不全的指纹也具有很强的校正和容错能力,辨识率大大高于同类产品,能够适应各种天气及各类人群使用。
FPC1020指纹模块具有体积小、功耗低、接口简单、稳定性高等特点,指纹模板仅496字节,20枚指纹识别响应时间小于1s,内置IDworId特有得指纹识别算法,具备自学习功能,指纹识别过程中,最新提取的指纹特征值识别成功后将该特征值合到指纹数据库中,不断优化识别速率和准确率[2]。该模块还具备360°自动校正识别功能,在模块上任意角度按压手指,都可以正确识别。
指纹容量高达1700枚,具有5个安全级别可调,默认安全级别下,误识别率小于0.001%,拒识率小于0.1%。采用UART接口通信,支持多种波特率,默认115200bps,工作电压3.3V,工作电流小于40mA。
1.3 其他模块
指纹锁采用人体红外探测是否有人接近门锁,当检测到人时,触发指纹模块扫描手指,长时间未检测到人时,触发低功耗模式。人体红外模块采用HC-SR501模块,该模块可以调节检测距离和延时时间,感应范围约120°锥角,7m左右,封锁时间为0.2s,工作电压为DC5V至20V。
门锁内置了一个红外接收装置,可以通过红外遥控器来操作和设置门锁的各种功能,通过红外遥控器,可以大大节约单片机的IO口资源,减小指纹锁体积。红外通信采用NEC协议,兼容市面上大多数的红外遥控器,接收器使用HX1838,带屏蔽头,可以有效减少外部干扰。
1.4 后台服务器
后台服务器使用的是WAMP服务器框架。WAMP指的是Windows下的Apache + Mysql/MariaDB + Perl/PHP/Python的服务器框架,一般是一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有很高的兼容度,共同组成了一个强大的Web应用程序平台。WAMP具有安装简单、设置方便等优点,非常适合搭建测试环境[3]。
主控芯片内置Wi-Fi通信模块,可以很方便地与无线路由器进行通信,我们在单片机内部搭建了一个网络客户端,单片机上电后首先通过预设的SSID和密码访问路由器,获取IP地址和网络接入权限。当有人开门时,内置的客户端通过HTTP的GET请求访问局域网内搭建的服务器,向服务器上传开门信息,包括开门方式和开门人员等,服务器收到信息后会访问数据库,添加开门时间和序号等信息,并记录本次的开门数据。
2 软件设计
2.1 软件流程图
门锁的软件流程图如图2所示,系统上电后,会对内部资源进行初始化,确认各模块连接正确,功能正常,然后开始与指纹模块通信,确认指纹模块有响应,否则终止主程序,并闪烁故障灯[4]。系统进入主循环后,会先检查门是否关闭,若门关闭则控制执行电机上锁,然后检测门锁前是否有人,若有人则开始指纹扫描和验证,若无人则直接检查开门按键是否按下,如按键按下,则操作执行电机开锁。最后检查红外接收缓冲区是否收到密码数据,并判断密码是否正确,若正确则开锁。通过指纹或密码方式开锁后,都会向后台服务器上传开门信息。
图2 软件流程图
2.2 功能设计
本智能门禁使用了电容指纹模块,有效防止了指纹膜等盗骗手段的入侵。其次,门禁在指纹验证位置安装了人体感应模块,能够有效感应用户是否站在门前,当门前有人时才会开始指纹扫描程序,降低系统功耗。再次,门禁系统在门和门框上安装了霍尔感应模块和强磁,该感应模块能够检测门是否关好,当检测到门已经关闭后,会给门上锁[5]。最后,通过ESP8266内置的Wi-Fi模块,能够自动连接附近的无线路由器,联网后能够向后台服务器发送开门信息,后台服务器使用Apache + MySQL + PHP架构,服务器收到单片机响应后会向MySQL内的相应数据表写入开门信息,用户也可以通过浏览器访问后台服务器,查询开门记录。
3 系统实现
本文设计的门锁系统已经制作了工程测试机,并安装在办公室门上进行测试(见图3)。目前,门锁已经连续工作了一年,没有出现硬件故障和软件BUG,测试结果良好,门锁工作稳定,指纹识别准确率高,开门按键反应快,门前没有人时,系统不主动扫描指纹以降低功耗。
图3 智能门禁测试效果
4 结束语
本系统使用ESP8266作为主控芯片,电容指纹模块作为指纹采集器,使用内置的Wi-Fi模块作为网络通信模块,使用红外作为键盘输入,通过舵机控制门锁,另外还搭建了感应模块和后台服务器。使用较低的价格实现了智能门禁的功能,相比市场上的智能门禁便宜了很多,性价比高,安装方便。