STM32F407与HC-SR501(热释电传感器)
配置环境
需要以下几点
- ADC读取电平值
- 电平变换后输出引脚
- 串口(方便调试这里不进行赘述)
配置CubeMx
- system core -> sys -> 改为serial wire
- RCC改为外部晶振
- 选择ADC1,IN5
- 进行如下配置
选择连续模式打开,并且EOC模式选择ALL 选择串口USART1,异步触发模式
配置GPIO引脚,这里我选的是PF0 总引脚配置图
原理解释
HC-SR501有三个引脚,分别是VCC,GEN,OUT。 当其监测到人物活动时,输出引脚输出高电平,这是我们可以用ADC进行采集并判断,将结果通过PB0的输出引脚进行反馈。
代码
HAL_ADC_Start(&hadc1);
while (1)
{
int ret;
char str[64];
HAL_ADC_PollForConversion(&hadc1,HAL_MAX_DELAY);
ret=HAL_ADC_GetValue(&hadc1);
sprintf(str,"%f\r\n",(ret*3.3)/4095);
HAL_UART_Transmit(&huart1,(uint8_t*)str,strlen(str),HAL_MAX_DELAY);
if((ret*3.3)/4095>3){
HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin,GPIO_PIN_SET);
HAL_Delay(10000);
}else{
HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin,GPIO_PIN_RESET);
}
}
#include "stdio.h"
#include "string.h"
注意头文件调用 每天努力一点点,诶嘿!
|