APP下载

基于Raspberry Pi 3的智能家居系统设计*

2018-03-01,

单片机与嵌入式系统应用 2018年2期
关键词:树莓文件夹智能家居

,

(1.咸阳师范学院 计算机学院,咸阳 712000;2.苏州大学 )

引 言

随着计算机技术的不断发展,特别是无线网络技术的快速发展,智能手机、智能电器等智能设备不断上市,智能家居已进入消费领域。智能家居是指集射频技术、综合布线、计算机网络、安防、自动控制等于一体的智能化家居控制系统[1]。目前,物联网设备价格高、设计复杂、软件集成度不高,极大地阻碍了智能家居的普及。因此,如何设计一套价格低廉、易于扩展、使用便捷的智能家居系统已成为业界关注的热点,Raspberry Pi技术(中文名“树莓派”,简写为RPI)的出现为本设计奠定了基础。

1 系统设计

1.1 硬件的选择

(1)RaspberryPi介绍

2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)发售了世界上最小的台式机,尺寸只有卡片大小,但却具有普通PC机的全部功能,这就是Raspberry Pi电脑板,中文译为“树莓派”[2]。Raspberry Pi是一款基于Linux嵌入式系统的卡片式电脑,它提供了USB、I2C总线和HDMI等接口,可选用C、Python语言等通过装载Linux 系统和相应的应用程序实现多种功能[3-4]。

设计选用树莓派3代B型机作为开发机,它采用Broadcom BCM2837作为其SoC(片上系统),CPU 基于ARM Cortex-A7架构、4核、主频1.2 GHz,具体参数见表1。

表1 Raspberry Pi 3代B型机参数表[5]

续表1

(2)其他硬件

智能家居系统中包含ESP2866模块、显示器、鼠标、键盘、WiFi摄像头等硬件。其中,ESP8266具有 WiFi功能,其核心是一块Diamond Standard 106Micro控制器以及一个低功耗的32位RISC控制器[6]。同时,它拥有可以直接运行代码的处理器,具备GPIO、I2C、ADC、SPI、PWM等模块,并支持AP(Access Point)、STA(Station)、AP+STA共存模式,可使用高效的AT指令[7]。

1.2 系统的总体设计

智能家居系统主要由Raspberry Pi 3代B型机、云服务平台、WIFI摄像头、ESP2866模块、红外线传感器、PC机(或移动终端)等设备通过有线或无线方式互联构成(如图1所示)。

图1 智能家居系统总体结构

云服务器主要负责数据的存储,提供数据查询接口;PC机提供控制家居的接口,Raspberry Pi客户端负责读取传感器数据,发送从摄像头获得的图像以及对智能开关的控制。

1.3 硬件连接

ESP8266、WiFi摄像头、PC机等与Raspberry Pi的GPIO接口相连。Raspberry Pi的1号引脚与ESP8266引脚2、4连接,Raspberry Pi的6号、8号、10号引脚分别与ESP8266的8号、1号、5号引脚相连接。Raspberry Pi读取传感器获取的数据,并通过ESP8266模块来控制LED的打开或关闭,ESP8266引脚[9]模块定义如图2、图3所示。

图2 ESP2866引脚

2 软件的选择

系统软件设计过程中主要在Linux环境下编写监控程序,利用编写JavaScript附件实现小灯与Homekit的联动;使用Python编写程序控制GPIO引脚电平的高低,进而通过语音助手实现语音控制小灯的打开与关闭;采用 shell脚本控制摄像头进行拍照,通过Python语言将照片上传到云服务器(七牛云)中。

2.1 Python语言

Python是一种面向对象的解释型计算机程序设计语言,它是自由软件,源代码和解释器CPython遵循 GPL(GNU General Public License)协议[10-11]。Python语言主要具有简洁性、易读性以及可扩展性的特点,它具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起[12-13]。

2.2 JavaScript

JavaScript是一种动态类型、弱类型且基于原型的脚本语言,内置支持类型JavaScript引擎,广泛用于客户端[14]。它的主要特点是可以直接嵌入HTML页面,跨平台,具有动态性,简单紧凑。

2.3 七牛云

七牛云[15]是国内领先的企业级云服务商,专注于以数据管理为中心的云计算业务研发和运营,主要提供云计算、大数据平台、人工智能平台等产品,并提供一站式视频云解决方案。

2.4 Linux

Linux有非常多的发行版本,开源社区版本则以Debian为代表。Debian作为适合于服务器的操作系统,比Ubuntu要稳定得多[16]。Debian系统基础核心小、稳定性高,而且占用系统资源少,所以本次开发过程中选用Linux 的Debian版本[17]。

3 系统的设计与实现

3.1 监控模块设计

监控模块开发的基本步骤如下:

① 安装系统和基本设置;

② 在树莓派上进入终端,开发采用Debian系统,执行sudo raspi-config命令,打开config摄像头可用,关机将摄像头安装在开发板上;

③ 在七牛云平台上创建一个对象存储,保存sk码与ak码;

④ 添加代码,写一个.sh脚本,安装七牛云的python.SDK,在命令行输入sudo pip install qiniu,在take_photo.sh目录下建立一个test.py,以保证每次执行take_photo.sh脚本,都可以让树莓派拍一张照片并且发送至七牛云上进行保存。

软件设计及调试步骤如下:

① Debian系统下配置拍摄头(如图4);

② 七牛云平台下申请ak与sk;

3.2 灯光控制模块设计

灯光控制模块开发的基本步骤如下:

① 用户用自己的账号登陆Linux系统;

② 打开lx终端;

