APP下载

基于Android手机的家居安防系统的设计与实现

2019-05-27李艳东2徐凤霞么洪飞

计算机测量与控制 2019年5期
关键词:串口客户端摄像头

朱 玲,李艳东2,徐凤霞,么洪飞

(1.齐齐哈尔大学 机电工程学院,黑龙江 齐齐哈尔 161006;2.齐齐哈尔大学 计算机与控制工程学院,黑龙江 齐齐哈尔 161006)

0 引言

智能化时代为人们的家居生活带来了各种便捷设施,如智能电器、智能门窗、煤气设备等,便利的同时难免存在安全隐患。随着人们物质生活水平及安全防患意识的提高,家居安防再度引起重视,但快节奏的生活使得人们在家的时间越来越少,无法切身地顾及家居的安全问题,这使得家居安防远程监控系统的研究成为一项热点。

早期的家居安防系统需采用专门铺设的线路进行信息传输,对危险情况的警示大都是声光报警、电话拨号报警,存在着传输距离短、无法监控危险现场、使用不便捷等问题[1]。随着无线通信技术的迅速发展,结合日益普及的智能手机、个人电脑、云服务器等构建灵活可靠的家庭安防监控系统成为该领域的主要研究方向。目前家居安防系统的研究多以物联网技术为核心,采用ZigBee无线网络技术,结合以太网/GPRS等进行远程监控,具有无需布线、网络丢包率低、功耗低等优点,有效地避免了传输效率低、受距离限制等问题[2-5];国外学者从节能角度设计了家庭自动化系统,基于Android应用程序实现对家庭未断电设备的远程控制[6-8]。上述文献有效地解决了早期家居安防系统存在的问题,但没有客户端视频监控功能,本文基于智能手机设计了具有视频监控功能的家居安防系统,能让用户在任意时间和具备网络的地点实时观察家里情况,是目前家居安防系统的重要功能,具有研究和实现价值。

1 安防系统功能与组成

家居安防系统主要实现如下基本功能:

1)环境温湿度值的监测;

2)火灾报警;

3)外出模式下的防盗功能;

4)异常情况下的视频采集与传输报警;

5)异常情况下的语音警示;

6)手机客户端实时监控功能。

针对上述功能要求,设计安防系统的基本组成如图1所示。基于Android智能手机的家居安防系统首先需要进行客户端和服务端设计,即实现一个C/S架构的系统模式。此安防系统用于家庭使用,所需服务器并发量很小,因此选用个人电脑作为服务器而无需租用。服务器主要处理传感器数据、采集摄像头图像数据和响应Android客户端请求等任务;Android客户端则是在用户启动后请求并显示服务器端的内容,并可以进行录音广播;硬件部分通过微处理器对传感器数据进行采集与处理,并通过NRF无线网络传送给接收端,接收端通过串口通信将数据传给服务器。

图1 安防系统组成

2 安防系统硬件设计

针对安防系统的功能要求,将硬件设计分为以下9个模块:

1)温湿度采集模块:选用广州奥松电子有限公司的DHT11数字温湿度传感器采集当前温湿度数据,传感器的湿度分辨率为1%RH、精度为4~5%RH,而温度的分辨率为1℃、精度为1~2℃,量程为0~50℃。温湿度传感器集成于一个单独采集节点中,数据通过微处理器解析后经NRF无线网络传输到与主机连接的总接收端的微处理器,再经由串口通信协议将数据传输到服务器主机,当Android客户端请求时,将此数据发送给客户端。

2)人体感应器模块:人体感应器选用HC-SR501模块,该传感器能够接收10微米左右的红外线,灵敏度高、可靠性强,当传感器接收到人体发出的红外线时会使得热释电元件释放电能,从而检测是否有人靠近。

