APP下载

基于Android与Arduino智能家居控制系统的设计与实现

2017-08-31禹谢华邓林茂张晓云陈美龙匡凤飞

关键词:家居智能家居网页

禹谢华,邓林茂,张晓云,陈美龙,匡凤飞

1.福建师范大学 闽南科技学院,福建 泉州 362332

2.厦门大学 信息科学与技术学院,福建 厦门 361005

3.冠捷显示科技(厦门)有限公司,福建 厦门 361101

基于Android与Arduino智能家居控制系统的设计与实现

禹谢华1,2,邓林茂2,3,张晓云1,陈美龙1,匡凤飞1

1.福建师范大学 闽南科技学院,福建 泉州 362332

2.厦门大学 信息科学与技术学院,福建 厦门 361005

3.冠捷显示科技(厦门)有限公司,福建 厦门 361101

作为时下最炙手可热的移动应用端操作系统,Android以其显著的开放性、便于开发的灵活性、能够与Google应用的无缝对接性及丰富的第三方软硬件资源等成为智能应用系统不可或缺的组成部分;Arduino单片机系统以其开源的电子原型平台、灵活便捷的设计和丰富的传感器资源等被广泛应用。其与Java和C语言相类似的基于Wiring/Processing的语言开发环境更是受到越来越多的电子爱好者和开发者的青睐。本文以移动手机安卓系统为无线控制终端,结合Arduino单片机系统,设计并实验仿真了一款基于Android与Arduino的智能家居控制系统,以控制LED灯示例,通过网络http传输控制指令到Arduino单片机系统,Arduino根据所接收到的指令,控制不同的家居电器完成所要求的工作任务。仿真实验表明,文章所设计方法行之有效,可以灵活的运用到日常家居电器设备,提供了一种智能家居系统设计的新思路,具有易实现,应用广的特点。

Android;Arduino;智能家居;控制系统

智能家居控制系统是针对不同的用户需求,利用计算机和网络通讯技术,将与家居生活有关的诸如安保安防、灯光控制、家电控制等功能有机地结合在一起,通过网络化、智能化控制和管理,实现方便、自动、快捷的日常事务的一种全新家居生活体验。其核心部分便在于如何将用户需求转换成计算机语言,计算机语言又如何通过某种网络通讯方式传输到移动控制端,控制端再根据所接收到的计算机语言,转换成相应的信号控制指令。

手机是人们最常用的移动电子设备,使用手机成为家居系统的控制终端就顺理成章的成为了最理想的控制方式。通过对已有的家居控制方案的研究分析后发现,大部分的研究中用户都是需要依赖自己专用的控制端进行操作。本文所设计系统的主要优势便在于结合时下最热门的代表创客精神的Arduino系统,配合占有率最高的Android手机操作系统,用户只需轻点几个按钮,安装一个APP,就可以用安卓手机方便、自如的实现家居控制,操作简单,易用性强。在整个设计中,手机与接收命令的单片机控制端可以采用不同的方式进行通信,例如有线网络、WIFI、蓝牙或红外等,各种方式各有利弊,但考虑到部分情况下需要相对较远距离对家居设备的控制,文章采用的方式是:通过手机访问网页客户端,将用户的指令通过网页消息的方式Post到服务器Server端,单片机系统根据服务器端接收到的命令,转换成对应的控制流程,从而实现家居智能控制。

1 系统的总体框架设计

需要设计一个Android手机端家居控制APP,用来访问网页客户端,服务器端通过Arduino开发板系统来实现,Arduino开发板系统采用的单片机型号是AVRATmega328,搭配W5100网络扩展板,可以实现联网功能。家居控制方面,以控制RGB LED灯为例。单片机通过获取Server端的信息,得知用户需要控制灯显示何种颜色、开灯及关灯等信息,将这些信息转换成0~255,通过控制单片机PWM输出从而让LED灯显示不同的颜色(图1)。

2 硬件模块设计

Arduino开发板系统是整个家居控制系统的核心,它的处理器是一个具有32 KB的系统内可编程的八位AVR微控制器ATmega328,同时具有十四路的数字in/out口(其中六路可作为PWM的输出),六路作为模拟输入,一个ICSP header,一个电源插座,一个USB口,一个复位按钮和一个16 MHz的晶体振荡器。引脚图如图2所示。

图1 系统总体框架图Fig.1 The overall framework of the system

图2 ATmega328引脚图Fig.2 Pins of ATmega328

Arduino的联网功能主要是通过W5100网络扩展板来实现的。W5100是Wiznet公司开发的具有TCP/IP协议硬解码的网络芯片,它集成了以太网物理层内核[1]。W5100的使用仅需对其进行简单的端口(Socket)编程即可,不会局限于Ethernet的控制,能够在很大程度上降低网络编程及工作人员在硬件接口设计方面的工作量,且能够维持远程数据的可靠稳定通讯[2]。单片机与W5100之间的相互连接一般有三种不同的形式,分别是SPI总线连接方式、间接总线链接方式和直接总线连接方式。其中,SPI模式的接口连接线路不多,通常用于传输速率相对较低且数据通讯量不大的情形;直接总线接口模式则在数据量传输较大的情况是较为适用;而间接总线接口模式下的数据传输性能则前述的两者之间[3]。本文设计中所采用的是SPI总线连接模式,在这种模式下,仅需四个引脚进行数据间的通信联络,这四个引脚的定义分别为:SCLK,/SS,MOSI,MISO,对应Arduino上的引脚则分别是16、17、18、19。SPI方式的连接框图如图3所示:

