基于wifi的智能指纹密码锁设计

2024-03-12 16:52

本文主要是介绍基于wifi的智能指纹密码锁设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘 要

近年来随着社会经济的迅速发展,信息,安防产品的在安全性方面的风险越来越高,人们对个人隐私的保护意识也越来越强,同时随着物联网技术的发展,人们对安全的,方便的安防产品的需求越来越迫切。本课题主要研究基于WiFi的智能指纹密码锁的设计,致力于利用指纹识别技术和WiFi技术对指纹密码操控门锁和手机操控门锁的实现和设计,使门禁系统更加安全,更加方便。
论文系统地阐述了指纹识别技术和WiFi通信的发展,指纹识别技术的与单片机的结合使用技术、WiFi实现手机与单片机通信的技术、系统硬件设计和软件实现等。通过研究论证、设计实现了利用WiFi通信技术和指纹识别技术对门锁进行操控。通过不断地实验、分析、调试以及对各子模块电路设计。最终实现了通过指纹模块FPM10A进行指纹添加,搜索,比对,删除功能,实现对门锁的控制,以及通过WiFi模块ESP8266实现手机app对门锁的控制,成功设计出WiFi与指纹识别技术相结合实现物联网的控制系统。

关键词:物联网、WiFi、单片机、指纹识别、门锁

ABSTRACT

In recent years, with the rapid development of social economy, information, security products in the security risk is more and more high, people’s awareness of the protection of personal privacy is also more and more strong, also with the development of networking technology, people on the safety and convenient security products demand more and more urgent. The main content of this paper is to study the design of WiFi intelligent fingerprint password lock based on, is committed to by using fingerprint identification technology and WiFi technology of fingerprint password control lock and control the phone lock implementation and design, so that access control system more secure, more convenient.
Paper systematically describes the development of fingerprint identification technology and WiFi communication are systematically elaborated in this thesis, the combination of fingerprint identification technology and Microcontroller use WiFi, achieve the realization of mobile phone communication with the MCU technology, hardware design and software system. Through research and demonstration, the design and implementation of the WiFi communication technology and fingerprint identification technology to control the door lock. Through continuous experiment, analysis, debugging and the design of the circuit of each sub module. Realize through fpm10a fingerprint module to the fingerprint add, search, comparison, delete function, the door lock control, and realize mobile app to the door lock control through the WiFi module esp8266 and successfully design a WiFi and fingerprint recognition technology are combined to realize the controlling system of Internet of things.

Keywords: Things, WiFi,Microcontroller, fingerprint identification, door lock

目 录

第一章 绪论 1
1.1 引言 1
1.2 选题背景与意义 1
1.3 门禁系统技术的研究状况 1
1.4 本文的结构 3
第二章 系统总体方案设计 4
2.1 指纹识别技术和WiFi通信技术概述 4
2.1.1 指纹识别技术的原理和特点 4
2.1.2 WiFi通信技术的原理及特点 5
2.2 基于wifi的智能指纹密码锁设计的整体方案 5
第三章 系统硬件设计 6
3.1 基本工作原理和框图 6
3.1.1 系统工作原理 6
3.1.2 系统原理框图 7
3.2 主控芯片的选择及电路设计 7
3.2.2 振荡电路设计 10
3.2.3 显示部分电路设计 11
3.2.4 继电器电路设计 12
3.2.5 按键电路设计 13
3.3 功能模块设计 13
3.3.1无线传输模块的选取及设计 13
3.3.2 指纹模块的选取及设计 16
第四章 软件系统设计 19
4.1WiFi模块的程序设计 19
4.1.1 ESP8266模块配置 19
4.1.2数据通信 21
4.1.2 数据解析 22
4.2 手机APP程序设计 25
4.2.1 APP的界面设计 25
3.1.2 与ESP8266连接 27
4.3 指纹模块程序设计 29
4.3.1 初始化配置 29
4.3.2 数据通信 30
4.3.3 指纹录入功能软件设计 31
4.3.4 指纹录入功能软件设计 35
功能函数代码如下: 36
4.3.4 指纹删除功能软件设计 37
4.4 系统整体软件设计 38
第五章 调试过程 40
5.1 硬件调试 40
5.2 软件调试 40
5.3 软硬件联合调试 43
第六章 总结 46
6.1 工作总结 46
6.2 感想与体会 46
致谢 47
参考文献: 48
附录A:基于WiFi的智能指纹密码锁设计实物图片 49
附录B:硬件设计原理图与PCB图 50
附录C:程序部分清单 51

第一章 绪论

引言
随着科技的进步和社会的发展,在我们的工作和日常生活中有许许多多的方面都需要身份的认证,而现在以往相对传统的身份认证,识别技术却受到了不法分子身份伪造和密码破解等非法方式和行为的影响,出现了很多漏洞。为了保护自身的隐私和资料不被泄露和窃取,同时让用户更方便的使用产品,门禁、安防、智能设备应用等领域都引入了很多新技术。
指纹识别技术和WiFi通信技术的发展为解决这一系列问题提供了非常大的支持,目前,如何将这些技术应用于门禁,安防系统中成为了许多学者研究的方向。利用这些技术可以实现对门锁的安全且方便地控制,使用户使用得更加放心,便捷。

选题背景与意义
指纹研究是生物识别技术的发展的开始,目前它亦是世界上应用最为广泛的生物识别技术之一。指纹识别技术的迅速发展主要是得益于现代电子制造技术和快速可靠的算法的研究。尽管人类的指纹只是人体皮肤的小部分,然而在识别的数据量却是相当的大,而对这些数据的比对和处理也很不容易,需要模糊匹配算法的大的量运算。我们现在可以制造很微型的指纹图像识别读取设备,同时随着快速提升的用户计算机运算速度也为在计算机甚至单片机上可以进行两个指纹的比对运算提供了的可能。另外,匹配算法的精确性和可靠性也不断提升,指纹识别技术己变得非常成熟。
同时由于2015年后,国家大力扶持物联网行业,物联网行业迎来了大的机遇和发展空间,物联网产品也进入了高速发展的时代,“物联网”产品越来越多地融入我们的日常生活中,在这种大趋势下我们也可以将门锁与WiFi技术相结合,实现利用手机就能操控开关的门锁。
如今将物联网技术和各类技术结合已成为大趋势,完成基于WIFI的智能指纹密码锁设计具有很重要的意义和良好的市场前景。

