STM32项目设计:基于stm32f4的智能门锁(附项目视频全套教程、源码资料)

基于stm32的小车毕业设计 图1.1 硬件系统设计。 阅读详情

智能门锁

资料链接 :智能门锁.rar

2022年1月1日前 单片机设计,有意可添加Q2809786963

百度网盘下载链接:https://pan.baidu.com/s/1jmrMfNDlkZ9denImJRwzOw
提取码:abcd(2020年12月7日08:26:11)

原理图清晰图片:智能门锁连接图.bmp

哔哩哔哩配套视频笔记:
https://download.csdn.net/download/mbs520/20049130

哔哩哔哩项目展示视频:https://b23.tv/bxfxvd

哔哩哔哩视频教程:https://www.bilibili.com/video/BV1Ah411y71E
在这里插入图片描述

学习QQ建立了,大家有什么疑问都可以在群里交流学习:981140834
取走记得点赞,谢谢各位。

一、项目背景

在消费升级渗透在各个领域的今天,国民消费发生着巨大的变化,与每个人息息相关的家居行业也是如此。现今,越来越多的智能家居产品出现在普通老百姓的生活中,智能照明、智能窗帘、智能扫地机器人等各种智能产品都给人们的生活带来了极大的便利。智能门锁作为智能家居中重要的一环,也成为消费者家居智能化的重要选择。智能相比市面的机械门锁更加安全、更智能、更人性化而得到市场的认可,在智能门锁行业里,不少世界500强企业也在智能门锁上进行产品布局,像中国小米公司就生产智能门锁,致力打造智慧家庭,市场智能门锁能够支持五种解锁方式,支持指纹、手机、门禁门、按键密码、钥匙解锁功能。可以说是智能家庭必不可少的成员。
在这里插入图片描述

二、项目功能要求

1、可通过指纹模块增删查改家庭成员的指纹信息,增删查改是否成功的相关信息显示在OLED屏幕上
2、在指纹匹配过程中,如果采集的指纹与指纹模块库相匹配,OLED显示匹配成功,并转动步进电机一圈
3、可通过按键设定智能门锁密码,密码可设置为两个(密码六位),如果匹配两个中的一个成功,即可开锁,也可通过按键修改密码,所有的操作过程显示于OLED中
4、实现RFID与手机解锁(蓝牙解锁)
5、扩展:虚位密码解锁(虚位密码:自己百度)

项目所用到的主要技术:
1、IIC协议、SPI协议、串口协议
2、外部flash驱动、SD卡驱动
3、FTAFS文件系统
4、RTC实时时钟

三、元件准备

1、步进电机(带驱动模块)
型号:28BYJ4+ULN2003

在这里插入图片描述

2、4X4矩阵按键
在这里插入图片描述
3、指纹模块AS608(串口控制)在这里插入图片描述

4、0.96寸OLED显示屏(IIC)
型号:7针

在这里插入图片描述

5、蓝牙模块HC-05
在这里插入图片描述

6、主控芯片STM32F407ZGT6
型号:普中最小系统板
在这里插入图片描述
7、RFID RC522 射频模块(带一张卡片)在这里插入图片描述
8、杜邦线

四、项目设计

(一)原理图设计

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(二)硬件设计

根据原理图连接好硬件电路
在这里插入图片描述

(三)程序设计

由于代码过长只展示部分代码:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "sram.h"   
#include "malloc.h" 
#include "sdio_sdcard.h"    
#include "malloc.h" 
#include "w25qxx.h"    
#include "ff.h"  
#include "exfuns.h"    
#include "fontupd.h"
#include "text.h"	
#include "oled.h"
#include "beep.h"
#include "button4_4.h"
#include "AS608.h"
#include "walkmotor.h"
#include "usart2.h"
#include "rtc.h"
#include "MFRC522.h"
#include "usart3.h"	
#include "stmflash.h"

#define usart2_baund  57600//串口2波特率,根据指纹模块波特率更改

//要写入到STM32 FLASH的字符串数组
const u8 TEXT_Buffer[]={0x17,0x23,0x6f,0x60,0,0};
#define TEXT_LENTH sizeof(TEXT_Buffer)	 		  	//数组长度	
#define SIZE TEXT_LENTH/4+((TEXT_LENTH%4)?1:0)
#define FLASH_SAVE_ADDR  0X0802C124 	//设置FLASH 保存地址(必须为偶数,且所在扇区,要大于本代码所占用到的扇区.
										//否则,写操作的时候,可能会导致擦除整个扇区,从而引起部分程序丢失.引起死机.

SysPara AS608Para;//指纹模块AS608参数
u16 ValidN;//模块内有效指纹个数
u8** kbd_tbl;

void Display_Data(void);//显示时间
void Add_FR(void);	//录指纹
void Del_FR(void);	//删除指纹
int press_FR(void);//刷指纹
void ShowErrMessage(u8 ensure);//显示确认码错误信息
int password(void);//密码锁
void SetPassworld(void);//修改密码
void starting(void);//开机界面信息
u8 MFRC522_lock(void);//刷卡解锁
u8 Add_Rfid(void);		//录入
void Set_Time(void);
void Massige(void);
u8 Pwd[7]="      ";  //解锁密码1
u8 Pwd2[7]="      ";  //解锁密码2
u8 cardid[6]={0,0,0,0,0,0};  //卡号1
int Error;  //密码验证信息


//数字的ASCII码
uc8 numberascii[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//显示缓冲区
u8  dispnumber5buf[6];
u8  dispnumber3buf[4];
u8  dispnumber2buf[3];
//MFRC522数据区
u8  mfrc552pidbuf[18];
u8  card_pydebuf[2];
u8  card_numberbuf[5];
u8  card_key0Abuf[6]={0xff,0xff,0xff,0xff,0xff,0xff};
u8  card_writebuf[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
u8  card_readbuf[18];
//SM05-S数据区
u8  sm05cmdbuf[15]={14,128,0,22,5,0,0,0,4,1,157,16,0,0,21};
//extern声明变量已在外部的C文件里定义,可以在主文件中使用
extern u8  sm05receivebuf[16];	//在中断C文件里定义
extern u8  sm05_OK;							//在中断C文件里定义

u8 * week[7]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
u8 * setup[7]={"1、录入指纹","2、删除指纹","3、修改密码","4、修改时间","5、录入卡片","6、查看信息"};

int main(void)
{
	u16 set=0;
	int key_num;
	int time1;
	int time2;		//锁屏时间
	char arrow=0;  //箭头位子
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	My_RTC_Init();		 		//初始化RTC
	RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);		//配置WAKE UP中断,1秒钟中断一次
	delay_init(168);  //初始化延时函数
	uart_init(115200);	//初始化串口1波特率为115200,用于支持USMART
	uart3_init(9600);// 蓝牙初始化
	usart2_init(usart2_baund);//初始化串口2,用于与指纹模块通讯
	PS_StaGPIO_Init();	//初始化FR读状态引脚
	LED_Init();					//初始化LED  
//	BEEP_Init();    		//beep初始化
	Button4_4_Init();//矩阵按键初始化
	OLED_Init(); 			//oled初始化
	W25QXX_Init();				//初始化W25Q128
	
	Walkmotor_Init(); //步进电机初始化
	my_mem_init(SRAMIN);		//初始化内部内存池 
	my_mem_init(SRAMCCM);		//初始化CCM内存池 
	exfuns_init();				//为fatfs相关变量申请内存  
 	 f_mount(fs[0],"0:",1); 		//挂载SD卡 
 	f_mount(fs[1],"1:",1); 		//挂载FLASH.
	starting();//开机信息  logo

	STMFLASH_Read(0X08020004,(u32*)Pwd,2);	//读取密码1
	STMFLASH_Read(0X08090004,(u32*)Pwd2,2); //读取密码2
	STMFLASH_Read(0X080f0004,(u32*)cardid,1); //读取卡号1
	 while(1)
	 {
//锁屏界面
MAIN:
			OLED_Show_Font(56,48,0);//显示锁图标
			while(1)
			{
				time1++;
				if((time1%200)==0)//时间显示:每50ms更新一次显示数据
				{
					Display_Data();
				}
				if((time1%1000)==0)//每200ms检测一次卡片,蓝牙数据
				{
					//MFRC522解锁
					MFRC522_Initializtion();			
					Error=MFRC522_lock();
					if(Error==0)goto MENU;	
					else 
						OLED_Show_Font(56,48,0);//锁
					//手机蓝牙解锁密码1
					Error=usart3_cherk((char*)Pwd);         
					if(Error==0){
						OLED_Clear();
						Show_Str(20,10,128,24,"解锁中...",24,0);	
						Walkmotor_ON();
						Show_Str(20,10,128,24,"已解锁!",24,0);
						goto MENU;	
					}
					else 
						OLED_Show_Font(56,48,0);//锁
					//手机蓝牙解锁密码2
					Error=usart3_cherk((char*)Pwd2);
					if(Error==0){
						OLED_Clear();
						Show_Str(20,10,128,24,"解锁中...",24,0);	
						Walkmotor_ON();
						Show_Str(20,10,128,24,"已解锁!",24,0);
						goto MENU;	
					}
					else 
						OLED_Show_Font(56,48,0);//锁
					
				} 
				//指纹解锁
				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);//锁
				}
			}

五、上机调试

把硬件连接好之后还需要做一些准备工作:
录入指纹:
(1)程序下载之前需要给门禁一个解锁方式,门锁一共有4种解锁方式:指纹、蓝牙、卡片、密码。其中卡片需要录入过系统的才可以解锁,密码一开始保存在stm32内部flash中,内部flash做eeprom需要先初始化,解锁后在设置中更改密码或者在代码中进行初始化密码,不然密码是乱码。
(2)串口录入指纹:将串口转TTL CH340模块连接好指纹模块,用配套上位机录入自己的一个指纹。详细连接方法参考指纹模块资料
(3)解锁后就可以进行设置密码和录入卡片等操作在这里插入图片描述
在这里插入图片描述
移植汉字库:(如果没有SD卡接口可以自己汉字取模显示)
(1)准备一个sd卡,一个读卡器,用来存储汉字库,显示到OLED
(2)找到开发资料下的SYSTEM文件夹
在这里插入图片描述
(3)把SYSTEM文件夹复制到SD卡根目录下(一定要是根目录下)在这里插入图片描述
(4)复制好之后吧SD卡插到开发板
(5)下载程序到开发板启动,如果可以显示汉字说已经移植成功。(注意:开始的化作尘&指纹锁界面是显示的图片,并不是汉字字体)

一般遇到的问题:

如果进去只显示“化作尘指纹锁”然后黑屏,那么是字库的问题
如果因为不知道密码进不去主界面,那么打开代码,将密码打印出来,然后就可以用密码解锁了,一共两个密码,任意一个都可以解锁:
在这里插入图片描述
因为没有考虑到字符不全是’0’- '9’的关系,密码打印出来不是数字,所以查看密码不成功

正确打开方式
步骤一:直接给密码赋值操作,然后编译下载,下载完成后输入密码“123456”是肯定可以进主界面的,然后点击修改密码,密码修改为你想要的密码“000111”,这个密码会保存到内部eeprom
,密码初始化就完成了

1、在127行加入如下代码编译下载
在这里插入图片描述
2、输入密码“123456”解锁
在这里插入图片描述
3、进入解锁后界面,选择修改密码
在这里插入图片描述
密码修改为“123456”后保存,会保存到内部eeprom
在这里插入图片描述

步骤二:把刚刚写的代码注释,重新下载进去,代码就可以正常运行了,输入刚刚设置的密码“000111”就可以解锁

在这里插入图片描述
蓝牙调试
1、首先下载“蓝牙串口”APP
2、连接蓝牙后发送密码“123456::”

蓝牙发送密码不解锁?

1、可能是波特率不对
①可以通过AT指令修改蓝牙模块的波特率与单片机一样(9600),使得蓝牙模块能连接单片机(单片机代码初始化蓝牙模块的波特率一般为9600)
②可以用usb转ttl将蓝牙模块与电脑相连,打开串口助手后,用手机连接蓝牙发送数据,调节串口助手的波特率,接收到正常数据后记录波特率,这个就是蓝牙模块现在的波特率,随后将代码中初始化蓝牙模块的波特率改成这个波特率,单片机就可以正常与蓝牙模块通信
2、可能是蓝牙模块接线不对,吧tx rx对调
3、可能蓝牙模块已经损坏

开机图片取模显示
取模软件合集.rar
1、先画一张黑白的128*64分辨率的 .bmp图片
在这里插入图片描述
2、打开Image2Lcd软件,先打开图片,按照如下配置,点击保存,会生成取模代码
在这里插入图片描述

六、知识扫盲

(一)汉字的显示
(具体代码参考正点原子“汉字显示实验”)

1、汉字的显示原理

1)学习过屏幕驱动的应该都知道,屏幕的显示无非就是在屏幕上打相应颜色的点,比如要显示一个字符 ‘A’ 那么我只需要知道 ‘A’ 相应的点阵数据就可以把它显示出来,汉字也一样。

2、汉字库

1)汉字库文件在正点原子的开发板资料->“SD卡根目录文件”中,可以到正点原子官网论坛下载
在这里插入图片描述
2)汉字库有两类文件,.FON与.BIN文件,.FON代表汉字库点阵文件,.BIN表示的是编码表,与点阵一一对应,比如GBK编码的第一个字就对应着点阵里的第一个点阵数据,映射关系如下:
UNIGBK->GBK12.FON
UNIGBK->GBK24.FON
UNIGBK->GBK32.FON

有兴趣可以百度一下查看GBK编码表:
在这里插入图片描述

2、汉字库的存储位置

2)汉字与字符不同的是,汉字有1万多个,ASCII码字符却只有100多个,并且汉字的显示明显比字符的点阵复杂程度高,比如说字体是12的字符占用点阵是12x6,每个字符需要12x6/8=9个字节的存储空间。字体是12 的汉字占用12x12的点阵,每个汉字需要12x12/8=18个字节存储空间,这还是最小字体,大的字体所需要的存储空间只会成倍增加

3)一般12号字体的汉字库需要500K字节、16号字体700K、24号字体1.6M、32号字体3M,这对于单片机来说数据量太大了,内部FLASH512K~1M表示压力很大
在这里插入图片描述
4)需要把汉字库保存到SD卡,再将SD卡中的汉字库数据保存到外部FILASH才行,w25q128无疑是个好选择,它拥有16M的存储空间,SPI通信协议,读写速度也是相当快。

(二)把汉字库里的点阵数据读取出来显示到MCU屏

1、数据编码格式的问题

1)有关显示汉字就必然会涉及编码格式的问题,不同的编码格式对应的汉字编码是不同的,比如UTF-8编码的文件用GB2312编码打开就会乱码。
同理,比如文档的格式是UTF-8编码,但是我的字库是GBK编码,读出来的数据直接显示到屏幕就必然会乱码

2)所以显示汉字如果乱码首先需要检查的就是编辑器的编码,保证编码一致。

七、项目图片展示

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

资料下载:https://download.csdn.net/download/mbs520/12662458
在这里插入图片描述

在这里插入图片描述

基于STM32的智能家居安防系统 本文设计了一款基于STM32的智能家居安防系统,通过多传感器融合、AI行为识别与智能联动技术,实现家庭安全实时监控、异常预警与自动处置,打造智能化家居安防体系。该设计充分发挥STM32F4系列高性能优势,在180MHz主频下实现复杂算法运算,通过硬件JPEG编码器加速视频处理,结合DSP指令集优化AI推理性能,满足家庭安防场景对实时性与可靠性的要求。未来可扩展AI人脸识别功能,结合智能音箱实现语音控制,并开发社区联防功能,构建智慧安防生态。PIR人体传感器(HC-SR501):检测人体移动。 阅读详情

相关推荐

STM32N657开发板实战:Neural-ART NPU与外部Flash启动配置全解析

在嵌入式开发中,微控制器(MCU)正从简单控制向边缘AI与高性能计算演进。传统的STM32F1/H7系列虽功能强大,但面对视觉识别、多路音频融合等场景,仍存在算力与架构瓶颈。STM32N657作为ST首款集成自研Neural-ART NPU的MCU,以Cortex-M55为核心,兼顾实时控制与神经网络推理,让端侧AI不再依赖Linux SoC。然而,其X0后缀无片内Flash的设计,使得程序需从外部NOR Flash启动,这成为开发者从传统MCU迁移时最易卡壳的环节。本文以NUCLEO-N657X0-Q板卡

weixin_34416649的博客 403

单片机 嵌入式 毕业设计题目选题推荐

🥇 近期不少学弟学妹询问学长关于单片机和嵌入式相关的毕设选题,学长特意写下这篇文章以作回应!以下是学长亲手整理的物联网相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!学长整理的题目标准:🔥 项目分享与指导: https://gitee.com/dancheng-senior/IOT-sharing-2/blob/master/README.md毕业设计的选题尤为重要,选好题目是最终完成毕业设计的第一步。因为题目的选择跟之后的设计实现密不..

m0_71572576的博客 6719

STM32F1加密库实战:X-CUBE-CRYPTOLIB移植、优化与安全应用

在嵌入式系统与物联网开发中,数据安全与固件保护是核心需求。加密技术通过算法对数据进行编码,确保机密性、完整性与真实性,其原理涉及对称加密、哈希算法与消息认证等基础概念。这些技术为资源受限的MCU提供了关键的安全价值,广泛应用于智能家居、工业控制等场景的通信加密与防篡改。针对STM32F1系列,ST官方推出的X-CUBE-CRYPTOLIB加密库集成了AES、SHA、HMAC等算法,并针对Cortex-M内核优化。本文将探讨如何高效移植该库,并结合AES-CBC加密与HMAC-SHA256认证等热词,分享在有

weixin_33898233的博客 457

2022-2023 通信工程专业毕业设计题目选题推荐 - 100例

🥇 近期不少学弟学妹询问学长关于单片机和嵌入式相关的毕设选题,学长特意写下这篇文章以作回应!以下是学长亲手整理的物联网相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!学长整理的题目标准:🔥 项目分享与指导: https://gitee.com/dancheng-senior/IOT-sharing-2/blob/master/README.md毕业设计的选题尤为重要,选好题目是最终完成毕业设计的第一步。因为题目的选择跟之后的设计实现密不..

m0_71572576的博客 1万+

STM32毕业设计项目

STM32毕业设计项目 文章目录STM32毕业设计项目1、基于STM32单片机大棚环境参数无线蓝牙检测设计 1、基于STM32单片机大棚环境参数无线蓝牙检测设计 开题报告 论文 制作原理 原理图&PCB

行走的皮卡丘 2万+

基于STM32的毕业设计项目汇总

而STMicroelectronics的STM32系列微控制器以其高性能、低功耗和丰富的外设功能而备受开发者的青睐。基于STM32的毕业设计项目可以帮助学生深入了解微控制器的原理和应用,并且为他们提供实践机会。以上是几个基于STM32的毕业设计项目示例,涵盖了温度监测、智能家居控制和电动小车避障等应用领域。通过这些项目,学生们可以深入了解STM32的功能和应用,并在实践中提升他们的嵌入式系统设计能力。以下是几个基于STM32的毕业设计项目的汇总,每个项目都附带了相应的源代码示例。

UbiSqlserver的博客 2918

【毕设选题】基于STM32的毕业设计题目项目汇总 - 350例

以下是学长亲手整理的STM32相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!相对容易工作量达标题目新颖,含创新点httpshttpshttpshttpshttps。...

m0_71572576的博客 9万+

STM32+RFID+蓝牙智能门锁实战:从硬件选型到状态机设计

嵌入式系统开发中,状态机设计是保证设备可靠性的核心方法,尤其在门锁等强状态设备中,需要将输入采集、鉴权逻辑与执行机构解耦。本文以STM32为主控,结合RC522 RFID读卡模块与蓝牙串口通信,详细讲解从硬件选型、协议解析到PWM舵机驱动的完整链路。通过统一鉴权入口和状态枚举,实现刷卡、蓝牙、按键三路输入的安全收敛,并解决掉电误开锁、自动回锁、防重放等工程痛点。内容覆盖毕业设计、课程设计及竞赛项目中的常见排错难点,适合需要快速落地的嵌入式开发者参考。

weixin_28738397的博客 162

STM32项目设计:基于STM32F1的智能门锁PCB、源码(4种解锁方式)

文章目录前言一、项目简介(一)、功能概述(二)、项目所用到的主要技术:(三)本次项目的特点二、材料选择三、原理图设计四、PCB设计五、源码设计六、成品展示 项目视频 哔哩哔哩视频链接:正在制作… 项目资料 stm32f1智能门锁免费资料链接: 链接:https://pan.baidu.com/s/1_au_QM2-59dMhIj4_lP2vQ 提取码:wa4y stm32f1智能门锁完整资料链接: https://download.csdn.net/download/mbs520/52718826 前言

mbs706的博客 4万+

STM32嵌入式AI图像识别部署实战:从模型优化到工程落地

嵌入式人工智能(Embedded AI)与边缘计算(Edge Computing)是当前物联网与智能设备领域的核心技术趋势,其核心原理在于将AI模型的推理能力从云端下沉至终端设备。通过在资源受限的微控制器(MCU)上部署轻量级神经网络,实现了低延迟、高隐私与离线可用的技术价值,广泛应用于工业视觉检测、智能门锁、消费电子等场景。这背后依赖于模型压缩、量化(Quantization)与硬件加速等关键技术,其中STM32Cube.AI工具链扮演了关键角色,它能将训练好的模型转换为高度优化的C代码,并利用STM32

weixin_33811539的博客 413

基于stm32的毕业设计方案

设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT100温度传感器实现对水温信号的采集,并利用模拟量前向通道来对水温信号进行处理。利用STM32单片机进行控制输出PWM信号,用此信号控制接触器进而控制电加热水器的电源通断,终实现对水温的控制。同时用组态软件设计监控界面来实现对水温的控制显示。通过对此课题的设计,能够使自动化的学生对工业过程控制对象具有更进一步的了解,同时熟练掌握自动化控制系统的设计流程,为以后的工作学习打下坚实基础。  一、控制系统硬件设计  1、控制系统硬件总体设计  温度是一个很重要的变量,需要对其进行准确地控制。温度控制系

探秘智能家居安全之钥:基于STM32F4的智能门锁实战

探秘智能家居安全之钥:基于STM32F4的智能门锁实战 【下载地址】STM32项目设计基于STM32F4的智能门锁分享 本项目是一个基于STM32F4的智能门锁设计,包含了完整的项目视频教程和源码资料。智能门锁作为智能家居的重要组成部分,提供了多种解锁方式,包括指纹识别、手机蓝牙解锁、RFID卡解锁以及密码解锁等。项目旨...