图3 W5100与ATmega328连接示意图Fig.3 The schematic connection between W5100 and ATmega328

本项目的家居设备使用的是Chainable RGB LED可级联全彩LED,将VCC/GND/CI/DI四个pin脚分别连接至Arduino的VCC/GND/pin7/pin8即可,控制LED颜色亮暗均由ATmega328的pin7和pin8来完成。

3 系统软件设计

3.1 Arduino程序设计

Arduino程序的程序大体可分为如下的三大部分:

(1)声明变量及各类接口的名称。

(2)setup()。首先调用setup()函数运行Arduino程序,在这一过程中需要完成串口的配置、变量的初始化、类库文件的引入及输入或输出针脚类型的设置等操作[4]。需要注意的是,setup()函数仅在每次的Arduino上电或重启的过程中被执行一次。

(3)loop()。该函数不断反复循环执行,根据反馈信息的不同,适时动态调控Arduino主控板的操作。

本文所设计家居控制系统的Arduino程序主要可分为如下的三个功能模块:

(1)设置W5100,使Arduino转换为WEB服务器,并通过html语言创建网页需要显示的内容。首先需要在申明变量的地方设置mac地址、IP地址和初始化Server端口(HTTP默认是80端口),如下所示:

图4 获取Client端数据流程图Fig.4 Get the Client side data flowchart Get the Client side data flow chart

完成以上步骤后,Server就配置成功了。接下来在loop()里面不断监听Client端是否连接,并且设置Client需要显示的内容,具体流程图如图4所示。

这里需要注意的是,在获取鼠标点击的颜色值时,当网页表单采用POST方式传送到服务端,不同的浏览器工具,鼠标点击的颜色值对应POST参数中的字符位置不一样,本文使用的是安卓平台,对应的位置是第4至第9的字符,而像IE这类浏览器对应的位置是第7到第12的字符,如果没获取正确,颜色控制就会得不到匹配。

(2)接收Web Client端发送过来的数据并对数据进行处理,通过计算得到RGB的PWM值。计算过程是将获取到的鼠标点击的十六进制颜色值转换成ASCII码值,码值减去87或46后可得到实际数值。

(3)根据处理后的数据控制RGB LED灯的颜色。RGB的PWM值目前已经算出,如果是用户点击“turn on”或是“turn of”,RGB的PWM值分别设置为(255,255,255)和(0,0,0)。具体过程如下所示:

先导入ChainableLED的库文件,在变量声明的地方去设置Arduino pin7和pin8为输出:

ChainableLED leds(7,8,1);

接着,在setup()去初始化LED硬件:

leds.init();

最后,调用PWM设置函数去控制LED灯的颜色。

leds.setColorRGB(0,red_color,green_color,blue_color);

通过Arduino控制其他外围家居设备时,与以上的这三个步骤都是类似的。

3.2 Android APP模块设计

Android APP的主要目的是能访问服务器端的web网页,然后通过HTTP命令把用户的操作发送到服务器端。那么,APP的基本功能是能访问网页,通过Android Web View可以轻松的实现这个功能[5]。Web View(网络视图)能加载显示网页,可以将其视为一个浏览器。Web View视图和Android Brower应用程序都是基于Web Kit引擎,所以两者可以赋予Web应用程序相同的性能和功能[6]。

具体实现过程如下所示:

(1)在布局文件activity_main.xml中声明一个Web View控件,同时声明一个progress bar用来显示Web View控件加载进度:

(2)在要Activity中实例化WebView和ProgressBar组件:

(3)调用Web View的loadUrl()方法,设置Web View要显示的网页,本文只需要访问使用Arduino建立的Server IP:

(4)调用set Web View Client控件,设置Web View和progress bar视图。主要方法有:

(5)重写Activity类的on Key Down()方法,点击系统回退键,支持返回上一页:

(6)添加一个exit退出菜单,支持快速退出:

图5 Android智能家居(灯光)控制终端界面Fig.5Android smart home(LED)control terminal interface Android

(7)在AndroidManifest.xml文件中添加网络权限,避免出现Web page not available的错误提示信息:

重复再写两行如上的代码,分别用ACCESS_WIFI_STATE和ACCESS__STATE替换上面的INTERNET,即可完成网络权限的添加工作[7]。

(8)在string.xml中,修改app的name为Home Control:l

最后通过Eclipse编译生成的APK文件安装到手机,在Arduino有连接到网络的情况下,打开其界面,如图5所示。