门禁系统技术的研究状况
如今是科学技术迅速进步、不断发展的信息化时代。高新科学技术在给人类的带来的非常多的帮助和好处,与此同时,人们对于高新科学技术与生活联接的要求也是越来越高。但是随着科技的飞速发展,也带来了许多不安全的因素,例如,有些不法分子运用高科技手段进行的抢劫、间谍和盗窃等非法犯罪行为与日增多。
门禁系统,又可以被称作出入口控制系统。在何时拒绝某些人通行,放某些人通行,何时要发出报警,记忆出入的人员信息,从而达到保障安全的目的,是门禁系统的最重要以及最关键的功能。
目前国内人们生活中所使用的门锁设备主要有以下几种:
(1) 铁锁和暗锁等门锁设备。相对传统的门锁,也是现在中国人们使用最多的,它是单纯的匹配性机械设备,无论它的构造再怎么坚固,一把在店里配置的钥匙就能够打开,而且不会留下开锁的痕迹,如果钥匙丢了就得连带着门锁一起要换,所以非常的不安全。
(2) 磁卡门禁。利用磁卡来控制门锁,虽然各种性能都有所提高,但是由于磁条储存能够储存的信息量很小,读卡器与磁卡间会产生无法修复的磨损,并且读卡器容易被为破坏掉,所以它的可靠性和安全就会受到很大的限制。
(3) 密码解锁门禁。采用键盘输入密码的方式来进行门禁的解锁,但和钥匙解锁一样,存在密码遗忘,密码泄漏等安全问题。
(4) 接触式智能IC卡门禁系统。智能IC卡具有存储数据和数据运算的功能,经过授权和初始化之后能够成为控制门锁打开和关闭的钥匙,计算机作为控制管理主机,通过读卡器的联接管理门锁。但存在接触磨损、难以维护、基础设施投入大的缺点。
(5) 非接触式智能IC卡门禁系统。采用新开发的NFC近场通信技术,与接触式类似,减少了磨损,但成本投入依旧很大。
(6) 生物识别技术门禁系统。生物识别因为它的安全性不断提高及价格的降低,越来越多地应用于门禁系统中,生物识别技术主要包括了指纹、脸型、掌型、虹膜等,目前应用最广泛的要数指纹识别技术,因为人类指纹的唯一性,使得了指纹识别技术成为了门禁系统的绝对安全保障。
针对以上的传统门禁安全控制技术存在的缺点,我们可以利用指纹识别技术和WIFI通信技术的结合更见完美地解决门禁系统的很多问题。指纹技术与WiFi技术的发展现况如下:
目前为止,指纹识别技术和WiFi通信技术已经得到了长足的发展。由于其相对于传统技术的优越性,多技术的融合在未来必然有个璀璨的发展前景,它的发展主要体现各个方面。
在指纹识别技术方面,有很多对其进行的研究:随着图像处理技术研究的发展,各种相关的指纹识别的算法百家争鸣,例如方向性图过滤,频率域滤波,时域滤波等;另一方面,在当今数字信号处理器的出现与快速发展中,通用数字信号处理器芯片越来越多地应用于指纹图像处理中[13]。如基于DSP的指纹识别系统,对指纹识别的主要包括算法和应用2个方面进行研究。如基于 ARM9 的指纹采集和识别系统,采用三星公司ARM9核心的S3C2440A处理器组建了嵌入式硬件结构完成了该款新型指纹传感器FPC1011F在ARM9 系统的硬件和软件设计,并在 MATLAB 中将采集到的指纹数据进行了还原,证明采集性能优良[16]。也有基于Finchos IC-Bus Rev.A2总线结构、8BITS FMCU8KB嵌入式微控制器、FID116KMG指纹识别处理模块的专用指纹识别集成电路进行开发的防盗门,提供32可编程接口,SPIFLASH接口,SPI指纹传感器接口,光电传感器通讯接口,DMA数据命令控制通道,UART通讯调试接口,PWM音频输出接口,通过内嵌的微控制器对片上各功能单元与外部芯片的协调[4]。
在WiFi通信技术的使用方面,很多都是应用到了Android设备上。在Android系统移植到其他嵌入式设备中,Android系统中wi-Fi的底层驱动移植是其中一个关键部分,通过对底层Wi-Fi接口以及对wi-Fi驱动移植的研究,将更有效地实现Android系统在其他嵌入式设备上的移植及开发相应wi-Fi网络的应用程序[11]。WiFi通信技术具有独特的优势:(1)无线电波的覆盖范围广,比蓝牙,nrf等应用到移动设备上的通信技术传播距离都远;(2)WiFi的传输速度很快,最高可以达到速度54Mbps,符合个人和社会信息化的需求[12];(3)健康并且安全;(4)无须布线,可以不用受到地理条件的限制,因此非常适合移动办公人群的需要;(5)WiFi应用现在已经非常普遍。但门禁系统对于WiFi技术的应用还不成熟,有很大的发展空间。
本文的结构
本文以门锁控制系统为前提,研究基于Wifi通信技术和指纹识别技术的智能门禁系统设计。全文共分为七章,各章的主要内容介绍如下:
第一章扼要地介绍了引言和课题的选题背景与意义及门禁系统控制技术的研究状况;
第二章涉及了指纹识别技术和WIFI通信技术的概述以及整个系统的设计蓝图等;
第三章为全文的最重要的部分,即系统硬件设计,该部分先对整个系统原理进行详细地论述,设计系统硬件框图,然后设计主控电路,EPM10A指纹识别模块原理及使用,ESP8266Wifi模块原理及使用,以及电磁门锁电路等;
第四章为软件设计部分,该部分主要是实现单片机与EPM10A模块通信及控制程序设计,与ESP8266模块通信及控制程序设计,单片机主程序设计,手机app程序设计,系统软件流程图和软件的部分代码;
第五章介绍了软件和硬件,以及软硬件结合的整体调试过程还有许多我在调试期间遇到的问题,以及解决过程;
第六章总结本次毕业设计的研究工作,还有感悟。

第二章 系统总体方案设计

2.1 指纹识别技术和WiFi通信技术概述
每一个人类的指纹的纹路在断点、交叉点和图案上都是不一样的,呈现其唯一的特性且一辈子不会改变。这样,我们就能够把每一个人和他的指纹对应,再通过把他的指纹和预先保存的指纹数据进行对比,这样就可以验证出它的真实身份,这就是指纹识别技术。指纹识别主要根据人的指纹的纹路与细节特征等信息对操作或被操作者进行指纹鉴定,得益于现代电子集成制造技术和快速而可靠的算法研究,指纹识别技术已经开始走入我们的日常生活中,成为了目前生物识别技术中研究最深入,应用范围最广泛,目前最成功的技术。
WiFi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段。连接到无线局域网通常是有密码保护的;但也可是开放的,这样就允许任何在WLAN范围内的设备可以连接上。无线保真技术是无线网络通信技术很著名的品牌,由被世界各公司所承认的Wi-Fi联盟所持有。其创立的目的是为了改善基于IEEE 802.11通信标准的无线网路产品之间的互通性。大家把使用IEEE 802.11系列协议的局域网称为为无线保真技术。并且把无线保真技术等同于无线网际网路(Wi-Fi是WLAN的重要组成部分)。
伴随着WiFi通信技术以及指纹识别技术的快速发展,为解决一些安全问题和通信传输问题提供了很好的技术支持,本课题就是结合指纹识别技术和WiFi通信技术的优点将其应用于门禁系统中。
2.1.1 指纹识别技术的原理和特点
指纹是指的是人类手指的特征图案。据研究发现,每一个人的指纹在世界上都是独特的,换句话来说,在世界上绝对是不可能找到两枚一模一样的指纹的。每一个指纹由很多被研究者称为脊线和谷线构成, 这些脊线和谷线在每个的局部区域内表现出了很好的相似性。
指纹图像中主要有两方面重要特征:
(1)细节特征:即表征指纹唯一性的;
(2)全局特征:即用于指纹数据库分类的结构特征。
在指纹识别控制门锁的系统中,提前创建合法身份的指纹信息,并通过指纹釆集给保存下来。在用户有访问需要时,指纹模块采集用户的指纹信息,将指纹特征交给指纹处理芯片进行分析,校验与比对,来决定用户是否具有权限进行访问。如果用户有正确匹配的权限,当验证成功了以后,芯片控制驱动门控继电器来实现对锁的控制;如果用户没有正确的权限,那么就证明验证失败。
利用指纹的特点我们可以利用这种独特的生物识别技术,进行开发,运用到各行各业的安全保护使用当中去。
2.1.2 WiFi通信技术的原理及特点
无线网络是能够将智能移动设备(智能手机,平板),计算机等设备通过无线方式互相连接的一门技术。Wi-Fi技术是一个无线网络通信技术中最突出,最广泛应用的品牌,由Wi-Fi联盟(全称为Wi-Fi Alliance)所持有。该技术创立的目的是为了改善基于IEEE802.11标准通信协议的无线网络产品之间的互通性。业内人士把使用IEEE 802.11系列协议的局域网称作为无线保真,把无线保真技术也等同于无线网际网路。
无线网络技术在无线局域网的含义指的是“无线相容性的匹配认证”,实质上是一种商业化认证,同时它也是一种独特的无线联网技术,以前用户是通过网线连接来电脑,而无线保真则是通过无线电波来实现相互连接;无线路由器就是个例子,在这个无线路由器的信号覆盖的范围内都可以通过无线保真的方式进行连接,如果无线路由器或者手机,电脑等设备又连接了一条ADSL线路或者别的上网线路,则称其释放出的信号为热点。
2.2 基于wifi的智能指纹密码锁设计的整体方案
本课题结合指纹识别技术,以及WiFi通信技术,可以通过指纹录入后,识别进行锁具的控制,也可以通过手机APP,再通过WiFi模块,进行锁具的控制基本结构图如图2.2所示。
在这里插入图片描述