3)火焰传感器模块:该模块可以用于检测760~1 100 nm范围内的光源或者火焰,其使用LM393低压双路比较器用于比较信号电压与基准电压以确定输出电平信号,并且通过配置电位器调节基准电压值,从而调节感应灵敏度。当火焰传感器接收到信号源时,光电元件触发光电效应产生一个电压值,该值经电压比较器基准电压值进行比较,大则输出高电平,反之输出低电平。工作电压为3.3~5 V。

4)无线通信模块:无线通信起到串联模块节点与终端的作用,使得监测节点可以脱离有线的束缚,自由、灵活。基于实际使用场景、传输距离和性价比考虑,选用NRF24L01无线传输模块,该模块对外开放了5个可编程GPIO,可以很方便地与各种处理器进行组合构建通信系统,并且它拥有多达125个可选通信频道,对于家庭室内应用场景而言,可以满足多个节点组网需求。实际应用中,通常将NRF24L01模块的GPIO接至处理器的GPIO上模拟SPI通信,而在编写SPI通信程序时需要严格遵守对应的通信时序(具体可查阅芯片的DataSheet手册)。

5)微处理器为核心的硬件电路:微处理器的工作是接收来自传感器的数据并进行数据的转换工作,当转换完成后将数据通过无线模块发送给接收节点。处理器任务少且内存空间消耗不大,故选择STC公司的STC89C52作为各节点的核心处理器将上述四个模块连接成硬件电路图,如图2所示。

图2 系统硬件电路图

6)视频采集和处理模块:视频采集设备使用的是USB摄像头,并采用摄像头采集技术框架webcam-capture采集图像。webcam-capture是Bartosz Firyn和开源贡献者们开发的一个专门用来采集摄像头数据的Java跨平台开源库,支持多种驱动拓展,可以采集PC端内置摄像头和USB摄像头,以及IP网络摄像头的图像数据[9]。摄像头的数据采集需要一定的触发条件才会正常进行,例如在闲置的一定时间后如果没有客户端请求,那么摄像头会处于录像监控模式,而有请求触发后则进入等待响应用户处理模式。

7)异常警报模块:人体感应传感器和火焰传感器二者其中之一被触发时会通过NRF无线网络将信号传输到本地服务器主机,主机判断信号后随即抓拍图像或者短视频并以邮件附件形式发送给用户。

8)视频显示模块:视频显示在Android客户端中进行,客户端通过身份验证登陆,登陆成功后方可根据参数请求视频数据,请求成功后即可在客户端中播放远程视频。

9)语音广播模块:语音广播功能即用户在Android客户端可以录制一段语音数据上传到服务器主机,并可在主机播放。

3 系统软件设计

3.1 服务器软件模块

服务器主要负责数据的采集与加工处理,以及响应客户端数据请求,包含账户验证、串口数据采集和处理、摄像头数据采集和处理、MJPEG视频数据流合成处理、异常时发送邮件以及播放客户端上传的语音文件等功能。根据性能要求,服务器端软件选用开源的Apache Tomcat。

3.1.1 Java服务器开发环境搭建

服务器端使用的开发语言是Java,而Java依赖JVM(Java虚拟机)来编译和运行程序代码,因此需要先配置Java开发平台。从Oracle官方网站下载合适版本的JDK和Java EE工具包,安装后在系统变量表中的PATH变量末尾直接添加JDK安装路径下bin文件夹的路径,例如C:Program FilesJavajdk1.8.0_152in,操作完成后打开CMD控制台输入java-version,如果输出类似于图3,则说明JDK配置完成。同样的方法配置Apache Tomcat 服务器并安装Eclipse编辑器。

图3 JDK环境配置成功时测试输出图

3.1.2 验证并响应客户端请求

以用户名和密码作为验证依据,只有用户名和密码正确时才能进行客户端数据请求,由于每个请求都会伴随表单数据,因此出于数据安全考虑服务器将不接受GET请求而只接受POST形式的请求。

3.1.3 串口数据的采集

