STM32实现红外感应传感器功能

2023-11-07

原理

人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10um 左右的红外线。人体发射的 10um 左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路检测处理后就能产生报警信号。

实物图(正反面)

型号:HC-SR50
在这里插入图片描述

传感器特性

工作电压范围 直流电压 4.5-20V
电平输出 高 3.3 V /低 0V
触发方式 L 不可重复触发/H 重复触发
延时时间 0.5-200S(可调)
封锁时间 2.5S(默认)可制作范围零点几秒-几十秒
感应范围 3米到7米

实验

全自动感应 :人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出 0-3 次,一分钟后进入待机状态。

如果检测到红外,则LED灯亮,否则灭。
模块数据输出接到PA4

  • 中断功能
  • 配置中断向量控制器NVIC
  • 配置外部中断口
  • 实现中断函数

中断控制器

#define SR501_INT_GPIO_PORT         GPIOA
#define SR501_INT_GPIO_CLK          (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO)
#define SR501_INT_GPIO_PIN          GPIO_Pin_4

#define SR501_INT_EXTI_PORTSOURCE   GPIO_PortSourceGPIOA
#define SR501_INT_EXTI_PINSOURCE    GPIO_PinSource4
#define SR501_INT_EXTI_LINE         EXTI_Line4
#define SR501_INT_EXTI_IRQ          EXTI4_IRQn

#define SR501_IRQHandler            EXTI4_IRQHandler


//嵌套中断向量控制器
static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  /* 中断控制器组*/
  NVIC_InitStructure.NVIC_IRQChannel = SR501_INT_EXTI_IRQ;//外部中断线
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  /*优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  /* 子优先级*/
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  /* 使能 */
  NVIC_Init(&NVIC_InitStructure);
}

外部中断口

//IO 为EXIT外部中断口
void EXTI_SR501_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;
	
	RCC_APB2PeriphClockCmd(SR501_INT_GPIO_CLK,ENABLE);/*时钟*/											
	NVIC_Configuration();/* 配置NVIC中断*/
	
    GPIO_InitStructure.GPIO_Pin = SR501_INT_GPIO_PIN;//gpioy引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  /*输入方式 浮空 */	
    GPIO_Init(SR501_INT_GPIO_PORT, &GPIO_InitStructure);

	/* 信号源 */
    GPIO_EXTILineConfig(SR501_INT_EXTI_PORTSOURCE, SR501_INT_EXTI_PINSOURCE); 
    EXTI_InitStructure.EXTI_Line = SR501_INT_EXTI_LINE;//中断线
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	/* 中断模式 */
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;/* 上升沿 */
    EXTI_InitStructure.EXTI_LineCmd = ENABLE; /* 使能 */	
    EXTI_Init(&EXTI_InitStructure);
}

中断函数

void SR501_IRQHandler(void)
{
	if(EXTI_GetITStatus(SR501_INT_EXTI_LINE) != RESET) 
	{
		LED1_TOGGLE;
		EXTI_ClearITPendingBit(SR501_INT_EXTI_LINE);     
	}  
}

LED灯配置

#define LED1_GPIO_PORT    	GPIOB			         
#define LED1_GPIO_CLK 	    RCC_APB2Periph_GPIOB	
#define LED1_GPIO_PIN		GPIO_Pin_5			

void LED_GPIO_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK , ENABLE);
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);	
		GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
}

主函数

int main(void)
{
	LED_GPIO_Config();
	EXTI_SR501_Config(); 	
	while(1)                            
	{
	}
}

参考
野火-HC-SR501人体红外感应模块热释电红外传感器.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32实现红外感应传感器功能 的相关文章

  • 刷脸支付赋予日常场景更多的功能和应用

    刷脸支付推出将近一年 已广泛应用于餐饮零售等商业场景 据预测 2019年POS机总保有量约为5000万台 这也意味着刷脸支付至少有500亿的市场空间 不少连锁餐饮品牌相继引入刷脸支付收银机 除了可以提升收银效率 还可以通过打通线上线下 平台

