本文主要介绍基于STM32F103C8T6和人体红外感应开关实现的控制算法
简介
人体红外模块选用HC-SR501人体红外传感器,人体红外感应的主要器件为人体热释电红外传感器。人体都有恒定的体温,一般在36~37度,所以会发出特定波长的红外线,被动式红外探头就是探测人体发射的红外线而进行工作的
该模块有3个引脚,:
(1)VCC:电源正,4.5V-20V电压,静态电流50uA
(2)GND:电源地
(3)OUT:信号输出,高电平3V3,低电平0V
对应引脚图如下:
人体红外传感器和STM32的接线方式见下表(输出脚接普通GPIO口即可,仅输入信号检测管脚)
STM32F103 | 人体红外传感器 |
---|---|
5V | VCC |
GND | GND |
B14 | OUT |
人体红外传感器初始化函数
c
void INFRARED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIO_B
//INFRARED IO 初始化
GPIO_InitStructure.GPIO_Pin = INFRARED ; //发送高点平引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //推挽输出
GPIO_Init(INFRARED_PORT, &GPIO_InitStructure);
GPIO_ResetBits(INFRARED_PORT,INFRARED );
}
人体红外传感器读取数据函数
c
if( GPIO_ReadInputDataBit(INFRARED_PORT,INFRARED) != RESET)
{
PBout(13)=0; //低电平有效
delay_ms(600);
PBout(13)=1; //低电平有效
delay_ms(2000);
}