百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

楼道中感应灯是如何实现的呢?

yund56 2025-03-28 16:26 6 浏览

人体热释红外传感器

上一个网文实现了流水灯,《利用STM32F103C8T6最小系统板点亮流水灯 》,这个主要用到了单片机的IO可以输出高低电平的特性,程序里置1即输出高电平;程序里置0即输出低电平。

当然,GPIO除了对外可以输出高低电平以外,单片机的IO还可以当做输入使用,当与单片机的某个IO引脚相连的电压为高电平的时候,程序中读取该IO的值为逻辑“1”;当输入的电压为低电平的时候,程序中读取该IO的值为逻辑“0”。

注意: 因为单片机的IO为TTL电平,所以输入的电压要注意电压范围,避免输入电压过高烧毁单片机IO引脚; 单片机的IO作为输出使用时,注意输出电流的能力是有限的,即一般只使用IO作为触发信号,而不是作为功率IO使用;补充: TTL电平的电压范围: 输出高电平>2.4V,输出低电平<0.4V 输入高电平≥2.0V,输入低电平≤0.8V

GPIO输入的应用场景

  • 按键读取
  • 热释红外人体感应传感器
  • 红外接收头
  • 带lm393的一些传感器模块,比如:热敏传感器、光照传感器、声音传感器等模块

这种模块上面一般都有一个电位器,用于调节阈值。

这种模块的输出引脚一般标识为DO,可以输出TTL信号,进而单片机可以得到两种状态,感应(达到)到目标,或者未感应(未达到)。

个别传感器模块还有一个模拟量输出引脚,一般标识为AO,比如MQ2烟雾传感器,通过其模拟信号输出引脚AO与AD芯片或者单片机的ADC引脚相连,可以获得强度值,这种方法可以不调节硬件的情况下,通过程序来控制响应阈值,更灵活。

人体热释红外传感器HC-SR501

电气参数

  • 工作电压范围:直流电压4.5-20V
  • 电平输出:高3.3 V /低0V
  • 触发方式:L不可重复触发/H重复触发(默认重复触发)
  • 延时时间:0.5-200S(可调)可制作范围零点几秒-几十分钟
  • 封锁时间:2.5S(默认)可制作范围零点几秒-几十秒
  • 感应角度:<100度锥角

功能特点

  • 全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
  • 光敏控制(可自己购买了安装,出厂时未设):模块预留有位置,可设置光敏控制,白天或光线强时不感应。
  • 触发方式跳线选择。 不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
  • 具有感应封锁时间(默认设置:2.5S封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。

注意: 红外线热释电传感器根据实现原理,对人体的敏感程度还和人的运动方向关系很大。红外线热释电传感器对于径向移动反应最不敏感, 而对于横切方向 (即与半径垂直的方向)移动则最为敏感。 ==>所以安装不对的话,可能会出现不工作的情况,另外,根据模块实现的原理,静止的人,无法感应。 传感器只对移动或运动的人体起作用。 ==>所以如果用于检测球场或者教室内是否有人的话,理论上来说,不是很准确。

应用范围

  • 安防产品
  • 人体感应玩具
  • 人体感应灯具
  • 工业自动化控制等

配合外围电路,它能自动快速开启各类白炽灯、荧光灯、蜂鸣器、自动门、电风扇、烘干机和自动洗衣机等装置。

特别适用于宾馆、商场、库房及家庭的过道、走廊等场所。

硬件电路

代码实例

实现目标: 人体红外热释感应模块OUT引脚输出高电平(检测出有人)时,板载LED(PC13)亮,反之,LED灭。

我们将SR501的OUT引脚与核心板的PA5相连,并将PA5设置为输入;详细代码见void SR501_Init(void)函数实现;

为了控制板载LED的亮灭,需要将PC13设置为输出;详细代码见void LED_Init(void)函数实现;

main.c完整代码如下:

#include "stm32f10x.h"  
#include "delay.h"
#include "usart.h" 

#define SR501_OUT  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)              //读取SR501返回值
#define LED PCout(13)

//SR501_OUT初始化--PA5,设置成输入
void SR501_Init(void)
{
        
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 
        //SR501_OUT
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
}

// 板载LED初始化--PC13
void LED_Init(void)
{
        
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);    //使能PORTA时钟
 
        //SR501_OUT
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        
        LED = 1;   
}


int main(void)  
{
        //初始化
        delay_init();    
        SR501_Init();
        LED_Init();
        
        while(1) 
        {               
                if(SR501_OUT)
                {
                        LED = 0; 
                }
                else
                {
                        LED = 1;
                }
                
                delay_ms(10); 
        }  
}

