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

文章目录

一.概要

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打开工程

添加代码


主要程序:

c 复制代码
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);//等待300ms
	HAL_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);//等待300ms
				HAL_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刷卡应用前景广阔,涵盖了多个领域,包括移动支付、门禁管理、智能公交系统等,具有显著的优势和广阔的发展前景。

相关推荐
启明云端wireless-tag2 分钟前
ESP32无线WiFi蓝牙SOC,设备物联网通信方案,启明云端乐鑫代理商
嵌入式硬件·物联网·wifi·esp32·乐鑫·wifi模组
小狗爱吃黄桃罐头26 分钟前
江协科技STM32学习- P14 示例程序(定时器定时中断和定时器外部时钟)
stm32·江科大stm32
@@庆1 小时前
stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)
stm32·单片机·嵌入式硬件
JT灬新一1 小时前
STM32巡回研讨会总结(2024)
stm32·单片机·嵌入式硬件
爱桥代码的程序媛2 小时前
鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之瑞芯微RK3568移植案例
嵌入式硬件·harmonyos·鸿蒙·鸿蒙系统·移植·openharmony·鸿蒙开发
Whappy0012 小时前
51单片机-DA(数字转模拟)
单片机·嵌入式硬件·51单片机
鸽子汤1972 小时前
想高效开发?从文件系统开始着手。。。
嵌入式硬件·物联网·硬件工程
Whappy0012 小时前
51单片机-AD(模拟信号转数字信号)-实验()
单片机·嵌入式硬件·51单片机
redcocal12 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