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的。

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

  • 42
    点赞
  • 300
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 46
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西邮小菜机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值