第三章 系统硬件设计

3.1 基本工作原理和框图
3.1.1 系统工作原理
如今将物联网技术和各类技术结合已成为大趋势,各行各业都在抓紧推动该技术的发展,将该技术用于社会设施的建设,用于老百姓的生活中,所以将指纹识别技术和WiFi通信技术相结合完成的基于WIFI的智能指纹密码锁设计具有很重要的意义和良好的市场前景。
经过反复地思考,和认真地学习,确定了本系统的设计方案。该方案主要包括了WiFi通信模块、电磁门锁模块、手机app、指纹识别模块和主控板模块,它可以利用指纹识别模块对门锁直接解锁,也可以利用手机app,通过WiFi模块,对门锁进行开关操作,实现了生物识别技术与物联网技术的结合,完成一个实用性高,成本低,安全性较高的产品。
3.1.2 系统原理框图
系统原理图如图3.1所示
在这里插入图片描述
整个系统由WiFi通信模块、电磁门锁模块、手机app、指纹识别模块和主控板模块组成。主控芯片的选择及外围电路设计、WiFi通信模块的选择及其电路设计、指纹模块的选择及其电路设计、锁具的选择及其电路设计。本章主要分析和设计了网关、路由器设备电路及区域协调电路,上位机部分、Zigbee组网及GPRS组网实现将在第四章进行分析。以下为网关、路由器设备电路设计及区域协调电路设计的具体过程。
3.2 主控芯片的选择及电路设计
嵌入式处理器种类很多,大致分为以下四类:嵌入式微处理器(如arm等芯片)、嵌入式微控制器、嵌入式DSP处理器(即数字图像处理器)、嵌入式片上系统。常见的处理器主要有以下几类:
1.单片机自20世纪70年代问世以来,应用很广,发展很快。单片机的优点众多:体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,开发较为容易等,因此其应用领域之广,几乎到了无孔不入的地步。
2.ARM系列微处理器凭借其高性能、低功耗、丰富的可选芯片、广泛的第三方支持等优势,占据了嵌入式处理器市场75%的份额。除了通用编译器GCC,ARM有自己的高效编译、调试环境MDK、Keil等。
3.DSP芯片能实现数字信号的处理。它的处理速度很快,接口和集成十分方便。同时,它的稳定性好,集成度高,可编程性强。但是,它的成本很高,功耗比较大,适用于信号处理、图像处理、通讯、医疗等场所。
基于WIFI的智能指纹密码锁的主控芯片要完成数据的接收和控制锁具等功能,从成本、功耗、操作和功能等角度思考,单片机即可完成设计,因此主控芯片会首先选择STC89C52单片机。
但由于我们要同时使用指纹识别模块和WiFi模块,所以STC89C52的一个串口是不够用的。我们可以采取两种方法解决这个问题:
1.使用STC89C52芯片,但需要在电路上附加电子开关锁,使一个串口能够切换,当成两个串口使用,但存在两个模块会不能同时工作的问题,而且来回切换串口会影响单片机代码的处理效率。
2.使用STC12C5A60S2芯片,此芯片有两个串口,可以实现分别与指纹模块及WiFi模块通信,此芯片处理速度比STC89C52快数倍,且价格不高。
最终,我觉得选取使用STC12C5A60S2芯片作为本次基于wifi的智能指纹密码锁设计的主控芯片。
STC12C5A60S2系列单片机是著名厂商宏晶科技生产的单时钟/机器周期(1T)的单片机,是一款全新的高速,低功耗,超强抗干扰的8051单片机,指令代码完全兼容传统使用的8051单片机,但速度却比之前快八到十二倍。内部更是集成了MAX810专用复位电路,两路PWM,8路高速10位A/D转换(250K/S),而且产品更多的被应用于电机控制和强干扰场合开发和使用中。
1.使用了增强型8051CPU,1T,单时钟/机器周期理论上来讲快了12倍,指令代码完全兼容传统8051,提供了很强的复用性;
2.工作电压是5.5V-3.3V电压;
3.工作频率范围是0-35MHz,我们经常使用的11.0592MHz是没有问题的;
4.提供的用户应用程序空间为8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节,空间很大;
5.片上集成了1280字节RAM内存空间;
6.通用I/O口(36/40/44个),经过复位以后为:准双向口/弱上拉(普通8051传统I/O口),I/O口可以设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口能够承受20mA电流,但整个芯片最大电流最大不要超过120ma,否则容易被烧毁;
7. ISP(在系统可编程)/IAP(在应用可编程),不用专用编程器,不用专用仿真器,可以通过串口1的I/O口引脚直接下载程序,很快就可以完成;
8.有EEPROM功能,但STC12C5A62S2内部还是没有EEPROM的;
9.具有内部集成MAX810专门使用的复位电路,在外部晶体频率12M以下时,复位脚可直接连接一个1K电阻并连接到地;
10.外部掉电检测电路:在单片机的P4.6口上设置了一个低压门槛比较器;
11.时钟源:在外部具有高精度晶体/时钟,在内部具有R/C振荡器;
12.单片机具有四个16位的定时器,两个与传统8051通用一样的定时器/计数器,16位定时器T0和T1,却缺少了定时器2,但具有独立波特率发生器;
13.具有两个时钟输出口,可由T0的溢出在P3.4口输出时钟,也可由T1的溢出在P3.5口输出时钟;
14.具有七路的外部中断I/O口;
15. PWM(2路)/PCA(可编程计数器阵列,2路):可以当作2路D/A使用,也可用来当作2个定时器,也可用来当作2个外部中断;
16.A/D转换,10位精度ADC,一共有八路;
17. STC12C5A60S2系列有双串口,也是这款芯片最突出的特点,串口2的I/O口为RxD2/P1.2,TxD2/P1.3。
如图3.2就是本次设计要使用的STC12C5A60S2单片机管脚图。
在这里插入图片描述

