APP下载

基于Raspberry Pi平台的移动侦测系统实现机制研究

2018-10-16段玉风

太原学院学报(自然科学版) 2018年1期
关键词:高电平超声波报警

段玉风

(运城广播电视大学,山西 运城 044099)

引言

随着计算机网络通信技术、微型传感器技术以及嵌入式技术的迅速发展,基于嵌入式的物联网应用也得到了快速发展,近年来从欧洲传入的Raspberry Pi开发平台以其小巧的体积、丰富多样的传感器接口与强大的编程支持功能受到了国内物联网行业的广泛关注[1]。在各类家庭级物联网应用中,智能安防类应用是当前非常热门的应用之一。此类应用的主要功能是在家庭成员上班、外出旅游时,对空置的房屋内的异常情况(如火灾、大面积渗漏水、非法闯入等)进行实时监测与报警信息提示,以便房屋主人及时返回进行处置或报警。而Raspberry Pi开发平台以其具备的高性价比优势为实现开发体积小、价格低、性能稳定的小型智能安防应用的研发开辟了一条新的途径。

1 Raspberry Pi平台概述

Raspberry Pi是注册于英国的慈善组织“Raspberry Pi 基金会”于2012发布的微型嵌入式计算机硬件平台,该基金会以“提升学校计算机科学及相关学科的教育,让计算机学习变得更加有趣”为宗旨[2]。Raspberry Pi平台采用了ARM11架构的处理器,并使用简化的Linux操作系统,基础平台的硬件尺寸仅有85.60 mm x 56 mm(与普通IC卡大小相当),被称为“全球最小的台式机”。该平台在提供了极低使用成本(新版本Raspberry Pi3发售价格仅为35美元)的同时,还配置了功能强大的开发工具与多种类型的接口,支持SD卡、以太网、USB、视频音频接口等,在目前各类嵌入式开发平台中拥有最高的性价比,同时Raspberry Pi小巧的体积和强大的编程功能使其特别适合用于各类物联网应用的开发。在国内物联网开发与学校计算机教育领域中被广泛采用,自2012年发布以来,全球销量已突破1250万台[3]。

Raspberry Pi的最新版本为3B,配置博通2837处理器(主频700 MHz)与512M内存,同时提供40个GPIO接口,支持wifi 和蓝牙连接与各类多媒体接口等,并且在Linux系统中部署了Python开发环境[4]。Python语言作为Raspberry Pi平台的标准编程开发语言,包含了一组功能完善的标准库,语法简捷、清晰,且具有强大的内存回收功能,非常适用于系统进程管理和网络程序开发,通过Raspberry Pi平台提供的各类I/O 端口,Python语言能够非常方便地实现对各类电子器件和传感器的控制与外部环境数据采集。

2 系统结构与工作原理

在本文所设计的移动侦测系统中,各传感器、摄像及通信等多个模块都通过Raspberry Pi平台的GPIO接口进行连接,并完成各项功能的有效整合,以实现对移动物体(非法侵入者)的检测、拍照与报警功能,如图1所示。最终设计完成一套适用于家庭用户的低成本、低能耗、高效率的小型物联网智能安防系统解决方案。在系统监控范围内发生非法闯入行为时,处理器会立即获取到各传感器所检测到的异常数据变化。处理器将立即启动摄像头和扬声器模块,对入侵者进行拍照和语音警告,同时调用通信模块将报警提示信息以短消息的方式发送到用户的手机上。

图1 系统整体结构

系统工作原理如下:系统分别基于两种传感器(超声波传感器与红外传感器)来完成对室外和室内两类环境下的移动物体侦测功能,对于空旷的室外院落中的移动物体由作用范围较大(10~20 m)的超声波传感器完成,而对于面积相对狭窄的室内空间中的移动物体检测则由红外传感器(范围5~6 m)负责实现。当检测到移动物体时,传感器向RasPberry Pi电路板上的处理器发出信号,由处理器负责开启摄像头拍照,并将照片存储至SD卡中,在完成拍摄操作后,处理器分别调用语音警告模块与通信模块,在向侵入者发出警告的同时,将预先编制好的报警短信发送至用户手机,由用户决定如何进行处置。

