最近没事,整理东西时看到了之前买的HC-SR501人体红外感应模块,买回来一直没有用,所以就想着调试下看下好坏。同时,也做个笔记,不然后面用的时候忘记了还要重新翻找资料。
HC-SR501调试记录
一、HC-SR501检测原理
先说原理,HC-SR501有三个引脚:VCC、GND、OUT。将VCC和GND接好以后,人进入其感应范围OUT脚输出高电平, 人离开感应范围则自动延时关闭高电平,输出低电平。
二、STM32CubeMx配置
1、RCC开启外部高速时钟(略)
2、配置STLink调试口(略)
3、配置串口方便调试输出(略)
4、配置工程名、生成路径,之后生成工程(略)
(1-4步的基础配置可以参考前面的文章《STM32基础工程模板创建》)
5、配置GPIO输入
三种输入模式说明:
- 浮空输入:由于输入阻抗较大,一般把这种模式用于标准通信协议的 I2C、USAR 的接收端;
- 上拉输入:上拉输入就是把电位拉高,比如拉到 VCC
- 下拉输入:下拉输入就是把电压拉低,拉到 GND
简单的说,如果你希望你的引脚平时处于高电平用于检测低电平,你就使用 Pull-up。如果你希望你的引脚平时处于低电平用于检测高电平,你就使用 Pull-down。
上拉和下拉多用于按键输入等电路,具体用上拉和下拉还是需要根据实际电路设计进行选择。
三、代码编写
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
while (1)
{
HAL_Delay(1000);
if(GPIO_PIN_SET == HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1))
{
printf("------有人111111111\r\n");
}
else
{
printf("------没人222222222\r\n");
}
}
}
四、硬件连接
STM32 HC-SR501
3.3V 《----------------------》VCC
GND 《----------------------》GND
PA1 《-----------------------》OUT
五、运行效果
-
当HC-SR501探头前没有物体遮挡时,打印没人
-
用手遮挡HC-SR501探头,打印有人
-
把手移开3-4秒后继续打印没人