③ 进入cd/home/pi/Documents/hap-nodejs文件夹并输入node Core.js配置相关环境;

④ 手机中打开homekat,添加配件,找到自定义的Led灯,并输入pin码进行配对;

⑤ 配对成功后通过siri进行对小灯的控制。

灯光控制模块开发的过程如下:

① 安装系统,下载镜像包,用Win32将系统烧进SD卡。

② 用已有账号登陆系统(超级用户),安装python-dev和python-tyt,再安装libavahi与libdnssd,下载node,查看node与npm的版本,如果版本过低则进行升级,从github克隆homekitbridge并进入HAP-NodeJS文件夹,安装模块,重建npm(主要命令如下)。

sudo apt-get install git //安装 git

sudo vim config.mk //编辑 config.mk

sudo apt-get install uuid-dev xsltproc docbook-xsl

//安装 pre-reqs

sudo cp mosquitto.conf /etc/mosquito //复制配置文件

sudo /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf //启动服务

③ 进入assessoriess文件夹,并新建一个灯光附件,将相应代码放入文件夹内,保存并退出。

④ 创建一个python文件夹控制GPIO电平,进入HAP-NodeJS文件,建一个新的.py文件夹,在这个文件夹里新建两个.py文件,将控制GPIO电平的两段代码分别放入,根据控制GPIO的代码将小灯接在GPIO引脚上,测试python能否正常运行。

sudo tar xvf node-v5.8.0-linux-armv7l.tar.xz //解压

sudo npm install-g node-gyp //安装node

⑤ 调试运行(如图4所示)。

图4 输入指令调试界面

4 系统测试

打开手机中的智能家居APP,在七牛云云端查看监控拍摄的记录(如图5所示),通过设计的灯光附件,输入pin码进行配对,成功后打开siri通过语音控制LED灯的打开与关闭(如图6所示)。

图5 监控拍摄的画面

图6 语音控制打开小灯

结 语

本设计选用Raspberry Pi 3(树莓派3代)作为智能家居系统的开发版,由于Raspberry Pi具有价格低、通用性及兼容性强的特点,降低了开发成本。同时,选用七牛云公司提供的公有云对监控数据进行存储,缩短了开发周期。

经测试,智能家居系统实现了对家庭环境远程监控,且监控画面清晰,由于监控数据选择云端存储避免了本地数据人为或自然灾害而造成的损坏。

灯光控制模块实现了通过手机APP语音远程控制室内LED的打开或关闭,极大地方便了人们外出时对家居灯光的查询和控制,有一定的应用价值。

[1] 陶在红,杨宇,常建华.基于 ZigBee的智能家居控制系统设计[J].现代电子技术,2014,37 (23):9-12.

[2] 倪瑛,王宏磊.基于蓝牙的微信智能门锁的设计[J]. 南京工业职业技术学院学报, 2016, 16(4):16-18.

[3] 张怀柱, 姚林林, 沈扬,等. 基于树莓派的农作物低空观测系统设计[J].吉林大学学报:信息科学版, 2015, 33(6):625-631.

[4] MEMBREY P,HOWS D.树莓派学习指南:基于Linux[M].北京:人民邮电出版社, 2014:165-184.

[5] 微雪电子.关于Raspberry Pi 3 Model B[EB/OL].[2017-10-08].http://www.waveshare.net/shop/RPi3-B.htm.

[6] 基于ESP8266的物联网解决方案[EB/OL].[2017-11]. http://www.51hei.com/bbs/dpj-47428-1.html.

[7] 段亚林, 谢永斌. 基于Nucleus的通信终端中AT指令模块的设计与实现[J]. 计算机测量与控制, 2015, 23(11):3744-3746.

[8] Warren Gay.精通Raspberry Pi[M].北京:清华大学出版社,2015.

[9] 范兴隆. ESP8266在智能家居监控系统中的应用[J].单片机与嵌入式系统应用, 2016, 16(9):52-56.

[10] 王家峥. 基于主机的实时可疑网址检测系统[D]. 长春:吉林大学, 2016.

[11] Sanjay Misra,Ferid Cafer. Estimating complexity of programs in Python language[J]. Technical Gazette,2011,18(1).

[12] Python基础入门教程[EB/OL].[2017-11].http://blog.csdn.net/new0801/article/details/60957843.

[13] 曹华雄,顾乃杰,李燚.面向Python程序的静态死锁检测方法的研究[J].小型微型计算机系统, 2017, 38(3):465-471.

[14] 翟梅, 陈健, 张鸿洋. 基于MOOCs的个性化学习评价系统的设计[J]. 计算机技术与发展, 2015, 25(12):165-168.

[15] 七牛云中标湖北长江云服务广电布局政企市场——关于IT产业和产业IT的一切[EB/OL].[2017-11] .http://www.ccw.com.cn/article/view/128699.

[16] 周晓梅,宋燕燕.基于云存储的校园文件管理系统研究与应用[J].电子世界, 2016(2):37-41.

[17] 吴婷婷, 陆静. Debian环境下局域网时间同步系统的构建[J].长江大学学报:自科版, 2011,8(11):71-72.

张伟(硕士),主要从事物联网与嵌入式系统等方面的教学和科研工作;王宜怀(博导),主要研究方向为嵌入式系统应用。

猜你喜欢

树莓文件夹智能家居
基于树莓派的骑行智能头盔设计
基于Zigbee的无线通信技术在智能家居中的应用
基于树莓派的远程家居控制系统的设计
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
关于智能家居真正需求的探讨
挂在墙上的文件夹
响应面法优化红树莓酒发酵工艺
不容忽视的空文件夹
智能家居更贴心