APP下载

基于树莓派+Python的智能安防系统设计

2020-08-26

科技视界 2020年24期
关键词:蜂鸣器树莓代码

王 甜

0 引言

目前,家庭安防问题已经成为人们关注的重点问题,采用信息技术手段监控家庭安全已经成为一种趋势。树莓派是一款基于Raspbian Linux系统的嵌入式计算机,其具有体积小,集成度高,可扩展性强等优势,所以被广泛使用在物联网应用系统中。

1 系统总体方案设计

本文硬件系统开发选用当前流行的开源硬件树莓派(Raspberry PI),软件设计主要用Python语言对引脚定义及编程,Linux环境配置和驱动安装等。树莓派采集外部传感器的感知信息,并将信息传递给远程终端,通过人机对话再实现返回数据给树莓派开启报警器设备。工作过程是实现的室内入侵报警并且照片回传装置,树莓派连接服务器,负责实现传感器和摄像头模块采集的信息,并转发给移动端进行查看,同时接收和处理移动端发送的信号,树莓派接到同意指令后加以解析,最后打开蜂鸣器报警。

2 硬件技术部分

为了实现树莓派的室内入侵报警并且照片回传装置,采取以下技术方案:

硬件系统主要包括树莓派开发板,红外传感器模块,蜂鸣器模块和迷你摄像头模块。

图1系统功能模块框图

树莓派开发板是一款基于ARM的微型电脑主板,以SD为内存硬盘。卡片主板周围有4个USB接口和一个网口,可连接鼠标键盘和网线,同时配有wifi模块和HDMI高清视频输出接口,具有PC机的基本功能。本设计选用的是RPI B+,安装的系统为Raspbian,RPI B+的管脚定义如图2所示。它提供了40个GPIO口,它们与传统单片机上的I/O口用法相似。通过这些接口的编程,树莓派就可以实现对外围硬件的控制。

图2树莓派GPIO引脚图

红外线传感器是一种能够感应目标辐射的红外线,利用红外线的物理性质来进行测量的传感器。本设计采用的红外模块包括一对红外发射管和接收管,利用发射管和接收管形成的信号反射差来判断障碍物距离,并设有电位器来调节检测距离。红外模块有三个引脚,它与主板连接方法如表1所示。

表1树莓派与红外传感器连接

蜂鸣器是一种一体化结构的电子讯响器,本设计采用有源蜂鸣器,它的内部带有振荡源,只要施加直流电压就会发声,也可以通过PWM?输出口驱动蜂鸣器改变声音频率。蜂鸣器模块有三个引脚,它与主板连接方法如表2所示。

表2树莓派与蜂鸣器连接

本设计采用不变焦的迷你摄像头,当树莓派与摄像头连接时,摄像头不能接入GPIO口,而是接入靠近网孔的排孔中。使用摄像头时要注意,不能带电插拔,要在系统中开启Camera权限。连接成功后,使用代码raspistill-o image.jgp测试摄像头,看到图片image代表摄像头功能正常。

3 软件部分实现

本设计软件程序用Python语言编写,Python语言具有灵活强大的功能,最初是由20世纪80年代末在全国数学与计算机科学研究所Guido van Rossum开发的ABC语言的继承语言。自推出以来,由于Python清晰的语法表达,致力于代码可读性,它已经相当普及。

Python是一种高级语言。这意味着Python代码是用可读性很强的英语编写的。用简单易学的方式向树莓派提供命令。这与低级语言(比如汇编),形成了鲜明的对比,汇编语言更接近计算机思维,但让一个没有经验的人用它来编程几乎不可能。高级与自然清晰的语法使Python成为一个有价值的工具。

wxpy库是在itchat基础上的一个开源的微信个人号接口,方便使用Python调用微信。它支持Python2.0以及Python3,它通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。

Picamera库是树莓派调用摄像头获得API数据必须使用的接口。该模块可以返回camera对象,调整图像或者视频的饱和度,亮度,快门速度,锐度,图像翻转,图像大小等各种参数。

Python代码实现过程:

首先导入需要的模块文件,在此我们需要5个库,分别是时钟模块,GPIO模块,摄像头接口库和微信接口库,代码如下:

然后是初始化部分,使用BCM的I/O命名,设置红外传感器端口,即24端口为输入模式,设置蜂鸣器端口,即25端口为输出模式,初始化摄像头,使用picamera模块中的PiCamera方法创建返回一个camera对象。使用wxpy模块中的Bot方法创建一个bot对象。代码如下:

最后从红外传感器获取信息后,树莓派做出相应的反应,即当红外传感器检测到有人侵入时,即可回传照片和时间信息给移动终端并且询问下一步如何处理。本设计可以选择向微信本人报警或者向指定好友报警,在wxpy库的方法里,给自己发送消息和图片用代码如下:

在wxpy库的方法里,先找到好友,再给指定好友发送消息和图片,代码如下:

在微信好友收到报警信息后,将和树莓派进行一次人机对话,即回复y或者n,来决定是否启动蜂鸣器报警。wxpy库中回复好友信息使用的方法如下:

另外,报警信息中包括当前的时间信息,在这里利用时间戳得到当前系统时间,再转换为指定格式的日期,用到的模块是time和datetime。代码如下:

4 系统运行结果

各硬件模块连接后(如图3),树莓派与传感器和摄像头连接,系统连接路由器,通过扫描二维码登录微信网页版。运行python程序后,当触发红外传感器时,树莓派向移动终端发送报警信息,包括当前时间和摄像头采集的照片,并且询问是否开启蜂鸣器,当终端回复y时,蜂鸣器发出声音。结果如图4和图5所示。

图3实物连接图

5 结束语

本系统切合当前安防行业现状,以多传感器融合方式获取家庭安全隐患,提供手机端和嵌入式智能终端进行数据通信,实现人机交互和远程监控,使用网络对用户和业主进行警报信息智能化推送,而且本系统采用树莓派技术成本低,无须开发新的APP,利用微信平台传递信息,简单易实现,适用于现有家庭智能安防业务,也可应用在其他智能家居系统场景中。

图4指定微信好友收到报警结果

图5本人收到报警结果

猜你喜欢

蜂鸣器树莓代码
电动自行车产品车速提示音检测现状和整改技术研究(2)
掌控板制作简易钢琴
基于树莓派的骑行智能头盔设计
单片机驱动蜂鸣器的程序设计
创世代码
创世代码
创世代码
创世代码
基于树莓派的远程家居控制系统的设计
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响