APP下载

基于树莓派的多功能智能家居系统

2018-03-03何静如

物联网技术 2018年2期
关键词:树莓派实时监控智能家居

何静如

摘 要:为了打造更舒适安全的家居环境,解决普通智能家居用品功能集成度低的问题,并降低购买成本,文中设计了一种以树莓派作为控制终端,通过多种传感器采集信息,实现集室内温湿度调节、人脸识别门锁、红外感应夜灯、实时监控多种功能于一体的智能家居系统。该系统可对室内温湿度进行调控,增大家居环境的安全系数,并满足节能便利的生活需求。整个系统功能集成度高,成本低廉,具有一定的应用价值与市场前景。

关键词:树莓派;智能家居;多功能集成;室内温湿度调节;人脸识别门锁;红外感应夜灯;实时监控

中图分类号:TP273;TP212 文獻标识码:A 文章编号:2095-1302(2018)02-00-04

0 引 言

家居环境的安全性与人们的生活息息相关。在湿热的环境下,人体的散热功能受到抑制,易导致烦躁、中暑、精神紊乱;而干冷的环境易使人体的皮肤干燥,同时也会诱发呼吸系统病症。此外,空气湿度过大或过小时,都有利于一些细菌和病毒的繁殖和传播。因此,保持室内合理的温湿度尤为重要。

由于人的面部特征具有唯一性[1],在传统门锁中加入人脸识别系统,并实时监控,可大大增加家居环境的安全系数并方便出行。另外,根据光线情况与是否有人,灯具可自动变换开关状态,满足了节能与便利的需求。

随着物联网技术的发展,各种智能家居设备应运而生,普通智能家居用品功能单一,集成度低。单独购买智能家居用品往往花费较高,树莓派作为一款基于ARM的微型电脑主板,具有成本低,可扩展性强等优点[2],并拥有视频模拟信号的输出接口,若将其作为控制终端,可设计出集多种功能于一体的智能家居系统。

1 整体结构设计

系统以树莓派作为控制终端,通过多种传感器采集信息,采用相应的硬件连接与软件支持,使用Python编程,可实现集室内温湿度调节、人脸识别门锁、红外感应夜灯、实时监控等功能于一体的智能家居系统。各功能以及相关软硬件示意如图1所示。

(1)室内温湿度调节:根据DHT11温湿度传感器测得室内温湿度,加湿器与风扇自动开关;将插座与连接树莓派的继电器相连,可使用树莓派控制插座上电器的开关状态。

(2)人脸识别门锁:当触摸传感器感应到有人触碰时,500 W像素树莓派摄像头将拍摄照片,并启动人脸识别功能,通过Face++云平台实现人脸图像的识别处理,根据人脸识别判断的结果控制电磁锁的开关。

(3)红外感应夜灯:通过光敏传感器与HC-SR501人体红外传感器感应信息,在天黑且有人的情况下,LED灯将自动打开。

(4)实时监控:利用Motion软件通过局域网将摄像头的实时监控情况呈现在Web网页上。

系统主要由控制终端、感应单元、受控单元及云服务四个部分组成:控制终端为树莓派;感应单元由各种传感器组成;受控单元包括各种家具器件及继电器;云服务主要指Face++云平台。

感应单元将传感器采集的信息数据传递给控制终端树莓派,其中,部分信息直接在本地处理,部分信息上传至云端,云端对图像信息进行处理后,将结果返回给树莓派。根据处理后的结果,树莓派发出相应控制指令到受控单元,控制相连的各器件。系统整体的信息数据流向方式如图2所示。

2 系统的设计与实现

2.1 控制核心

系统对数据传输能力要求较高,在视频数据与图像数据上需要保证流畅及稳定性,普通的单片微控制器[3](如Arduino)难以实现。考虑到成本与功能需求,该系统采用树莓派Raspberry Pi 3b作为控制终端。

树莓派Raspberry Pi 3bBroadcom BCM2837为片上系统,其运行频率为1.2 GHz,拥有四核ARM处理器, 1 GB RAM存储器,与40个GPIO引脚,CSI摄像头接口,HDMI接口,4个USB 2.0端口,10/100以太网端口,RAC av端口,USB电源接口,DSI显示连接器,搭载蓝牙和WiFi模块。

树莓派的GPIO 引脚定义如图3所示。GPIO引脚的编号方式有三种,分别为BCM编号方式(如图3中BCM列所示);BOARD编号方式(如图3中Physical列所示);wiringPi编号方式(如图3中wPi列所示)。图3中的Mode列为引脚的输入/输出状态,可通过编程设定[4]。

2.2 室内温湿度调节

根据DHT11温湿度传感器所测得的室内温度与湿度数据,在树莓派中对数据信息进行分析与处理。根据当前温湿度情况,通过二路继电器控制风扇或加湿器的打开与关闭。相关硬件连接如图4所示。

