基于STM32的HC-SR501红外感应模块驱动与应用

一、 简介
HC-SR501红外感应模块是一种常用的人体红外感应模块,常用于安防监控、智能家居等领域。本文将介绍如何在STM32单片机上驱动和应用HC-SR501红外感应模块,实现基本的人体检测功能。

二、 模块原理
HC-SR501红外感应模块基于红外热释电传感器(PIR sensor)原理,当检测到人体或其他热源时,输出高电平信号。该模块有延迟时间和重复触发时间两个可调节的螺旋调节器,可根据需求调节模块的灵敏度和触发后的输出信号时长。

三、 连接与驱动
1. 连接

连接HC-SR501模块至STM32单片机,将模块的OUT引脚连接至STM32的GPIO引脚,以接收感应模块的输出信号。同时,通过电源模块连接模块至单片机的供电引脚。

2. 驱动
在STM32的开发环境中,编写对HC-SR501模块的驱动程序。以下是一个简单的示例代码:

```c
#include "stm32f4xx.h"#define HC_SR501_PIN GPIO_PIN_0
#define HC_SR501_PORT GPIOAvoid HC_SR501_Init(void) {GPIO_InitTypeDef GPIO_InitStruct;__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin = HC_SR501_PIN;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(HC_SR501_PORT, &GPIO_InitStruct);
}int HC_SR501_Read(void) {return HAL_GPIO_ReadPin(HC_SR501_PORT, HC_SR501_PIN);
}void HC_SR501_Application(void) {while (1) {if (HC_SR501_Read()) {// 检测到人体,执行相应操作} else {// 未检测到人体,执行相应操作}}
}int main(void) {HC_SR501_Init();HC_SR501_Application();
}
```

以上代码中,首先初始化了GPIO引脚,然后在应用函数中不断读取感应模块的输出信号,根据输出信号执行不同的操作。

四、 应用示例
1. 基于HC-SR501红外感应模块的人体检测报警系统

通过连接HC-SR501模块至STM32单片机,并配合蜂鸣器或其他报警装置,可以实现一个简单的人体检测报警系统。当检测到人体时,系统触发报警装置,实现安防监控。

2. 基于HC-SR501红外感应模块的智能照明控制系统
将HC-SR501模块连接至STM32单片机,再连接至LED灯或其他照明设备,可以实现智能照明控制系统。当检测到人体时,系统自动开启照明设备,当未检测到人体时则关闭照明设备,实现智能节能控制。

以上是基于STM32的HC-SR501红外感应模块的驱动与应用的基本介绍,通过上述方法,可以实现针对不同场景的人体感应控制系统。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/294370.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java小案例-Sentinel的实现原理

前言 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 要想理解一个新的技…

NIO的实战教程(简单且高效)

1. 参考 建议按顺序阅读以下三篇文章 为什么NIO被称为同步非阻塞? Java IO 与 NIO:高效的输入输出操作探究 【Java.NIO】Selector,及SelectionKey 2. 实战 我们将模拟一个简单的HTTP服务器,它将响应客户端请求并返回一个固定的…

CSS(五) -- 动效实现(立体盒子旋转-四方体+正六边)

一. 四面立体旋转 正方形旋转 小程序中 wxss中 <!-- 背景 --><view class"dragon"><!--旋转物体位置--><view class"dragon-position"><!--旋转 加透视 有立体的感觉--><view class"d-parent"><view …

计算机操作系统学习笔记

一、什么是操作系统 1、概念 操作系统&#xff08;operating system&#xff0c;简称OS&#xff09;是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。 …

什么是MVC?MVC框架的优势和特点

目录 一、什么是MVC 二、MVC模式的组成部分和工作原理 1、模型&#xff08;Model&#xff09; 2、视图&#xff08;View&#xff09; 3、控制器&#xff08;Controller&#xff09; 三、MVC模式的工作过程如下&#xff1a; 用户发送请求&#xff0c;请求由控制器处理。 …

C练习题13答案

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是(A) A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…

wordpress主题modown v8.81+erphpdown v16.0无限制无授权开心版

修复bug&#xff08;v8.81 2023.03.07&#xff09; 新增文章页正文下面常见问题手风琴模块&#xff0c;可设置显示文章的更新日期而不是发布日期&#xff0c;首页幻灯片支持指定文章、支持一个大图4个小图显示&#xff0c;grid网格列表支持显示简介&#xff0c;前台个人中心里显…

Vue简介

聚沙成塔每天进步一点点 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每篇文章都致力于提供清晰、深入的参考资料,让你能够更轻松、更自信地理解和掌握 Vue.js 的核心概念和技…

15-Echarts简化系列之:geo 地理坐标系,地图资源基本绘制和配置项使用

Echarts版本&#xff1a;5.4.3 geo&#xff1a;地理坐标系组件用于地图的绘制&#xff0c;支持在地理坐标系上绘制散点图&#xff0c;线集。绘制地图的数据源可支持 geojson和 svg 格式。 本文章中提供 实例代码 和地图 静态资源 &#xff0c;项目以 react ts 为主&#xff0…

uniapp中使用封装步骤条组件

针对步骤条封装完终于清清楚楚啦 先看效果&#xff1a; 附上代码&#xff1a;使用可直接复用&#xff1a;数据是写在了当前组件中&#xff0c;如有必须&#xff0c;可以使用其中的props传值stepInfos传递相应的数据&#xff0c;根据steps步数就可以控制走到哪一步啦 <temp…

Jave EE 网络原理之应用层与传输层

文章目录 1. 应用层2. 传输层2.1 端口号2.2 UDP协议2.2.1 UDP报文格式2.2.2 UDP的特点 2.3 TCP协议2.3.1 TCP报文格式2.3.2 TCP的相关特性2.3.4 确认应答2.3.5 超时重传2.3.6 连接管理2.3.6.1 TCP三次握手2.3.6.2 四次挥手 2.3.7 滑动窗口2.3.8 流量控制2.3.9 拥塞控制2.3.10 延…

js中将数字转成中文

文章目录 一、实现二、最后 一、实现 如果要将数字10、100和1000转换成中文的"十"、“一百"和"一千”&#xff0c;可以使用以下 JavaScript 代码实现&#xff1a; function numberToChinese(num) {const chineseNums [零, 一, 二, 三, 四, 五, 六, 七, …