基于Android智能家居控制系统的研究与实现*

2017-04-24 02:30师公社王义菊
计算机与数字工程 2017年4期
关键词:字节智能家居客户端

师公社 王义菊

(西安工业大学电子信息工程学院 西安 710021)

基于Android智能家居控制系统的研究与实现*

师公社 王义菊

(西安工业大学电子信息工程学院 西安 710021)

随着经济、科技和生活水平的普遍提高,人们越来越向往舒适、便捷的家居生活环境。为了降低成本,提高效率,论文介绍一套基于Android终端的智能家居控制系统。通过采用Android操作系统和TLN13UA06嵌入式无线WiFi模块进行通信,搭建良好的通信平台从而实现对家居环境中开关量、连续量的控制。

Android系统; WiFi技术; 智能家居

1 引言

智能家居是计算机技术、自动控制技术、网络技术向传统建筑渗透的产物。随着人们生活水平的提高,消费观念的转变以及物联网的不断发展,智能家居已悄然走进人们的生活[1]。

纵观我国的智能家居控制系统,一些解决方案采用了无线的Zigbee技术,但由于现在的智能终端设备并不配备智能的Zigbee模块,仍然需要中间模块进行转换,这样既不方便又增加了成本[2]。出于对以上问题的考虑,本文将实现一种基于手持Android操作系统平台的智能家居控制系统,以低成本、高效率的特性,为以后的发展道路奠定现实且长远的基础。

2 系统架构

图1 智能家居网络控制示意图

智能家居网络控制示意图如图1所示,主要由手持操作终端、集总控制器和设备终端三部分组成[3]。

手持操作终端为Android智能手机或平板电脑;集总控制器作为智能家居系统的心脏部位,主要由无线WiFi通信模块以及微处理器构成,其作用是通过接收手持操作终端发来的指令,进而控制相应智能家电的运行状态,同时检测家居环境中传感器的状态信息,进而反馈给手持操作终端;设备终端则包括室内电器设备以及各传感器,如电视、空调、电动窗帘、温湿度传感器、光强度传感器以及红外遥控等设备。

3 整体方案

在本文设计中,手持操作终端通过WiFi连接到家庭网络,集总控制器通过串口也与其连接。当用户进行Android终端操作后,命令通过无线路由器发送给集总控制器,集总控制器接收到操作命令并将命令转发到设备终端(室内各电器),设备终端接收命令进而执行相应功能。同时也可以通过相反路径将设备状态信息反馈给Android终端,从而实现智能家居的控制。

在集总控制器接收Android终端操作命令并将命令转发给设备终端这一执行过程中,智能家居根据传输介质的不同,可分为有线和无线两种连接方式。其中,有线连接方式在家居环境中,一方面用来与自带网络通信接口且位置相对固定的智能家电通信(数字线控),例如空调、电视、机顶盒等,由于有线通信功能稳定可靠,且反馈速度较快,即用户对智能家电的操作立刻生效,并且可以立刻查看到电器状态的反馈结果;另一方面则是通过模拟线控形式,控制对象可以是开关量也可以是连续调节量,例如环境灯光、音乐的强度等。无线连接方式主要为红外遥控,红外遥控调制简单,易于编码,可实现多路控制。论文主要通过集总控制器学习并发射红外信号,从而实现空调的开关、模式、温度等操作,电视的开关、音量调节、频道选择、播放、停止等操作。

4 智能家居 Android 应用设计与实现

4.1 Android 开发环境

和其他应用程序开发一样,Android应用程序开发之前需要对其运行环境进行配置。通常情况下会使用Eclipse开发软件,同时在Eclipse环境下安装插件ADT(Android development tools),其功能主要是进行功能扩展,除此之外,需要下载Android SDK(Android software development kit),因为其提供了良好的模拟器和调试方法,为后期的测试提供了便利[4]。成功搭建Android运行环境后,可以在其应用界面进行操作,并通过虚拟模拟器进行测试。具体Android运行开发环境和搭建完成后的运行模拟器如图2所示。

图2 Android运行开发环境和搭建完成后运行模拟器

4.2 用户注册及登录

智能家居控制系统是可以进行自我设定的个人家居管理系统,因此用户需要进行注册,从而通过数据库对用户的设置和登录日志进行记录。

4.2.1 用户界面设计

