树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块

连接前准备

树莓派3 modelB型一个

HC-SR501传感器一只

低电平蜂鸣器模块(有源)即接上电就会响,低电平触发

母对母杜邦线三根

实物图如下:

树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块_第1张图片

博主连接的不是特别美观

两个传感器的连接图分别如下

树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块_第2张图片树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块_第3张图片

HC-SR501模块连接注意

最左边引脚接的是pin2,中间数据引脚接的是pin12,最右边引脚接pin6

蜂鸣器模块连接注意

vcc接3.3v也就是pin1,I/O引脚接pin11,GND引脚接pin9
将所有模块连接好连上树莓派

代码

import RPi.GPIO as GPIO
import time

def init():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(12, GPIO.IN)
    GPIO.setup(11,GPIO.OUT)
    pass
def beep():
        for i in range(1,6):
            GPIO.output(11, GPIO.LOW) #蜂鸣器低电平响
            time.sleep(0.5)
            GPIO.output(11, GPIO.HIGH)
            time.sleep(0.5)
            print "the Buzzer will make sound"

def detct():
    for i in range(1, 31):
        if GPIO.input(12) == True:
            print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+"  Someone is closing!"
            beep()
        else:
            GPIO.output(11, GPIO.HIGH)
            print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+"  Noanybody!"
        time.sleep(6) #每6秒检查一次
time.sleep(2)
init()
detct()
GPIO.cleanup()

博主比较懒没有写注释,大概解释下HC-SR501模块感应到有人时(人必须要移动,不然也检测不到)会输出高电平,特别要注意的是HC-SR501模块有一个封锁时间(默认设置为3-4秒),就是当检测到有人时,持续输出信号后,接下来的一段时间内,树莓派不会接受任何信号了,又因为HC-SR501模块默认是可重复触发方式,检测到有人后会在接下来的一段时间(大概3秒)内一直输出高电平(这个时间也就是延时,可以通过模块上的按钮来调节,博主逆时针调到不能转动的样子,时间估计在3秒左右),这个延时时间和封锁时间加起来大概在6秒左右,所以博主设置为6秒检查一次,蜂鸣器检测到有人就响5次。

模块测试

先上图
树莓派连接HC-SR501人体红外感应模块和蜂鸣器模块_第4张图片
博主经过一下午的测试这一次测试算是比较成功的,博主测试时是将传感器放在桌子上,自己在远处走过来走过去这样测试的,必须要动这样才能检测出来,HC-SR501传感器对环境要求比较高,我们可以从它的说明书中得知,环境影响很大,最开始我将采集数据的时间设置为2s的时候总是不对劲,改成6s之后数据就正常了,博主具体原因不清楚,但是我认为是封锁时间造成的,改成6s之后,避免封锁时间内,传感器没数据发送低电平出现测试不准确,感兴趣的人可以找找有关文章了解一下


你可能感兴趣的:(树莓派,传感器)