图3.2 STC12C5A60S2管脚图
3.2.1 电源电路设计
众所周知,电源是各种电子设备重要的组成部分,它相当于人体的血液一般重要,其性能的好坏直接影响了产品能否安全可靠地,安全地工作。目前产品中通常使用的直流稳压电源主要有线性电源和开关电源,其中开关电源内部关键元器件需要在高频开关状态下才能正常地工作,但是开关电源消耗的能量却很低低,开关电源的效率可达80%以上,效率很高,效率是普通线性稳压电源的两倍,现在被广泛使用。
STC12C5A60S2和WiFi模块以及指纹模块都有各自所需的工作电源电压,STC12C5A60S2单片机和指纹模块需要5V的电源供电,WiFi模块需要3.3V的电源供电。3.3V电源由5V开关电源经过RC滤波和一个线性稳压器AMS1117变换产生。如图3.3所示。本此设计的电路中的线性稳压器使用AMS1117,VCC1代表5V电压,VCC2代表3.3V电压。
在这里插入图片描述

图3.3 电源电路原理图
3.2.2 振荡电路设计
任何一个芯片都需要一个起振电路,它相当于整个系统的心脏,作用是给整个电路提供时序,如果没有这样的一个电路,芯片是根本无法工作的,STC12C5A60S2单片机的主控电路中,我选用的是使用11.0592MHZ晶振,图为系统正常工作的振荡电路。
图
3.4系统振荡电路原理图
3.2.3 显示部分电路设计
在本次设计中我选用的是LCD1602来作为显示模块,通过LCD1602来提示和显示我们设计的产品的功能,操作以及工作状态。1602液晶也被大家叫作1602字符型液晶,它是专门来显示字母、数字、符号的显示模块,它其实主要由许多个5X7或者5X11等点阵字符位组成,和我们用过的点阵屏原理相同,每一个点阵字符位能够用来显示一个字符,而且每位,每行都有一个点距的间隔距离。
1602采用通用的16脚接口:
第1脚是GND,需要连接电源地;
第2脚是VCC,需要连接5V电源正极;
第3脚是V0,专门用来对液晶显示器对比度进行调整,可以连接一个滑动变阻器来进行调节;
第4脚是RS,作用是寄存器的选择,高电平1和低电平0分别是选择数据寄存器和时选择指令寄存器;
第5脚是RW,作为读写信号线,高电平和低电平0时,分别是进行读操作和进行写操作;
第6脚是E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令;
第7~14脚是D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源;
15脚背光正极,16脚背光负极。
1602液晶模块是带有字库的,内部的字符发生存储器存储了一百六十个各不相同的点阵字符图形,其中包含的字符有日文假名、大写的和小写的英文字母、显示常用的符号、和阿拉伯数字等,而且每一个字符都有一个固定的代码相对应。
如下图3.5所示,为主控电路上连接LCD1602的电路的原理图。
在这里插入图片描述

图3.5 显示电路原理图
3.2.4 继电器电路设计
本次设计目的是控制锁具,我们可以利用单片机控制继电器的通断,再利用继电器的通断来控制锁具。通过单片机I/O口输出高低电平控制继电器的输入端,采用ULN2003A型号的达林顿管驱动芯片加大输入电流,使用内部定时器中断进行精准计时,实现继电器通断时间分别为1秒、2秒的精准控制,并实现通过继电器进行的对门锁的控制.
由于单片机输出的电流不足以使电磁继电器的线圈产生足够大的磁力,无法使衔铁与触点簧片吸合,就不能使继电器正常工作。为了使继电器正常工作,需要加入放大电流的驱动电路。使用ULN2003A达林顿管驱动芯片进行驱动,此方案简单易用,只需一个芯片便可驱动7路继电器。
如下图为继电器控制部分电路的原理图。
在这里插入图片描述

图3.6 继电器电路原理图
3.2.5 按键电路设计
按键电路在设计电路时是经常要考虑的,它主要起到通断电、复位、模式选择、输入等作用,在本课题中按键主要是用来实现对指纹模块的操控,实现录入指纹,寻找、对比指纹,删除指纹的功能。我们打算加入一个矩阵键盘,但独立键盘也是可以的。在矩阵键盘中,每条垂直线以及水平线在交叉处并不会直接相连通,为了节省线路,要通过一个按键来进行连接。
矩阵式结构的键盘比独立键盘要麻烦一些,单片机识别起来工作量也更大一些,列线在连接正电源中间要加电阻,把行线的输出端连接的单片机的I/O口上,同时也把列线的输入端连接到单片机的I/O口上。如果按键没按下,输入端全部置高电平。如果按键按下,输入线就被拉低成低电平,通过这种方式,我们就能识别出是否有按键被按下了。
在这里插入图片描述

图3.7 按键电路原理图
3.3 功能模块设计
要想实现锁具的指纹密码控制以及无线控制,我们必须要选取相应的模块来进行和单片机的通信,控制和操作。
3.3.1无线传输模块的选取及设计
信息化技术的发展离不开通信技术的支持,目前常见的无线通信技术有红外技术、ZigBee技术、wifi技术等。
红外技术在日常生活中被广泛应用。电视、空调的遥控都是通过红外技术来完成。它可以在具备红外接口的设备间进行信息交流,由于需要对接才能传输信息,因此安全性较强。但是,它的通信距离比较短,且会受到障碍物的影响,因此功能单一,扩展性差。
ZigBee技术是一种双向无线通信技术,它具有距离短、复杂度低、功耗低、成本低等有点。时延短和网络容量大也是ZigBee技术的一大特色。所以,在开发智能家居时,由于安全性极高,广泛在用ZigBee技术。
wifi技术在智能手机领域应用十分广泛。IEEE802.11b(wifi)技术标准是无线局域网的国际标准,最初以适用于大型办公室或业务园区为设计目标,具有安全性好、数据传输速率高等优点。
作为嵌入式开发的初学者,wifi技术的研发门槛相对较低。从可扩展性。开发成本、入门门槛等方面考虑,传输器件采用ESP8266串口转wifi模块。
该模块共有8个引脚,PCB封装如图2-5所示。使用方法如表2-6所示。本课题在次只涉及模块的使用,并未深入研究它的通信机制。(注意:该模块的的供电电压为3.3V,不能接5V)
在这里插入图片描述

      图3.8 

ESP8266串口转wifi模块有三种工作模式:
1.STA
2.AP
3.AP+STA
默认为第三种工作模式。接线成功后,打开串口调试工具进行模块调试,需要进行如下步骤:
1、重启模块,指令:AT+RST
2、设置模块,指令:AT+CWMODE=3
3、开启多路连接,指令:AT+CIPMUX=1
4、创建服务器,指令:AT+CIPSERVER=1,8080
5、设置超时时间,指令:AT+CIPSTO=600
根据图3.8,利用开发板进行无线模块的连接。将VCC引脚和CH_PD引脚接在开发板的3.3V电源供电位置,将GND接地,ESP8266串口转wifi模块的URXD引脚接在单片机的RXD引脚(P3_0),URXD引脚接在单片机的TXD引脚(P3_1),打开串口调试工具后,即可实现与无线模块的通信。
接线完成后,即可使用串口调试工具,发送调试指令,进行无线模块的调试与配置。调试过程中,每发送一条指令,无线模块都会反馈一条信息,通过串口调试工具,反馈的信息会显示在电脑屏幕上,从而看清无线模块工作的全部过程。如果无线模块可以识别并执行用户发来的指令,则返回“OK”;如果不能识别或执行,则返回“ERROR”。
调试结果如图3.10所示。
在这里插入图片描述

图3.10 wifi模块调试
在单片机主控电路上,预留出了指纹模块的串口通信的接口。
在这里插入图片描述

