当前位置: 首页 > news >正文

STM32项目分享:智能门禁锁系统

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1Sg4y1X7Ex/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32智能门禁锁系统。

功能如下:

  1. 按键解锁:系统通过4×4矩阵键盘模块输入密码进入主菜单
  2. 门禁刷卡:通过RFID模块刷卡进入主菜单,卡片可以添加或者覆盖删除
  3. 指纹识别:通过AS608指纹识别模块识别指纹开锁
  4. 蓝牙APP解锁:通过蓝牙APP输入密码解锁
  5. 实时时间显示:OLED屏幕显示当前时间,可通过按键修改
  6. 步进电机:步进电机模拟门锁开关
  7. OLED显示:显示用户解锁界面,主菜单以及各项功能界面
  8. 蜂鸣器报警:密码输入错误蜂鸣器报警

2.主要器件

  • STM32F103C8T6最小系统板
  • OLED显示屏(7针SPI协议)
  • 4×4矩阵键盘
  • RFID门禁模块(加卡片)
  • AS608指纹模块
  • 蓝牙模块(BT04-A)
  • 蜂鸣器

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

 int main(void){			u16 set=0;u8 err=0;int key_num;int time1;int time2;		//锁屏时间char arrow=0;  //箭头位子delay_init();	    	 //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);	 //串口初始化为9600printf("串口功能正常\r\n");Button4_4_Init();          //初始化与按键连接的硬件接口OLED_Init();    			//显示初始化Walkmotor_Init();BEEP_Init();			//蜂鸣器初始化usart2_init(usart2_baund);           //初始化指纹模块PS_StaGPIO_Init();OLED_Clear(); starting();//开机信息  logoerr = RTC_Init();	  			//RTC初始化if(err){OLED_Clear(); Show_Str(12,13,128,20,"RTC CRY ERR!",12,0); OLED_Refresh_Gram();//更新显示delay_ms(3000);}SysPartInit();   //系统参数初始化 while(1){
//锁屏界面MAIN:OLED_Clear(); OLED_Show_Font(56,48,0);//显示锁图标while(1){time1++;  Display_Data();//时间显示:每1000ms更新一次显示数据if(DisFlag == 1){DisFlag = 0;OLED_Fill(0,24,16,63,0);OLED_Refresh_Gram();//更新显示}if((time1%100)==1){//MFRC522解锁time1=0;MFRC522_Initializtion();			Error=MFRC522_lock();if(Error==0){goto MENU;	}else {OLED_Show_Font(56,48,0);//锁}//手机蓝牙解锁密码1Error=usart1_cherk((char*)sys.passwd1);         if(Error==0){ OLED_Clear_NOupdate();Show_Str(12,13,128,20,"蓝牙密码1:正确",12,0); OLED_Refresh_Gram();//更新显示delay_ms(800);DisUnLock();goto MENU;	}else {}//手机蓝牙解锁密码2Error=usart1_cherk((char*)sys.passwd2);         if(Error==0){sys.errCnt = 0;OLED_Clear_NOupdate();Show_Str(12,13,128,12,"蓝牙密码2:正确",12,0); OLED_Refresh_Gram();//更新显示delay_ms(800);DisUnLock();goto MENU;	}else {}}//指纹解锁if(PS_Sta)	 //检测PS_Sta状态,如果有手指按下{while(PS_Sta){Error=press_FR();//刷指纹if(Error==0){goto MENU;   //跳到解锁界面}								else {OLED_Show_Font(56,48,0);//锁}}}//密码锁key_num=Button4_4_Scan();	//按键扫描if(key_num!=-1){Error=password();//密码解锁函数if(Error==0){goto MENU;	//跳到解锁界面}else {OLED_Show_Font(56,48,0);//锁}}delay_ms(1);				}
/********************主界面**************************/MENU:OLED_Clear();MENUNOCLR:OLED_Fill(0,0,20,48,0);//主页菜单显示if(arrow<3){Show_Str(5,arrow*16,128,16,"->",16,0);//显示箭头set=0;}else {Show_Str(5,(arrow-3)*16,128,16,"->",16,0);set=3;}Show_Str(25,0,128,16,setup[set],16,0);Show_Str(25,16,128,16,setup[set+1],16,0);Show_Str(25,32,128,16,setup[set+2],16,0);Show_Str(0,52,128,12,"上    下     确定",12,0);OLED_Refresh_Gram();//更新显示time2=0;while(1){//超时锁屏time2++;if(time2>100 | key_num==4){  OLED_Clear();DisLock();if(time2>100) beep_on_mode2();time2 =0;OLED_Clear();goto MAIN;}//手机蓝牙锁定if(memcmp(USART_RX_BUF,"lock",4)==0)	{DisLock();goto MAIN;}			//功能选项选择key_num=Button4_4_Scan();	if(key_num){if(key_num==13){if(arrow>0)arrow--;goto MENUNOCLR;}if(key_num==15){if(arrow<5)arrow++;goto MENUNOCLR;}if(key_num==16){switch(arrow){case 0:Add_FR();		break;//录指case 1:Del_FR();		break;//删指纹case 2:SetPassworld();break;//修改密码case 3:Set_Time(); break;  //设置时间case 4:Add_Rfid(); break;  //录入卡片case 5:Massige(); break;  //显示信息			}goto MENU;}		}delay_ms(1);}	}}

六、实验效果 

七、资料内容

项目分享

相关文章:

STM32项目分享:智能门禁锁系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…...

PostgreSQL中有没有类似Oracle的dba_objects系统视图

PostgreSQL中有没有类似Oracle的dba_objects系统视图 在PostgreSQL中&#xff0c;没有一个完全集成了所有对象信息的视图&#xff08;类似于Oracle中的DBA_OBJECTS&#xff09;。但是&#xff0c;PostgreSQL提供了一些系统目录表和视图&#xff0c;可以用来获取数据库对象的信…...

【kubernetes】探索k8s集群的配置资源(secret和configma)

目录 一、Secret 1.1Secret 有四种类型 1.2Pod 有 3 种方式来使用 secret 1.3应用场景&#xff1a;凭据 1.4创建 Secret 1.4.1用kubectl create secret命令创建Secret 1.4.2内容用 base64 编码&#xff0c;创建Secret 1.4.2.1Base64编码 1.4.2.2创建YAML文件 1.4.2.3…...

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生&#xff0c;其可以帮助…...

用linux 1分钟部署一台文件上传/下载的http/https服务器

安装包官网&#xff1a;GitHub - codeskyblue/gohttpserver: The best HTTP Static File Server, write with golangvue 1、官网下载或本文章的资源链接下载gohttpserver&#xff1b; 2、将gohttpserver、cacert.pem、cakey.pem三个文件放在linux一个目录下 启动gohttpserver服…...

机器学习ML.NET

适用于 .NET 的机器学习 ML.NET 是用于 .NET 的跨平台开源机器学习 (ML) 框架。 ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载…...

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包&#xff0c;包还是比较大的如果直接从社区下载比较费劲&#xff0c;所以建议配置国内镜像源&#xff0c;这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…...

各平台对象存储

一、阿里云对象存储 官方文档&#xff1a;https://help.aliyun.com/zh/oss/getting-started/getting-started-with-oss?spma2c4g.11186623.0.0.299a646c6nWWcW 1.引入maven 官网&#xff1a;https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c…...

C# 中提取方法进行重构

文章目录 1、什么是提取方法重构技术&#xff1f;2、提取方法重构 C# 代码示例3、提取方法重构技术的好处4、提取方法重构有用的场景5、总结 C# 中的提取方法重构技术 1、什么是提取方法重构技术&#xff1f; 重构代码是软件工程师的一项重要技能&#xff0c;因为它有助于提高…...

每天一个数据分析题(三百四十三)

同环比是帮助阅读者了解维度项表现水平有没有随着时间的推移而得以增长提升&#xff0c;以下对于同环比的说法正确的是&#xff1f; A. 同环比计算方法一般适用于对长周期业务行为结果的观测 B. 若产品具备季节属性特征&#xff0c;则应优先使用同比计算方法 C. 上期值一般指…...

【leetcode--统计优美子数组】

解题思路 一、滑动窗口 不断右移 right 指针来扩大滑动窗口&#xff0c;使其包含 k 个奇数&#xff1b; 若当前滑动窗口包含了 k 个奇数&#xff0c;则如下「计算当前窗口的优美子数组个数」&#xff1a; 统计第 1 个奇数左边的偶数个数 leftEvenCnt。 这 leftEvenCnt 个偶数…...

开源模型应用落地-LangChain高阶-LCEL-表达式语言(二)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…...

shell脚本对编码和行尾符敏感吗

问题 我正在 macOS 上制作一个 NW.js 应用程序&#xff0c;并想通过双击图标在开发模式下运行该应用程序。在第一步中&#xff0c;我试图使我的 shell 脚本正常工作。 在 Windows 上使用 VS Code&#xff0c;我在项目的根目录下创建了一个 run-nw 文件&#xff0c;包含以下内…...

神经网络----现有网络的下载和使用(vgg16)

以下两种方法已经用不了 vgg16_false torchvision.models.vgg16(pretrainedFalse) vgg16_true torchvision.models.vgg16(pretrainedTrue) 改为 vgg16_model0 vgg16(weightsNone) #vgg16_false vgg16_model1 vgg16(weightsVGG16_Weights.DEFAULT) # pretrained vgg16_…...

Java 异常处理 - 自定义异常

在Java中&#xff0c;自定义异常是一种创建新异常类的方式&#xff0c;这些异常类继承自Throwable类或其子类Exception&#xff08;或RuntimeException&#xff0c;如果它是运行时异常的话&#xff09;。自定义异常通常用于描述特定于应用程序的错误情况&#xff0c;以便为调用…...

Excel 交叉表的格转成列,行转成格

Excel里交叉表的左表头是卡车号&#xff0c;上表头是工作&#xff0c;交叉格是工作编号。 ABCD1Truck NumberJob1Job2Job3271592859285928372395859282971473297159282971 要求&#xff1a;将交叉格转为列&#xff0c;左表头转为格。 ABC1297139585928272727137371473715726…...

【C++软件调试技术】什么是pdb文件?如何使用pdb文件?哪些工具需要使用pdb文件?

目录 1、什么是pdb文件? 2、如何配置生成pdb文件? 3、pdb文件的时间戳和文件名称 3.1、pdb文件的时间戳 3.2、pdb文件的文件名称 4、有pdb文件才能在Visual Studio中调试代码 5、在Windbg中使用pdb文件 5.1、使用lm命令查看二进制文件的时间戳,去查找对应版本的pdb文…...

如何搭建一台永久运行的个人服务器?

一、前言 由于本人在这段时候&#xff0c;看到了一个叫做树莓派的东东&#xff0c;初步了解之后觉得很有意思&#xff0c;于是想把整个过程记录下来。 二、树莓派是什么&#xff1f; Raspberry Pi(中文名为树莓派,简写为RPi&#xff0c;(或者RasPi / RPI) 是为学习计算机编程…...

Ant Design+react 表单只读

表单禁用&#xff0c;样式不好看&#xff0c;不符合甲方标准&#xff0c;看了一下文档&#xff0c;select、radio等都不支持只读状态。 解决方法&#xff1a; 利用css3的point-events属性&#xff0c;设置为none 在查看弹窗时&#xff0c;传入一个变量&#xff0c;当变量为true…...

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界

目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景&#xff1a;总结 谈及推荐系统&#xff0c;不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同&#xff0c;所谓协同&#xff0c;也就是群体互帮互助&#xff0c…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...