STM32智能门锁学习二,RFID刷卡解锁
目录
效果如图:
cube配置:
代码部分:
个人认为,这个比之前的按键解锁和蓝牙好玩哈哈哈哈==
效果如图:
首先,这个模块叫做RFID RC522射频模块,上面一共有8个引脚,其中IRQ引脚保持悬空即可,我们只需要接另外7个引脚。SDA引脚为数据接口,SCK引脚为时钟接口,MOSI引脚为SPI接口主出从入,MISO引脚为SPI接口主入从出,GND接地,RST为复位信号,3.3V接单片机3.3V。
这里涉及到SPI通讯协议,参考: (41条消息) SPI协议详解(图文并茂+超详细)_小麦大叔的博客-CSDN博客_spi协议
cube配置:
使能SPI功能,模式选择>Full-Duplex Master 全双工。
代码部分:
定义两个数组,一个是用来读取的卡号,一个存放自己正确的卡号,要想知道自己的卡号可以手机上下载一个软件NFC Writer可以读取自己卡片的信息,然后将其写入数组用于判断。
/* USER CODE BEGIN 1 */uint8_t readUid[5]; uint8_t UID[5]={0x43,0x58,0x36,0x84};//自己的卡号/* USER CODE END 1 */
进行RC522初始化
/* USER CODE BEGIN 2 */MFRC_Init();PCD_Reset();printf("RC522初始化成功\r\n");/* USER CODE END 2 */void MFRC_Init(void)
{RS522_NSS(1);RS522_RST(1);
}void PCD_Reset(void)//PCD复位
{/*硬复位*/RS522_RST(1);//用到复位引脚osDelay(2);RS522_RST(0);osDelay(2);RS522_RST(1);osDelay(2);/*软复位*/MFRC_WriteReg(MFRC_CommandReg, MFRC_RESETPHASE);osDelay(2);/*复位后的初始化配置*/MFRC_WriteReg(MFRC_ModeReg, 0x3D); //CRC初始值0x6363MFRC_WriteReg(MFRC_TReloadRegL, 30); //定时器重装值MFRC_WriteReg(MFRC_TReloadRegH, 0);MFRC_WriteReg(MFRC_TModeReg, 0x8D); //定时器设置MFRC_WriteReg(MFRC_TPrescalerReg, 0x3E); //定时器预分频值MFRC_WriteReg(MFRC_TxAutoReg, 0x40); //100%ASKPCD_AntennaOff(); //关天线osDelay(2);PCD_AntennaOn(); //开天线
}
while(1)中进行卡号比对,然后正确干什么,错误干什么:
读取卡号函数:
uint8_t readCard(uint8_t *readUid,void(*funCallBack)(void))
{uint8_t Temp[5];if (PCD_Request(0x52, Temp) == 0){if (PCD_Anticoll(readUid) == 0){if(funCallBack != NULL)funCallBack();return 0;} }return 1;
}
while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(!readCard(readUid,NULL)){printf("卡号:%x-%x-%x-%x\n",readUid[0],readUid[1],readUid[2],readUid[3]);if(!strncmp((char *)readUid,(char *)UID,4)){OLED_Clear();OLED_ShowCHinese(0,0,18); //卡OLED_ShowCHinese(20,0,19);//号OLED_ShowCHinese(40,0,10);//正OLED_ShowCHinese(60,0,11);//确OLED_ShowChar(80,0,'!',16);//!OLED_ShowCHinese(0,3,0); //门 OLED_ShowCHinese(20,3,1);//已OLED_ShowCHinese(40,3,4);//打OLED_ShowCHinese(60,3,5);//开OLED_ShowChar(80,3,'!',16);//! }else{OLED_Clear();OLED_ShowCHinese(0,0,18); //卡OLED_ShowCHinese(20,0,19);//号OLED_ShowCHinese(40,0,8);//错OLED_ShowCHinese(60,0,9);//误OLED_ShowChar(80,0,'!',16);//! }}HAL_Delay (500);}/* USER CODE END 3 */
/*PCD函数声明*/
void PCD_Init(void);
void PCD_Reset(void);
void PCD_AntennaOn(void);
void PCD_AntennaOff(void);
char PCD_Request(uint8_t RequestMode, uint8_t *pCardType); //寻卡,并返回卡的类型
char PCD_Anticoll(uint8_t *pSnr); //防冲突,返回卡号
char PCD_Select(uint8_t *pSnr); //选卡
char PCD_AuthState(uint8_t AuthMode, uint8_t BlockAddr, uint8_t *pKey, uint8_t *pSnr); //验证密码(密码A和密码B)
char PCD_WriteBlock(uint8_t BlockAddr, uint8_t *pData); //写数据
char PCD_ReadBlock(uint8_t BlockAddr, uint8_t *pData); //读数据
char PCD_Value(uint8_t mode, uint8_t BlockAddr, uint8_t *pValue);
char PCD_BakValue(uint8_t sourceBlockAddr, uint8_t goalBlockAddr);
char PCD_Halt(void);
void StartIDcardTask(void const * argument);
STM32智能门锁学习二,RFID刷卡解锁相关推荐
- 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告)
基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 文章目录 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 一.课题的背景及意义 二.国内外研究状况: 三.系统功能分析及体系 ...
- 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)
目录 一.项目功能 二.视频 三.原理图 4.材料选择 5.部分程序 资料下载地址:基于STM32的多功能门禁系统 一.项目功能 1.AS608指纹解锁:可以录入.删除.验证指纹: 2.密码解锁:可以 ...
- 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
基于STM32单片机智能RFID刷卡汽车位锁设计(论文) 摘要 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作 ...
- 75、基于STM32单片机RFID刷卡签到考勤门禁系统无线蓝牙/wifi设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.程序源码 七.资料包括 摘要 对于高校管理而言,学生考勤一直是不可忽视的 ...
- 基于STM32智能RFID刷卡汽车位锁控制系统设计
百度网盘下载地址(945):点击下载 前言: 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作用,深受车主的喜爱 ...
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
- STM32智能门锁学习一,按键解锁,蓝牙解锁、oled显示,步进电机
经历了电脑重装系统之后的第一篇博客== 这一章主要介绍薄膜按键,蓝牙模块,oled显示屏,还有步进电机的学习.(板子型号是stm32f103c8t6,基于HAL库) 目录 一.oled显示屏 二.步进 ...
- STM32--RFID无线射频技术(RC522刷卡模块)
文章目录 1.RFID的概念 2.RFID的工作原理 (1)RFID中间件的概念 (2)RFID中间件具有以下特点: (3)RFID中间件的意义: 3.RFID频率划分 (1)RFID低频特性 (2) ...
- LPC11C14刷卡门锁
目录 产品开发平台 产品使用方法 结构框图 产品运行流程 产品运行界面 程序源码 主函数 main.c 温度传感器驱动 dth11.h dth11.c OLED显示屏驱动 ascii.h spi.h ...
最新文章
- 在非互联网公司?!算法工程师的工作内容及心得建议
- STM32F103之FLASH组织
- 设计模式-静态工厂之服务提供者框架
- 大家放松下,仿《大腕》经典对白
- java BigDecimal八种舍入模式
- JVMTI标记如何影响GC暂停
- java 字符串转dom对象_xml类型的字符串转换为Dom对象
- 苹果本周四将发布 OS X Yosemite 公开测试版
- Jbpm工作流表补数记录
- pyspider all 只启动了_好程序员大数据分享Spark任务和集群启动流程
- pr基础操作与快捷键(基于pr cc 2017)
- 计算机类专业学习难度排行,大学最难学的十大专业排名
- Google I/O 2021: 在重要时刻提供帮助
- samtools从fastq到bam再到bigwig(bw)
- 傻子也能看懂的迪杰斯特拉算法(转)
- Android之Mob第三方短信验证服务
- metis 多线程图划分论文笔记
- Android基础入门教程——4.3.1 BroadcastReceiver牛刀小试
- 矢量数据下载【道路路网(公路、铁路)、水系、建筑物轮廓、地名等等】
- 怎样把计算机添加到网络打印机,电脑怎么添加打印机共享
热门文章
- 蓝桥杯练习题 Fibonacci数列
- el-pagination分页自定义前往第几页样式(下拉框形式)
- ps 索引模式 导出变成了白色背景
- Mybatis官方网站
- 软件评测师题库--操作系统基础知识
- 这些年我的不足(不够专注,不善于推迟满足感,阅读量不够……-无网不剩 http://t.cn/zOe1RPz)
- 解决绿C(C与C++程序设计学习与实验系统 2015)软件程序中文出现乱码问题
- eclipse 的RSE插件不错
- 怎样识别app网站服务器在国外,APP服务器你了解多少?什么是海外app服务器
- 分页符怎么删除,word不要的页面删不掉