Overview

本文将介绍如何用树莓派、防震传感器模块和有源蜂鸣器模块设计智能报警器。当防震传感器模块检测有震动的时候,会输出高电平,没有震动输出低电平,利用这一特点,树莓派通过中断的方式查询防震传感器模块输出的电平信号,当检测到高电平(即有震动时候),蜂鸣器报警;否则不报警。可以将自己设计的防盗报警器安装在自己家的窗户上,如果有小偷破窗而入,就会报警。

DSC_5486

Experimental Parts

为了完成设计需要用到一下器件

PI
Pi3 x1
18
有源蜂鸣器模块 x1
2016004800
防震模块 x1
LACC2006AD-12
面包板 x1
LACC2006AD-31
公对公跳线 x若干
19
公对母跳线 x若干

Hardware

本中只需要用到两个传感器模块,防震传感器模块和有源蜂鸣器模块。防震模块工作在3.3V-5V电压下,在本项目中采用3.3V供电。在不震动情况下呈常闭状态,输出低电平,开关信号指示灯被点亮;震动时候输出高电平,开关信号指示灯熄灭。其原理图和外形图分别如下图所示。

Vibration Sensor module

vibration

有源蜂蜜器模块,工作在3.3V-5V电压之间,本项目中同样采用3.3V供电。模块是低电平有效,即控制器给一个低电平,蜂鸣器响,给高电平不响。
与树莓派具体连线参考下图
Untitled Sketch_vibration

在接线的时候请认清模块正负极,不要接反了,否则会烧坏你的Pi和模块。模块的上的GND接Pi上的0V;模块上的VCC接3.3V。将蜂鸣器接到20号引脚(BCM编号方式),防震模块接到21号引脚上(BCM编号方式)。关于如何识别Pi的IO口请参考这篇文章: How to read Raspberry Pi i/o pin diagram (GPIO pin graph)

Software

可以把pi直接接到显示器上,也可以通过SSH方式远程登录Pi。

1)编写代码

在/home/pi路径下用nano新建一个vibration.py(名字随意,你喜欢就好!)

sudo nano vibration.py

并往新建的文件中写入如下代码:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

class Sw40(object):
    """docstring for Senal"""
    def __init__(self, pin , buzzer):
        self.buzzer = buzzer
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(self.buzzer,GPIO.OUT)
        self.pin = pin
        GPIO.setup(self.pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

        GPIO.add_event_detect(self.pin, GPIO.RISING, callback=self.callback, bouncetime=1)
        self.count = 0 

    def callback(self , pin):
        self.count += 1

    def BuzzerOn(self):
        GPIO.output(self.buzzer , 0)

    def BuzzerOff(self):
        GPIO.output(self.buzzer , 1)


def main():
    print"system initialition..."
    sensor = Sw40(21,20)
    print"ok!\n"
    try:
        while True:
            time.sleep(1)
            if sensor.count >=10:
                print"be careful!there are thieves!\n"
                sensor.BuzzerOn()
            else:
                print"it is safe!\n"
                sensor.BuzzerOff()
            sensor.count = 0        

    except KeyboardInterrupt:
        GPIO.cleanup()

if __name__ == '__main__':
    main()

上面的代码可以通过执行下面的shell命令得到

sudo wget http://osoyoo.com/driver/vibration.py

2)执行python脚本

sudo python ./vibration.py

2017-03-27-061856_1824x984_scrot

3)测试

将防震模块放置在水平桌面上,发现没有什么异样,但是,当你用手拍击桌面的时候,效果就不一样了,会听到蜂蜜器发出报警声,停止拍击蜂鸣器也停止发声。至此基于树莓派的智能报警器就设计好了,赶快安装到你家窗户上去防贼去吧!