串口数据的采集工作需要在一个独立的线程中执行,而不是运行在Servlet中,这是由于Servlet运行在特定的线程池中,并且每当客户端发出一个请求,服务端都会创建一个Servlet来响应这个请求,如果把串口数据放在Servlet中,会有多个线程进行串口通信,这会导致只有一个线程成功通信,而其他线程则会因串口被占用而导致错误。基于上述缘故,串口数据采集线程需要在Tomcat服务器启动后部署工作开始前开启,这样就可以保证串口数据采集线程的生命周期跟随服务器而非Servlet。

3.1.4 实时视频监控

实时视频监控是本系统设计与实现的重点之一,该系统使用Motion JPEG,即MJPEG作为视频传输格式,视频中的每一帧都是使用JPEG格式编码的图片,对硬件编码和运算能力要求较低。在服务端得知客户端请求实时视频后,服务器会通过摄像头进行连续拍照,采用webcam-capture技术进行图像采集工作。为保证视频流畅,1秒内至少连续采集图像30次,并将图像连续发送回客户端,直到客户端中断连接。程序过程如图4所示。

图4 实时视频请求与响应过程

3.1.5 异常时发送警报邮件

异常时发送附带抓拍图像的警报邮件是安防系统的重要功能,在串口数据采集正常进行的条件下,异常在以下两种情况发生时成立:1) 设置为外出模式的情况下,人体感应器检测到有人进入室内;2)火焰感应器检测到火灾发生。当服务器根据串口数据检测到异常发生时,将会通过摄像头抓拍室内图像或者短视频,并以邮件附件的形式发送给用户,程序流程如图5所示,如果异常持续,此过程会连续进行多次。

图5 异常时发送邮件过程

3.2 Android客户端软件模块设计与实现

Android是目前市场占有率最大的手机系统平台,支持不同设备类型的开源软件堆栈。Android的主要目的是为运营商、OEM和开发者创建一个开放的软件平台,使他们能够将自己的想法转化为现实,引入真实的产品,从而有效地提高用户的移动体验。Android系统架构自底向上分别是Linux内核层、硬件抽象层(HAL)、Android系统服务层、Binder IPC代理层和应用层。

本系统Android客户端主要负责根据用户操作请求服务器数据,并将响应数据展示至用户界面,包含账户验证、服务器温湿度数据显示、MJPEG视频流数据播放、语音录制与上传、模式切换以及账户管理等功能,部分功能的实现详细介绍如下。

3.2.1 Android开发环境搭建

Android客户端App开发环境使用的是Google官方IDE Android studio。从Google开发者中文网站中下载Android studio最新版并安装[10],安装完成后打开Android studio,同时新建工程。

3.2.2 UI界面设计与实现

UI界面是与用户沟通的桥梁,良好的界面设计和操作逻辑能提升用户体验。Android客户端需要向用户展示温湿度、视频监控,提供安全模式切换、账户管理等功能,因此可设计主要功能UI如图6所示。

图6 主要功能的UI界面

3.2.3 网络请求框架设计与实现

网络请求框架用于连接服务器并请求相关数据,本系统采用Square公司的OkHttp,OkHttp的请求过程如下:

1)当使用URL(统一资源定位符)进行请求时,OkHttp会使用这个URL配置OkHttpClient来创建一个Address(地址),用于指定目标服务器;

2)然后在数据库ConnectionPool(连接池)中查看是否具有已经连接到目标服务器的连接,如果存在,则复用这个连接,如果不存在,则通过另一条Route(路径)进行尝试,这意味着会进行DNS请求以获取目标服务器的IP地址;

3)接着进行Socket连接或者HTTPS连接,如果连接失败,OkHttpClient会选择另一条Route进行尝试。连接成功后,OkHttpClient向服务器发出HTTP请求,并读取响应数据,同时这个Connection(连接)将会放到ConnctionPool中以备后续复用,如果这个Connection在一定时间内没有再次被使用,则被销毁。

3.2.4 监控视频数据播放

