树莓派如何使用HC-SR501传感器感知运动物体

这篇文章详细记录了如何用树莓派感知运动物体,需要利用的是HC-SR501传感器(被动红外传感器)。

Raspberry-Pi-Motion-Sensor.jpg

HC-SR501传感器是一种简单而优秀的设备,用于检测运动的物体。在老式的安全系统中,这些传感器被大量使用。然而,大多数现代系统都使用图像识别了。

为了让这个项目更有趣,我会使用一个压电扬声器,每当检测到运动时就会蜂鸣,这两个设备都需要连接到GPIO引脚才能工作。

设备清单

下面是这个项目中使用的所有设备清单,点击链接可以直达特别优惠购买。

建议

可选

虽然扩展套件,面包板和电线是可选的,我强烈建议使用这些,因为它们会让电路连接变得更方便。

Raspberry Pi PIR传感器硬件连接

我将构建一个简单的电路,利用上一个PIR传感器和一个压电扬声器。

PIR传感器最常见于安防系统中,用于在发出警报之前检测移动。只要其视野内的红外温度发生变化,它们就会检测到运动。

大多数PIR传感器上都有一些可调节的螺丝,可以调整时间和灵敏度。时间可以让你在它熄灭(发送高信号)之前设置一个延迟。大约两到四秒)。灵敏度是指在它熄灭之前需要发生多少运动。

压电蜂鸣器是一个简单的扬声器,只要有电流通过它,就会输出声音。在该电路中,只要触发运动检测电路,蜂鸣器就会发出响亮的蜂鸣声。

面包板不一定是这个项目的要求,但我强烈建议使用面包板。面包板使原型设计和构建电路变得更加容易。

不需要像我一样使用面包板,你可以简单地将这些直接挂到树莓派上。

Raspberry-Pi-Motion-Sensor-Circuit.jpg

构建电路只需按以下步骤进行。

1. 将地线引脚跑到面包板的地线上。

2. 将5v引脚接到面包板的正极。

3. 将压电蜂鸣器连接到第7针(红线)和负极轨道(黑线)。

4. 从11号针脚到面包板上接一根线。将一个100欧姆的电阻放在电线的末端。然后将其连接到PIR传感器的黄线上。

5. 现在,PIR传感器的红线连接到5v线,黑线连接到面包板的地线。

树莓派运动传感器软件设置

为了将Raspberry Pi运动传感器电路运行起来,需要做一些编程。这个编程相对简单,就像树莓派GPIO引脚介绍帖一样,是学习Python基础知识的绝佳方式。

首先,在Pi上输入以下命令来创建一个Python脚本,并将其加载到nano文本编辑器中。

sudo nano motion_sensor.py

如果不想打出完整的脚本,可以直接下载,解压后在Pi上输入下面的命令进入脚本文件夹。

另外,也可以直接从GitHub页面下载。

sudo wget https://github.com/pimylifeup/motion_sensor/archive/master.zip
unzip master.zip
cd ./motion_sensor-master

简单介绍一下代码中每一部分的作用。

首先,导入GPIO和时间Python包,因为需要这些包来与GPIO引脚进行交互,并暂停脚本。

设置了三个变量,前两个变量是对我们引脚的引用,因此我已经适当地命名了。当前状态变量是存储传感器状态的地方。如果这个变量是0,那么它是关闭的,或者1表示它已经被激活。

在本教程中,设置GPIO模式来参考引脚的物理编号,而不是实际的编号。这种编号比较容易理解,因为所有的引脚都是按顺序编号的。

还将GPIO引脚设置为输出或输入。例如,要检测运动,所以PIR传感器将作为输入。另一方面,压电蜂鸣器将需要作为输出。

import RPi.GPIO as GPIO
import time

pir_sensor = 11
piezo = 7

GPIO.setmode(GPIO.BOARD)

GPIO.setup(piezo,GPIO.OUT)

GPIO.setup(pir_sensor, GPIO.IN)

current_state = 0

在接下来的这个部分,有一个无限的while循环。这个循环意味着它永远不会退出,因为它永远是真。(你仍然可以通过在终端按ctrl + c取消脚本)。

首先让脚本进入0.1秒的睡眠状态。之后,传感器的当前状态,如果是1(比如检测到运动),那么就在if语句里面运行代码。如果不是1,继续循环不断检查传感器。

if语句中的代码将压电蜂鸣器送到应该发出噪音的高位。脚本将这样做一秒钟,然后关闭蜂鸣器。在这之后,它会再等待5秒,然后退出if语句,然后重新检查Raspberry Pi PIR传感器。

还在try内嵌套了代码,除了,终于块。我们添加这个功能是因为我们需要使用键盘来停止脚本。同样重要的是,我们需要运行GPIO.cleanup()来确保我们的脚本能够很好地清理。try, except, finally代码允许我们这样做。

try:
    while True:
        time.sleep(0.1)
        current_state = GPIO.input(pir_sensor)
        if current_state == 1:
            print("GPIO pin %s is %s" % (pir_sensor, current_state))
            GPIO.output(piezo,True)
            time.sleep(1)
            GPIO.output(piezo,False)
            time.sleep(5)
except KeyboardInterrupt:
    pass
finally:
    GPIO.cleanup()

一旦完成了在脚本中的工作,现在是时候打开它并测试它了,请输入以下命令。

sudo python motion_sensor.py

如果在Raspberry Pi PIR传感器前移动,那么它应该打开压电蜂鸣器并发出噪音。

如果没有,很可能是你把电线挂到了错误的引脚上,或者是代码有错误。如果是代码错误,很可能会在树莓派的终端看到一个错误。

本教程是非常基本的,是使用PIR传感器的许多应用的开始。可以让它触发各种各样的东西,从简单的计数器(当人/车/物经过它时计数),Raspberry Pi相机,激活不同的脚本和更多的东西。

希望你喜欢这个树莓皮运动传感器教程,并且已经能够建立一个很酷的电路,并运行工作。

如果你有任何反馈,想法,麻烦或任何其他的东西,请随时在下面留言。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 树莓派如何使用HC-SR501传感器感知运动物体

赞 (0)

评论

9+2=