APP下载

基于Android的WiFi智能家居系统设计与实现

2017-12-02瑚琦吴莹石彬彬

软件导刊 2017年11期
关键词:智能终端智能家居

瑚琦+吴莹+石彬彬

摘要:短距离无线技术(Wireless Fidelity,WiFi)是成熟且流行的通信技术之一,在智能家居系统广泛使用。设计了一种低成本、易拓展、面向家庭的智能家居控制系统。该系统以Android设备作为智能控制终端,通过WiFi实现各种设备间的通信,配合传感器和外围电路等模块,实现了智能家居的终端远程监控。20小时的持续工作测试结果表明,智能终端发送的控制命令均被正确执行,同时能够在系统中正确添加新的智能终端并控制家居工作。系统运行期间无任何Bug,验证了智能家居系统的高准确性、高稳定性和可拓展性,具有良好的应用前景。

关键词关键词:智能家居;WiFi;Android;ESP8266;智能终端

DOIDOI:10.11907/rjdk.171993

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2017)011004704

0引言

随着面向家庭控制及自动化的短距离无线技术(Wireless Fidelity, WiFi)发展及移动智能设备的普及,基于WiFi技术和智能手机等终端的家庭智能化应用越来越普遍,其应用之一就是智能家居[12]。与普通家居相比,智能家居不仅兼顾了传统家居所拥有的功能,同时还具有易操作、易实现和低成本等优势[2]。它将家庭的各种设备通过WiFi[34]连接到一起,实现了家长控制、照明控制、环境监测等多种一体化功能。但智能家居存在安装过程复杂、维护成本过高、稳定性差、终端设备使用不方便、用户体验欠佳等问题[56]。

为解决上述问题,本文提出了一种基于Android的WiFi智能家居系统,利用传感器和外围电路对家居环境进行实时监测和控制,以Android手机作为智能家居控制终端,通过WiFi建立手机和各种家居的通信连接,并采用云平台转发消息方式,实现对各种家居的监测、操控和查询。智能家居系统经过20小时的持续工作测试,没有出现任何Bug,验证了系统的稳定性。

1系统架构设计

智能家居系统由环境监测、智能终端和WiFi通信3部分构成。其中智能终端部分普遍使用的是智能手机或平板电脑;环境监控部分由用于获取温度、湿度、可燃气体、光照等环境状态的各类传感器和空调、电灯、冰箱等构成;WiFi通信连接部分由ESP8266WiFi模块构成。

系统总体架构如图1所示,智能终端上的APP(Application)基于TCP/IP通信协议,通过智能终端的WiFi功能建立与WiFi模块间的通信。ESP8266 WiFi模块作为路由+服务器端(AP+SERVER),Android智能终端作为客户端(CLIENT)给服务器端发送指令,WiFi模块接收客户端发来的指令并对其进行解析,通过通信网络连接到服务器获取数据并作出一系列处理,从而达到控制家用电器的目的。环境监控部分的设备运行状态通过无线模块上传至云服务器,实时在终端设备上显示家居的最新状态。

2系统硬件设计

硬件电路由具有微控制终端的ESP8266 WiFi系列模块组、负责信息采集的传感器和部分供电电路组成,硬件框架如图2所示。

图2智能家居系统硬件电路

系统WiFi通信部分选用高性价比、低功耗的ESP12E WiFi模块,实现智能终端到串口的传感器节点数据传输和远程指令发送控制等功能。该模块内置32位CPU,能独立运行,也可作为从机搭载于其它主机的MCU上运行。其内部高度集成,外围电路可拓展性良好,能够嵌入其它系统[7,8]。ESP12E具有强大的片上处理能力和存储能力,使其可通过GPIO口集成传感器及其它应用设备。图3为ESP12E的最小系统组成。

图3ESP12E最小系统组成

灯具、窗帘等由GPIO口外接继电器,通过控制GPIO口的高低电平实现继电器的通断进而控制开关状态。传感器选择响应快、抗干扰能力强、性价比高,同时兼具数字模块采集技术和温湿度传感技术的DHT22型传感器[9]。可燃气模块选用MQ2型烟雾传感器,通过传感器电导率的变化捕捉烟雾状态。系统最前端负责信息采集的传感器直接与WiFi模块相连,将数据传送至云端。