图3.11 WiFi模块接口原理图
3.3.2 指纹模块的选取及设计
本次设计需要使用指纹模块来完成指纹的采集和指纹的识别等功能,但市面上有很多种可供开发使用的指纹模块,主要有以下三类:
1.光学指纹模块:指纹模块发射出光投射到按在指纹模块的手指上,再利用光的折射和反射方式,收取指纹的信息,此类模块适应性是很强的,抗干扰性也很强,但容易残留下指纹,易被人获取到指纹,但价格低,只要注意按完了及时把指纹留下的痕迹擦掉就好了。
2.半导体指纹模块:有电容式或是电感式两种类别,但是原理和使用效果的是相同的,在按下手指时,由于指纹上有突起的纹路,所以会产生不一样的电容或者电感数值,通过这个方法来获取指纹信息。整体来说比,光电性能要好,还不会留下指纹痕迹,但价格要贵的多。
3.射频指纹模块:最有技术含量的指纹模块,通过生物射频指纹识别技术,如果不是人体或者生物体,就不会识别,防止了很多用胶类制作的造假指纹,但价格极其昂贵。
综合性价比等方面的考虑,我选择光学指纹模块FPM10A来完成本次毕业设计。
FPM10A光学指纹模块的产品参数:
供电电压为直流3.6~6.0V
供电电流:
工作电流为100mA
峰值电流为150mA
指纹图像录入时间小于0.5 秒
窗口面积大小为1418 mm
匹配方式:
比对方式(1比1)
搜索方式(1比N)
特征文件大小为256 字节
模板文件大小为512 字节
存储容量空间大小为120/375/880 枚
安全等级默认为第五级(从低到高:1、2、3、4、5)
认假率(FAR)小于0.001% (当安全等级为3级时)
拒真率(FRR)小于0.1%(安全等级为3级时)
搜索时间小于1.0 秒 (1比1000时,均值)
上位机接口:串口通信(TTL)
串口通讯波特率(UART): (9600
N)bps其中N=1~12 (默认值 N=6,即 57600bps)
工作环境:
温度范围为-20℃-+40℃
相对湿度范围为40%RH-85%RH
储存环境:
温度范围为-40℃-+85℃
相对湿度小于85%H
此模块支持串口通信,可以与单片机的串口相连接,接口如下:

引脚号 名称 类型 功能描述
1 VCC in 电源正输入端。(线色:红)
2 GND GND 信号地。内部与电源地连接。(线色:黑)
3 TXD out 串行数据输出。TTL 逻辑电平。(线色:绿)
4 RXD in 串行数据输入。TTL 逻辑电平。(线色:白)

模块采用半双工异步串行通讯。本指纹识别模块的默认波特率为57600bps,当然,是可调,可以设置成从9600到115200bps的范围内的波特率。传送的数据的帧格式是十位,第一位低电平起始位,八位数据和一位停止位,没有校验位。

指纹模块通过串口与单片机的串口进行连接,电源方面,可以连接单片机的5V电源来供电,模块的串口发送端连接单片机的串口数据接收端RXD,模块的串口的接收端连接单片机的串口数据发送端TXD。
在单片机主控电路上,预留出了指纹模块的串口通信的接口。
在这里插入图片描述

3.12指纹模块接口原理图
同时,模块具有上电延时模块上电后,约需500mS时间进行初始化工作。在此期间,模块不能响应上位机命令。
模块的具体使用在下文软件设计部分有详细介绍。

第四章 软件系统设计

4.1WiFi模块的程序设计
在WiFi传输模块中,用软件的方式配置好ESP8266模块,初始化串口和数据的接收。
4.1.1 ESP8266模块配置
在硬件模块设计中,我们已经通过接线与调试实现了ESP8266模块的使用。在在产品的设计中,我们是不能通过让用户自己配置的方式实现产品的使用的。所以,需要在代码中实现对ESP8266串口转wifi模块的使用前的初始化的配置。
根据我们已经成功的调试的步骤,只需要在软件中对ESP8266模块进行一些简单的配置,即可实现模块通信的功能。如流程图4.1,可以通过向单片机的SBUF寄存器发送数据的方式,当单片机的SBUF寄存器接收到数据后,被ESP8266串口转wifi模块读取,如果指令完全正确,即可完成配置。
我们需要实现的配置有:模块重启设置、模块类型设置、多路连接设置、创建服务器设置以及设置超时等功能。从而实现软件方法配置该WiFi模块。
此程序设计流程框图如图4.1所示。

在这里插入图片描述

图4.1 WiFi模块配置流程图
实现代码如下:
unsigned char code AT_RST[8] = {0x41, 0x54, 0x2B, 0x52, 0x53, 0x54, 0x0D, 0x0A}; //AT+RST 复位
unsigned char code AT_CWMODE2[13] = {0x41, 0x54, 0x2B, 0x43, 0x57, 0x4D, 0x4F, 0x44, 0x45, 0x3D, 0x32, 0x0D, 0x0A}; //AT+CWMODE=2 设为AP模式
unsigned char code AT_CIPMUX1[13] = {0x41, 0x54, 0x2B, 0x43, 0x49, 0x50, 0x4D, 0x55, 0x58, 0x3D, 0x31, 0x0D, 0x0A}; //AT+CIPMUX=1 开启多连接
unsigned char code AT_CIPSERVER1[21]={0x41, 0x54, 0x2B, 0x43, 0x49, 0x50, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x3D, 0x31, 0x2C, 0x38, 0x30, 0x38, 0x30,0x0D,0x0A}; //创建服务器,端口号:8080
Unsigned char code AT_CIPSTO[15] = {0x41, 0x54, 0x2B, 0x43, 0x49, 0x50, 0x53, 0x54, 0x4F, 0x3D, 0x36, 0x30, 0x30, 0x0D, 0x0A}; //AT+CIPSTO=600 设置服务器超时600s

void My_AT_Init()
{
int i;

for(i=0; i<8; i++) //AT+RST复位
{
SBUF = AT_RST[i];
delay_ms(5);
}
delay_ms(1000);

for(i=0; i<13; i++) //模式设置
{
SBUF = AT_CWMODE2[i];
delay_ms(5);
}
delay_ms(1000);

for(i=0; i<13; i++) //AT+CIPMUX=1 开启多链接
{
SBUF = AT_CIPMUX1[i];
delay_ms(5);
}
delay_ms(1000);

for(i=0; i<21; i++) //创建服务器,端口号:8080
{
SBUF = AT_CIPSERVER1[i];
delay_ms(5);
}
delay_ms(1000);

for(i=0; i<15; i++) //设置服务器超时时间600s
{
SBUF = AT_CIPSTO[i];
delay_ms(5);
}
delay_ms(3000);
}
4.1.2数据通信
在通信方式的选择上,为了能够控制成本,可以利用串行通信传输线少的优点,因此我们选择串行通信的方式。
STC12C5A60S2单片机,有两个串口,且可以独立工作,通信。在这里我们使用串口2,即使用RxD2(P1.2),TxD2(P1.3)。
串口在工作之前,要对其进行初始化,需要注意的是,要设置好波特率,否则不同波特率下的数据是无法识别的,还要注意一些中断的控制。具体步骤如下:
1、设置使能波特率倍速位S2SMOD;
2、设置8位数据,可变波特率设置;
3、设置独立波特率发生器的时钟为Fosc,即1T(传统51单片机是12T)
4、设定模块的独立波特率发生器的重装值为57600bps,即设置波特率为57600bps;
同时串行口2在中断方式工作时,要进行中断设置可以通过EA = 1;IE2 = 0x01;来设置,串口2初始化代码如下。
void My_UART_Init( )
{
AUXR |= 0x08; //设置使能波特率倍速位S2SMOD
S2CON = 0x50; //设置8位数据,可变波特率设置
AUXR |= 0x04; //设置独立波特率发生器的时钟为Fosc,即1T
BRT = 0xF4; //设定独立波特率发生器重装值,即设置波特率为57600bps
AUXR |= 0x10; //启动独立波特率发生器
}
同时单片机串口2接收数据函数如下

