嵌入式|stm32指纹、蓝牙识别门禁系统项目详解

摘要
本着做stm32项目的初心,在11月份中旬便开始着手了这个项目的开展,如今已经12月份下旬了,也是将近一个多月了。也算是接近项目的尾声了,在这段时间,学到了不少东西,记录下来,也算是对自己的一个交代吧。
项目物料清单
项目物料清单很重要,在做项目的前期,找了一些资料,大部分都是没有物料清单的,这其实让项目很难继续进行下去的。没有资料更是不可能做项目的,任何人都是如此,凭空做项目除非之前有了相关的经验。物料清单如下:
1、主控板:stm32f103c8t6最小系统板
2、oled显示屏(七针spi)
3、降压模块(12v转5v)
4、电磁锁(12v)
5、as608指纹识别模块(工作电压3.3v)
6、继电器(1路5v)
7、蓝牙模块
8、蜂鸣器
9、12v锂电池
10、DC电源接口
应该就这些物料就可以了。
遇到的问题
在做的过程中,遇到了不少问题,首先是继电器、电磁锁的接法。这个我之前没有接触过继电器,不知道怎么接,通过网上查阅资料,找了相关人员,了解了它的接法。最主要的问题就是指纹模块遇到的问题,在烧录程序的过程中,指纹模块初始化失败,这个问题困扰了很久,也是别人的指导,才解决了这个问题。
指纹识别门禁项目的功能
通过usb转串口,将指纹模块连接到上位机,进行指纹的录入。保存指纹的ID,通过keil5将程序烧录到主控板,oled屏幕显示"welcome input u finger",若指纹模块初始化失败,则显示 “finger init error”。录入指纹,电磁锁开锁。若指纹识别不成功,则显示No finger。
通过蓝牙也可以开锁,通过上位机软件可以设置蓝牙名称。下载蓝牙串口spp,蓝牙开锁密码在程序里可以修改。在聊天界面可以发送密码加上回车,可以实现开锁的功能。
项目代码讲解
蓝牙开门密码、指纹模块ID
main.c

u8 open_door_str[]="123456"; //蓝牙开门密码 u8 open_door_flag=0; //开门标志位 u16 user_ID=0; //保存指纹模块返回的用户ID,用于判断用户

指纹模块初始化
void fig_init() { while(PS_HandShake(&AS608Addr))//与AS608模块握手 { delay_ms(400); //指纹工作正常,需要0.4秒缓冲 OLED_Clear(); //清屏 OLED_ShowString(0,3,"finger init error"); //测试6*8字符 delay_ms(800); } }

指纹开锁代码实现
while(1) { press_FR(); //刷指纹if(open_door_flag==1)//指纹ok,就开门 { switch (user_ID) { case 1 : for(i=15; i<18; i++)OLED_ShowCHinese(56+i*16,5,i); JDQ_init(); break; case 2 : for(i=18; i<21; i++)OLED_ShowCHinese(56+i*13,5,i); JDQ_init(); break; case 3 : for(i=21; i<24; i++)OLED_ShowCHinese(56+i*11,5,i); JDQ_init(); break; //管理员//汉字提取到"codetab.h"的汉字中 case 4 : for(i=24; i<27; i++)OLED_ShowCHinese(56+i*10,5,i); JDQ_init(); break; case 5 : for(i=27; i<30; i++)OLED_ShowCHinese(56+i*9,5,i); JDQ_init(); break; default : OLED_ShowString(0,3,"error"); break; //管理员//汉字提取到"codetab.h"的汉字中 }

项目部分功能演示视频:

指纹蓝牙识别门禁分享

本人联系qq:1050497845 欢迎技术探讨
以下是项目详细资料:
链接:https://pan.baidu.com/s/1f8mbIlmkIcG0tdT4HRiObg
提取码:vmka
【嵌入式|stm32指纹、蓝牙识别门禁系统项目详解】持续更新、未完待续…

    推荐阅读