在智能家居控制系统布局中,采用 XML 语言作为布局文件来定义页面,使得应用中的视图模块和功能模块分离,进而增加视图模块的重用性,此外,XML的可配置性方便了程序参数的修改,无需重新更改程序再编译[5~6]。

用户界面通过线性布局和相对布局的方式进行了整体布局。首先用线性布局的方式设置欢迎进入智能家居控制系统的文本视图,然后用相对布局的方式设置两个文本编辑框,分别为登录账号和密码,最后在用线性布局的方式设置三个按钮,分别为登录、注册和重置,根据用户的需求可以点击相应的按钮进行相应的操作。通过程序编程,SmartHome工程下的res文件中的Layout文件下会程现智能家居控制系统的登录、注册布局界面,如图3所示。

图3 智能家居控制系统的登录、注册界面设计

4.2.2 注册和登陆逻辑

当用户进入智能家居控制系统后,需要进行注册与登录,若用户没有账号与密码,则需要点击注册按钮进行新用户的注册,注册成功后,通过直接调用Toast类的makeText()方法,界面下方会自动弹出“恭喜注册成功,请进入登录”,并直接转至登录界面,通过设置文件的访问权,可以将已注册的账号复写到登录账号的文本编辑框,用户只需要输入正确的密码即可登陆成功;若用户已经注册账号,则可以直接输入账号和密码,点击登录,如果用户密码输入错误,同样调用Toast类的makeText()方法,界面下方会弹出“请重新输入密码”,当用户再次输入正确密码点击登录按钮即可验证成功,成功登陆。登录、注册系统流程图如下图4所示:

图4 登录系统的流程图

通过将SmartHome工程发布,在Android虚拟机进行模拟操作,具体的登录注册过程及界面显示如图5所示。

图5 登录注册过程及界面显示

4.3 家电控制界面

用户进入WiFi智能家居生活界面后,可以根据需求点击相关的家电设备,然后进入该设备的控制界面,完成对该设备的相应操作。智能家居系统的家电控制界面总体框架设计如图6所示。

图6 智能家居系统的家电控制界面总体框架设计

以灯光控制和窗帘控制为例:

1) 灯光控制界面

灯光控制主要实现对灯光开关、亮度调节以及情景模式的选择。灯光控制界面采用Relative Layout,界面从上至下布局为灯光开关、情景模式以及灯光亮度三部分,其中,灯光开关通过按钮实现了用模拟线控形式控制开关量的对象,从而反映灯光的状态;为了方便操作与布局,情景模式设置为含有下拉菜单的文本编辑框,包括日光、夜间、家庭影院、家庭聚餐四种模式,根据需求用户可以选择相应的工作模式。灯光亮度设置为拖动条,向左右拖动分别实现对亮度做减弱和加强操作,用户可以根据需求拖动其大小,结合后期在硬件中通过调制脉冲宽度(PWM)进而完成对灯光亮度的调节。界面右上角是退出按钮,当用户完成需求设置后,点击该按钮可以返回至WiFi智能家居生活控制的主界面。

2) 电视控制界面

电视控制需要实现电视开关、声音调节、频道切换三方面控制,通过模拟线控的方式对声音实现了连续量的调节;用户可以根据自己的需求对频道进行选择,手机界面也会出现相应的提示。具体操作界面如图7所示。

图7 灯光控制和窗帘控制界面

灯光控制和电视控制的部分具体实现代码如下所示:

灯光控制:

private String[] images = new String[] { "日光","夜间","家庭影院","家庭聚餐" };

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//隐藏制冷开关

tv3.setVisibility(View.GONE);

button3.setVisibility(View.GONE);

ivArrow.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

showDropDown();

}

});

电视控制:

public class DianShiActivity extends BaseActivity implements OnClickListener{

private ImageView iv1;

private ImageView iv2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

tvTtile.setText("电视控制");

tv1.setText("电视开关:");

rlQj.setVisibility(View.GONE);

tv3.setVisibility(View.GONE);

tv5.setVisibility(View.VISIBLE);

rl.setVisibility(View.VISIBLE);

button3.setVisibility(View.GONE);

tv4.setText("音量控制:");

iv1 = (ImageView) this.findViewById(R.id.iv1);

iv2 = (ImageView) this.findViewById(R.id.iv2);

iv1.setOnClickListener(this);

iv2.setOnClickListener(this);

}