由于RasPberry Pi平台具有配置灵活、模块安装/卸载简便的特点,对于没有室外院落的楼层住宅用户,则可以通过卸载超声波传感器模块以进一步降低系统使用成本。

3 各模块的实现机制

3.1 移动侦测模块

系统为实现室外移动侦测功能所选用的超声波传感器模块为HC-SR04,该传感器包含四个引脚:VCC(5v电源输入)、Trig(控制超声波发送)、Echo(超声波反射检测)和GND(接地)。HC-SR04与RasPberry Pi主板的线路连接方式如表1所示。

表1 HC-SR04线路连接方式

在系统初始化过程中。首先将Trig引脚设置为低电平,检测过程开始后,向Trig输入一个持续时长为10us的高电平以启动超声波发射器向正前方发射信号,当接收到返回的超声波信号时,Echo引脚会向RasPberry Pi主板输出一个高电平信号,该信号持续的时间就是超声波从发射到返回的时间。传感器在院落中的安装位置如图2所示。

图2 超声波传感器在院落中的安装位置

当移动物体试图进入室内时,必然对HC-SR04传感器所发出超声波进行反射,从而导致原有的声波返回时间发生变化,系统检测到ECHO引脚输出的电平持续时间缩短后,则立即启动相应的报警功能。此外,当Echo引脚长时间(3000us)未返回高电平信号时,则判定HC-SR04传感器已停止工作(可能被破坏),系统也将立即向用户手机发送故障提示短信。

系统中为实现室内移动侦测功能所选用的人体红外传感器模块为HC-SR501,该传感器包含三个引脚:VCC(5v电源输入)、GND(接地)和Out(信号输出)。HC-SR501与RasPberry Pi主板的线路连接方式如表2所示。

表2 HC-SR501线路连接方式

当非法入侵者通过阳台、窗户等通道进入室内时,由于人类作为温血动物所具备的恒温特征(摄氏36~37°),人体会持续发散出波长为10 um的红外线信号。人体红外传感器的原理是通过热释电元件来探测人体红外信号,热释电元件在接收到该波长的红外信号后,会释放出电荷,电荷在经过放大与处理后即可作为输出电平使用[5]。HC-SR501可以提供110~120°锥角,半径6m的探测范围,基本可以满足一般家庭的室内安防需求。该传感器在室内的安装位置如图3所示。

图3 红外传感器在室内的安装位置

HC-SR501当检测到人体在探测范围内时,会从Out引脚输出一个高电平,直到人体红外信号从探测范围内消失后才恢复为低电平,系统即可根据此引脚的高电平信号来判定是否出现了非法入侵行为,并启动相应的报警功能。需要注意的是,HC-SR501在安装过程中不应直对窗口,并且需要拉上窗帘以避免窗外的热气流和经过的人员所引起的数据误报。

关键代码:

def USloopcheck()://超声波检测函数

time.sleep(0.05)//将循环探测的间隔时间设置为0.05s

GPIO.output(38,GPIO.HIGH)//向38号引脚发送高电平,启动超声波发射操作

GPIO.output(38,GPIO.LOW)//向38号引脚发送低电平,结束本次超声波发射操作

while not GPIO.input(40)://检测40号引脚是否返回高电平信号

pass

t1=time.time()//记录高电平信号的起始时间

while GPIO.input(40)://检测40号引脚返回的高电平信号是否结束

pass

t2=time.time()//记录高电平信号的结束时间

r-new=(t2-t1)*3.4/2//将时间换算成距离,单位为厘米

r-old=range-old()//获取上一次的检测距离

range-set(r-new)//记录本次的检测距离

if(r-new-r-old)>5://误差超过5cm,调用报警功能函数

alarm()

def IFRloopcheck()://红外信号检测函数

time.sleep(8)//将发现目标后,下一次探测的间隔时间设置为8s

while GPIO.input(12)://检测12号引脚返回的高电平信号

pass

alarm()//调用报警功能函数

3.2 报警短信模块

在报警短信的功能的实现上,系统使用了SIM900A通信模块。该模块通过USB接口与Raspberry Pi主板进行连接,用于发送短信的SIM卡可以直接安装在SIM900A上的卡槽中。在设备连接完成后,需要在Raspberry Pi上的Linux系统中安装gammu工具用于完成短信发送的相关配置[6]。gammu-config的配置内容如表3所示。

