STM32与人体红外感应模块的简单使用——入门级
Posted stmplayer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32与人体红外感应模块的简单使用——入门级相关的知识,希望对你有一定的参考价值。
工作原理
人体有恒定的温度,可以发出10UM的红外波,而人体红外感应模块就可以探测出这些红外波,从而产生电平转换。由此人们可以使用人体红外检测模块来检测是否有人。
模块工作环境
- 工作电压:5V至20V
- 电平输出:高3.3V,低0V
- 延时时间:0.3秒~18秒(可以自己进行调节)
- 触发方式:L不可重复,H可重复,默认值为H
- 测量距离: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与人体红外感应模块的简单使用——入门级的主要内容,如果未能解决你的问题,请参考以下文章