版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[32]。该模块的RX,TX引脚分别接单片机的TX,RX引脚,采用3.3V供电,模块的使能端CH_PD接高电平。图3-21ESP8266外形图图3-22ESP8266接线图3.9硬件平台的实现通过以上关键模块的设计,将PCB绘制完成。a.PCB上层图b.PCB下层图图3-23主控PCB图打好板后将各个元器件焊接好,完成系统硬件组装,实物图如下图所示:图3-24智能门禁系统实物图3.10本章小结本章对系统所使用的主要模块进行了介绍并将将硬件电路设计完成。给出了本次设计所使用的微控制器、指纹识别模块、射频识别模块的相关特性参数,并对系统电源与液晶显示电路进行了设计,对射频卡与读写器的通讯进行了介绍。完成了PCB板绘制,最终将各个模块焊接好,完成实物的制作。嵌入式开发,硬件是基础,只有在硬件设计的基础之上,我们才能进行下一步软件开发。
4.门禁系统软件设计4.1开发环境美国Keil软件公司被ARM公司收购后,推出了支持ARM微控制器的一款IDE(集成开发环境),即MDKARM版本,它专注于为ARM系列芯片编程提供一个集成的C/C++开发环境,并提供一系列工具来帮助我们编译、调试代码。MDK是一种强大且易于学习和使用的开发系统,它由MDK核心和软件包组成,可以根据应用程序的要求下载和安装。Keil现如今已经算是嵌入式工程师最常用的软件之一,与它易于上手和功能强大不无关系。图4-1MDK产品组件图由上图所示,MDKCore分成两大部分:MDKTools和SoftwarePacks。MDK-Core
:它基于µVision®IDE,在单个环境中结合了项目和运行时环境管理,以及带有源代码编辑和程序调试的构建工具。它为基于ArmCortex-M的设备提供领先的支持,包括Armv8-M架构(Cortex-M23/M33/M35P)。ARMC/C++Compiler
:专为生成最佳代码大小和最佳性能而设计,KeilMDK包括领先的ArmC/C++编译器。它包括汇编程序,链接程序和高度优化的运行时库,以确保最佳性能。Debug
:在单个环境中测试,验证和优化应用程序代码。MDK提供运行/停止调试,数据跟踪的使用,甚至是非介入式指令跟踪,以促进调试和系统优化。使用ULINK调试探针,可以使用流跟踪和功率测量等功能。
SoftwarePacks:MDK使用软件包来提供设备和板卡支持,CMSIS库,中间件,代码模板以及示例项目。可以随时将它们添加到MDK-Core中,从而支持独立于工具链的新设备和中间件更新。PackInstaller管理可用软件包的列表。4.2主程序模块设计此次设计除了以STM32F407VET6单片机核心板为控制器外,涉及到多个外设,故本次设计运用模块化的思想,将各个子任务分开完成之后,整体调试,便于程序的开发设计及维护,以及功能的添加或删除。本设计主要所涉及的模块有主程序模块、按键处理模块、射频模块、指纹模块、WIFI模块、语音模块等。下面对本次设计所中的上述模块进行说明。本次设计的智能门禁系统支持四种开门方式:刷指纹开门、刷IC卡开门、输入密码开门、远程开门。主程序包括延时函数的初始化、串口初始化、OLED端口初始化、矩阵键盘初始化、矩阵键盘中断初始化、指纹模块初始化、指纹模块中断初始化、RC522射频模块初始化、语音模块初始化、独立按键初始化、舵机PWM输出时钟初始化、看门狗初始化、机智云初始化等操作。将各部分模块分为若干个任务,每个任务都有4个参数:任务优先级、任务堆栈大小、开始任务的任务句柄以及任务函数。主程序把这些任务整合起来,从而控制门禁系统的开关。主程序的初始化由以下函数组成: delay_init(168); //初始化延时函数 uart_init(115200); //初始化串口 LED_Init(); //初始化LED端口 key_rows_Init(); //矩阵键盘初始化 key_Exit_Init(); //初始化矩阵键盘中断 as608_Init(); //指纹模块初始化 AS608_Exit_init(); //指纹模块中断初始化 MF522_Init(); //RFID-RC522初始化 voice_Init(); //语音播报初始化 key_init(); //独立按键初始化 tim2_init(); //舵机PWM输出时钟初始化 Close_The_Door(); //默认状态关门 IWDG_Config(IWDG_Prescaler_128,3125);//看门狗初始化 USART3_init(9600); //ESP8266接串口三初始化 tim7_init(); //ESP8266毫秒定时器初始化 key_init(); //ESP8266配网按键初始化 gizwitsInit(); //机智云初始化 w25qxx_init(); //FLASH初始化4.3按键模块设计通过key_to_char函数,将1~16中各个数转换成按键上各个字母charkey_to_char(intkey){ charkey_char; switch(key) { case1:key_char='1';break; case2:key_char='2';break; case3:key_char='3';break; case4:key_char='A';break; case5:key_char='4';break; case6:key_char='5';break; case7:key_char='6';break; case8:key_char='B';break; case9:key_char='7';break; case10:key_char='8';break; case11:key_char='9';break; case12:key_char='C';break; case13:key_char='*';break; case14:key_char='0';break; case15:key_char='#';break; case16:key_char='D';break; default:key_char='E';break;//代表error } returnkey_char;}4.4射频模块程序设计如下图所示,系统在通电启动后,对RFID-RC522初始化,然后RFID-RC522就能开始寻卡,若卡片进入模块有效识别范围内,单片机向其发出寻卡命令,之后便对卡片的信息进行读取。为避免多张卡同时进入模块有效识别范围内,读卡器开启防冲撞任务,选择其中一张卡片进行卡号验证,而没选中的卡片不进行处理,直至收到下次寻卡命令后再进行防冲撞处理。若卡号正确,则执行开门动作,并语音提示;若卡号错误,则提示卡号错误。。图4-8射频开门流程图首先通过ID_NUM_MAX设置卡的数量,将用户卡号存入数组ID[ID_NUM_MAX][8]中即可。具体函数如下:staticu8ID_Flag=0;//标志是否是第一次成功刷到卡#defineID_NUM_MAX2//最多可以存ID_NUM_MAX张卡,每张卡八位staticcharID[ID_NUM_MAX][8]={"d31fc33"};staticintID_NUM_Flag=1;//标志当前数组中有多少张卡//ID卡处理任务函数voidRFIDDEALING_task(void*pvParameters){ intcardID; charcardID_S[8]; staticportTickTypexLastWakeTime; inti; xLastWakeTime=xTaskGetTickCount(); while(1) { cardID=card_read_id(); printf("IDDDDD=%d\r\n",cardID); if((cardID!=-1)&&(ID_Flag==0))//第一次读卡成功 { sprintf(cardID_S,"%x",cardID); printf("cardID_S=%s\r\n",cardID_S); ID_Flag=1; for(i=0;i<ID_NUM_Flag;i++)//找数组中是否有这张卡 { if(strncmp(ID[i],cardID_S,8)==0)//找到了 { //卡号正确 if(Door_Now_State==0) { Door_Now_State=1; voice(1); printf("刷卡开门,Door_State=%d\r\n",Door_Now_State); Open_The_Door(); // printf("刷卡开门,Door_State=%d\r\n",Door_Now_State); } i=0; break; } } if(i>=ID_NUM_Flag) { //找不到字符串 voice(4); i=0; } }elseif(cardID==-1) { ID_Flag=0; } xEventGroupSetBits(EventGroupHandler,EVENTBIT_14);//将事件标志组第0位置1 // printf("RFIDDEALING_task\r\n"); userHandle(); gizwitsHandle((dataPoint_t*)¤tDataPoint); vTaskDelayUntil(&xLastWakeTime,500); }}4.5指纹模块程序设计如下图所示,系统在通电启动后,对AS-608初始化,然后AS-608就能开始工作,时刻判断指纹识别传感器的触摸感应状态,读取到指纹后将其与指纹库内的指纹进行一一对比,若指纹匹配成功,则执行开门操作,语音提示开门;若指纹匹配失败,则语音提示指纹错误。图4-9指纹识别开门流程图首先等待事件标志位,AS608DEALING_task为指纹处理任务函数,如果事件标志组存在的话等待事件标志组的第一位和第7位,第一位被置位的话执行刷指纹函数,第七位被置位的话,标志位第13位置1,EventGroupHandler函数为等待某个事件标志组的句柄;pdTRUE函数,第一位和第七位同时被置位,为等待成功,下面的程序才能继续运行,等待成功;pdFALSE,第一位或者第7位其中一个被置位,等待成功,运行下面的函数;portMAX_DELAY)函数,确定等待时间,使一直在等待。通过press_FR()函数去扫描指纹,将该函数的值赋给a,a等于1,说明匹配成功;a等于-1,说明匹配不成功;a等于0,说明刷指纹失败,可以再刷5次,直至刷成功。如果Door_Now_State的值0,即门处于关闭状态,且指纹匹配成功,则进行开门操作:将门当前状态函数Door_Now_State设为1,语音提示开门,舵机转动;如果门处于关闭状态,且指纹匹配失败,语音提示指纹错误。//指纹处理任务函数voidAS608DEALING_task(void*pvParameters){ EventBits_tEventValue; inta=0,i=0; while(1) { if(EventGroupHandler!=NULL) { //等待事件组中的相应事件位EventValue=xEventGroupWaitBits((EventGroupHandle_t )EventGroupHandler, (EventBits_t )EVENTBIT_1|EVENTBIT_7, (BaseType_t )pdTRUE, (BaseType_t )pdFALSE, (TickType_t )portMAX_DELAY); //printf("\r\n事件标志组的值:%d\r\n",EventValue); if((EventValue&0x02)==2) { a=press_FR();//a=1,匹配成功;a=-1,匹配不成功 while((a==0)&&(i<5))//如果刷指纹失败,再刷五次,直到刷成功 { a=press_FR(); i++; } i=0; if((Door_Now_State==0)&&(a==1)) { Door_Now_State=1; voice(1); printf("刷卡开门,Door_State=%d\r\n",Door_Now_State); Open_The_Door(); printf("刷卡开门,Door_State=%d\r\n",Door_Now_State); } elseif((Door_Now_State==0)&&(a==-1)) voice(7); } else { // printf("AS608DEALING_task\r\n");xEventGroupSetBits(EventGroupHandler,EVENTBIT_13);//将事件标志组第0位置1 } } else { vTaskDelay(10);//延时10ms,也就是10个时钟节拍 } }}4.6WIFI模块程序设计 等待事件标志位第四位、第五位和第十位,第四、五位分别用于开关门.如果第四位EventValue0x16被置1,执行开门动作,并将Door_Now_State置1;如果第五位EventValue0x32被置1,执行关门动作,并将Door_Now_State置0;第十位xEventGroupHandler被置1,将第17位EVENTBIT_17置1,执行看门狗任务函数。代码如下:voidWIFIDEALING_task(void*pvParameters){ EventBits_tEventValue; while(1) { if(EventGroupHandler!=NULL) { //等待事件组中的相应事件位 EventValue=xEventGroupWaitBits((EventGroupHandle_t )EventGroupHandler, (EventBits_t )EVENTBIT_5|EVENTBIT_4|EVENTBIT_10, (BaseType_t )pdTRUE, (BaseType_t )pdFALSE, (TickType_t )portMAX_DELAY); if((EventValue&0x16)==16) { printf("WIFIopen\r\n"); if(Door_Now_State==0) { printf("WIFI开门\r\n"); Door_Now_State=1; Open_The_Door(); voice(1); } }elseif((EventValue&0x32)==32) { printf("WIFIclose\r\n"); if(Door_Now_State==1) { printf("WIFI关门\r\n"); Door_Now_State=0; Close_The_Door(); } }else { // printf("WIFIDEALING_task\r\n"); xEventGroupSetBits(EventGroupHandler,EVENTBIT_17);//将事件标志组第0位置1 } } else { vTaskDelay(10);//延时10ms,也就是10个时钟节拍 } }}4.7本章小结本章对本次设计的软件开发进行了详细的介绍,给出了射频模块和指纹识别模块的程序设计流程框图,介绍了主程序、按键程序、射频识别程序、指纹识别程序、WIFI配置程序、语音模块程序的主要内容。5.系统联调与功能测试在完成了对智能门禁系统各个模块的设计后,将程序整理烧录进单片机,通电,并进行测试,主要进行显示功能、键盘输入功能、指纹和射频识别功能、及APP功能的测试。验证系统是否能正常工作。5.1搭建系统测试环境在测试之前,首先需要将测试环境搭建好,其中,测试环境由APP和门禁系统组成。图5-1为门禁系统,可见各个模块都成功上电。图5-2为APP界面。图5-1门禁系统成功上电图图5-2门禁系统APP5.2功能测试门禁系统主要功能为实现密码解锁、指纹解锁、APP解锁、刷卡解锁等四种方式解锁。下面进行一一测试:5.2.1密码解锁图5-3输入三位密码时使用键盘输入密码,此系统支持6位密码输入,每输入一位密码,液晶显示器上从左往右依次由“-”变为“*”,如图5-3所示,当输入三位密码时,显示屏上前三位都变为“*”,后三位依旧是“-”。图5-4输入6位密码如图5-4所示,当输入6位密码时,屏幕上显示6个“*”,按下“#”键,如图5-5所示,舵机逆时针转动90°,模拟开门。图5-5密码开门5.2.2指纹解锁首先将测试者的食指和拇指添加入系统中,分别对其测试,观察是否能成功解锁。图5-6拇指测试图5-7食指测试为了测试指纹识别的准确度,共进行10次测试,发现食指成功识别8次,拇指成功识别9次,可见,指纹识别具有较高的准确性,系统性能表现较为理想。
6.总结与展望6.1总结在此次设计中,采用了指纹识别技术和RFID技术,在对国内外门禁系统研究现状考察分析之后,借鉴了现在比较成熟的开发经验和理论,设计了基于stm32f4单片机的智能门禁系统,实现了通过指纹识别和RFID识别等开锁方式的多层认证门禁系统。本课题主要完成了以下工作:(1)设计了门禁系统中各部分硬件电路,电路采用STM32F407VET6作为主控芯片,使用相应的通信协议使整个系统连接运作起来。指纹识别功能通过AS608指纹识别模块实现,RFID射频识别功能采用MF-RC522射频模块实现,用户可以通过这两个关键模块完成指纹开锁与刷卡开锁。0.96寸OLED显示屏实现显示功能。ESP8266WIFI模块作为通信设备,将单片机与手机APP进行连接。通过JQ8900-16P语音模块实现语音播报功能。通过4*4矩阵薄膜键盘完成密码解锁、添加或删除指纹、更改解锁密码等功能。(2)对系统中所用到的关键模块进行了研究。分析了其功能特性、具体参数以及硬件结构。(3)本课题使用stm32f4单片机进行开发,使用舵机模拟开门动作,实现指纹解锁、APP解锁、密码解锁、刷卡解锁。6.2展望相比传统单一解锁形式的门禁系统,本次设计的多重认证形式的智能门禁系统的安全系数更高,但是与市场上售卖的门禁系统相比,实用性还有待提高,主要是集成度不太高,系统较为臃肿。对整个系统进行分析和总结,本系统在功能上本设计也有待改进,可以增设报警功能,比如室内可燃气体浓度高发出警报;也可对整个系统进行监控,记录具体开锁的用户与开锁的时间,便于查看。当今社会,门禁系统具有很好的市场前景,不仅仅局限于家庭使用,还在公司大厦、实验室等出入口扮演着重要角色,实现便捷、安全的管理,记录员工考勤、实现真正的办公自动化。对企业或实验室对人员管理提供了很大的便利,具有深远意义。参考文献王加梁.电气工程及自动化智能化技术在建筑电气中的应用探讨[J].绿色环保建材,2020(09):189-190.李孝君.指纹识别技术的前世今生[J].中国机关后勤,2021(04):64-66.邱义,郭一晶.物联网时代的智能小区安防系统研究[J].中国房地产,2020(21):76-79.S.ShavetovandV.Sivtsov,"AccessControlSystemBasedonFaceRecognition,"20207thInternationalConferenceonControl,DecisionandInformationTechnologies(CoDIT),2020,pp.952-956,doi:10.1109/CoDIT49905.2020.9263894.程瑶,孙霞,孙朝鹏.智能门禁系统控制方法的分析与设计[J].洛阳理工学院学报(自然科学版),2020,30(02):56-59.J.C.PostandJ.A.M.Peperkamp,"MEAComputerControlledPersonalAccessSystem,"inIEEETransactionsonNuclearScience,vol.28,no.3,pp.3080-3081,June1981,doi:10.1109/TNS.1981.4332015.A.D.Birrell,B.W.Lampson,R.M.NeedhamandM.D.Schroeder,"AGlobalAuthenticationServicewithoutGlobalTrust,"1986IEEESymposiumonSecurityandPrivacy,1986,pp.223-223,doi:10.1109/SP.1986.10009.K.T.LauandY.K.Choo,"Amicroprocessor-basedgatesecuritysystem,"inIEEETransactionsonConsumerElectronics,vol.35,no.4,pp.858-862,Nov.1989,doi:10.1109/30.106909.D.C.PoirierandS.R.Vishnubhotla,"Amicroprocessor-controlleddoorlocksystem,"inIEEETransactionsonConsumerElectronics,vol.36,no.2,pp.129-136,May1990,doi:10.1109/30.54279.M.Gustafsson,B.DelignyandN.Shahmehri,"UsingNFStoimplementrole-basedaccesscontrol,"ProceedingsofIEEE6thWorkshoponEnablingTechnologies:InfrastructureforCollaborativeEnterprises,1997,pp.299-304,doi:10.1109/ENABL.1997.630829.LinCL,LinJM,ChenYC.ABiometricEntranceGuardControlSystemforImprovingtheEntranceSecurityofIntelligentRentalHousing[C]//InternationalComputerSymposium.Springer,Singapore,2018.张永生.非接触式IC卡智能门禁系统[D].燕山大学,2012.刘莹.小区“一卡通”门禁控制系统的研究与设计[D].武汉理工大学,2006.傅浩桐,杜宇上.基于Arduino的智能门禁系统[J].电子技术与软件工程,2018(14):80-81.亓相涛,李黛月.基于无线通信与生物识别技术的智能控制系统设计[J].信息与电脑(理论版),2018(23):161-162+165.周燕丽,陈浩佳,吴宇楠,黄锦钿,陈彦彬,廖兴展.手机APP及指纹双模控制电梯门禁系统[J].科技与创新,2020(17):59-60XiaojingYeandJunweiHuang,"AframeworkforCloud-basedSmartHome,"
Proceedingsof2011InternationalConferenceonComputerScienceandNetworkTechnology,2011,pp.894-897,doi:10.1109/ICCSNT.2011.6182105.V.Ricquebourg,D.Menga,D.Durand,B.Marhic,L.DelahocheandC.Loge,"TheSmartHomeConcept:ourimm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理药物存放标准
- 某针织厂设备台账办法
- xx电池厂防冻办法
- 手术室护理心理支持
- 部编语文二年级上册“快乐读书吧”《没头脑和不高兴》导读课教学设计
- 新生儿日常护理中的感冒预防与治疗
- 2026年律师执业权利保障规定题库及答案
- 2026年A1技术支持的学情分析初中英语九年级学情分析报告
- 健身场地施工方案(3篇)
- 吊篮檐口施工方案(3篇)
- 2026年合肥经济技术职业学院单招综合素质考试题库附答案详解(b卷)
- 2026中食(河北)产业发展有限公司招聘市场运营部专员考试参考试题及答案解析
- (一模)东北三省三校2026年高三第一次联合模拟考试物理试卷(含答案)
- 2026四川省职业技能鉴定指导中心招聘编外人员4人考试备考试题及答案解析
- 2026年黄河水利职业技术学院单招职业技能考试模拟测试卷含答案
- 建筑工地春节后复工方案2025年
- 冶金安全生产责任制度
- 地下水污染健康风险评估工作指南(试行)
- 商品混凝土培训课件
- GB/T 3091-2025低压流体输送用焊接钢管
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
评论
0/150
提交评论