5 无线WiFi模块及通信功能实现

结合基于Android的智能家居系统对无线控制的要求和系统开发的便捷性,本系统采用TLN13UA06嵌入式WiFi模块作为通信的硬件平台。该模块内置IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口到无线网络之间的转换,支持串口透明数据传输模式,使传统的串口设备可轻松接入无线网络[7]。

5.1 WiFi模块数据通信的实现

智能家居控制系统采用WiFi技术在WiFi发送模块和接收模块间进行通信,通过Socket通信方式传送TCP/IP协议达到控制家电的目的。要在Android客户端使用WiFi通信,必须在工程的AndroidManifest.xml 文件中添加WiFi访问许可权限:〈uses-permission Android:name=”android.permission.ACCESS_WIFI_STATE”/〉。

5.2 网络通信协议

在智能家居中,目前比较常用的传输协议为UDP、TCP协议。出于对通信可靠、正确等因素的考虑,本系统选用TCP协议。对于TCP协议,Android系统提供了Socket 和 ServerSocket 两个类,Android客户端与WiFi模块之间进行通信,通讯格式如表1所示[8~9]。

表1 WiFi通讯帧格式

10字节为一个命令的固定长度,将序号按照递增的方式编为字节0、1直到9,前导码为Oxff,是长度为全1序列的1个字节,作用是通知WiFi芯片有数据到达。当芯片接收到前导码后,将会准备接收数据;起始位表示前导码的结束和数据包的开始,Oxaa为初始值;消息体则包括设备编号、设备序号、设备状态、设备模式等总共6个字节。消息体的发送为:若A设备向C设备发送消息,初始状态下A设备并不知道C设备的目的地址,则会将0x00默认地址进行群发。当周边设备接收到此消息后,会进行判断是否是自身的消息请求。若不是,则会在转发时将“转发次数”对应的字节递增1;若是,则C设备会对A设备作出响应,并把转发次数清零。校验码是对前9个字节进行异或,它的值=字节0异或字节1异或……异或字节9。

5.3 Socket通信的实现

Socket称作“套接字”,主要功能是描述IP地址和端口[10]。由于本系统采用TCP协议,所以选择面向连接的Socket通信。Android用户首先要建立一个Socket对象,然后通过Bind函数绑定服务器的IP地址和端口号[11]。服务器端调用accept函数设置阻塞,以便等待客户端发送数据。若Android客户端的IP地址和端口号与服务器端的对应信息相匹配,则客户端与服务器端就可以建立连接。然后,用户端再调用write函数向要发送的输出流写入数据,即Android客户端只需要向WiFi通信模块写入数据即可。服务器端和客户端Socket通信流程图如图8所示。

图8 服务器端和客户端Socket通信流程图

Android客户端的部分Socket通信代码如下所示:

