【stm32简单外设篇】- HC-SR501 / 人体红外被动红外传感器

一、适用场景

适用场景:人体/运动检测(入侵报警、走廊/楼道自动照明、智能家居存在检测、节能灯控、触发录像/抓拍、嵌入式低功耗唤醒实验)。

二、器材清单

HC-SR501 PIR 模块 ×1

stm32f103(或其它 STM32)开发板 ×1

若干杜邦线(公对母)×1组

5V 稳压电源(若模块标注 5V)×1(注意部分模块可 3.3V 工作)

三、工作原理(要点)

PIR(被动红外)探测:传感器通过焦平面上的热释电探测元件感知环境红外辐射的瞬时变化(如人体移动引起的红外对比变化),模块内部放大并经过比较器/整形输出高电平脉冲表示检测到"运动/人体通过"。

输出逻辑:模块在检测到活动时 DATA 输出高电平(且保持 TIME 设定的大约 5s--300s 之间);若选择非重复触发或短触发模式,输出可能只在第一次检测到活动时产生脉冲。输出为 TTL 级别(高电平约接近 VCC),不同模块在 5V/3.3V 下表现不同,接入 MCU 前请确认电压兼容性或使用分压/电平转换。

四、接线示意
VCC → +5V

GND → GND

标准库

PA1 →out

HAL库

PA1 →out

五、示例代码

标准库

cpp 复制代码
#include "stm32f10x.h"
#include "stdio.h"
#include "bsp_SysTick.h"
#include "bsp_usart.h"


void gpio_init()
{
	GPIO_InitTypeDef PA;
	
	//使能时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

	
	PA.GPIO_Pin = GPIO_Pin_1;
//	PA.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	PA.GPIO_Mode = GPIO_Mode_IPD;
	GPIO_Init(GPIOA,&PA);
}


int main()
{
	USART_Config();
	SysTick_Init();
	gpio_init();
	while(1)
	{
		if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == SET)
		{
			Usart_SendString(USART1,"come on\n");
		}else
		{
			Usart_SendString(USART1,"leave\n");
		}
		Delay_us(1000000);
	}
//	return 0;
}

HAL库

cpp 复制代码
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)
			HAL_UART_Transmit(&huart1,"有人路过\r\n", strlen("有人路过\r\n"), HAL_MAX_DELAY);
		else
			HAL_UART_Transmit(&huart1,"无人路过\r\n", strlen("无人路过\r\n"), HAL_MAX_DELAY);
		HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

六、讲解视频

https://www.bilibili.com/video/BV1Km1LBiEHi/?spm_id_from=333.1387.upload.video_card.click&vd_source=f7dfe1b14f260b9cc3a146d2dbfd0719

摘要:本文介绍了如何在 STM32 上使用 EC11 增量式旋转编码器(带按键):适用场景、器材清单、正交编码工作原理、接线方式,以及推荐的 TIM 硬件编码器模式与通用的 EXTI+状态机软件解码实现。提供了按键去抖与短/长按判定示例,并列出实战注意点(去抖、计数器回绕、分辨率选择与安装细节),适合用于嵌入式 UI 与参数控制场景。

相关推荐
m0_591338912 小时前
day8鹏哥C语言--函数
c语言·开发语言·算法
oplp2 小时前
回过头来重新对C语言进行深度学习(一)
c语言·开发语言
_infinite_2 小时前
STM32串口配置
stm32·单片机·嵌入式硬件
XINVRY-FPGA2 小时前
XC7Z020-1CLG484I Xilinx AMD FPGA Zynq-7000 SoC
arm开发·嵌入式硬件·网络协议·fpga开发·硬件工程·信号处理·fpga
电子硬件笔记3 小时前
嵌入式硬件:如何理解高频电子线路,从入门开始
嵌入式硬件·硬件架构·硬件工程·嵌入式实时数据库
EVERSPIN3 小时前
推荐高性能MCU微控制器N32H785EC(MCU单片机特征)
单片机·嵌入式硬件·微控制器·mcu微控制器·mcu单片机
d111111111d4 小时前
STM32外设学习--TIM定时器--输入捕获---测频方法。
stm32·单片机·学习
xskukuku4 小时前
华为技术有限公司 C语言编程规范
c语言·嵌入式
光子物联单片机5 小时前
C语言基础开发入门系列(八)C语言指针的理解与实战
c语言·开发语言·stm32·单片机·mcu