电源模块采用USB_MINI接口,该接口防误差性能适中,体积小巧,应用广泛。电路的输入端采用5V直流电,通过USB接口接入电路,给继电器和传感器供电。WiFi模块的输入端电压为3.3V,通过LM317可调电压调节器将5V直流电源转换为3.3V。LM317模块还提供电流限制和热保护,具有一定的抗干扰能力。

3系统软件设计

基于Android studio平台的智能家居,网络通信采用TCP/IP协议,图4为系统工作流程。

系统上电时完成CPU和板极的初始化。初始化后,WiFi模块作为服务器等待智能终端的接入,智能终端根据WiFi模块绑定的静态IP和端口访问相应的URL网页。模块获取智能终端的访问请求,通过解析URL判断智能终端APP的请求类型和请求内容。家用设备通过无线通信模块接收智能终端发送动作指令并转换为物理动作,作出相应处理,同时把相应信息通过无线模块上传到云服务器,实现智能家居环境的控制与监测。

3.1硬件驱动程序设计

硬件驱动程序基于ESP8266物联网SDK平台进行开发。智能家居系统中,系统硬件驱动程序包括WiFi模块和家居环境的通信、继电器开关以及各类传感器数据的获取。

开发平台的所有網络功能均封装在库中,用户的应用初始化功能通过user_main.c文件实现,void user_init(void)是上层程序的入口函数,给用户提供一个初始化接口,用户可在该函数内增加硬件初始化、网络参数设置和定时器初始化等功能[78]。user_init()主要程序指令及注释如下:endprint

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5);

gpio_output_set(0, BIT5, BIT5,0);

wifi_set_opmode_current(0x02);

wifi_softap_dhcps_stop();

IP4_ADDR(&info.ip, 192,168,1,177);

IP4_ADDR(&info.gw, 192,168,1,1);

IP4_ADDR(&info.netmask,255,255,255,0);

wifi_set_ip_info(SOFTAP_IF,&info);

wifi_softap_dhcps_start();

wifi_softap_get_config(&config);//使用wifi_soft_get_config获取当前配置

os_memcpy(config.ssid,"qifei",strlen("qifei"));//设置wifi名称

os_memcpy(config.password,"12345678",strlen("12345678"));//设置wifi密码

config.ssid_len=strlen("qifei");//使用wifi_softap_set_config设置ap参数

wifi_softap_set_config(&config);//设置wifi softap接口配置,并保存至flash

WiFi模块用于softAP无线接入点和server服务器端。网络通信采用TCP/IP协议以保证信息的可靠传输。SoftAP模块是系统的中心节点,设置为TCP服務器。在DHCP关闭的情况下给模块设置静态IP并绑定端口号,客户端可直接根据静态IP和端口号访问网络。建立TCP连接的主要程序如下:

esp_conn.type=ESPCONN_TCP;//设置连接为tcp类型

esp_conn.state=ESPCONN_NONE;//设置连接状态

esp_conn.proto.tcp=(esp_tcp*)os_malloc(sizeof(esp_tcp));//分配内存空间

os_memcpy(esp_conn.proto.tcp->local_ip,local_ip,4);//给TCP里面成员赋值

esp_conn.proto.tcp->local_port=1213;//设置连接的端口号

espconn_regist_connectcb(&esp_conn,server_listen);// 注册TCP连接成功回调函数

espconn_regist_reconcb(&esp_conn,server_recon);//注册TCP断开重连回调函数

espconn_accept(&esp_conn);//调用espconn_accept监听回调函数

TCP连接完成后,softAP模块负责监听各电器的工作状态,收集相关传感器发送的数据并进行分类存储,上传至云服务器。图5为WiFi事件处理函数工作流程。

图5WiFi事件处理流程

3.2手机客户端APP

智能终端是在Android studio开发平台上开发的一款APP,用于用户在手机上进行智能家居的控制和监控。Android客户端控制系统设计主要包括用户界面UI、Httpclient网络通信、SQlite数据库和AsyncTask异步任务处理,功能包括用户登陆、电器设备控制、智能监控报警等。

图6智能终端APP设计

设计智能终端APP时,采用Android开发中经典的MVC设计模式。该模式将逻辑、数据以及界面显示3块分开进行代码编写,把业务逻辑集中在一个结构中,使智能家居终端软件有良好的可扩展性和维护性[9]。客户端UI交互界面包含登录界面、注册界面和操作界面。其中登录界面采用多个线性布局和相对布局相互嵌套,在布局控件中还添加了一些其它控件,比如用于输入用户名、密码和服务器 IP的 EditText对话框。登录成功后会进入一个初始主界面,界面包含当前所有联网的电器设备列表,以及它们当前的开关状态和所属房间信息。在此界面上可直接对电器开关进行操作,还可增添新的电器设备。从房间配置界面可跳转到具体设备的控制界面,对电器设备进一步设置,如定时开关等。图6为客户端软件设计框图,图7为手机显示界面。