加湿器采用额定电压为DC 5 V、额定功率约2 W的小型加湿器;风扇采用供电电压为DC 5 V、输出电流为1 A、功率约3 W的小型风扇。小型加湿器与风扇可使用树莓派供电。若考虑功率更大的加湿器或风扇,可将加湿器或风扇插在与树莓派相连的插座上,通过220 V交流电源供电。

由于树莓派的GPIO引脚在Output状态默认为0,因此采用高电平触发的5 V二路继电器。树莓派提供5 V电源引脚与继电器的常开(No1、No2)触点相连,在常态(不通电)下处于断开状态,风扇与加湿器处于关闭状态。

DHT11温湿度传感器含有电阻式感湿元件与NTC测温元件,可输出经过校验后的温度与湿度数字信号[5],适用于室内温湿度的测量。其湿度测量范围为20%~95%;温度测量范围为0~50℃。

利用DHT11温湿度传感器的检测数据控制加湿器与风扇的开关状态,每隔5 min判断一次。由于人体适宜的湿度为45%~65%[6],因此在湿度小于45%的情况下打开加湿器,湿度大于65%的情况下关闭加湿器;温度大于27℃时风扇打开,温度小于23℃时,风扇关闭。该功能实现的程序流程如图5所示。endprint

2.3 人脸识别门锁

实现人脸识别门锁功能的硬件连接图如图6所示。通过220 V交流电压转12 V直流变压器,将电压转换为12 V直流电磁锁所需要的电压。当需要被检测时,触碰触摸传感器,此时启动树莓派摄像头拍照,根据人脸识别结果,通过树莓派控制5 V继电器来控制电磁锁电流的通断,即开锁或关锁。

触摸传感器是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块[7]。常态下,模块输出低电平;当有人触摸相应位置时,输出高电平。该模块可安装在非金属材料如塑料、玻璃表面,也可将薄纸片等非金属材料覆盖在模块表面,隐藏在墙壁等位置。

由于树莓派的GPIO引脚在Output状态默认为0,因此采用高电平触发5 V继电器,变压器的V+与继电器的常开(No)触点相连,在常态(不通电)下处于断开状态,电磁锁不通电,处于关锁状态。

人脸识别功能基于Face++云平台,其API以Http请求的方式进行调用[8],所使用的接口及其功能描述见表1所列。

首先判断是否有人需要被检测,当有人需要被检测时,将在本地的人脸图像及相关信息上传至Face++云平台,存入FaceSet中,建立人脸数据库,再判断拍摄的待识别图像中是否有人脸。若有,则与FaceSet中的人脸图像进行对比,当相似度大于80%时,则打开门锁。程序流程如图7所示,主要步骤(使用Python编程语言)如下:

(1)采用BOARD编号方式,GPIO2设置为Input状态,GPIO29设置为Output状态:

GPIO.setmode(GPIO.BOARD)

GPIO.setup(13,GPIO.In)

GPIO.setup(40,GPIO.Out)

(2)判断是否有人需要被检测,触碰了触摸传感器。

while True:

if GPIO.Input(13)==True:

...

time.sleep(2)

(3)若有人需要被检测,启动摄像头拍摄:

os.system('raspistill -w 480 -h 360 -o customer.jpg -t 2000')

(4)创建人脸集合FaceSet

api.faceset.create(outer_id='SetTest')

(5)将本地图片上传:

Picture = {}

save1 = api.detect(image_file=facepp.File(/test/test1.jpg))

Picture ['name1'] = save1 ["faces"][0]["face_token"]

save2 = api.detect(image_file=facepp.File(/test/test2.jpg))

Picture ['name2'] = save2 ["faces"][0]["face_token"]

(6)將本地图片的FaceTocken存入FaceSet中上传:

api.faceset.addface(outer_id='SetTest',

face_tokens= Picture.itervalues())

(7)得到拍摄图像的face_token:

customer_pic = api.detect(image_file=facepp.File(customer.jpg))

(8)判断是否检测到了人脸:

if(len(customer_pic ["faces"])==0):

//未检测到人脸,删除

api.faceset.delete(outer_id='SetTest', check_empty=0)

else:

//在 FaceSet 中寻找与所拍摄人脸最相似的,返回相似度

result = api.search(face_token= customer_pic ["faces"][0]["face_token"], outer_id='SetTest')

(9)得到相似度:

similarity = result ["results"]

judge=int(similarity [0]['confidence'])

(10)若相似度大于80%,则开锁:

if judge > 80 :

GPIO.Output(40, True)

time.Sleep(3)

GPIO.Output(40, False)

2.4 红外感应夜灯

红外感应夜灯的硬件组成为光敏传感器与HC-SR501人体红外传感器。