在这里插入图片描述

图4.2 串口2接收数据函数
4.1.2 数据解析
串口在接收到数据时,对数据进行解析,确定是否是手机客户端发来的数据。另外,对数据进行功能的解析,判断用户需要实现的功能。流程图如图4.3。

在这里插入图片描述

图 4.3 数据解析流程图

主要代码如下:
void MY_UART_Two_ISR() interrupt 8
{
unsigned int b = 0;
if (S2CON & S2RI)
{
S2CON &= ~S2RI; //将串口中断标志位置0
Receive_Data = S2BUF;

	b = 5;while(a--){P1 ^= (1 << 0);}
}if(len == 0)
{if(Receive_Data == '+')    //如果第一位是‘+’{Receive_BUF[0] = Receive_Data;    //将接收数据放入接收的数组中len = 1;}
}
else
{Receive_BUF[len] = Receive_Data;len++;if(('+' == Receive_BUF[0]) && ('1' == Receive_BUF[7]) && ('1' == Receive_BUF[9]))    //判断接收数据是否是‘1’{	uart_flag = 1;    //将标志位置‘1’len = 0;    //接收长度清零memset(Receive_BUF,0,sizeof(Receive_BUF));    //清空接收到的数据}else if(('+' == Receive_BUF[0]) && ('1' == Receive_BUF[7]) && ('2' == Receive_BUF[9]))    //判断接收到的数据是否为需要的{uart_flag = 2;    //将标志为置‘2’len = 0; memset(Receive_BUF,0,sizeof(Receive_BUF));}}if(S2CON & S2TI)
{S2CON &= ~S2TI;    //将串口中断标志位置0,表示服务完成b = 5;
}

}
4.2 手机APP程序设计
在手机APP端,设计良好的人机界面,使用户可以更加简单地控制门锁的开关,并用软件的方式实现与ESP8266模块的连接,以及数据的发送功能。
4.2.1 APP的界面设计
每一款产品的成功,其实归根到底都是用户体验的成功。而获得良好的用户体验的前提,就是一定要有个使用户喜爱的人机交互界面。Windows系统能迅速占领市场,其实靠的也是方便快捷的界面。
在Eclipse工具中,安装ADT插件,再导入所需要的packet包,调用包中的函数接口,即可编写安卓APP。编写安卓APP的整体代码框架如图4.4,而布局则在res目录下的layout文件夹中,通过设计与编写layout.xml文件中的代码,利用需要的图片等资源即可完成界面的布局设计。图片资源如图4.5所示位置,

在这里插入图片描述

图4.4 APP代码框架图

在这里插入图片描述

图 4.5 所需资源路径图
在具体设计中,有一个textview控件,三个button控件,两个edittext控件,整体效果如图4.6所示。每个控件的设计点都至少包含控件名、长度、宽度、显示的内容、数据类型等等参数。虽然每个控件的设置方式有些冗余重复,但每一个都需要深思熟虑,通过仔细设计与不断地修改,才能完成。简单代码如图4.7所示。

在这里插入图片描述

     图 4.6 整体效果图                          图 4.7 简单代码图

3.1.2 与ESP8266连接
该模块要实现手机APP端与ESP8266模块的连接,并获得通信的渠道,可分为以下四个步骤实现,流程图如 图3-5。
第一步:建立连接的按钮被点击后,触发按钮监听,获取在IP地址和端口号处输入的信息;
第二步:判断输入的IP地址和端口号的长度和类型是否符合规范。符合:将输入的字符串型端口号转换成数字型,进入第三步;不符合:则提示输入错误;
第三步:根据IP地址和端口号建立socket连接;同时,按钮的颜色由绿色变为红色,按钮提示由“建立连接”变成“断开连接”。
第四步:根据所建立的socket连接来获取I/O输入输出流。借此来发送和接收数据,实现通信的功能。

在这里插入图片描述

图 4.8 建立socket连接流程图
主要代码如下:
private Runnable myRunnable = new Runnable() {

public void run() {                  //实现run()方法String iptext = IPtext.getText().toString(); //获取输入的IP地址String porttext = PORTtext.getText().toString(); //获取输入的端口号if (iptext.length() <= 0 || porttext.length() <= 0) {  //判断是//否输入Message meg = myhandler1.obtainMessage();myhandler1.sendMessage(meg);        //提示:未输入IP地址}else {try {int port = Integer.parseInt(porttext);  //将字符串型端口 //号转换成整型// 连接服务器mySocketClient = new Socket(iptext, port); // 根据IP地址和//端口号建立socket连接

// 取得输入、输出流
myBufferedReaderClient = new BufferedReader( new InputStreamReader(
mySocketClient.getInputStream()));

myPrintWriterClient = new PrintWriter(
mySocketClient.getOutputStream(), true);

			Message meg = myhandler2.obtainMessage();myhandler2.sendMessage(meg);    //提示:连接成功} catch (Exception e) {showToast("连接失败:" + e.getMessage()); //提示:连接失败并//给出失败原因}}
}

};
}

4.3 指纹模块程序设计
4.3.1 初始化配置
指纹模块的初始化不需要,我们主动操作,只需在程序中在模块上电后,令其delay500ms,等待模块初始化工作完成。
4.3.2 数据通信
指纹模块和单片机通信依然选择串行通信的方式。
STC12C5A60S2单片机,有两个串口,刚才我们用掉了串口2,指纹模块就使用串口1,即使用RxD1(P3.0),TxD1(P3.1)。
串口1在工作之前,要对其进行初始化,需要注意的是,要设置好波特率为57600bps,否则不同波特率下的数据是无法识别的,还要注意一些中断的控制的设置。具体步骤如下:
1、设置使能波特率倍速位SMOD;
2、设置8位数据,可变波特率;
3、设置定时器1时钟为Fosc,即1T;(传统单片机为12T)
4、设定串口1的波特率发生器为定时器1;
5、设定定时器1的工作方式为8位自动重装方式,波特率为57600bps;
同时串行口1通信的指纹模块,不需要开中断函数,所以代码应加入ES = 0;,串口1初始化代码如下。
void UART_One()
{
PCON |= 0x80;
SCON = 0x50;
AUXR |= 0x40;
AUXR &= 0xFE;
TMOD &= 0x0F;
TMOD |= 0x20;
TL1 = 0xF4;
TH1 = 0xF4;
ET1 = 0;
TR1 = 1;
}
同时单片机通过串口1接收,发送数据函数程序如图所示

在这里插入图片描述

图4.9 单片机串口1接收,发送数据函数
由于指纹识别模块具有一个指令识别系统,我们需要将指令和数据,通过数据包的形式利用串口通信从单片机发送给FPM10A模块,就能使该模块执行特定操作和功能,一共有23条指令可供我们选择,下文主要介绍的我们需要利用的几个功能。
4.3.3 指纹录入功能软件设计
我们通过软件来实现FPM10A模块的指纹录入功能,软件设计录入两次指纹,且掉电保存指纹信息,首先我们需要查看芯片手册提供的该指令操作的数据包格式和信息。如下图所示。

在这里插入图片描述

