| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> (毕设3)基于esp32-cam单片机门禁系统设计(附源码,PPT演示视频) -> 正文阅读 |
|
[嵌入式](毕设3)基于esp32-cam单片机门禁系统设计(附源码,PPT演示视频) |
基于esp32-cam单片机门禁系统设计 摘 ?要 本文设计是利用esp32-cam单片机为核心,esp8266单片机为辅助,通过摄像头模块,oled显示屏模块,巴发云平台,rfid射频模块,微信小程序,热释电传感器模块,as608指纹传感器模块,将人脸识别技术,指纹识别技术,网页技术,射频技术相结合实现的门禁系统。 关键词:esp32-cam;传感器;门禁系统;esp8266 四个月时间完成的这个毕业设计,今天整理了一下内容,分享给需要的人,源码什么的放在了文章末尾的百度网盘链接里,如果未来有人看见这篇文章觉得它有帮助就帮忙点个赞收藏一下吧,嘿嘿,本人QQ:2535640842有问题欢迎找我 ?齐鲁师范学院 ??本科毕业论文(设计) ?Design of access control system based on esp32-cam microcontroller 学 ???院????? ? ? ? ? ? ? ? ? ? ? ? ???????????????????? 专 ???业? ? ? ? ? ?计算机科学与技术????????? 班 ???级? ? ? ? ? ? ? ?????云计算??????????????????? 学 ???号? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????????????? 姓 ???名????? ? ? ? ? ? ? ?孙 浩????????????????????? Q? ? Q? ? ? ? ??? ? ? ?2535640842? ?????????? 齐鲁师范学院教务处制 二O二二年 五 月 齐鲁师范学院学士学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在论文中作了明确的说明并表示了谢意。本声明的法律结果由本人承担。 学位论文作者签名:? ?孙浩? ? ? ? ? ?? ? ?2022? ??年? 5??月?19??日 齐鲁师范学院关于论文使用授权的说明 本人完全了解齐鲁师范学院有关保留、使用学士学位论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。 指导教师签名:???????????????? ?论文作者签名:? ? 孙浩? ? ? ? ? ? ?????年????月????日 ????? 2022? ?年? 5? ?月? 19? ?日 目录 ? ? ? ? ?(一)开发语言 一、绪论(三)研究方法及论文结构 二、关键技术及协议(一)开发语言本次设计使用的开发语言是micropython, micropython是小型的python语言编译器,它支持python语言在嵌入式设备上运行,micropython与python的语法一致,支持常用的python语法。micropython是计算机工程师和物理学家 Damien George 在2013年创建。micropython的程序无需编译就可以直接在开发板运行。通过干净、简单的Python代码来控制硬件,使用者不用使用像c或c++十分复杂的底层语言控制硬件控制硬件。 (二)通信协议1.IEEE 802.11协议本文中的esp32-cam与esp8266使用的网络为wifi网络,wifi协议是ieee802.11协议的一个组成部分,用于无线局域网络的数据传输,弥补无线局域网络传输数据的不足,工作频段分为2.4Ghz和5Ghz,帧结构相对复杂。 2.MQTT协议MQTT是IBM设计,是一个基于客户端-服务器的消息发布/订阅传输协议[11],esp8266与node-red使用该协议,这个协议以TCP/IP协议为基石,易于实现,简单,使用比较少的代码和比较有限的带宽。 MQTT使用发布与订阅消息模式,一个发送者可以使多个消息者接受,使应用程序更加灵活,实现了对负载内容屏蔽的消息传输。消息的发布者、代理服务器、消息的订阅者是完成mqtt通信的三个组成部分。[8]主题和负载是是消息的两个部分。Mqtt通信模型如图 2-1?mqtt通信模型 图?2-2?mqtt通信模型 3.IIC协议esp32-cam与oled显示屏使用IIC协议,IIC协议使用两根信号线即可实现主设备和从设备的通信,开发板仅需要两个普通的输入输出引脚即可向oled屏传输消息,IIC协议分为数据帧和地址帧,IIC主要有硬件实现和软件实现两种方式,本次设计使用的是软件实现,软件IIC是程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序。软件实现IIC一般较硬件实现IIC稳定。 4.UART协议esp8266与as608指纹传感器通信使用UART协议,Uart协议可以实现全双工传输和接收数据,是一个通用的通用串行数据总线,它的基本结构有六种比较常用的寄存器。 5.HTTP协议esp32-cam单片机与与巴法云平台通信,微信小程序与巴法云平台通信使用此协议,HTTP的中文名字叫超文本传输协议,它是基于TCP协议来传输网页和图片文件的协议,端口是80,HTTP比较常见的请求方法为GET和POST。文中esp32-cam使用post方法传输图片到云平台,微信小程序使用post方法请求云平台中的图片来给用户展示。 6.Socket协议esp32-cam单片机与esp8266单片机通信使用Socket协议。Socket借助TCP协议实现,它是一个的中间软件抽象层。Socket其实就是一个通信模式,它能够简化通信,可以把复杂的通信协议变得简单,Socket相当于一个接口,用户只需要使用这个接口,而不需要考虑这个接口后面的东西是什么,只负责组织计算机双方的数据的传输。 (三)软件1.PycharmPyCharm是python的集成开发环境,功能比较强大,是一个比较不错的软件。另外,pycharm还有一些高级的功能,比如版本控制、自动搭建web开发框架等。Pycharm在项目中用来运行人脸验证的服务端。 2.UpycraftuPyCraft是一个用于micropython开发的IDE工具,支持比较主流操作系统。,uPyCraft在windows系列系统上都采用点击exe文件即可使用的方法。uPyCraft在项目中用来为单片机烧录micropython的固件,其较传统的固件烧录更加简单。 3.ThonnyThonny是一个用于micropython开发的IDE工具,支持比较主流操作系统。它里面有一个类似pip的工具包,对于下载一些库很友好,不用专门到官方网站里面下载,它是用tkinter开发出来的python ide,有一些不错的功能等功能,Thonny在项目中负责编写esp32-cam和esp8266单片机的程序,并且上传至单片机中。 4.ActivemqApache ActiveMQ是一个消息服务器。这个服务器可以使用C,Python,java等程序等连接。它是由java开发的,开源,支持多协议,可以使用STOMP通过websocket在Web应用程序之间交换消息,本文使用它作为mqtt服务器转发消息,node-red web端的mqtt消息通过它转发给esp8266单片机。 5.Node-redNode-red 是由IBM开发,是一种简化物联网开发的一种基于流的可视化编程平台编程工具,目前是OpenJS 基金会的成员之一。 Node-red的编程环境是在网页中,用户运行Node-red服务器,通过浏览器登录开发平台,现将已经写好node节点拉到工作区并用线连接节点创建数据流来实现一些功能。用户通过部署即可运行。创建的这个程序以JSON字符串的格式保存,用户可以分享、修改这个程序。 6.Face RecognitionFace_recognition是一个人脸识别python库,由于这个项目开源可以免费使用,这个人脸识别库目前用的人比较多,国内教程比较多。用一些国外的人脸数据集进行测试,它的准确率很高,这个项目的配置运行有两种方式,pip和conda,pip下载十分复杂,conda下载类似linux中的yum下载,十分友好,因此采用conda下载该项目。 7.微信开发者工具用于开发微信小程序和公众号网页开发,项目中主要用它完成监控画面的获取并在手机上展示。方便用户查看。 (四)硬件1.esp32-camesp32-cam是一个带有摄像头模块的单片机,可以在上面运行c或者micropython程序,可以作为一个系统进行独立的工作,它的正常供电电压在5v,它的电流最低为6mA。它在各种物联网场合都能使用,价格便宜,可用于很多物联网解决方案中。Esp32-cam的管脚定义,如图 2-2管脚定义 ? 图?2-2管脚定义 esp32-cam的最小系统图,如图 2-3 esp32-cam最小系统图 ? 图 2-3 esp32-cam最小系统图 2.esp8266nodeMcu是一个esp8266开发板,工作电压为5v,有两个模拟输入引脚,10个pwm引脚,两个串行端口,有软件模拟的I2C端口,没有硬件I2C端口,4个spi端口,可以运行C,micropython程序,使用简单容易上手。引脚对应关系如图 2-4 ?esp8266引脚对应关系 ? 图?2-4 ?esp8266引脚对应关系 nodemcu模型图,如图 2-5 nodemcu模型图 3.Ly-01电磁锁Ly-01电磁锁的供电电压是12v,在介绍电磁锁的原理之前需要介绍一下电生磁的现象,一条通电的直导线空间会产生圆形磁场。这条导线中的电流越大,那么其产生的磁场越强。该导线产生的磁场是圆形,会围绕导线周围。 电磁锁的原理是电磁锁通电时,电磁锁的电磁线圈产生电磁力会把锁芯吸入锁内,即锁打开,通电结束,电磁力消失,弹簧把锁芯弹出,即锁关上。 4.as608指纹传感器As608指纹传感器有两个通信总线,分别为uart和usb,由于usb实现比较复杂,故本文采用uart通信总线与esp8266单片机进行通信,as608指纹传感器芯片是由杭州晟元芯片技术有限公司设计,它有8个控制接口,可以进行二次开发,指纹识别是一对多,指纹验证是一对一,一般它的控制指令一般分三种,包括指令包,数据包和结束包,实现指纹验证的思路一般先把指纹的图像录入进去,然后对录入的这个图像生成一些特征,然后根据这个特征做指纹的验证或者注册,或者删除。 5.mfrc522非接触式读写卡芯片mfrc522芯片是一个非接触的读写卡的芯片,质量高,价格便宜。它和s50卡常用于门禁系统,水卡系统,饭卡系统,它有uart,iic,spi三种通信接口,通信速率可以达到13.56MHz,本文使用mfrc522芯片通过uart协议与esp32-cam单片机进行数据的交互,可以实现RFID射频系统识别开锁。Mfrc522芯片原理图如图2-6 mfrc522芯片原理。 ? 图?2-6 ?mfrc522芯片原理 6.oled显示屏oled是一种显示屏,其发光过程共分为4种,其功耗比较低,显示效果比led好,接线数量少于lcd屏,可以减少单片机端口的占用,本文采用oled显示屏代替lcd屏连接esp32-cam单片机用于显示相关信息。 7.Pir传感器热释电传感器PIR可以检测是否有人,常用于监控领域,PIR传感器里面的材料压电陶瓷类电介质存在自发极化特性,当这个材料表面受到人体红外辐射温度会升高,上面的电荷减少,减少的电荷经过一些特殊处理会变成电压信号输出,单片机收到这个信号会根据内部的逻辑作出相应的处理,当红外辐射消失,电荷则会恢复,电压消失。热释电原理如图2-7热释电原理图 ? 图?2-7?热释电原理图 8.继电器继电器是一个低电流控制高电流的电子元器件,常由于各种物联网项目开发,当输入的电流达到一定阀值时,会将电路进行转换,本文使用esp8266的3.3v电压引脚输出电流,用来控制12v电压给电磁锁供电,当esp8266单片机收到开锁指令后,3.3v引脚输出电流,继电器收到小电流,控制12v外部电源给与电磁锁供电,锁开,其本质是用小的电流去控制大的电流运作的一种开关,起到自动调节、安全保护、转换电路的作用[4]。 三、门禁的系统设计(一)系统架构门禁系统设计共分为四个子系统,分别为人脸识别系统,射频识别系统,网页控制系统以及指纹识别系统,本文重点探讨人脸识别系统和射频识别系统的设计与实现。人脸识别系统主要通过验证人脸开锁,射频系统主要通过验证卡开锁。 系统架构图如下,如图 3-1 ?门禁系统架构图 ? 图?3-1??门禁系统架构图 (二)实现思路1.人脸识别系统验证人脸,验证成功锁开,具体实现:人靠近房门,热释电传感器PIR向esp3-cam单片机发送指令,开始拍照,照片通过wlan传送后端windows服务器(采用socket协议),由后端python程序进行人脸识别,识别成功将开门指令返回esp32-cam,收到开门指令后,esp32-cam向esp8266发送开门指令, esp8266连接继电器模块,继电器模块外接电磁锁和12v电源,[6]esp8266收到指令,发送指令给由继电器模块,继电器模块控制电源模块向电磁锁供电,锁开,人进入后,红外感应装置失去目标,程序恢复等待状态。esp8266与esp32-cam同处一个wlan网络中,工作频段为2.4Ghz,IEEE 802.11g通讯协议,为了保证安全性,在esp8266与esp32-cam中设置认证字段,在发送指令前需进行认证,在esp32-cam向服务器发送照片的同时也将照片通过http协议发送至巴法云平台,开发微信小程序对接巴法云平台展示图片,实现监控功能。 2.网页控制系统登录网页系统,打开开关按钮,即可实现电磁锁的开与关。具体实现:esp8266连接继电器,继电器连接电磁锁和12v电源,网页向esp8266收到指令,发送指令给继电器模块,继电器控制电源模块向电磁锁供电,锁开或锁关,网页与esp8266使用mqtt协议进行通信,mqtt服务器使用activemq,网页开发使用node-red,运行node-red服务器进入可视化编程平台,对接mqtt服务器,添加按钮,设置发送的消息内容,完成之后对接activemq,在esp8266连接activemq,设置连接密码,订阅主题,根据回调函数收到的指令做出电磁锁相应的操作。 3.指纹识别系统验证指纹,验证成功锁开,具体实现:该系统无需使用esp32-cam,使用esp8266连接继电器模块,继电器外接电磁锁和12v电源,esp8266连接as608指纹识别模块,通信协议采用UART,手指按压传感器,指纹识别成功则锁开,不成功则锁不开,若指纹识系统实现增加指纹,删除指纹功能与清空指纹功能则需要与网页控制系统做联动,通信协议为MQTT。 4.RFID射频识别系统验证IC卡,验证成功锁开,具体实现:esp8266连接mfrc522非接触读写卡芯片,共占有单片机7个引脚,通过uart协议进行通信,该系统可以读写s50卡,先写s50卡,写完后当再次读取到这个s50卡后会向esp8266发送开锁指令,如果读取到的不是写过的s50卡,则不会发送开锁指令给继电器。 (三)流程图及电路设计1.流程图人脸识别流程,如图 3-2 人脸识别流程图 ? 图?3-2 人脸识别流程图 鉴于另外三个方案流程图类似,略过。 2.电路设计esp32-cam 引脚2连红外传感器,引脚6,7连接oled显示屏。 esp8266 引脚5连继电器,继电器连电源,电磁锁,引脚1,3连as608指纹传感器,引脚14, 12, 13, 15, 2连mrff522读写卡。 四、门禁的软硬件实现(一)人脸识别系统软件:thonny,pycharm,micropython,微信小程序开发工具,巴法云平台。 硬件:红外传感器,oled屏,电源模块,数据线,esp32-cam单片机,esp8266单片机,路由器,继电器,电磁锁。 人脸识别子系统使用micropython语言开发,云平台主要负责接受esp32-cam发来的图片,微信小程序开发工具主要负责开发微信小程序,展示从云平台获得的图片,数据线用来烧录代码,oled屏用来展示认证是否成功的消息,红外传感器主要负责检测是否有人,有人的话唤醒esp32-cam单片机拍照,路由器充当网关,负责传输无线数据,电源模块用来给esp8266单片机供电。esp8266负责连接继电器与电磁锁。 部分关键代码:
(二)RFID射频识别系统软件:thonny,pycharm,micropython。 硬件:s50卡,mfrc522非接触式读写卡芯片,电源模块,数据线,esp32-cam单片机,esp8266单片机,继电器,电磁锁。 RFID子系统使用microython语言开发,Thonny负责编写esp32-cam,esp8266端代码,mfrc522非接触式读写卡芯片主要负责读写s50卡,s50卡用来存储读写卡芯片写的信息。路由器充当二层网关,负责esp32-cam与esp8266的通信,数据线用来烧录代码,esp8266负责连接继电器与电磁锁。 部分关键代码:
五、系统功能测试及部分展示为了验证系统的正常运行,本文做了人脸识别系统,射频识别系统,网页控制系统以及指纹识别系统的测试,下面是具体的结果以及部分截图展示。 (一)人脸识别系统esp32-cam连接wifi网络,正常。 esp32-cam获取ip地址,正常。 服务端人脸身份验证,正常。 esp32-cam与人脸认证服务端通信,正常。 服务端人脸身份验证,正常。 Pir红外传感器检测到人唤醒esp32-cam,正常。 esp32-cam 拍照上传云平台,正常。 微信小程序展示监控图片,正常。 esp32-cam与esp8266通信,正常。 esp32-cam与oled屏通信,正常。 face_recognition库调用,正常。 微信小程序监控画面展示,如图 5-1小程序端监控查看 ? 图 5-1小程序端监控查看 (二)网页控制系统esp8266连接wifi网络,正常。 esp8266获取IP地址,正常。 Activemq转发MQTT数据,正常。 esp8266连接activemq服务器,正常。 Node-red连接activemq服务器,正常。 Node-red部署web项目,正常。 用户登录web网页,正常。 Web网页与esp8266通信,正常。 Node-red web后端如图5-2 node-red web后端 ? 图5-2 node-red web后端 (三)指纹识别系统As608指纹传感器与esp8266单片机连线,正常。 esp8266单片机与As608指纹传感器通信,正常。 esp8266单片机控制As608指纹传感器注册,删除,验证指纹,正常。 as608指纹传感器读取指纹,如图 5-3??指纹读取 ? (四)RFID射频识别系统esp32-cam连接wifi网络,正常。 esp32-cam获取ip地址,正常。 esp32-cam与mfrc522读写卡通信,正常。 mrff522读取s50卡,如图 5-4 ?mrff522射频芯片读取s50卡片信息 ? 图 5-4 ?mrff522射频芯片读取s50卡片信息 六、总结本文门禁系统设计共有4个子系统。通过借助esp8266单片机,esp32-cam单片机,红外传感器,继电器,电磁锁等硬件以及micropython, face_recognition,node-red,微信小程序等软件之间的相互配合实现了人脸识别系统、射频识别系统、网页控制系统以及指纹识别系统这四个子系统的设计。本文重点设计并实现人脸识别门禁系统和射频识别门禁系统。本系统存在一定的缺点,单片机并没有实现多进程多线程处理任务的功能,处理多个进程或线程任务时不够友好,后续需要进一步提高该系统的性能。 七、源代码,PPT及演示视频链接:https://pan.baidu.com/s/1emct2jyJMb8tcZvm1G4XDg? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:20:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |