Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32项目设计:基于stm32f4的智能门锁(附项目视频全套教程、源码资料)[通俗易懂]

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

作者头像
全栈程序员站长
发布于 2022-06-27 02:52:43
发布于 2022-06-27 02:52:43
3K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

智能门锁

资料链接 :智能门锁.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/bxfxvdhttps://b23.tv/bxfxvdhttps://b23.tv/bxfxvdhttps://b23.tv/bxfxvdhttps://b23.tv/bxfxvd 哔哩哔哩视频教程:https://www.bilibili.com/video/BV1Ah411y71E

一、项目背景

在消费升级渗透在各个领域的今天,国民消费发生着巨大的变化,与每个人息息相关的家居行业也是如此。现今,越来越多的智能家居产品出现在普通老百姓的生活中,智能照明、智能窗帘、智能扫地机器人等各种智能产品都给人们的生活带来了极大的便利。智能门锁作为智能家居中重要的一环,也成为消费者家居智能化的重要选择。智能相比市面的机械门锁更加安全、更智能、更人性化而得到市场的认可,在智能门锁行业里,不少世界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、杜邦线

四、项目设计

(一)原理图设计

(二)硬件设计

根据原理图连接好硬件电路

(三)程序设计

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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的字符占用点阵是12×6,每个字符需要12×6/8=9个字节的存储空间。字体是12 的汉字占用12×12的点阵,每个汉字需要12×12/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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133283.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
(47)STM32——汉字显示实验(基于正点原子F407)
https://blog.csdn.net/weixin_66578482/article/details/126123515
小点点
2022/12/12
1.6K0
(47)STM32——汉字显示实验(基于正点原子F407)
基于STM32的智能鱼缸设计
为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。
DS小龙哥
2022/09/16
3.7K0
基于STM32的智能鱼缸设计
STM32+HC05串口蓝牙设计简易的蓝牙音箱
Android手机打开APP,设置好参数之后,选择音乐文件发送给蓝牙音箱设备端,HC05蓝牙收到数据之后,再传递给VS1053进行播放。程序里采用环形缓冲区,接收HC05蓝牙传递的数据,设置好传递的参数之后,基本播放音乐是很流畅的。
DS小龙哥
2022/01/17
1.7K0
STM32+HC05串口蓝牙设计简易的蓝牙音箱
基于STM32F103设计的智能门锁(支持多种开锁解锁方式)
完整项目源码下载地址: https://download.csdn.net/download/xiaolong1126626497/19101807
DS小龙哥
2022/01/12
3.2K0
基于STM32F103设计的智能门锁(支持多种开锁解锁方式)
STM32–RFID无线射频技术(RC522刷卡模块)
 射频识别,即RFID是Radio Frequency Ident ificat ion的缩写,又称无线射频识别,是一.种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。一套完整RFID硬件统由Reader 与Transponder 两部份组成,其动作原理为由Reader 发射一特定频率之无限电波能量给Transponder,用以驱动Transponder电路将內部之ID Code送出,此时Reader便接收此ID Code Transponder的特殊在于免用电池、免接触、免刷卡故不怕脏污,且晶片密码为世界唯一无法复制, 安全性高、长寿命。