光敏传感器利用半导体的光电效应判断光线强弱,随着入射光线的增强,其电阻值减小,将光信号转换为电信号[9]。当光线强度小于设定的阈值时,DO端输出高电平;当光线强度大于设定的阈值时,DO端输出低电平。

通过HC-SR501人体红外传感器可判断是否有人。若人进入其感应范围,则输出高电平;若人离开感应范围,则自动延时关闭高电平,输出低电平。HC-SR501有以下两种触发方式[10](可跳线选择):

(1)不可重复触发方式(L):在感应到有人输出高电平后,不再进行感应判断,延时时间结束后,输出低电平;

(2)可重复触发方式(H):在感应到有人输出高电平后,仍然进行感应判断,以最后一次感应到有人的时间为延时的起始时间。endprint

这里采用可重复触发方式(H)。

为了防止HC-SR501的针脚处于悬浮状态,出现输出电平状态不稳定的情况,接入10 kΩ下拉电阻,使其处于明确的低电平状态。硬件连接如图8所示。

红外感应夜灯在天黑且有人的情况下自动打开。功能实现的关键代码(使用Python编程语言)如下:

light = 12 //LED灯与树莓派相连的GPIO引脚编号

infrared = 25 //人体红外传感器与树莓派相连的GPIO引脚编号

photosen = 16 //光敏传感器与树莓派相连的GPIO引脚编号

GPIO.setmode(GPIO.BCM) //采用BCM的编号方式

GPIO.setup (light,GPIO.Out)

GPIO.setup (infrared,GPIO.In)

GPIO.setup (photosen,GPIO.In)

While True:

if(GPIO.Input(infrared) ==True and GPIO.input(photosen) ==True):

GPIO.Output(light,GPIO.HIGH)

time.sleep(30) //天黑且有人的情况下,开启灯30 s

else:

GPIO.Output(light,GPIO.LOW) //否則,关灯

time.sleep(5)

2.5 实时监控

摄像头与树莓派的CSI摄像头接口通过15芯的排线连接,利用Motion软件,通过局域网实现实时监控。

(1)在终端中使用如下命令安装Motion软件:

sudo apt-get install motion

(2)配置motion daemon守护进程,使其在后台运行:

sudo nano/etc/default/motion

start_motion_deamon=yes

(3)修改motion的配置文件,将deamon off 改成 on,设置分辨率,关闭localhost的限制:

sudo vim /etc/motion/motion.conf

deamon on

width 800

height 600

webcam_localhost off

(4)运行motion:

sudo motion

(5)查看树莓派IP地址:

ifconfig

(6)在同一局域网下,访问树莓派IP的8081端口,即可获取实时监控的视频数据:

http://[Raspberry Pi IP]:8081

3 结 语

本文介绍了通过树莓派实现多功能智能家居系统的可行性,设计了各功能的硬件连接图与软件实现方案。以树莓派作为控制终端,可实现室内温湿度调节、通过人脸识别开闭门锁、红外感应夜灯、实时监控。对各项功能进行实验与操作,已全部达到预期效果。系统功能集成度较高,设计易于搭建,相关硬件成本低廉,具有广阔的应用市场与发展前景。

参考文献

[1] 邱丽华.人脸信息认证系统基于设计模式的设计与实现[D].武汉:华中科技大学, 2008.

[2] Rushi Gajjar.树莓派+传感器:创建智能交互项目的实用方法、工具及最佳实践[M]. 胡训强,张欣景,译.北京:机械工业出版社,2016.

[3] 张毅刚,刘旺,邓立宝.单片机原理及接口技术[M].北京:人民邮电出版社,2016.

[4] Alex Bradbury, Ben Everard.树莓派Python编程指南[M].王文峰,译.北京:机械工业出版社,2015.

[5] Tero Karvinen,Kimmo Karvinen,Ville Valtokari.传感器实战全攻略[M].于欣龙,李泽,译.北京:人民邮电出版社,2016.

[6]眭晋华,史红梅,眭广瑞.空气湿度及其影响[J].山西科技,2011,26(3):143-144.

[7]来清民.传感器与单片机接口及实例[M].北京:北京航空航天大学出版社,2008.

[8] face++ API文档[EB/OL].https://console.faceplusplus.com.cn/documents/4887579.

[9]王琦,阮淑云.光敏电阻传感器的特性研究[J].都市家教(上半月),2014(6):188.

[10]李萌.智能楼道照明节电控制系统的设计[J].电子制作,2014(10X):49-50.endprint

猜你喜欢

树莓派实时监控智能家居
基于Zigbee的无线通信技术在智能家居中的应用
智能投料过程动态监控系统研发及应用
智能安全防盗探测小车
关于智能家居真正需求的探讨
基于嵌入式技术的农村医疗系统设计
基于LD3320的智能家居控制