连接前准备
树莓派3 modelB型一个
HC-SR501传感器一只
低电平蜂鸣器模块(有源)即接上电就会响,低电平触发
母对母杜邦线三根
实物图如下:
博主连接的不是特别美观
两个传感器的连接图分别如下
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传感器对环境要求比较高,我们可以从它的说明书中得知,环境影响很大,最开始我将采集数据的时间设置为2s的时候总是不对劲,改成6s之后数据就正常了,博主具体原因不清楚,但是我认为是封锁时间造成的,改成6s之后,避免封锁时间内,传感器没数据发送低电平出现测试不准确,感兴趣的人可以找找有关文章了解一下。