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

2019-12-28 08:24王钢黄连丽张松峰陶玉龙
现代计算机 2019年32期
关键词:树莓线程家居

王钢,黄连丽,张松峰,陶玉龙

(湖北汽车工业学院电气与信息工程学院,十堰442000)

1 系统设计

随着计算机技术的不断发展,家居的智能化已经逐渐成为现实,因而对这方面的应用和学习是必不可少的。本课题基于Python 语言[1]在树莓派上进行系统开发,充分利用树莓派这个完美的中介点,用户通过运用网络技术实现移动端、家庭中控和PC 端对系统进行实时的监控家居的状况。系统采用两套方案,一是只实现基本的数据采集和家庭安防控制等功能,二是在原有的基础上加强对系统的管理,实时监测系统的运行状态。具体完成的功能分为两类,一为家居安防[2],二为数据采集[3]。家居安防主要通过在终端设备上以视频的形式显现出来,家居中再通过人体红外传感器、开关传感器等类似的传感器作为辅助功能,加强家居的安全性。数据采集部分主要通过一些传感器所产生的实时数据,系统进行分析给用户的衣食住行提供策略。

2 硬件设计

2.1 硬件模块搭建

如图1 所示,此次设计需要的传感器及硬件模块如图所示。这些模块通过树莓派的扩展板和树莓派GPIO 引脚口相连。每个传感器占用了一个或者两个GPIO 引脚口。每个传感器连接的GPIO 口统计结果如表1 所示。

图1 传感器硬件模块

表1 传感器引脚占用统计表

2.2 硬件功能实现

(1)树莓派摄像头模块实现

通过树莓派摄像头模块实现的功能主要侧重于对家居指定位置进行实时拍照,通过获取到捕捉的图片存放到指定的路径,在后端进行处理,进而使前端实时使用这一路径中指定的图片。其核心代码如下所示。def get_picture():

with picamera.PiCamera()as camera:

camera.resolution=(1024,768)

camera.start_preview()

time.sleep(1)

name=str(datetime.datetime.now())

camera.capture('/home/pi/SmartHome1804/static/CmaeraPng/picture/'+name+'.jpg')get_picture()

(2)烟雾传感器模块实现

通过烟雾传感器模块主要实时的功能就是当发生煤气泄漏能将第一时间将变化数据传给后台,后台将获取到的数据传送给用户。其核心代码如下所示。

#!/usr/bin/env python3

#encoding:utf-8

import RPi.GPIO as gp

import time

gp.setmode(gp.BCM)

gp.setwarnings(False)

gp.setup(26,gp.OUTPUT)

while True:

if gp.output(26,True):

print("有烟雾.....")

elif gp.output(26,False):

print("烟雾模块正常....")

time.sleep(2)

(3)火焰传感器模块实现

通过火焰传感器模块主要实时的功能是当有不正常的产生,通过硬件能实时返回一个高低电平,向系统后台进行一个反馈,其核心代码如下所示。

import RPi.GPIO as gp

import time

gp.setmode(gp.BCM)

gp.setwarnings(False)

gp.setup(26,gp.OUTPUT)

while True:

if gp.output(26,True):

print("有火焰.....")

elif gp.output(26,False):

print("火焰模块正常....")

time.sleep(2)

3 软件设计

智能家居系统IFSS 总体程序主要由两部分构成,第一部分为树莓派端的服务器程序和控制程序,另一部分为Android 手机App 程序,两者依靠Socket 通信进行交流,从而实现Android 手机客户端对于树莓派服务器端的控制[4]。

树莓派连接的所有传感器都是通过GPIO 引脚与树莓派主板相连,通过设置对应引脚的状态来与特定的传感器的进行通信。如温湿度传感器共有三个引脚,一个是接3V 电源,另一个接GPIO 口并设置该口模式为输出,还有一个接地线。编写驱动程序时只需要从GPIO 口进行读取数据并进行分析即可。超声波测距模块的原理是其不断的向外发射超声波,然后通过计算接收到反射波所需要的时间来计算与障碍物之间的距离,我们需要设计好其相应的计算公式。其计算公式为:时间差×340÷2。人体红外传感器的主要原理是接收其前方120o的扇形里的红外光线,然后来分析是否有人,其探测距离可以调整,为了适应本次课题,将其精确度设计到了3 米。

火焰传感器和其他的传感器模块类似,其工作原理探测周围一定范围内的空间来确定其周围是否有明火。如果探测到周围有明火则输出一个高电平,树莓派再从火焰传感器对应的引脚去读取发出的高电平从而做出反应。

3.1 服务器软件设计

树莓派端的服务器程序流程如图2 所示。

程序开始执行后首先执行服务器自检程序,此时不论是哪一部分的自检程序报错,都及时发出语音报警并提示用户做修理工作。只有自检程序通过后,服务器才开始正式运行。此时开始一个子线程,子线程的工作是定时从各个传感器读取数据并存入到传感器对象的相关属性当中,该线程循环执行,直至主程序结束运行。主线程此时开始执行Socket 类中的accept 方法,即循环监听设定好的端口,如果有客户端连接,那么为该客户端分配新的线程来接收和处理相关指令,主线程继续循环监听端口等待连接。

图2 服务器程序流程图

3.2 客户端软件设计

Android 手机客户端[5]的程序流程如图3 所示:当用户点击打开App 后,首先连接树莓派服务器,如果连接失败,则立即弹出对话框提示用户连接服务器失败。只有当网络良好连接成功后,程序进入登录界面。用户需要在登录界面手动输入账号ID 和登录密码,点击登录后,程序首先会对用户输入的账号和密码的格式进行检查,如果格式不正确,则会提示用户重新填写,如果格式正确,则程序将用户账号和密码打包发送给服务器进行验证,如果验证通过,则进入程序主页面。如果验证不通过,则提示用户密码错误,用户可以选择重新输入密码或者是点击忘记密码,当用户点击忘记密码后,程序跳转到重置用户密码界面,此时需要用户输入新的密码和自己预存的手机号码,然后服务器会给手机客户端发送验证码,用户填入验证码后,再点击确认修改,然后就以跳转回登录界面进行账号登录任务。

图3 客户端程序流程图

4 结语

本设计通过PC 端、中控端及手机端能够对家居进行实时精确地监控,服务端能对数据进行整合分析及时对家居内可能发生的状况进行预警分析,也能够对家居内发生的紧急事件进行预警和一定自动处理能力。中控和手机端能够实时接收到服务端的预警,进而触发相应的事件。

猜你喜欢
树莓线程家居
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
打造日常家居“氛围感”
台北家居
黄金水果红树莓
树莓红了 游人醉了
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)
《数码家居》2009年下半年推荐榜