STM32与人体红外感应模块的简单使用——入门级

Posted stmplayer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32与人体红外感应模块的简单使用——入门级相关的知识,希望对你有一定的参考价值。

工作原理

人体有恒定的温度,可以发出10UM的红外波,而人体红外感应模块就可以探测出这些红外波,从而产生电平转换。由此人们可以使用人体红外检测模块来检测是否有人。

模块工作环境

  1. 工作电压:5V至20V
  2. 电平输出:高3.3V,低0V
  3. 延时时间:0.3秒~18秒(可以自己进行调节)
  4. 触发方式:L不可重复,H可重复,默认值为H
  5. 测量距离:3米~8米

触发方式

L不可重复,H可重复。可跳线选择,默认为H。
不可重复触发方式:即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。
重复触发方式: 即感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平。

调节测量距离及感应延时

1、调节距离电位器顺时针旋转,感应距离增大(约 8 米),反之,感应距离减小(约 3 米)。
2、调节延时电位器顺时针旋转,感应延时加长(约300S),反之,感应延时减短(约 0.5S)。

模块特点

功耗低,造价便宜,易受热源,光源干扰,室温接近于人体温度时,该模块会短暂失灵,不能非常精确的检测是否有人存在。

 

了解了该模块简单知识后,下来开始简单的使用一下该模块。实验现象是如果监测到有人存在时,LED0灭掉,未检测到人时,LED0亮。如下图(模块的OUT口连接PA6,接线过于简单,不展示):

检测是否有人的主要代码:

	while(1)
		{
			u8 value;
			value=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6); 
			if(value == 0)
			{
				GPIO_ResetBits(GPIOA,GPIO_Pin_8);    //有人灭灯
			}
			else
				GPIO_SetBits(GPIOA,GPIO_Pin_8);      //没有人亮灯
		};

PA6初始化代码:

#ifndef __RED_H
#define __RED_H	 
#include "sys.h"
 
 
#define PA6 PAout(6)	
 
void RED_Init(void);
 
 				    
#endif
#include "red.h"
 
void RED_Init()
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	 	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 	//初始化设置为输入状态 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOA,GPIO_Pin_6);
}

记得调用正点原子自带的led.h文件里的led_Init()函数,不然LED0是不会亮的,它里面包含了PA8引脚的初始化,单片机内部默认PA8是控制LED0的。

需要解决问题的话私聊或者留言都可以。

以上是关于STM32与人体红外感应模块的简单使用——入门级的主要内容,如果未能解决你的问题,请参考以下文章

光敏,红外,人体红外检测模块的模拟输出(ADC)实验——入门

树莓派连接人体红外感应模块HC-SR501

HC-SR501红外人体传感模块封锁时间调整

HC-SR501红外人体传感模块封锁时间调整

HC-SR501红外人体传感模块封锁时间调整

基于STM32热释人体感应智能门禁报警系统设计-毕业设计资料