随机推荐

  • 【数据集】目标检测常用数据集

    一个性能优良 极度完美的数据集 具有较小偏差的大数据集 对于计算机视觉领域算法的研究是很重要的 具体非常重要的作用 在目标检测中 知名的数据集一个接着一个的被发布 被公开 被广大研究者使用 本文是总结目标检测领域的权威数据集 既总结也供有需
  • location protocol 属性(http、https)

    location protocol 属性 protocol 属性是一个可读可写的字符串 可设置或返回当前 URL 的协议 语法 location protocol location protocol http 使用场景 vue配置api地址
  • 部署CDN的网站如何找真实IP

    部署CDN的网站找真实IP 1 概述 目前很多网站使用了cdn服务 用了此服务 可以隐藏服务器的真实IP 加速网站静态文件的访问 而且你请求网站服务时 cdn服务会根据你所在的地区 选择合适的线路给予你访问 由此达网站加速的效果 cdn不仅
  • Java面向对象编程

    如下SQL语句中 可能返回null值 1 select count from t1 2 select max col1 from t1 3 select concat max max col1 from t1 A 1 可能 2 和 3 不可
  • 费杰:产品经理修炼之道

    前言 写在 产品经理修炼之道 之前 由于市场对产品经理的需求量增加 加之媒体把产品经理的重要性放大 于是导致大量人员涌进产品经理队伍 但是由于行业本身还不是很成熟 各个企业对产品经理的认识不够深入 大量产品经理处于尴尬的境地 产品经理岗位对
  • StringUtils的方法详解

    StringUtils方法详解 前言 方法详解 字符串为null或空的判断 空字符串的判断 trim相关方法 去除字符串两端指定的字符串 前言 StringUtils是一个处理字符串非常强大的类 能够让我们在处理字符串时少写很多代码 方法详
  • 解决excel导入异常:org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be

    记录一下开发中使用POI中的HSSFWorkbook来读取Excel数据时 遇到的 excel 导入出现的异常问题 先上部分解析代码 获取excel文件流 POIFSFileSystem fileSystem new POIFSFileSy
  • 解决Ubuntu中you are in emergency mode(紧急模式)问题

    我安装的ubuntu18 04 win10的双系统 不知道为什么我的ubuntu开机出现you are in emergency mode 有人说是未正常关键导致 但是我关机都是shutdown 我们现在来解决you are in emer
  • 【CSS】CSS 选择器

    CSS 选择器 1 基础选择器 1 1 元素选择器 语法 标签名 元素选择器会选中对应标签名的HTML元素 例如 p div span 等 1 2 类选择器 语法 类名 类选择器会选中class属性为指定类名的HTML元素 例如 div c
  • 29岁,转行python,一举拿下14k的offer,高薪方法太绝了

    前言 我转行之前从事的工作是商场管理 努力了4年左右的时间才做到楼层经理 但是工资太低并且事情太多 薪资才6K 我的工作需要东奔西跑 每次前往下一个工作地点的时候 我就在想我真的喜欢这种生活吗 偶然有一天 在微信平台上看到的一则Python
  • 美通企业日报

    今日要闻 2019中国最佳表现城市排行榜发布 世界著名智库米尔
  • 【C语言程序设计】学生信息管理系统

    目录 一 实验任务 二 实验代码 三 运行效果 一 实验任务 学生信息管理系统设计 学生信息包括 学号 姓名 年龄 性别 出生年月 地址 电话 E mail等 试设计一学生信息管理系统 使之能提供以下功能 1 系统以菜单方式工作 2 学生信
  • Python 1——温度转换代码分析

    Python 1 主要参考中国大学MOOC 北京理工大学课程 TempConvert2 py 注释 TempStr input 请输入带有符号的温度值 if TempStr 1 in F f C eval TempStr 0 1 32 1
  • c语言程序设计薪水,C语言程序设计  输入10名职工的职工号和工资,计算平均工资并输出低于平均工资的职工号和工资。...

    满意答案 偶要蟹黄堡 2013 11 24 采纳率 40 等级 12 已帮助 6292人 我给你编写了一个简单的 你自己参考一下 自己润色吧 include typedef struct employee char employee num
  • GNSS系列(1)------GNSS坐标系转换

    由于工作需要 最近开启了GNSS系列文章的撰写工作 发布于公司官网 现将其同步至CSDN 原文链接 http onemo10086 com school article 165 GNSS定位不准确 漂移了好几公里 是怎么回事呢 相信有不少用
  • Unity窗口标题栏显示项目路径

    Unity项目开发过程中会有主干分支等等很多版本 同时打开多个项目时无法区分各个Unity窗口是哪个版本 可以把项目完整路径设置到窗口标题栏方便区分 方法如下 UpdateUnityEditorProcess cs using System
  • 类 模板 已经声明为非类 模板

    类 模板 已经声明为非类 模板 解决方案 原因是在当前包下 已经定义了AA类 解决方案 更改模板类AA的类名
  • Linux系统环境搭建

    一 VM虚拟机创建步骤 1 打开VM点击新创建虚拟机 一直点击下一步到下图显示这里 然后点击自定义硬件 选择IOS映像文件 选择映像文件后点击关闭 然后启动虚拟机 点击连接网络开关 显示已连接后 点击开始安装虚拟机 设置密码 安装完成后点击
  • Ubuntu 生成core文件

    man core 命令 可查阅关于core dump file的详细信息 下文是我的一些总结 core dump file 是进程终止时的内存映像 是个磁盘文件 可用来调试 但是有时程序显示 段错误 核心已转储 时 并没有生成core文件
  • STM32实现红外感应传感器功能

    原理 人体都有恒定的体温 一般在 37 度 所以会发出特定波长 10um 左右的红外线 人体发射的 10um 左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上 这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡 向外释放电荷 后