王 瑞 娜
(三门峡职业技术学院,河南 三门峡 472000)
基于Android的智能家居系统的设计与实现
王 瑞 娜
(三门峡职业技术学院,河南 三门峡 472000)
目的 随着网络技术和通信技术的快速发展,人们对智能家居环境的需求程度日益增强,但利用红外遥控以及电脑等方式的家居控制使用不够灵活,无法真正实现家居系统的实时控制。结合Android手机等终端设备开发一套实时性较强的智能家居控制系统,给用户带来更好的体验。方法 以Android系统为平台,结合ZigBee技术,实现智能家居控制系统,硬件以ARM和ZigBee为主题构建网络,软件以Android为平台开发手机客户端APP,方便用户的使用。结果 以温度监测为例,在10∶00、11∶00、12∶00、13∶00温度传感器监测到的室内温度分别为20.53 ℃、20.57 ℃、21.00 ℃、21.30 ℃,专用温度计显示的温度分别为20.52 ℃、20.56 ℃、21.01 ℃、21.31 ℃,可以看出家居系统监测到的室内温度基本与专用温度计显示一致,而且连续数小时的工作,系统能够实现数据正确、稳定的传输,达到对家居系统的实时检测。结论 通过对当前智能家居市场的了解与分析,结合ZigBee技术与Android系统开发设计了基于手机客户端的智能家居控制系统。经过实验测试,系统运行良好,方便用户及时了解家居环境并实现相应控制,对提高智能家居生活的质量有一定的参考价值。
Android;ZigBee;智能家居
智能家居是以家庭住宅环境为平台,利用网络通信技术、传感技术及控制技术等,将与家居生活有关的各子系统进行有机结合,高效地使用和控制家电设备,使人们的生活智能化、信息化、人性化,核心目标就是提高人们的生活质量。目前,国内外市场上组建智能家居系统的方法主要有3种[1]:(1)利用红外线通信技术组建智能家居系统,该方法传输距离短,无法远程控制家电,而且无法灵活组网,维修也比较麻烦;(2)在电脑上运行智能家居系统的控制软件,这种方法虽然能够实现家居设备的远程控制,但是电脑不能方便地随身携带,只能在固定地点登录家居系统进行控制,导致系统运行的灵活性和实时性受到很大限制;(3)将智能手机和平板电脑做为智能家居系统的控制端,并结合低功耗、低成本和易组网的ZigBee技术组建智能家居控制系统,这种方法克服了前2种方法的弊端,能够真正实现实时、方便、远程控制家居设备,给用户带来更智能化的生活体验。本文选择采用第三种方法设计智能家居控制系统。
在研究智能家居系统关键技术的基础上,根据用户家居生活的需求,设计基于Android平台和无线ZigBee技术的智能家居系统,该系统包含手机客户端、无线Internet网络、各类传感器模块及节点模块,如图1所示。基本工作过程是通过传感器模块中的各种传感器采集家居生活环境中的温度、光线等信息,然后将采集到的数据传送到ZigBee模块,并利用无线网络将数据发送到用户的手机客户端,用户可根据需求,控制家居设备,设置家居环境[2]。由图1可以看出本系统架构具有以下几个优势:可以根据用户的需求轻松实现家电的添加和配置,方便用户的管理;用户不需要额外组建网络,利用家庭现有的网络重新设置传输请求就可以传输数据至手机客户端;在系统总体架构中将家居设备作为一个整体,利用计算机网络通信,保证了数据通信的安全性、灵活性和便捷性。
图1 智能家居系统总体结构设计
2.1 ZigBee模块
ZigBee是新兴起的短距离无线传输技术,它具有低速率、高安全、高容量、时延短及低价格等优势,非常适合于近距离的无线连接[3]。本系统中的ZigBee模块采用的是TI公司的CC2530芯片,该芯片结合了集成的高性能RF收发器和有代码预取功能的低功耗8251微处理器的良好性能,提供高达128 KB的系统内可编程闪存和8 KB RAM等强大功能,大大提高了系统的接收灵敏度以及抗干扰能力。
ZigBee网络由协调器节点、路由器节点和终端节点组成。为提高智能家居系统的性价比,本系统采用星状组网方式,其中ZigBee协调模块是整个网络的核心,负责无线传感器网络的组建、网络中设备的加入以及网络内的地址分配等服务功能;路由器节点负责网络中数据包的传输和转发;终端节点负责收集各传感器节点的信息,并对家电设备进行相应的控制处理;ZigBee各节点之间可以相互通信,也可以与ARM网关通信。
2.2 ARM家庭网关模块
家庭网关是连接ZigBee网络和外部Internet网络的物理接口,能够实现传感器终端和服务器的相互通信,是智能家居系统的核心部分。本文采用ST公司的STM32F103ZETT6芯片作为ARM处理器。该芯片价位低、功耗低,具有64 KB SRAM、512 KB FLASH、5个串口、4个通用定时器、2个高级定时器等非常强大的芯片配置,这些特征不仅能够方便地进行家居系统的外围扩展,也使网络的通信性能更为强大。图2是家庭网关核心模块的关系图,STM32F103ZETT6芯片上高集成的ADC和DAC能够快速采集传感器上的节点信息,然后将收集的数据打包成数据流,通过Wi-Fi发送到外部Internet网络,最终发送到手机客户端,用户在接受到报警信息后能够及时发送控制命令采取实时控制。
图2 ARM家庭网关核心模块关系图
2.3 传感器与供电方式选择
智能家居系统中的传感器部分负责采集家居环境中的各类数据并执行相应的操作,为了实验方便,本系统选取MQ-4天然气传感器模块、DS18B20温度传感器、STH11湿度传感器和光敏电阻传感器。在设计传感器的电路时考虑到更方便更换传感器模块,终端节点都以直接插口的方式设计电路,并采用电池供电,提高家居设备的灵活性。
3.1 手机客户端软件设计
Android系统是基于Linux开发的,操作简单,智能化程度高,本系统采用Android系统进行程序开发[4]。
3.1.1 Android应用程序的组成部分
Android应用程序的开发采用Java语言,主要涵盖以下几个方面:
(1)Context:应用程序的控制中心,主要功能是加载和访问资源,同时启动应用级操作。
(2)Activity:组成一个Android应用程序的每个子任务被称为一个Activity,负责与用户交互的应用程序组件,Activity之间通过Intent进行通信。
图3 系统主界面控制结构图
(3)Intent:一个Intent用来叙述其所期望的目标、服务及相关数据等。Android将任务请求打包成一个Intent并根据其叙述,找出与其相匹配的Activity。
(4)Service:是一个后台运行的组件,当应用程序不需要与用户交互时,可以使用Service来完成,比如数据计算等。
3.1.2 手机客户端主界面的设计与实现
手机客户端是在Android系统上开发的界面友好、功能全面、操作简单实用的APP,方便用户在手机上实时监控家居环境。本系统的界面包括主界面、控制界面和历史查询界面。
主界面是用户成功登陆到系统后的界面,该界面设置了系统中各模块的功能按钮,当用户点击某按钮时,就会触发该按钮的监控器,然后通过Intent数据传递打开相关模块的子界面,根据用户需求实现相关操作[5]。主界面在Java源代码文件中通过调用getContent-View()函数实现。
智能家居系统中无线数据的接收功能主要通过Activity编写数据接收函数来实现,本系统在开发时充分利用Java语言的多线程并发性特征,在Socket机制下依据TCP协议编写recv()数据接收函数,保证终端节点能够随时接收控制中心发送的数据。
3.1.3 手机端信息处理模块
基于Android的智能家居系统中要实现手机的短信收发功能,需要在AndroidManifest.xml文档中添加一条语句:
对家居系统中的按钮功能可通过设置事件监听SetOnClickListener,并通过调用onClick()函数来执行相关操作[6]。本系统中onClick()函数包括负责短信发送的sendSMS()函数和负责将发送的短信写入系统数据库的ContenValues()函数。为确保短信能够及时、准确的发送和接受,需要先注册短信发送和接受的广播,然后调用BroadcastReceiver()函数并结合toast语句,在客户端显示信息的收发状态。信息发送和接受广播的注册代码为:
registerReceiver(sendMessage,new IntentFilter(SENT_SMS_ACTION));
registerReceiver(receiver,new IntentFilter(DELIVERED_SMS_ACTION))。
3.2 家电控制模块
家电控制模块主要用来管理家居环境中的各种电器,如智能窗帘、智能开关等。在该模块中需要编写数据函数向外发送数据来实现对家电的控制,本系统中使用的数据发送函数名为Send()。数据在发送前会先确定中央控制器的IP地址及端口号,然后结合Socket套接字机制和TCP协议进行数据传输。此外,在数据传输过程中还需要中央控制器自动识别并解析发送的数据格式,为避免数据解析过程中出现歧义或无法解析的问题,需要为数据定义统一格式,发送数据的帧格式如表1:
表1 发送数据的帧格式
3.3 传感器模块
传感器模块主要负责家居环境的信息采集,与上述家电模块类似,通过调用函数向中央控制器发送数据请求,当控制设备接收到请求时,传感器监测节点就开始采集数据并发送到控制终端,利用继电器完成对家电设备的开关控制,从而完成对家居环境的监测,实现家电智能化控制。本文以温度及光敏传感器模块为例进行分析,温度传感器采用IIC总线传输数据,完成家居环境的温湿度信息采集,光敏传感器将电压信号经过放大器放大后传输到AD输入端,光敏信息的采集由0-12bit的AD采集器采集。
图4 温湿度及光敏传感器模块图
3.4 系统的Socket通信实现
基于Android的智能家居系统通过Socket通信方式达到控制家居设备的目的,Socket常用的传输协议有UDP协议和TCP协议,其中UDP是面向非连接的协议,传输速率高,资源消耗少,但传输可靠性差,一般用来传输少量数据;TCP是面向连接的协议,一般用来传输大量数据,传输可靠性高,但速率相对较慢。本文选择TCP方式实现Socket通信,在Android系统中提供了Socket类(客户端)和ServerSocket类(服务器端)接口,包含有监听、连接、读/写、关闭等方法,以提高开发效率[7]。
服务器端和客户端的Socket通信流程如图5所示,服务器启动后,首先通过Socket()函数调用Socket对象,并绑定服务器的IP地址和端口号,然后通过bind()函数绑定本地网络的IP地址和Socket对象,通过listen()函数监听设备。服务器端通过accep()函数与客户端建立连接,等待客户端发送的数据,当IP地址和端口号与服务器端匹配时,即可获取Socket流并调用write()函数和read()进行读写操作,完成数据通信,最后通过close()关闭流文件[6]。
图5 Socket通信流程图
4.1 系统测试环境
硬件环境:计算机(CPU:2 GHz、内存:2 G、硬盘:120 G),手机(CPU:1 GHz、内存:1 G,外存:16 G)、配套的数据线等。
软件环境:计算机(windows 7操作系统、JDK5.0,Android SDK4.0,Eclipse SDK4.2,Tomcat7.0),手机(Android OS 4.2.2(720×1280))
4.2 系统测试
4.2.1 传感器模块测试
本文以DS18B20温度传感器为例进行测试,以实验室专用的温度计为衡量标准,与本系统传感器采集的信息进行对比,结果如表2所示:
表2 温度对照表(℃)
由表中对比结果可以看出,温度传感器采集的温度数值与实际温度值基本一致,在3个多小时的连续工作中,系统稳定性良好,能够满足用户的需求。
4.2.2 ZigBee模块通信测试
测试环境:150 m2的室内环境,有一定数量的墙体或其他家居障碍,ZigBee协调器模块放置在家庭入口处,家用WiFi开启,信号发射周期为120 ms,重复测试次数1 000次,单个信号重复3次,测试结果见表3:
表3 ZigBee模块通信测试结果
由表中测试结果可以看出,ZigBee模块通信能够满足系统的设计要求。
4.2.3 应用软件测试
应用软件测试是对整个智能家居系统功能完整性及运行效果进行的测试,用户登录后能够顺利进入控制界面及历史查询界面,软件的操作性、稳定性及实用性能够达到预期目标,图6是系统的几个操作界面:
图6 手机操作界面示意图
本文介绍了基于Android平台的智能家居系统的设计与实现,分别从智能家居系统的整体设计、硬件设计及软件设计方面进行分析,并对家居系统各模块的功能实现及Socket通信的实现进行说明,最终完成系统的设计目标。系统设计的优势在于结合无线ZigBee技术,以智能手机为控制终端,设计简单易操作的手机APP软件,方便用户对家居设备的控制,具有一定的实用价值。
[1]黄成云,卢选民,李戈.基于Android的智能家居控制软件设计与实现[J].计算机与现代化,2014,(11):43-45.
[2]代明慧,刘书祥,杨卫.ZigBee技术在智能家居系统中的应用[J].无线互联科技,2015,9(11):73-75.
[3]周恩,李文军.Android平台的智能家居控制系统设计[J].中国计量学院学报,2013,24(03):261-163.
[4]宋玉琴,姬引飞.基于Android和ZigBee的智能家居系统设计[J].西安工程大学学报,2015,29(04):442-445.
[5]刘洋,杨保亮.基于Android平台的智能家居系统设计与实现[J].微型机与应用,2016,35(03):87-89.
[6]王利琦.基于ZigBee技术的智能家居系统设计[D].吉林:吉林建筑大学,2015.
[7]李泊锋,王亚刚.基于ZigBee无线技术的智能家居系统设计[J].电子科技,2016,29(03):86-88.
[责任编辑:王荣荣 英文编辑:刘彦哲]
Design and Implementation of Smart Home System Based on Android
WANG Rui-na
(Sanmenxia Polytechnic College,Sanmenxia,Henan 472000,China)
Objective With the rapid development of network technology and communication technology and increasing demand for smart home furnishing environment,the home control system using infrared remote control and computer is not flexible enough to realize the real-time control of home system.By combining Android phones and other terminal equipment,a real-time strong intelligent home control system was developed to give users a better experience.Methods By combining ZigBee technology,this paper took Android system as a platform to realize intelligent home control system.Its hardware was based on ARM and ZigBee as the theme of building a network,and its software was developed on Android platform mobile phone client APP,which was convenient to use.Results The temperature monitoring was taken for example:the indoor temperatures measured by sensor at 10∶00,11∶00,12∶00 and 13∶00 were 20.53 ℃,20.57 ℃,21.00 ℃ and 21.30 ℃,respectively,which were in general agreement with those by the specific thermometer(20.52 ℃,20.56 ℃,21.01 ℃ and 21.31 ℃).After hours of work,the system achieved the correct and stable data transmission and real-time detection.Conclusion By understanding and analyzing the current market of the smart home,this paper combined the ZigBee technology and Android system development and designed intelligent control system based on home furnishing mobile phone client.Through testing,the system runs well,and is convenient for user to understand the home furnishing environment and realize the corresponding control.It has a certain reference value to improving the quality of life with the intelligent home furnishing.
Android;ZigBee;smart home
河南省教育厅科学技术重点项目(15B520026)
王瑞娜(1984-),女,河南灵宝人,三门峡职业技术学院讲师,硕士,研究方向:计算机应用技术。
TP 317
A
10.3969/j.issn.1673-1492.2016.11.002
来稿日期:2016-05-27