全栈程序员站长
2022/09/17
3.5K0
STM32–RFID无线射频技术(RC522刷卡模块)
STM32项目设计:基于STM32F4的电子阅读器制作教程[通俗易懂]
哔哩哔哩视频链接:https://www.bilibili.com/video/BV1Y64y1f7Ji/代码资料链接:https://download.csdn.net/download/mbs520/13510169 百度网盘资料链接:https://pan.baidu.com/s/1NHRFNa8Qn7M286kv4WnHKA 提取码:abcd 电子小说阅读器v1.2版本:修复闪屏,导入图书失败等BUG https://download.csdn.net/download/mbs520/85055345 取走记得点赞
全栈程序员站长
2022/11/10
1.4K0
STM32项目设计:基于STM32F4的电子阅读器制作教程[通俗易懂]
基于STM32设计的老人防摔倒报警设备(OneNet)
我国独生子女,以及人口老龄化等问题,正逐渐成为一个重大的社会问题,老年人机体能力的下降,摔倒引起的安全和危害愈来愈突出,国家和社会越来越关注老年人的健康和安全,开发一个能够实时检测出老年人是否摔倒,并且能及时告知监护人的摔倒检测以及报警系统具有重要的现实意义。本系统包括检测摔倒模块、GPS定位模块和通信模块三部分,通过检测老年人日常状态,可以得知老年人的状态,如果监测到老年人摔倒了,此时会通过网络把检测结果发出,获得老年人摔倒地点的GPS定位,并且通过GPRS通讯发短信给预设的监护人。
DS小龙哥
2022/09/19
5K0
基于STM32设计的老人防摔倒报警设备(OneNet)
STM32+SIM800C采用MQTT协议登录OneNet上传温湿度、MQ2烟雾浓度、GPS数据
MQTT协议采用OneNet的旧版协议,登录OneNet控制台创建应用时要选择旧版本。
DS小龙哥
2022/01/17
2.1K0
STM32+SIM800C采用MQTT协议登录OneNet上传温湿度、MQ2烟雾浓度、GPS数据
关于STM32空闲中断
有一次做一个东西,为了尽量不占用CPU的处理数据时间,所以就使用DMA接收串口的数据,但是呢问题来了.,,,,,怎么样才能确定接收到了一条完整的数据了,,我们都知道只要打开DMA 那家伙就不停的把接收的数据放到我们指定的地方. 只要接收到一条完整的数据我就该去处理了 关于空闲中断,,,就是说每接收到一条完整的数据就会置位空闲标志位,我们只需要判断空闲标志位是否置一,,就能知道是不是接收到了一条完整的数据 用空闲中断的好处就是,,对于以前我写程序通信都会在数据的后面加上尾,,然后另一个接收的单片机通过判断数据
杨奉武
2018/04/18
9380
关于STM32空闲中断
(十三)STM32——串口通信(UART)
目录 学习目标 内容 通信方法 并行通信 串行通信 通信方向 通信方式  UART 特点 串口参数 通信流程 寄存器 USART_SR USART_DR  USART_BRR 过程 代码 运行结果 运行结果 遇到的问题 总结  ---- 学习目标         本节我们要学习的的是STM32的通信部分,主要介绍UART(通用异步收发器),是一种异步、全双工的通信方式。 内容         首先,我们先来介绍一下通信的基本知识,之前在51单片机的学习中我们也接触过UART,在此就不做详细介绍,感兴
小点点
2022/12/12
1.8K0
(十三)STM32——串口通信(UART)
基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
DS小龙哥
2022/01/12
1.9K0
基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)
(46)STM32——FATFS文件系统实验
目录 学习目标 运行结果 文件系统 常用系统 FATFS 特点 结构图 移植步骤 disk_initialize disk_status  disk_read  disk_write disk_ioctl get_fattime 代码 总结  ---- 学习目标         我们要来介绍的是FATFS文件系统,这是一个为嵌入式设计的文件系统,甚至8051系列也可以使用,好了,我们开始介绍吧! 运行结果 文件系统         负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
小点点
2022/12/12
9980
(46)STM32——FATFS文件系统实验
基于STM32动态密码锁(手机APP)_2022
前一版设计了一款物联网的密码锁,采用MQTT协议连接物联网服务器进行交互,这一版是本地动态密码锁。采用局域网方式完成网络连接,与门锁进行交互,通信设置,生成密码种子,进行动态密匙比对。 这款智能电子密码锁,以STM32单片机为主控制器,由触摸矩阵键盘、ESP8266、步进电机等模块组成,具有手机APP控制、随机密码生成等功能。
DS小龙哥
2022/09/23
1.1K0
基于STM32动态密码锁(手机APP)_2022
(33)STM32——485实验笔记
目录 学习目标 内容 串口  485 特点 收发器 配置 代码 总结  ---- 学习目标         本节内容我们要学习的是485通信,这个是在51上没有的,但是知识不是特别复杂,而且和我们之前学的串口知识是相似的。 内容 串口  串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯及设备控制。 典型的串行通讯标准是RS232和RS485
小点点
2022/12/12
6220
(33)STM32——485实验笔记
基于STM32设计的智能插座+人体感应灯(ESP8266+人体感应+手机APP)
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
DS小龙哥
2022/01/12
2.9K0
基于STM32设计的智能插座+人体感应灯(ESP8266+人体感应+手机APP)
基于STM32无人超市消费系统设计
针对传统超市购物车结账排队时间长、付款效率低的问题,提出了一种更符合现代社会人们购物方式-基于RFID的自助收银系统。习惯了快节奏生活的人们都会选择自助收银机结账,理由显而易见:自助收银机结账很方便,几乎不用排队,也不用近距离和收银员接触,在防疫时期特别感觉安心。而且自助结账对每件物品的售价更是一次清晰地核对,最终需支付合计购物支出自己也更加清晰明了;这两年来,越来越多的智能设备应用在我们的生活领域里,为我们的生活提供了很多智能和便利。自助收银机从几年前就陆续涌入到各地商场、超市、便利店,自去年疫情发生后自助收银的需求比例更是呈直线上升趋势。自助收银机的启用,不仅节约了超市的人力开支成本,也从根本上提升了超市的购物支付效率,在这个快节奏的社会里,智能自助收银机也从根本上提升了超市等购物场所的服务质量。
DS小龙哥
2022/09/16
2.6K0
基于STM32无人超市消费系统设计
STM32F407 串口配置步骤
介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
DS小龙哥
2023/07/08
6340
STM32F407 串口配置步骤
基于STM32的串口收发讲解(标准库)
串口(UART通用异步收发器,TTL)通讯是一种设备间的串行全双工通讯方式。由于UART是异步传输,没有传输同步时钟,为了保证数据的正确性,UART采用16倍数据波特率的时钟进行采样。因为它简便捷,因此大部分电子设备都支持该通讯方式工程师在调试设备时也经常使用该方式输出调试信息。 本文详细的介绍如何来编写一个串口收发程序,我们采用常用的收发逻辑,发送直接编写函数进行实现,而接收使用中断进行完成。接收中断使用接收到一个字节和一帧数据两种中断触发方式。
跋扈洋
2022/12/03
2.6K0
基于STM32的串口收发讲解(标准库)
基于STM32设计的酒驾报警系统
随着社会的发展和人们生活水平的提高,汽车已经成为人们出行的主要代步工具,与此同时,酒后驾车所引发的事故越来越多,对人们的生命安全带来了威胁。为了控制酒后驾车,本文设计了一款能够安装在车辆驾驶室内的酒后驾车监测系统。
DS小龙哥
2022/09/16
1.1K0
基于STM32设计的酒驾报警系统
STM32调试串口
在嵌入式中,很多MCU和外设模块都集成有UART外设。STM32F103有3个通用同步异步收发器(Universal synchronous asynchronous receiver transmitter,USART),2个通用同步异步收发器(Universal asynchronous receiver transmitter,UART)。USART和UART的主要区别在于,USART支持同步通信,该模式有一根时钟线提供时钟。串口在嵌入式中经常使用,一般使用UART就足够了,常见的用途如下:
韦东山
2022/05/05
1.7K0
STM32调试串口
相关推荐
(47)STM32——汉字显示实验(基于正点原子F407)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验