gitblog_06567的博客 588

STM32F407IGT6单片机RFID射频(RC522)模块实验KEIL软件DEMO工程源码.zip

STM32F407IGT6单片机RFID射频(RC522)模块实验KEIL软件DEMO工程源码,可做为你的人学习设计参考。 int main(void) { /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); /* 初始化3.5寸TFT液晶模组,一般优先于调试串口初始化 */ BSP_LCD_Init(); LCD_Clear(0,0,LCD_DEFAULT_WIDTH,LCD_DEFAULT_HEIGTH,BLACK); /* 开背光 */ LCD_BK_ON(); LCD_DispString_EN_CH(70,50,(uint8_t *)"YS-F4Pro开发板",BLACK,BLUE,USB_FONT_24); printf("RC522初始化\n"); RC522_Init(); PcdReset(); M500PcdConfigISOType ( 'A' );/* 设置工作方式 */ printf("RC522初始化完成\n"); while ( 1 ) { IC_test ();/* IC卡检测 */ } } /** * 函数功能: 门禁测试函数 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void IC_test ( void ) { char cStr [ 30 ]; unsigned char ucArray_ID [ 4 ]; /* 先后存放IC卡的类型和UID(IC卡序列号) */ uint8_t ucStatusReturn; /* 返回状态*/ while ( 1 ) { /*寻卡*/ if ( ( ucStatusReturn = PcdRequest ( PICC_REQALL, ucArray_ID ) ) != MI_OK ) /*若失败再次寻卡*/ ucStatusReturn = PcdRequest ( PICC_REQALL, ucArray_ID ); if ( ucStatusReturn == MI_OK ) { /*防冲撞(当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作)*/ if ( PcdAnticoll ( ucArray_ID ) == MI_OK ) { sprintf ( cStr, "The Card ID is: %02X%02X%02X%02X", ucArray_ID [ 0 ], ucArray_ID [ 1 ], ucArray_ID [ 2 ], ucArray_ID [ 3 ] ); printf ( "%s\r\n",cStr ); LCD_DispString_EN(10,200,cStr,BLACK,RED,USB_FONT_24); } } }

AS608指纹模块与stm32f103c8t6通信实现指纹识别

STM32f103c8t6最小系统板+AS608指纹模块+电磁锁(继电器控制)

GJC165189的博客 1万+

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑)

本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。

weixin_42619742的博客 465

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1865

STM32参考设计去哪找?六大平台与高效检索技巧全解析

嵌入式硬件开发中,参考设计是缩短产品落地周期的重要杠杆。通过借鉴经过验证的电源、时钟、接口电路与驱动代码,开发者可以规避大量隐藏的硬件隐患。与此同时,开源硬件平台与代码托管社区沉淀了海量的STM32项目资源,从完整原理图到PCB、BOM再到固件工程,覆盖了从学习验证到二次开发的全链路需求。基于对主流平台的对比分析,梳理STM32参考设计的获取渠道与筛选方法,并结合下载校验、移植与打样全流程给出实操建议,帮助嵌入式工程师在信息噪声中快速定位高质量设计资源。

ciya3282的博客 396

YOLOv8实战:用Labelme标注自定义数据集并训练分割模型(附完整代码)

本文详细介绍了使用Labelme标注自定义数据集并训练YOLOv8实例分割模型的完整流程。从环境搭建、数据标注与格式转换,到模型训练、调优、验证及部署,提供了实战代码和调优建议。文章还探讨了如何结合追踪目标技术,实现视频流中的实例分割与目标追踪,为计算机视觉应用提供了一套可复制的解决方案。

549

STM32嵌入式人脸检测:IPL轻量级库实现与优化指南