表3 gammu-config工具配置内容

保存配置文件并重新启动Raspberry Pi主板后,可以运行命令 sudo gammu--identify,如果能够显示设备和SMS卡的基本信息,则表示配置正确。系统可以通过Python编程来完成短信发送的功能。

关键代码:

def Alertsend()://报警信息发送函数

import gammu

import sys

sim=gammu.StateMachine()//创建gammu对象

sim.ReadConfig()//读取gammu配置文件内容

sim.Init()//初始化操作

netinfo=sim.GetNetworkInfo()//获取网络状态信息

tel=raw-input('接收手机号码: ').decode('utf-8')

msgs=raw-input('报警短信内容: ').decode('utf-8')

msgs={

'Text': msgs,

'SMSC': {'Location': 1},

'Number': tel,

'Coding': 'Unicode-No-Compression',//设置支持中文短信的编码格式

}

sim.SendSMS(msgs)//发送短信

3.3 照片拍摄模块

在图像拍摄的功能的实现上,系统使用了OV5647摄像头,通过USB接口连接在主板上并基于Python的picamera库进行调用[7]。在Raspberry Pi上使用摄像头拍摄功能,需要在硬件安装完成后,修改系统配置参数sudo raspi-config(设置为sudo raspi-config)来启动摄像头模块后,才能够通过编程实现拍摄与保存图片的功能。

关键代码:

def Pictured()://照片拍摄函数

import time

import picamera

import picamera.array

picname=time.strftime("%Y%m%d%X",time.localtime())+'.jpg'//设置图片文件名称

cmr=picamera.PiCamera()//初始化

cmr.resolution=(1024, 768)//设置图片的分辨率

cmr.capture(picname, 'rgb')//创建图像文件,颜色模式为rgb

print(stream.array.shape)

OV5647模块可提供500万像素的分辨率与160度的拍摄范围,并具备夜视功能,基本可以满足普通家庭用户的室内安防需求。

3.4 中文语音警告模块

对非法侵入者的中文语音警告功能的实现采用了中文语音引擎EKHO,该引擎是一种免费的开源中文语言引擎,支持粤语、普通话、藏语等多种中文发音方式。在Raspberry pi的Linux系统中安装EKHO后即可使用Python编写中文发音程序[8]。

关键代码:

def Speech()://中文语音提示函数

sys.setdefaultencoding('utf8')//字符集设置为支持中文的utf8

os.system('sudo amixer cset numid=3 1')//将声音输出设置为3.5音频口,注意3与1之间为空格

s='echo'.'中文提示内容'.'>/home/pi/Desktop/warning.txt'

os.system(s)//将文字写入txt文件中

os.system('ekho-f/home/pi/Desktop/warning.txt-o/home/pi/Desktop/warning.wav')//根据 txt文件中的中文字符内容生成wav格式的声音

os.system('aplay/home/pi/Desktop/warning.wav')//播放声音

4 结论

随着物联网技术的不断成熟与完善,各种基于物联网技术的智能家居应用受到了国内用户的广泛认可,Raspberry pi作为一种从国外传入的新型嵌入式开发平台,以其低能耗、低成本、高扩展性的优势,在多个行业的物联网应用系统开发中都显示出了巨大的发展潜力。同时, Raspberry pi体积轻便、开发环境简单易于掌握的特点也非常适用于在计算机教育领域进行推广与应用。

本文基于Raspberry pi平台设计的家用级智能安防系统框架,通过将多种类型的传感器及功能模块的有机整合与优化,实现了移动物体的探测、拍照、语言报警及短信提示等功能,以其低廉的成本与良好的可靠性有效满足了普通家庭用户的安防监控需求。此外,Raspberry pi强大的编程开发功能,还为系统提供了广泛的升级扩展空间,未来将继续研究系统与微信平台的对接,以提供更加丰富、完善的功能与更好的人机交互体验。

猜你喜欢

高电平超声波报警
一种基于FPGA的PWM防错输出控制电路
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
蝙蝠的超声波
基于Niosll高精度超声波流量计的研究
LKD2-HS型列控中心驱采不一致报警处理
数字电子技术的应用
浅谈物理电路与数字电路
蝙蝠的超声波
2015款奔驰E180车安全气囊报警
超声波流量计的研究