基于Raspberry Pi的智能家居系统设计
2017-01-12殷贤华刘明缘王宁
殷贤华+刘明缘+王宁
摘 要: 针对普通智能家居系统接口标准多、维护成本高、移动性差等缺点,提出一种基于Raspberry Pi嵌入式平台的智能家居系统设计方案。该系统由控制器、Web服务器、Web浏览器、APP移动终端和监控终端组成,采用ZigBee技术实现监控终端与控制器之间的通信。实验表明,该系统能使用户通过Web浏览器或手机APP终端实现对家居的远程监控,具备较好的应用价值。
关键词: Raspberry Pi; 服务器; 客户端; ZigBee
中图分类号: TN911?34; TP311 文献标识码: A 文章编号: 1004?373X(2016)23?0161?04
Design of smart home system based on Raspberry Pi
YIN Xianhua, LIU Mingyuan, WANG Ning
(School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin 541004, China)
Abstract: In order to overcome the disadvantages of multiple interface standards, high maintenance cost and poor mobility of the general smart home system, a new design scheme of smart home system based on Raspberry Pi embedded platform is proposed. The system is composed of controller, Web server, Web browser, APP mobile terminal and monitoring terminal. The ZigBee technology is adopted to communicate between the monitoring terminal and controller. The experimental results show that the system can help users to realize the home remote monitoring through Web browser or mobile phone APP terminal, and has good practical value.
Keywords: Raspberry Pi; server; client; ZigBee
0 引 言
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、自动控制技术等,兼顾自动化和智能化为一体的高效、安全、便利的家居环境[1]。随着物联网技术日趋成熟,智能家居设备正受到广泛的关注。开发成本低、移动性强、扩展性更好的普通智能家居系统是当前亟需解决的问题[2]。
Raspberry Pi(中文名称:树莓派)是一个新兴的嵌入式平台,在国外得到广泛的应用,在国内的研究应用较少,该嵌入式平台的核心优势在于成本低,拓展性强,应用领域广,社会关注度高。树莓派微型计算机的发展证明,树莓派在许多领域都有巨大的应用潜力[3]。为了紧跟国际发展趋势,研究、拓展和创造更具竞争力的智能家居系统,选择关注度高的Raspberry Pi更有优势和应用价值[3]。该智能家居系统以Raspberry Pi 为核心进行开发,整合了传感器技术、ZigBee无线通信、Linux系统应用、Web 服务器与页面设计以及Android 客户端设计等。该系统具有成本低、可靠性高与拓展性好等优势,避免了重复的构架设计与产品研究,让产品的升级拓展更加便捷,在一定程度上减少了人力物力的花费。
1 系统结构
基于Raspberry Pi的智能家居系统由家居监控终端、Raspberry Pi服务器、Web客户端与Android客户端组成,系统框图见图1。
家居监控终端应用ZigBee无线组网技术、家用电路控制技术与摄像头监控技术,实现对家居环境的火灾、水灾、温湿度、光照度、煤气泄漏和入室盗窃等信息的实时监测;Raspberry Pi服务器应用Raspberry Pi嵌入式平台,实现了智能家居系统的服务器设计、数据库搭建与后台服务支持;客户端应用基于Internet的通信技术,通过网页界面开发、页面与服务器数据交换技术设计Web客户端,通过Android界面开发、Android网络通信技术设计Android客户端,使用户能通过计算机和移动智能设备对智能家居实时监控。
2 家居监控终端设计
家居监控终端使用ZigBee与传感器构建监测、控制电路,利用TI公司研发的Z?Stack协议栈实现组网通信。
2.1 家居监控终端硬件设计
家居监控终端由ZigBee CC2530核心模块与底板扩展电路构成,不同功能的监控终端需要设计不同的底板扩展电路:协调器节点直接通过串口与Raspberry Pi服务器连接,需要为其设计CH340 USB转串口模块;控制节点通过接收协调器节点发布控制信息,实现开关家用电器的作用,需要为其设计继电器电路模块;监测终端实时监测家居环境的温湿度、烟雾水浸、人体红外与光照强度等信息,需要为其设计相应的传感器电路模块。
协调器节点实现了CH340芯片及其外围电路的设计,为CH340提供电源电压与晶振,能支持50 b/s~2 Mb/s的波特率通信,USB硬件原理图见图2(a)。控制终端利用继电器与LED实现模拟控制家电设备的开关,控制电路原理图见图2(b)。
2.2 家居监控终端软件设计
家居监控终端围绕ZigBee CC2530设计,监测、控制终端利用ZigBee协议栈实现组网通信,在智能家居系统中,基于TI公司研发的ZStack?CC2530?2.5.1a版本进行开发。Z?Stack采用模块化方法,基于ZigBee规范中的协议栈构架进行设计[4]。
在ZigBee协议栈中,首先由ZMain.c对系统进行一系列的初始化,初始化结束后将控制权交给操作系统,协议栈ZMain程序流程图见图3。
智能家居系统中,协调器节点通过USB接口与Raspberry Pi服务器直接相连,需要实现创建ZigBee无线网与接入网内的控制终端、监测终端交互数据等功能。在协调器与Raspberry Pi通信时,需要将数据封装成特定的帧格式。
3 Raspberry Pi服务器设计
构建Raspberry Pi服务器需要搭建Raspbian系统,为系统根目录扩容并添加镜像站支持;安装与配置Nginx,使Web服务器支持HTTP访问支持;安装MySQL,并为服务器优化数据库配置、设计数据表;设计Python后台程序,实现家居监控终端与Raspberry Pi服务器的数据交互。
3.1 构建Raspbian系统
Raspbian是Debian Linux为Raspberry Pi定制的版本,专门对ARM架构进行优化[5]。Raspbian支持ssh登录,当其接入控制后,可以直接使用Putty登录Rasberry Pi。
登录Raspbian后,执行操作sudo raspi?config,选择Expand Filesystem则可将Raspbian存储空间扩大至SD卡容量大小。Raspbian软件的更新由镜像站支持,其默认使用国外镜像站,相对而言,国内的开源镜像站同步速度更稳定,下载速度也更快,故需要更换国内合适的镜像站作为软件源。
3.2 构建Web服务器
Nginx(“engine x”)是一款高性能的HTTP和反向代理服务器[6]。它可以直接内部支持PHP对外服务[7],也可以支持作为HTTP代理服务器对外服务。为了在Raspberry Pi上构建Web服务器,需要修改/etc/local/nginx/conf/路径下的nginx.conf文件,改变数据流量的压缩率,优化Nginx对内存的使用。
3.3 数据库设计
MySQL是Web应用方面最好的关系数据库系统,由于其体积小、速度快、成本低、源代码开放[8],能够很好地配合PHP和Nginx组成良好的开发环境,可以满足设计的需求,减轻Raspberry Pi服务器的运行负担,减少存储空间的消耗。
为了构建合适的智能家居系统数据库,需要对MySQL进行一定的设置与优化,修改路径/etc/mysql下的my.cnf文件。设计数据库时,需要构建与监测、控制信息相对应的表。在构建温度湿度、烟雾光照、控制信息表时,使用Datetime格式标记时间戳,使用变长浮点数Decimal格式标记对应的摄氏度(℃)、相对湿度(Relative Humidity,简写RH)、光照xLX、烟雾浓度(PPM)等数据。
对于图片存储,MySQL支持以BLOB,MEDIUMBLOB,LONGBLOB格式直接存储图片,但在Raspberry Pi的硬件平台上,若频繁存储、读取图片会增加服务器的运行负担。所以在设计图像信息结构表时,使用存储图片的存储路径方式代替直接存储图片的方式。在服务器端,将图片以特定的格式命名(例如,2015?05?06 10:10:10 时间点存储的图片对应命名为20150506101010.jpg),加快客户端数据链接速度。在客户端,第一次读取的是图片路径,第二次读取对应路径下的图片。
3.4 服务器后台程序设计
在智能家居服务器的后台程序设计中,使用Python作为服务器脚本语言,实现家居监控终端的数据通信功能、数据库数据存取功能。
家居监控终端数据通信程序实现了服务器与家居监控终端的实时通信,实时存储家居监测终端采集的数据,并将Web客户端、Android客户端改变的控制参数发送至家居控制终端。摄像头图像采集程序通过摄像头实时监控数据库变化。当监控环境中有人时,程序控制摄像头采集图像信息,获取监控环境的人物图像,将获取的图像以特定格式命名,并将图片路径存入数据库。
4 客户端设计
客户端有Web客户端与Android客户端两种,使用MVC框架模式构建,通过构建通用Model可以实现客户端同步服务器数据。
4.1 Web客户端设计
Web客户端采用浏览器/服务器结构(简称B/S结构)[9],该结构将客户端统一到页面上,用户只需要访问网络页面就可以浏览信息并产生交互。Web客户端需要进行MVC实例化,视图实现弹窗、描绘曲线、显示图片的功能,控制器部分实现日期选择,模型部分使用PHP对数据库相关信息实现调用与修改。
Web客户端实现了登录、浏览监测数据、浏览监控图片、控制家电设备等功能。从软件结构上,Web客户端的实现可以分为三大部分:前端显示页面实现了浏览界面的布局、标记以及样式定制;页面动态交互操作实现了网页操作的响应、动态加载数据以及动态构建页面;后端数据处理实现了RESTful API,数据库存取与JSON数据格式化[6]。
在Web客户端,将温度湿度、烟雾光照、RPi信息三个页面中的数据信息转化为数据曲线,并对图像进行实时采集;在室内控制页面中,通过自定义CSS实现了家电开关按钮与阈值设置框,关按钮可以通过改变开关状态控制家电设备;阈值框可以更新阈值大小设置监测警报参数。Web客户端的数据曲线、图像采集和控制界面,如图4所示。
4.2 Android客户端设计
Android客户端采用客户机/服务器结构(简称C/S结构)。该结构应用在移动智能设备上,用户能通过移动智能设备随时随地获取服务器信息,获取服务器的服务[10]。Android客户端需要进行MVC实例化,视图实现了显示字符、图片、数据曲线的功能,控制器部分实现响应用户控制信息,模型部分实现对数据库对应信息的调用与修改。
Android客户端实现浏览监测数据、浏览监控图片、控制家电设备等功能。在客户端的设计中,使用Activity构建客户端界面,通过Service获取/修改服务器数据实现相应功能。
Android客户端设计了4种不同的界面:主界面用于显示不同项目的菜单;监测数据曲线界面用于显示监测数据在不同时间的变化曲线;图像信息界面用于显示有人时采集到的监控图像画面;室内控制界面用于显示家电设备控制、设置警报阈值;信息栏弹窗用于提示有人进入图像监控区域,通过点击信号栏图标可以浏览获取到的最新图像。Android客户端的主界面、监测数据曲线和室内控制界面,如图5所示。
5 结 语
利用ZigBee技术构建家居环境监测终端,基于Raspberry Pi嵌入式平台,使用Nginx+MySQL+PHP的软件方案实现了网页服务器的搭建,并与Web客户端及Android客户端结合,组成了完善的多平台智能家居系统。经过测试和运行,本系统能很好地提供智能家居服务功能,用户可以通过智能移动设备或浏览器网页访问系统,对家居环境实时监控,并通过客户端界面对系统进行控制,实现了多平台的人机交互。系统工作稳定、可靠,具有良好的扩展性,具备较大的实用价值。
参考文献
[1] 陶在红,杨宇,常建华.基于ZigBee的智能家居控制系统设计[J].现代电子技术,2014,37(23):9?12.
[2] 杨晓迪,廖昕,古丽米拉·克孜尔别克,等.基于ARM的智能家居控制系统设计[J].现代电子技术,2015,38(8):93?95.
[3] EDWARDS C. Not?so?humble Raspberry Pi gets big ideas [J]. Engineering & technology, 2013, 8(3): 30?33.
[4] 江丹丹,唐煜程,唐东.一种基于ZigBee及GSM混合网络的轻智能家居安防系统设计[J].现代电子技术,2015,38(3):6?8.
[5] 李杨,郭培源,刘波,等.基于嵌入式技术的居室健康环境监测系统[J].电子技术应用,2014,40(8):24?26.
[6] ALLAMARAJU S. RESTful Web Services Cookbook(中文版)[M].北京:电子工业出版社,2011.
[7] 陈亮,高宏力,周伦.嵌入式服务器在智能家居系统中的应用[J].计算机测量与控制,2015(5):1758?1761.
[8] 冯兴利,索志海,徐墨.基于PHP+MySQL的Web系统安全防范及全站静态化[J].现代电子技术,2012,35(8):25?27.
[9] 李红刚,张素萍,方佳,等.基于ARM的智能家居远程监控系统设计[J].现代电子技术,2009,32(5):134?138.
[10] 顾菊芬,陈敏锋,杨国华.基于Android的物联网移动数据网关的设计与应用[J].测控技术,2014(6):107?110.