public static void main(String[] args) throws IOException, IOException {

Socket s = new Socket("192.168.0.100", 1000);

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

String line;

while ((line=br.readLine())!=null) {

bw.write(line);

bw.newLine();

bw.flush();

}

// 禁用输出流

s.shutdownOutput();

// 接收反馈

BufferedReader brClient=new BufferedReader(new InputStreamReader(s.getInputStream()));

String buf=brClient.readLine();

System.out.println(buf);

// 释放资源

bw.close();

s.close();

5.4 数据库

数据库是对整个系统运行过程中的数据进行存储。由于智能家居的各种家电信息量较小,周期短,所以选用Android平台内置的SQLite数据库,以减少应用程序管理数据的开销。通过对SQLite进行操作,可以调用SQLiteOpenHelper类提供的onCreat()和onUpgrade()方法对SQLite数据库进行创建和更新;通过execSQL()可以执行 SQL语句,insert()可以插入表项,update()可以更新表项等。数据库主要存储的信息有:用户的登录日志,家用电器的设备类型,各个设备的工作状态( 开关、亮度、温度、湿度、工作模式等)以及反馈给用户和硬件节点的命令信息[12]。

5.5 阶段性设计测试

本设计主要实现客户端编程,服务端用SocketTool TCP/IP通信调试工具在PC端建立,使用Socket通信方式来实现与客户端的交互。通过测试程序可以监听到Android客户端向WiFi服务器发送的数据,如图9测试界面所示。

图9 SocketTool TCP/IP调试界面

6 结语

本文由浅及深,首先介绍了基于Android系统的智能家居控制系统的系统架构和整体方案,其次通过Android操作系统的运行环境,详细说明Android用户操作界面的合理布局与设计,最后通过介绍本系统所选用的无线WiFi模块及通信方式,经反复测试,可以通过家庭内部网络实现对家居设备的无线控制,本系统所用硬件简单易用、稳定可靠并具有较好的扩展性。

[1] 高阳.基于Android的智能家居系统的研究与设计[D].广州:广东工业大学,2015. GAO Yang. The research and design of smart home system based on Android[D]. Guangzhou: guangdong university of technology,2015.

[2] 刘凌云.智能家居控制系统[D].呼和浩特:内蒙古大学,2014. LIU Lingyun. Smart home control system[D]. Huhhot: Inner Mongolia university,2014.

[3] 孙浩.基于Wi-Fi技术和Android系统的智能家居系统设计[D].徐州:中国矿业大学,2014. SUN Hao. Based on the wi-fi technology and smart home system design of the Android system[D]. Xuzhou: China university of mining,2014.

[4] 郑萌.Android系统下Java编程详解[M].北京:电子工业出版社,2012:8. ZHENG Meng. Under the Android Java programming explanation[M]. Beijing: electronic industry press,2012:8.

[5] 曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011,27(9):1-3. ZENG Jianping, SHAO Yanjie. Android system architecture and application development research[J]. Microcomputer information,2011,27(9):1-3.

[6] 朱晶.TCP协议简述与三次握手原理解析[J].电脑知识与技术,2009,5(1):23-26. ZHU Jing. TCP protocol briefly and three-way handshake principle analysis[J]. Computer knowledge and technology,2009,5(1):23-26.

[7] Park S H, Won S H, Lee J B, etal. Smart home-digitally engineered domestic life[J]. Personal and Ubiquitous Computing, 2003,7(3-4):189-196.

[8] 祝红涛,李玺.SQL Server数据库应用简明教程[M].北京:清华大学出版社,2010:45. ZHU Hongtao LI Xi. SQL Server database application introductory tutorial[M]. Beijing: tsinghua university press,2010:45.

[9] 徐友武.SQL Server2005触发器应用研究[J].计算机与信息技术,2009,32(9):105-106. XU Youwu. SQL Server2005 trigger application study[J]. Computer and information technology,2009,32(9):105-106.

[10] Reto Meier.Professional Android Application Development[M].America:Wiley,2008:13.

[11] Lee Kwang Yeo,Choi Jae Weon.Remote-controlled Home Automation System via Bluetooth Home Network[C]//Proc of SICE 2003 Annum Conference. Tokyo:Soc of Instrum and ControlEng-2008:2824-2829.

[12] Fakas GJ,Cawley B,Cai Zhi.AutomatedGenerationofPersonalDataReportsfromRelational Databases[J]. Journal of Information&Knowledge Management(JIKM),2011,10(2):193-208.

Research and Implementation of Intelligent Home Control System Based on Android

SHI Gongshe WANG Yiju

(School of Electronics and Information Engineering, Xi’an Technological University, Xi’an 710021)

As the improvement of economy, science and technology and living standards, an increasing number of people are eager for comfortable and convenient living environment. In order to reduce costs, improve efficiency, this paper introduces a set of smart home control system based on Android terminal, by using the Android operating system and TLN13UA06 embedded wireless WiFi module for communication, to build good communication platform so as to achieve on home environment switch quantity, continuous volume control.

Android system, WiFi technology, smart home Class Number TP273

2016年10月15日,

2016年11月30日

师公社,男,高级工程师,硕士生导师,研究方向:电力电子技术、运动控制系统、建筑给水控制、应急照明、能馈并网等。王义菊,女,硕士,研究方向:控制工程。

TP273

10.3969/j.issn.1672-9722.2017.04.039

猜你喜欢
字节智能家居客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
No.8 字节跳动将推出独立出口电商APP
基于PLC的智能家居控制系统研究
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
基于Zigbee的无线通信技术在智能家居中的应用
智能家居未来感初体验
新华社推出新版客户端 打造移动互联新闻旗舰