人脸检测作为计算机视觉的基础技术,通过分析图像特征实现人脸的定位与识别。其核心原理基于特征提取和分类器判断,传统算法如Haar特征结合AdaBoost在资源受限环境中具有重要价值。在嵌入式领域,STM32微控制器凭借其低功耗和丰富外设成为理想平台,而IPL轻量级图像处理库通过算法优化实现了在有限资源下的高效运行。这种技术组合特别适用于智能门禁、安防监控等实时性要求高的场景,其中Haar特征检测和CMSIS-DSP加速等关键技术能显著提升在STM32平台上的检测效率。通过合理的参数调优和内存管理,即使在STM

weixin_33980459的博客 389

pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例

系列文章目录 Quantum Espresso Hands-On实战训练(三)——DOS计算 文章目录系列文章目录计算过程pwscf直接得到等能面pwscf和wannier90得到等能面pwscf直接得到等能面1. scf2. nscf3. 后处理pwscf和wannier90得到等能面1. Kpoints2. scf3. nscf4. pw2wan及wannier90.x5. XCrySDen可视化 计算过程 pwscf直接得到等能面 pwscf和wannier90得到等能面 pwscf直接得到等能面

weixin_45973682的博客 5063

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2293

从内核到生态:RT-Thread与FreeRTOS在物联网开发中的实战选型指南

本文深入对比了RT-Thread与FreeRTOS在物联网开发中的核心差异,从内核架构、组件生态、开发体验到云服务集成进行全面分析。RT-Thread以其丰富的组件生态和本土化优势更适合复杂工业设备,而FreeRTOS凭借极简内核在成本敏感型消费电子中表现突出。实战案例展示了两者在智能门锁、工业控制器等场景的应用效果,为开发者提供精准选型参考。

weixin_29219189的博客 162

19、多项式基算术:原理与运算详解

本文深入探讨了有限域 $GF(2^m)$ 中的多项式基算术,详细介绍了加法、减法、乘法和平方运算的原理与实现方法。重点分析了多项式基表示形式、模约简技术以及乘法优化策略,如高基数乘法、并行与顺序乘法器设计,并提到了Karatsuba-Ofman算法在减少乘法次数方面的优势。此外,文章还讨论了多项式基算术在密码学、编码理论等领域的应用前景,并展望了未来在高效算法设计与硬件加速方面的研究方向。

yellow的专栏 143

嵌入式实战项目教学:从理论断层到产线交付

嵌入式开发是软硬协同的系统工程,其核心在于将C语言、单片机原理等基础知识,转化为可运行、可测试、可交付的固件能力。理解寄存器配置、中断机制与外设驱动原理,是构建可靠系统的前提;而FreeRTOS任务调度、Modbus协议栈实现、ADC精度校准等技术价值,直接决定工业设备的实时性与鲁棒性。典型应用场景覆盖智能灌溉控制器、工业IO模块、医疗BMS等对时序、安全与环境适应性要求严苛的领域。本文聚焦‘嵌入式实战项目教学’与‘FreeRTOS’两大关键实践锚点,还原真实产线中从硬件联调、故障注入到72小时冲刺交付的全

weixin_34268843的博客 303

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4416

Arduino与Proteus仿真实例-LCD2004-I2C(PCF8574)驱动仿真

LCD2004-I2C(PCF8574)驱动仿真 PCF8574/74A 通过两线双向 I2C 总线(串行时钟 (SCL)、串行数据 (SDA))提供通用远程 I/O 扩展。 LCD2004,即2004字符型液晶显示器,是一种点阵模块,用于显示字母、数字、字符等。 它由 5x8 个点阵位置组成; 每个位置可以显示一个字符。 两个字符之间有一个点间距,行之间有一个空格,从而将字符和行分开。 模型 2004 表示它显示 4 行,每行 20 个字符。 在前面的实例中对PCF8574和LCD2004的已经做了详细介

视觉与物联智能 1161
上一篇: STM32驱动代码:STM32F4驱动7针0.96寸OLED显示字符、汉字
下一篇: 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。
化作尘
博客等级 码龄8年 5255粉丝 59原创
评论 204
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

化作尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值