HCSR501人体感应传感器原理图 |
HCSR501人体感应传感器,也叫热释电传感器,工作原理是在范围内检测动物或人体自身散发出的红外线时,会发出一个脉冲信号(脉冲宽度固定)。当有人体时会产生红外线交替出现在“盲区”和“高灵敏区”,就一直有脉冲信号输出(实测人静止不动时不会输出)。所以此款传感器检测的是移动的人体。该模块添加了放大器BISS0001,这样就将脉冲信号转化为更直观的高/低电平,通俗的理解:有人时输出高电平,无人时输出低电平。并在放大电路上设置电位器可调节输出信号的灵敏度范围(比如探头产生n个脉冲,模块才输出高电平),还可调节高电平的持续输出时间。(如下图所示)
(如下图所示:传感器探头的正前方角度为100°,距离为2-7M,左右最大3-4米。 其中模块的内部可以自定义DIY添加热敏和光敏探头,其目的可让传感器在特定的环境下才能工作。比如光敏可实现白天传感器不会工作,只有夜晚传感器才会工作。更有效的增加了传感器的可玩性)
通过上述的介绍,我们已知传感器实际有人时输出高电平,无人时输出低电平。那么我们可以写一个Python程序来监测传感器的引脚的信号输出情况,有高电平时显示有人,无高电平时显示无人!这样就非常好理解了!
下图的接线方式:通过树莓派来接入传感器的信号引脚,监测传感器是否有信号输出,从而来控制LED灯亮起。
HC-SR501人体感应传感器 | 树莓派开发板 | LED灯 |
VCC | 5V | |
GND | GND | 短脚为负极 |
OUT | GPIO.7 (BCM4) | GPIO.0 (BCM17) 正极 |
将下列代码直接在树莓派python上运行,查看状态 (程序注释了含义,有兴趣可自己研究更改)
import RPi.GPIO as GPIO # 设置GPIO模式为BCM(BOARD模式) GPIO.setmode(GPIO.BCM) # 设定BCM4和BCM17为输入和输出引脚 BCM4 = 4 BCM17 = 17 GPIO.setup(BCM4, GPIO.IN) # BCM4为输入 GPIO.setup(BCM17, GPIO.OUT) # BCM17为输出 try: while True: # 检查BCM4引脚的状态 if GPIO.input(BCM4): # 如果是高电平 print("检测到有人") GPIO.output(BCM17, GPIO.HIGH) # 输出BCM17引脚为高电平 else: # 如果是低电平或未连接 print("范围内正常") GPIO.output(BCM17, GPIO.LOW) # 使BCM17引脚复位为低电平 except KeyboardInterrupt: # 当按下Ctrl+C时,退出程序 print("\n程序已中断...") finally: # 关闭GPIO资源 GPIO.cleanup()
效果:当传感器范围内有人出现时,显示“检测到有人”,LED并点亮。 无人时 显示范围内正常,LED灯关闭