图7手机显示界面

网络通信常用的传输协议为TCP协议和UDP协议。针对TCP传输,Android提供了socket和serversocket类。针对UDP传输,Android提供了Datagram Socket类和Datagram Package类[10]。在智能家居系统设计中,采用了TCP/IP协议中的HTTP协议。由于网络操作为耗时操作,所以要单独开创线程对其进行AsyncTask异步任务处理,通过创建httpthread类,重写run方法实现http请求。为了实现网络访问,首先需要在Androidmanifest.xml中设置网络访问权限,创建httpclient对象,在httpthread中传递参数URL,指定请求URL,根据需要创建httpget或httppost对象,执行URL请求,并通过输入流输出流读取传入的数据和服务器返回的响应内容,进而对数据进行相应处理。

由于智能家居信息量小、周期短、数据库需求小,所以在程序中使用Android平台内置的SQlite数据库[11,12]。数据库主要存储以下信息:房间号、家用电器设备类型和各个设备的信息状态(开关、温度、湿度)。用户登录成功进入主界面后,智能控制终端与 SQLite数据库交互查询,根据规定的布局文件显示这些界面,即智能家居控制界面。首先,智能控制终端对数据库进行访问,对文件是否存在进行判断,若文件不存在则需要创建文件,若文件已经存储在数据库中,就要判断是否需要覆盖。随后即可对数据库进行其它基本操作,最终数据会显示为不同的电器图形、种类、开关以及传感器上传的数据等。endprint

4结语

本文在研究现阶段智能家居的基础上设计了一套基于Android的WiFi智能家居系统。采用Android智能手机或平板电脑等设备作为控制终端,通过WiFi实现手机和家用电器的通信,以ESP8266WiFi芯片作为主控芯片,实时监控家居设备信息。

本文设计开发的APP应用软件能在Android操作系统平台上安装和使用,应用范围广且易推广。在20小时的持續工作测试中,手机发送的控制命令均能正确执行,同时能在系统中添加新的智能终端并控制家居工作,系统运行期间无任何Bug,验证了本智能家居系统的高准确性、高稳定性和可拓展性,具有良好的应用前景。

参考文献参考文献:

[1]王飞,陈金鹰,刘香燕.智能家居应用现状及其发展分析[J].通讯世界,2016(4):267267.

[2]卿勇.智能家居发展及关键技术综述[J].软件导刊,2017(1):180182.

[3]YAN W, WANG Q, GAO Z. Smart home implementation based on Internet and WiFi technology[C]. Control Conference. IEEE, 2015:90729077.

[4]WANG L, PENG D, ZHANG T. Design of smart home system based on WiFi smart plug[J]. International Journal of Smart Home, 2015, 9(6):173182.

[5]贾阳静,邹念育,雷冬鸣,等.基于Android和WiFi通信的智能家居系统设计[J].大连工业大学学报,2016(1):6771.

[6]扈乐华.基于Android的智能家居系统设计与实现[J].电脑与电信,2016(8):3233.

[7]ESP8266 NonOS SDK API参考[EB/OL]. http://www.mrwu.cn/espressifesp8266_nonos_sdk_v200/ V2.0.2,2017.

[8]ESP8266技术参考[EB/OL].http://download.csdn.net/download/qq_14876677/9544969,V1.2,2016.

[9]王炼.基于Android平台的智能家居系统的设计与研究[D].武汉:武汉科技大学,2015.

[10]KUMAR S. Ubiquitous smart home system using android application[J]. International Journal of Computer Networks & Communications,2014,6(1):152158.

[11]胡俊波.基于Android的智能家居系统APP的研究与设计[D].桂林:桂林电子科技大学,2015.

[12]王朝华,陈德艳,黄国宏,等.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012,22(6):225228.

责任编辑(责任编辑:杜能钢)endprint

猜你喜欢

智能终端智能家居
基于Zigbee的无线通信技术在智能家居中的应用
关于智能家居真正需求的探讨
基于LD3320的智能家居控制