成果展示

当手靠近人体热释红外传感器时,绿灯亮;延时一定时间以后,绿灯灭。

推荐阅读

STM32单片机最小系统详解

STM32中精确延时函数的实现

基于STM32固件库的MDK5工程建立

修改Keil工程名称并添加其他模块文件

利用STM32F103C8T6最小系统板点亮流水灯


喜欢请关注微信公众号:程序员小哈

相关推荐

仍需打磨:首款Windows 10X模拟器上手

今天,微软发布了适用于Windows10X的首款模拟器,以便于开发人员初步了解适用于双屏设备的操作系统调整。微软希望在SurfaceNeo今年年底正式发售之前,让开发人员对应用程序进行优化。因此...

Windows10 编译OpenCV4.5源码

在OpenCV4.5+VisualStudio2017开发环境配置中,介绍了OpenCV4.5的下载和安装,待扩展内容OpenCV源码编译,在本文中做补充。研究源码无疑是学习OpenCV的一...

微软7年磨一剑,Windows 10X抢先上手体验

2月22日消息,微软在去年10月正式推出了Windows10X系统,该系统除了可用于传统的电脑外,同样适用于双屏设备或者折叠屏设备,拥有更好的触控操作体验。Windows10X在操作系统底层、命令...

Office重新设计了图标,你觉得如何?

微软重新设计了Office的应用图标,在接下来的几个月里,这些图标将从移动端和网页端开始陆续推广至各大平台。距离Office图标的最近一次更新还是在2013年,那时鲍尔默时代的产物,那时微软还在纠结是...

微软发布 Win10 Build 21376 内测版:重新设计默认用户界面字体

IT之家5月7日消息今年早些时候,微软意外地确认正在为Windows10进行UI改进,并在预览版中发现了相关的非活动代码。微软今天宣布向开发渠道中的内测用户发布Windows1...

前端开发需要了解常用7种JavaScript设计模式

作者|Deven译者|王强策划|小智转发链接:https://mp.weixin.qq.com/s/Lw4D7bfUSw_kPoJMD6W8gg前言JavaScript中的设计模式指的是...

「Qt入门第二篇」基础(二)编写Qt多窗口程序

导语程序要实现的功能是:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对...

在吴中 ,哪里有学网页设计的培训班?

网页设计介绍Web2.0标准布局之网页长期签约就业班(全日制)课程收费:7680元课程周期:5-6个月(45分钟/课)使用教材:《教师自编教材》考核发证:Adobe《网页设计师》培训内容第一部份:...

Qt快速入门(工程的创建、UI界面布局、多线程、项目)

本文档将介绍QT工程的创建、UI界面布局,并以计数器为例了解QT中多线程的用法,最终完成一个基础的QT项目。1创建QT工程文件在安装好QT之后,能够在其安装组件中找到QtCreator,点击设置项...

应用崩溃有救啦!Windows新更新将解决应用崩溃问题

【CNMO新闻】对于不少上班族来说,当自己的电脑在运行某个应用程序时,突然出现应用程序崩溃问题,常常会让人十分苦恼。尤其是对于设计师或者编辑,当自己的作品未能及时保存应用崩溃全部消失的时候,简直就是痛...

Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

在PythonQtGUI设计:窗口布局管理方法【基础篇】(基础篇—5)文章中,聊到了如何使用QtDesigner进行窗口布局管理,其实在QtDesigner中可以非常方便进行窗口布局管理设计,...

思考:如何设计游戏业务框架

虽然现在连主机游戏都纷纷加入了网战部分,不过其身份主要充当状态同步,矛盾点集中在同步即时性上。以大量数值逻辑为主的业务功能侧重点则不同。如果说写代码就是用状态的操作给问题建模,那么编程范式和设计模式种...

用.NET设计一个假装黑客的屏幕保护程序

本文主要介绍屏幕保护程序的一些相关知识,以及其在安全方面的用途,同时介绍了如何使用.NET开发一款屏幕保护程序,并对核心功能做了介绍,案例代码开源:https://github.com/sangy...

光的艺术:灯具创意设计

本文转自|艺术与设计微信号|artdesign_org_cn“光”是文明的起源,是思维的开端,同样也是人类睁眼的开始。每个人在出生一刻,便接受了光的照耀和洗礼。远古时候,人们将光奉为神明,用火来...

Python Qt GUI设计:将UI文件转换Python文件三种妙招(基础篇—2)

在开始本文之前提醒各位朋友,Python记得安装PyQt5库文件,Python语言功能很强,但是Python自带的GUI开发库Tkinter功能很弱,难以开发出专业的GUI。好在Python语言的开放...