用户可以点击彩色调色板上的颜色,LED颜色的文本框会显示出颜色的具体值,并以#xxxxxx格式显示。例如当用户点击红色区域时,文本框就会显示#ff0000。颜色值通过HTML的表单实现数据交互,POST到Arduino Server端。调色板的六种颜色可以通过previouse/next进行切换,根据用户需求,只需在代码中填入多组颜色的table,用户就可以方便的进行颜色切换,选择自己想要控制的颜色。Turn on和Turn off分别是控制LED灯的开和关,当点击Turn on时,LED灯亮起,默认的颜色是白色;当点击Turn off时,LED灯即全部熄灭。

4 小结

智能家居系统是基于Arduino和W5100搭建的网络Server平台,通过编写安卓手机客户端的APK来发送命令到Arduino的MCU(ATmega328),Arduino根据接收到的命令最终灵活的完成控制家居设备(RGB LED)执行相应任务的工作,而且这种方式在绝大多数智能家居系统的通信方式的设计中都能够适用。同时也方便用户不在家的时候,可以通过互联网的方式进行远程控制。实验在内网的环境中测试成功,不足的是在外网的环境下进行超远程控制这部分受到环境的影响因素还需要进行不断完善[8]。另外,智能家居电器功能的实现主要是通过使用LED灯的开关及不同颜色的切换来验证,完成了诸如不同家居电器电器设备的开关、同一电器设备不同功能的开启和关闭等绝大多数功能的移动手机控制,但其他较为复杂的功能实现,还将在以后的研究过程中进一步的探讨实践。

[1]WIZnet Co.,Ltd.W5100 data sheet:version 1.2.4[Z].2011

[2]Dave Smith,Jeff Friesen.Android5.0开发范例代码大全[M].北京:清华大学出版社,2015

[3]晏 勇,周相兵.智能家居自适应网络设计与实现[J].西南大学学报:自然科学版,2014,36(11):215-220

[4]陆 扬,付 斌,游 江.W5100在单片机实现以太网通信中的应用[J].黑龙江科技信息,2011(5):76-76,15

[5]张杨杨.移动互联网环境下定位服务设计及原型实现[D].西安:长安大学,2014

[6]肖远东.智能家居用电管控系统的设计与实现[J].南京工程学院学报:自然科学版,2014,12(3):59-63

[7]仲元昌,王靖欣,胡江坤,等.Android内核移植及在远程监控中的应用[J].重庆理工大学学报:自然科学版,2011,25(1):102-106

[8]崔 邓,沈敬伟,周廷刚.一种面向移动智能手机用户轨迹停留点提取的时空聚类算法研究[J].西南师范大学学报:自然科学版,2016,41(10):81-87

Design and Implementation of Intelligent Home Control System Based onAndroid andArduino

YUXie-hua1,2,DENGLin-mao2,3,ZHANGXiao-yun1,CHENMei-long1,KUANGFeng-fei1
1.Minnan Science and Technology Institute/FuJian Normal University,Quanzhou362332,China
2.School of Information Science and Engineering/Xiamen University,Xiamen361005,China
3.TPV Display Technology(Xiamen)Co.,Ltd.Xiamen361101,China

As one of the most sought-after mobile application terminal operating system,Android has become an indispensable part of the intelligent application system,because it has the features of definite openness,flexibility for development,perfect connection with Google applications and abundant third party software and hardware resources and so on.Arduino MCU system is widely used in society because of its characteristics of open source electronic prototype platform,flexible and convenient design,rich sensor resources,etc.Moreover,its classes Java and C language based on Wiring/Processing development environment are becoming more and more popular among the electronics enthusiasts and developers.Taking the mobile phone Android system as wireless control terminal,and combining Arduino MCU system,an intelligent home control system based on Android and Arduino is designed and implemented in this paper.By controlling LED lamp samples,with the network HTTP transmission control instructions sending to the Arduino MCU system,and according to the

instructions,Arduino can control different household electrical appliances to complete the required tasks.Experiments show that the methods designed in this paper can be flexibly applied to daily household appliances,such as,home appliance control,security equipment,etc.This paper provides a new idea for the design of intelligent home system,which is easy to implement and widely used.

Android;Arduino;intelligent home;control system

U666.12+4

A

1000-2324(2017)04-0532-05

2016-02-03

2016-02-20

2015年度“福建省高校杰出青年科研人才培育计划”项目(闽教科[2015]54号);2015年福建省高等学校创新创业教育改革项目(SJKC-2015-02);2016年本科高校重大教育教学改革研究项目:基于区域经济发展的应用型软件人才培养模式研究(JZ160253);2016年省级互联网实验教学示范中心项目(SFZX-2016-01);2016年福建省高等学校服务产业特色专业建设项目(SJZY-2016-02)

禹谢华(1982-),男,硕士,副教授,思科认证网络工程师.主要研究方向:移动互联网,人工智能,单片机技术,无线传感器网络.E-mail:yuxiehua@163.com

猜你喜欢

家居智能家居网页
打造日常家居“氛围感”
基于PLC的智能家居控制系统研究
台北家居
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于Zigbee的无线通信技术在智能家居中的应用
基于URL和网页类型的网页信息采集研究
关于智能家居真正需求的探讨
网页制作在英语教学中的应用
智能家居更贴心