图4.10 录指纹数据包格式
如图所示对FPM10A模块执行录入指纹的操作的数据包如上,但如何保存获取指纹,我们采用录入两次指纹的方式,分别获取两次指纹并生成特征码保存在指纹识别模块提供的buffer1和buffer2的存储空间里,再将buffer1和buffer2里面的数据合成特征模版,最后保存,这样我们录入的指纹精度较高。

在这里插入图片描述

图4.11 图像生成特征码数据包格式

在这里插入图片描述

图4.12 特征合成模板数据包格式
由此我们可以设计出本功能软件的流程图。

在这里插入图片描述

功能函数代码如下:
void My_FINGERPRINT_Cmd_Search_Finger()
{
unsigned char tmp;
do
{
do
{
FPMXX_Cmd_Get_Img(); //指纹模块获取指纹图像
FPMXX_Receive_Data(12); //接收指纹模块给上位机的反馈码
}
while (FPMXX_RECEICE_BUFFER[9]!=0); //判断是否收到了成功的按了指纹
FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像处理转换成特征码存放在Buffer1中
FPMXX_Receive_Data(12); //接收指纹模块给上位机的反馈码

FPMXX_Cmd_Send_Pack_Head(); //发送通信协议的包头给指纹模块

for(tmp=0;tmp<11;tmp++)
{
UART_Send_Byte(FP_Search[tmp]);
}

FPMXX_Receive_Data(16);
if(FPMXX_RECEICE_BUFFER[9]!=0x0)
{
lcd1602_dis_str(0,0," “);
lcd1602_dis_str(0,1,” “);
lcd1602_dis_str(0,0,“TRY AGAIN!”);
delay_s(1);
lcd1602_dis_str(0,0,” “);
lcd1602_dis_str(0,1,” ");
}
}
while (FPMXX_RECEICE_BUFFER[9]!=0x0);

}
4.3.4 指纹录入功能软件设计
我们通过软件来实现FPM10A模块的搜寻即识别指纹的功能,软件设计录入一次指纹,且掉电不保存指纹信息,将采集到的指纹和已存指纹进行对比,判断,并向单片机发送对比后的结果,首先我们需要查看芯片手册提供的该指令操作的数据包格式和信息。如下图所示。

在这里插入图片描述

图4.14 特征合成模板数据包格式
功能软件设计流程图如下:

在这里插入图片描述

功能函数代码如下:
void My_FINGERPRINT_Cmd_Search_Finger()
{
unsigned char cmp;
do
{
do
{
FPMXX_Cmd_Get_Img(); //指纹模块获取指纹图像
FPMXX_Receive_Data(12); //单片机接收指纹模块发送的反馈码
}
while (FPMXX_RECEICE_BUFFER[9]!=0x0 ); //判断指纹模块是否成功获取到了指纹

FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在Buffer2中
FPMXX_Receive_Data(12); //单片机接收指纹模块发送的反馈码
FPMXX_Cmd_Send_Pack_Head(); //向指纹模块发送通信协议的包头

for(cmp=0;cmp<11;cmp++)
{
UART_Send_Byte(FP_Search[cmp]);
}

FPMXX_Receive_Data(16);
if(FPMXX_RECEICE_BUFFER[9]!=0x0)
{
lcd1602_dis_str(0,0," “);
lcd1602_dis_str(0,1,” “);
lcd1602_dis_str(0,0,“TRY AGAIN!”);
delay_s(1);
lcd1602_dis_str(0,0,” “);
lcd1602_dis_str(0,1,” ");
}
}
while (FPMXX_RECEICE_BUFFER[9]!=0x0);

}
4.3.4 指纹删除功能软件设计
我们通过软件来实现FPM10A模块的删除已保存指纹的功能,删除所有指纹,并向单片机发送结果,首先我们需要查看芯片手册提供的该指令操作的数据包格式和信息。如下图所示。

在这里插入图片描述

删除指纹功能函数代码如下:
void My_FINGERPRINT_Delete_All_Model(void)
{
unsigned char cmp = 0;

for(cmp=0;cmp<6;cmp++) //向指纹模块发送包头UART_Send_Byte(FPMXX_Pack_Head[i]);   for(cmp=0;cmp<6;cmp++) //命令指纹模块重新合并指纹模版UART_Send_Byte(FP_Delet_All_Model[i]);   

}
4.4 系统整体软件设计
在将主要两大模块代码软件部分解决之后,我们需要对整体代码进行编写和设计。
系统整个流程图如图4.17所示。

在这里插入图片描述

第五章 调试过程

系统调试过程总共分为三部分进行:硬件本分调试、软件部分调试、软硬件联合调试。在硬件调试过程中,使用的设备包括:直流电压源、万用表、电烙铁等,经过调试使得STC12C5A60S2单片机主控电路、串口通信,继电器,LCD1602可以正常工作。软件调试则主要使WiFi模块ESP8266,指纹识别模块FPM10A可以正常工作,软硬件将整体结合调试,通过这些调试工作保障本次设计的成功。
5.1 硬件调试
本次设计我们使用电路图设计专业软件Altium Designer 9来进行原理图和PCB的绘画和制作。AD9是一款使用广泛的用于电路板设计开发软件。AD9的功能非常强大,非常的好用,是初学者首选的电路板设计工具,在大学中也经常使用。AD9由两大部分任务需要完成,电路原理图设计和多层印刷电路板设计(即PCB设计)。
设计好电路板图之后,我们进行检查,检查无误后我们进行加工制作,可以发到加工厂制作,然后按照元器件清单购买我们需要的所有元器件,然后的就是焊接元器件,把元器件焊接到板子的对应位置,进行焊接的时候需要我们很耐心、很认真地进行,一定要掌握好电烙铁熟练的使用方法,从而避免虚焊,漏焊等硬件问题的出现。
在设计电路原理图和制作PCB电路板时,首先由于对各个芯片的封装认识无误,以防止实际元器件和电路板的焊接口不匹配。同时注意将电路板铺铜要接地,多打过孔,同时也要接地。
焊接完成后要利用万用表,进行虚焊检测,防止有因为虚焊而导致的电路不通。
检测完之后如有问题,就要重新焊接,在没有问题的情况下,进行通电检测,检测芯片引脚,以及各电路的电压电流是否正常。
5.2 软件调试
软件调试,我们主要是分别将Wifi模块和指纹识别模块进行功能调试,以及将它们与单片机的串口通信调通,以便能对他们操控,还有就是app和wifi模块通信的调试,使WiFi模块能够成功传递信息到单片机,以便后续调试工作的展开。
首先是WiFI模块的调试,我们将软件涉及部分的代码写好后,初始化WiFI模块,在初始化的过程中ESP8266模块上的蓝灯会闪烁,但蓝灯停止闪烁,不亮的时候,初始化过程应该已经结束,这时我们应该可以利用手机app,连接上WiFi模块,我们先连接模块的WiFi,的IP为192.168.4.1,端口号为8080,点击开始连接键,如成功连接,app上会有显示,如果失败也会有提示,如图所示。

图5.1 手机app连接wifi模块

在这里插入图片描述

图5.2 手机app成功连接wifi模块

在这里插入图片描述

接下来我们在单片机主程序加入对继电器的操作,但前提我们需要检测单片机单独对继电器操作是否有用,之后我们利用手机app的“开锁”键和“关锁”键,对单片机上的继电器进行控制,当我们按下“开锁”键,继电器常开的两个引脚闭合,并发出一声响声,当我们按下“关锁”键,继电器已经闭合的两个引脚断开,也会发出一声响声,在用万用表检测一下继电器控制的引脚,我们对WiFi模块的调试就暂时完成了。
之后,我们要软件调试指纹识别模块FPM10A,因为指纹识别模块的操作不需要串口中断服务函数,所以我们需要利用按键来进行操作,我们主要设置四个按键,第一个按键的功能是添加新指纹,第二个按键的功能是录入指纹解锁,第三个按键的功能是删除所有指纹,第四个按键的功能不大,即如果出现继电器开锁后没有复位关锁,手动关锁。我们可以由下图看到调试过程,键盘输入的功能,即操作情况都会在LCD1602上显示出来。

在这里插入图片描述

图5.3 指纹识别模块调试
就这样我们讲对指纹模块的操作的几个功能操作一边,如果成功将会引发对继电器相应的操作,同时LCD1602也会有相应的提示,在调试过程中也出现了很多问题,我利用了LCD1602的显示来作为代码的log显示,从而更有效率地对代码进行调试。

5.3 软硬件联合调试
在将各模块调试成功后,将多部分代码整合到一起后,来进行整体功能的调试,这时我们加上了电磁锁,利用继电器来控制,我们选用的是6V控制的电磁锁,利用四节1.5V的5号电池来供电。如果通电,则电磁锁将开锁,如果断电,则电磁锁将关锁。
在调试过程中也不是很顺利,出现了问题,就是如上文软件调试部分所示,对两个模块单独调试时,过程和结果都是正常的,且指纹识别模块和WiFi模块是单独使用串口1和串口2,但将将两个模块同时使用时就出现了系统不能工作的问题。
为了解决这个问题,我进行了分析。如果不能工作首先考虑的是硬件的问题,但两个模块都能单独工作,证明了硬件没有问题。那么下面我要排查是不是波特率的问题,于是我重新设置了两个模块的波特率,且让它们的波特率保持一致,以防止是因为波特率不同而会引发的问题。同时重新设置STC12C5A60S2单片机串口的波特率,测试后的结果还是一样,单独能工作,但一起就不能工作。
于是我意识到应该是串口配置或者是串口中断的问题,重新检查串口初始化代码和串口的函数,我发现因为我的疏忽,在串口2的使用时和串口1使用的寄存器有冲突,还有就是串口2的中断服务函数里面我没有及时把标志位置为0才引发了以上的问题。
经过修改和调试,系统就正常的工作了。
将app和WiFi模块正常连接后,按下开锁键,我们可以看到电磁锁开锁了,按下关锁键,电磁锁又关锁了。
在这里插入图片描述

图5.3 app控制开锁

在这里插入图片描述

图5.4 app控制关锁
随后我们对指纹识别模块进行操作,分别是录入指纹,识别指纹和删除指纹,由图所示按下A键执行录入指纹操作,按下B键执行识别指纹操作,按下C键执行删除指纹操作。

在这里插入图片描述

图5.5 指纹功能操作

第六章 总结

6.1 工作总结
本课题设计了一种基于WiFi的智能指纹密码锁,可以由手机APP和指纹识别实现对单片机的继电器,继而实现对电磁锁的控制。
本系统采用STC12C5A60S2单片机为主控芯片,使用AD 9 软件绘制原理图并完成PCB的封装和绘制;使用Java语言编写Android手机APP,APP具有连接单片机与发送数据的功能;连接与通信模块ESP8266串口转wifi模块,在单片机内完成对接收数据的解析;并由单片机控制继电器,继电器控制电磁锁的开关。又使用了指纹识别模块FPM10A,利用串口和单片机通信,实现了指纹添加,指纹查找,指纹删除的功能,从而控制电磁锁的开关。
6.2 感想与体会
通过了几个月的学习和设计,制作,本次毕业设计被我成功地做了出来了。感觉很开心,但回顾过程起来,感觉收获了真的很多。从单片机的原理图和PCB绘制,再到焊接板子,再到调试,每一个步骤,每一个问题,对于我来说,都是一份宝贵的收获。
学习是永无止境的,特别是对技术的学习,在这个人才为重的年代,特别使我们工科专业的学生,我们的技术水平就是我们日后发展的坚实基础,所以活到老学到老,保持这种态度和热情,才能使我们的事业和生活得到提高和保障。
本次毕业设计我利用的是指纹识别技术和WiFi通信技术,但除了WiFi通信技术外还有很多其他的通信方式,比如现在很常用的zigeebe,蓝牙和nrf通信,都是值得我在之后进行研究和尝试的。

致谢

本次基于WiFi的智能指纹密码锁的设计的工作离不开我的导师刘老师的帮助和指导,从刘大伟导师身上,我学习到了很多知识和能力,让我更有信心在毕业后从事的工作中一展所长,继续学习和进步。在这里我要向刘大伟老师致以深深的感谢。
我要感谢我的同学,在毕业设计中我们相互学习,互相帮助,帮助我解决了很多问题,所以向帮助过我的同学们也表示感谢。
我还要衷心的感谢我的父母,感谢他们在精神上,物质上给我的支持,一直给予我信心,培养我成长,谢谢你们。
最后,感谢评阅我的设计和参加答辩的各位老师们,谢谢你们。

这篇关于基于wifi的智能指纹密码锁设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/801941

相关文章

在线装修管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,装修队管理,用户管理,装修管理,基础数据管理,论坛管理 前台账户功能包括:系统首页,个人中心,公告信息,论坛,装修,装修队 开发系统:Windows 架构模式:B/S JDK版本:Java JDK1.8 开发工具:IDEA(推荐) 数据库版本: mysql5.7 数据库可视化工具: navicat 服务器:SpringBoot自带 ap

DDei在线设计器-API-DDeiSheet

DDeiSheet   DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。   DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。   一个DDeiFile实例至少包含一个DDeiSheet实例。   本篇最后提供的示例可以在DDei文档直接预览 属性 属性名说明数

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

比较学习难度:Adobe Illustrator、Photoshop和新兴在线设计平台

从入门设计开始,几乎没有人不知道 Adobe 公司两大设计软件:Adobe Illustrator和 Photoshop。虽然AI和PS很有名,有一定设计经验的设计师可以在早期探索和使用后大致了解AI和PS的区别,但似乎很少有人会系统地比较AI和PS。目前,设计软件功能多样,轻量级和网页设计软件已成为许多设计师的需求。对于初学者来说,一篇有针对性的AI和PS比较总结文章具有非常重要的指导意义。毕竟

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

基于 Java 实现的智能客服聊天工具模拟场景

服务端代码 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Serv

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

展厅设计主要的六大要素

1、从创意开始      展示设计的开始必须创意在先。根据整体的风格思路进行创意,首先要考虑的是主体的造型、大小高度位置以及它和周围展厅的关系。另外其他道具设计制作与运作方式也必须在创意中有明确的体现。      2、平面感      平面感是指对展示艺术设计平面图纸审美和功能两个方面理性的感觉认识。它是三维空间设计认识的基础,也是施工的重要依据。展示空间的设计应先在展场环境的平面

江西电信联合实在智能举办RPA数字员工培训班,培养“人工智能+”电信人才

近日,江西电信与实在智能合作的2024年数字员工开发应用培训班圆满闭幕。包括省公司及11个分公司的核心业务部门,超过40名学员积极报名参与此次培训,江西电信企业信息化部门总监徐建军出席活动并致辞,风控支撑室主任黄剑主持此次培训活动。 在培训会开幕仪式上,徐建军强调,科创是电信企业发展的核心动力,学习RPA技术是实现数字化转型的关键,他阐述了RPA在提高效率、降低成本和优化资源方面的价值,并鼓励学

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工