人体红外传感器工作原理:热释电探头在检测到人体发出的红外线时,会发出一个脉冲信号(脉冲宽度固定)。有人时,人体产生的红外线会交替出现在“盲区”和“高灵敏区”,就一直有脉冲信号输出(实测人静止不动时不会输出)。所以传感器检测的是移动的人体。如果在通过放大器BISS0001将脉冲信号转化为更直观的高低电平输出则显示为:有人时输出高电平,无人输出低电平。并在放大电路上设置电位器,调节输出信号的灵敏度(比如探头产生n个脉冲,模块才输出高电平),调节高电平持续时间。了解大概原理后我们可以利用人体红外传感器来做一些智能化的方案。
教程实验效果:使用人体红外传感器实时对周围进行检测是否有人经过。 在没有人的情况下树莓派端显示“正常”,如果检测到有人会发送信号给树莓派端让其显示“有人”从而让树莓派控制继电器打开电灯。
配件清单:
一:接线方法
树莓派与传感器/继电器的接线方式请按下面步骤接好(可参考下图)树莓派的引脚为BCM编码可对照下面的GPIO引脚定义图
人体红外传感器:
树莓派5V —— 传感器5V
树莓派GND —— 传感器GND
树莓派GPIO20 —— 传感器信号接口
继电器:
树莓派5V —— 继电器VCC
树莓派GND —— 继电器GND
树莓派GPIO21 —— 继电器IN
LED灯与面包板:
led正极 —— 继电器NO
led负极 —— 面包板-负极
面包板+正极 —— 继电器COM
注:下图的面包板正负极是需要单独供电
树莓派GPIO引脚示意图:
二:程序代码
输入命令新建一个py文件
sudo nano raspisr501.py编辑程序(复制粘贴下面程序到文件内)
import RPi.GPIO as GPIO import time #source:www.raspi.cc #name:raspi GPIO.setmode(GPIO.BCM) # 设置GPIO20作为输入 GPIO.setup(20, GPIO.IN) # 设置GPIO21作为输出 GPIO.setup(21, GPIO.OUT) while True: # 检测GPIO20的输入状态 if not GPIO.input(20): print('正常') else: print('有人') # 让GPIO21输出高电平 GPIO.output(21, GPIO.HIGH) # 停止10秒钟 time.sleep(10) # 让GPIO21输出低电平 GPIO.output(21, GPIO.LOW) # 暂停1秒钟 time.sleep(1)
sudo python raspisr501.py然后我们就能看到树莓派端输出为 正常, 如果靠近传感器时会 显示有人 并触发继电器点亮LED灯(如下图)
总结:
在接线前可将传感器先调试好感应的距离和感应后持续输出的时间(可参考下图)调节旋钮全部转到低则为最短距离和延时最短。 传感器的感应距离范围为:(2m-7m),感应延时时间范围为: 0.5-200S