MJPEG视频流是由一帧一帧的图片组成的,由于不需要频繁变化播放界面,因此可以采用Android系统中充当着浏览器角色的WebView来请求和播放MJPEG视频流,操作简单、性能稳定。

3.2.5 语音录制与远程播报

当通过异常邮件得知有陌生人闯入室内时,通过语音广播震慑陌生人而让对方得知自身已经被发现,这是对异常情况的一种回应方式。本系统Android客户端语音录制使用的是MediaRecoder(Android系统开放的用于录制语音和视频的API),根据MediaRecorde状态图完成初始化过程[11]。在编写应用程序时需要严格遵守其状态时序,否则无法正确进行录音工作。完成音频录制后,会将音频文件上传至服务器,服务器成功接收到音频文件后立即播放。

4 安防系统测试

以家庭个人电脑作为中央服务器,以Android智能手机作为客户端设备,对硬件端的传感器信息采集与NRF无线通信、服务器端与硬件端的串口通信、服务器与Android端的数据交互、Android客户端对数据的解析等功能进行了测试。在测试过程中使用局域网,如需进行外网访问,则可租用外网域名并在服务器端配置即可。

4.1 硬件端测试方法

PC端通过STC-ISP程序烧录软件中的串口助手进行测试,正常工作下,接收缓冲区会不断接收到硬件端通过串口通信传来的数据,检查数据格式,若与硬件接收端传出的数据格式一致且在传感器状态发生改变时接收到的数据也会发生变化,表明硬件部分工作正常。

4.2 服务器端与Android客户端功能测试

服务器端主要测试能否正常与硬件端进行串口通信、异常时能否正常发送警报邮件、能否正常响应客户端请求以及传输视频数据到Android客户端。与之对应的,Android客户端则主要测试是否能正常请求和解析服务器的数据、能否正常进行视频实时监控以及能否正常进行语音录制与广播功能。

通过打印log日志的方法观察运行情况。例如,测试服务器是否正常响应客户端请求时,客户端的每个请求都包含一个标志用来标识所请求的类型,服务器接收到请求后根据这个类型返回对应类型的数据,正常响应客户端请求时log输出如图7所示,“type:sensor”表示当前客户端请求的是传感器数据,而“type:motion”表示当前请求的数据是摄像头监控数据,“capturing..”则是开启摄像头拍照时的log日志输出。

图7 正常响应客户端请求时log输出

再比如测试服务器是否正常发送警报邮件,邮件正常发送时的log输出如图8所示,在“Outsides”外出模式下,通过传感器数据判定为异常时(数据“1,0,30,55,255”中的255是人体感应器触发时的信号输出,正常时为0),将会发送附带摄像头抓拍图像的邮件给用户,接收到的邮件如图9所示。

图8 邮件正常发送时log输出

图9 异常警报邮件

经测试,客户端的环境数据显示、视频监控、语音录制与播放等功能都能稳定运行,实现了家居安防系统的功能要求。

5 结束语

家居安防系统实现了对室内温湿度、火情和人员闯入的信息检测,能够在Android手机客户端远程请求视频查看功能,并在异常发生时收到视频邮件,及时查看异常情况,适时进行语音警告提醒。无线网络传输方式解决了布线问题。经测试,该系统运行稳定可靠。增加烟雾传感器、光线传感器等则可实现室内的特殊气体和光线检测功能,具有较强的扩展性。

该系统能够满足现代智能家居安全、便捷、低成本的要求,远程视频监控的功能也适用于对家中孤单老人的监护。

猜你喜欢

串口客户端摄像头
你的手机安装了多少个客户端
浙江首试公路非现场执法新型摄像头
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
摄像头连接器可提供360°视角图像
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
MCS—51单片机中的多串口通讯技术的应用
奔驰360°摄像头系统介绍
新华社推出新版客户端 打造移动互联新闻旗舰
找出摄像头花屏的“罪魁祸首”