零基础STM32单片机编程入门(三十九) 多传感器模块之NFC刷卡开门实战源码

devtools/2024/9/24 10:55:47/

文章目录

    • 一.概要
    • 二.实验原理
    • 三.实验控制流程
    • 四.STM32单片机刷卡开门实验(RC522刷卡模块+SG90舵机)
    • 五.CubeMX工程源代码下载
    • 六.实验效果
    • 七.小结

一.概要

NFC技术作为一种近距离无线通信技术,具有安全、便捷、高效的特点。随着智能手机的普及和移动支付的发展,NFC技术在支付、门禁、公交、物流等领域得到了广泛应用。据相关数据显示,未来几年,NFC技术的市场规模将持续扩大,为创业者们提供了广阔的市场空间。
本文就做了一个简单刷卡开门的系统,采用STM32F103C8T6单片机+RC522刷卡模块+SG90舵机,来演示刷卡看门的效果。

二.实验原理

硬件连接原理框图如下:

在这里插入图片描述

各传感器模块简介:

RC522 刷卡模块是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员,是NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读卡器芯片。
刷卡模块介绍文章:
RC522介绍链接地址

SG90舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易驱动起来。

SG90舵机模块介绍文章:
SG90舵机介绍链接地址

三.实验控制流程

STM32F103C8T6单片机上电后,舵机先转到0度,单片机不停采集RC522的刷卡信息,如果RC522寻到卡了,单片机驱动舵机旋转到180度,如果2秒后没有寻到卡,舵机再旋转到0度。

四.STM32单片机刷卡开门实验(RC522刷卡模块+SG90舵机)

1.用杜邦线连接板子跟刷卡模块:
开发板3.3V          <->模块VCC
开发板A4脚          <->模块SDA
开发板A5脚          <->模块SCK
开发板A6脚          <->模块MISO
开发板A7脚          <->模块MOSI
开发板GND           <->模块GND 
开发板3.3V          <->模块RST 2.板子与SG90舵机(180度舵机)用杜邦线连接:
板子5V----红色线
板子B4----橙色线(跟单独舵机实验的时候接线不一样,A6脚被刷卡模块占用了)
板子G-----棕色线

在这里插入图片描述

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F103C8,再双击就创建新的工程
在这里插入图片描述
配置下载口引脚
在这里插入图片描述
配置外部晶振引脚
在这里插入图片描述

配置系统主频
在这里插入图片描述
配置SPI1
在这里插入图片描述
配置PB4 PWM输出
在这里插入图片描述

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述
添加代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主要程序:

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_SPI1_Init();MX_TIM3_Init();/* USER CODE BEGIN 2 */MFRC522_Init();//RC522初始化Pluse_Time=500;//0.5ms高电平脉冲,用于控制舵机转到0度HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);//PWM停止输出MX_TIM3_Init();//重新初始化配置PWM波if (HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1) != HAL_OK)//PA6脚PWM输出{/* PWM generation Error */while(1);}HAL_Delay(300);//等待300msHAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);//PWM停止输出	/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(100);//等待100毫秒Timer++;if(Timer>=20)//2秒内没有刷卡,舵机转到0度{Timer=0;Pluse_Time=500;//0.5ms高电平脉冲,用于控制舵机转到0度HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);//PWM停止输出MX_TIM3_Init();//重新初始化配置PWM波if (HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1) != HAL_OK)//PA6脚PWM输出{/* PWM generation Error */while(1);}HAL_Delay(300);//等待300msHAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);//PWM停止输出	}if (!MFRC522_Request(PICC_REQIDL, str)) {//寻卡if (!MFRC522_Anticoll(str)) {//获得卡序列号Timer=0;//舵机转到0度的计数清0//找到卡,舵机翻转到180度Pluse_Time=2500;//高电平时间=2.5ms,旋转到180度MX_TIM3_Init();//重新初始化配置PWM波if (HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1) != HAL_OK)//PA6脚PWM输出{/* PWM generation Error */while(1);}HAL_Delay(500);//等待500ms}}}/* USER CODE END 3 */
}

五.CubeMX工程源代码下载

通过百度网盘分享的文件:40.刷卡开门实验(RC522模块+舵机).rar
链接:https://pan.baidu.com/s/1ADqoK6KLaLvvMoJHrrxVgg
提取码:mz7j

如果链接失效,可以联系博主给最新链接
程序下载下来之后解压就行

CSDN代码链接

六.实验效果

STM32F103C8T6+RC522+SG90舵机刷卡开门

七.小结

‌NFC刷卡应用前景广阔,涵盖了多个领域,包括移动支付、门禁管理、智能公交系统等,具有显著的优势和广阔的发展前景。


http://www.ppmy.cn/devtools/98750.html

相关文章

k8s学习(三十八) 使用OpenTelemetry+jaeger实现链路追踪

文章目录 前言一、安装jaeger二、安装cert-manager三、安装OpenTelemetry Operator四、配置 OpenTelemetry Collector五、配置 Instrumentation六、编写java示例程序并测试调用链跟踪 前言 OpenTelemetry 可以用于从应用程序收集数据。它是一组工具、API 和 SDK 集合&#xff…

【CSP:202305-2】矩阵运算(Java)

题目链接 202305-2 矩阵运算 题目描述 求解思路 调整矩阵运算的顺序&#xff1a;根据矩阵运算符合结合律这一特点&#xff0c;对运算式的顺序进行调整。根据题目给出的数据范围&#xff0c;我们可以先将 K T ( d ∗ n ) K^T(d*n) KT(d∗n) 矩阵和 V ( n ∗ d ) V(n*d) V(n…

MySQL表涉及规范

MySQL表设计规范是为了确保数据库表结构的合理性、可读性和可维护性。以下是一些建议和规范&#xff1a; 1.使用InnoDB存储引擎&#xff1a;InnoDB存储引擎提供了事务支持、行级锁定和外键约束&#xff0c;有助于提高数据的完整性和性能。 2.表名和字段名命名规范&#xff1a…

苹果手机mov转mp4:一键转换,轻松享受!

视频凭借其直观生动的形式&#xff0c;已经深深融入我们的日常生活之中&#xff0c;成为我们记录生活、分享情感、学习娱乐的重要媒介。作为市场上最受欢迎的智能手机品牌之一&#xff0c;苹果手机以其卓越的拍摄性能&#xff0c;为用户捕捉了无数精彩瞬间&#xff0c;而其拍摄…

ACCESS 工具注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全&#xff0c;通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞&#xff0c;攻击者通过输入特定的SQL代码片段来操纵数据库查询&#xff0c;从而绕过应用程序的安全机制&#xff0c;获取…

haproxy编译安装

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

uniapp 地图map画出地市轮廓

最近做uniapp项目 H5微信小程序&#xff0c;需要在地图中打点并把相对应的区域轮廓给画出来。 首先查看uniapp官方文档&#xff1a;https://uniapp.dcloud.net.cn/component/map.html 想在uniapp中使用map直接写map标签即可 <view class"page-section page-section-…

Redhat8 搭建Zabbix6(一)安装

文章目录 写在前面版本的选择简述 程序安装预先支持文件PHP安装MySQL安装Zabbix 安装数据库部分配置Zabbix 服务配置前端配置 写在前面 版本的选择 6.0版本与5.0版本缺少了聚合图形的构件 6.0版本在拓扑图流量显示与5.0版本也存在于变化 之前安装6.4版本流量显示发觉有一些问…