APP下载

WiFi平板智能家居控制系统

2018-01-10彭卫星邹文欢毋茂盛

物联网技术 2017年12期
关键词:智能家居红外

彭卫星+邹文欢+毋茂盛

摘 要:随着网络技术和通信技术的发展,利用移动通信设备控制家居技术成为人们目前的研究热点。由于平板具有显示屏幕大等优点,用平板控制家居,操作更方便,特别适合老年人群。文中开发了一个平板App程序和对应的硬件电路,实现了通过WiFi和ZigBee技术控制家中电灯、空调与门锁等设备的目的。

关键词:App;WiFi;红外;智能家居;

中图分类号:TP277 文献标识码:A 文章编号:2095-1302(2017)12-00-03

0 引 言

随着互联网技术和3G、4G通信技术的不断发展,WiFi已成为目前最普遍的无线通信方式之一。如今90%以上的家庭都拥有WiFi,主要用于手机上网。利用WiFi通信,无需布线,因此,利用WiFi进行智能家居的自动化控制成为目前工程师们研究的热点。由于老年人反应迟钝,视力欠佳,操作手机时,经常会因看不清或抖动出现按错键的情况,更有甚者可能无法操作手机,而平板具有比手机更大的屏幕,因此,本文开发了一个基于平板和WiFi技术的智能家居监控系统,通过在平板电脑上“指指戳戳”实现开灯、开门和开关空调。

1 系统结构与功能

1.1 总体设计

系统的总体硬件结构如图1所示。

1.2 系统的工作原理

平板通过ESP8266 WiFi模块与基于CC2530的协调器相连。WiFi选择AP模式,默认的IP地址为:192.168.4.1;通过AT指令可以查看或修改WiFi模块的IP地址(具体方法见ESP8266中AT指令手册)。为了控制空调、电灯和门锁等设备,采用积木式结构,每个设备对應一个终端节点,终端节点与CC2530协调器之间通过ZigBee协议进行组网通信。不同的终端节点具有不同的硬件电路和控制功能,由此最终实现通过平板对家中设备如电灯、空调以及门锁的控制。

2 系统硬件设计

系统硬件主要由基于CC2530的协调器和基于CC2530的终端节点组成,其工作原理如图2所示。

CC2530是由美国TI公司设计的SoC芯片,它采用8051内核,含有可编程闪存、8 KB RAM、UART和SPI接口等,最重要的是具有采用ZigBee协议进行数据无线发射和接收的功能,适用于智能家居、工业控制等特定场合,能够省去连线的麻烦,被广泛应用于物联网技术领域[1]。本项目中用CC2530分别设计了协调器和终端节点,两者之间通过ZigBee进行无线通信。协调器作为平板和终端节点之间的桥梁,用以转发各种命令和数据;终端节点用于数据采集或执行平板发送的命令,实现室内温度数据采集、控制电灯开关、开启门锁和空调等。对于不同的终端节点,仅焊接相关的电子元件即可。

2.1 WiFi模块

WiFi模块的主芯片为高性能无线 SOC esp8266-01,在较小尺寸封装集成了业界领先的 Tensilica L106 超低功耗 32 位 MCU以及WiFi MAC/ BB/RF/PA/LNA等,支持 16 位精简模式和RTOS,支持标准的 IEEE 802.11 b/g/n 协议和完整的 TCP/IP 协议栈。WiFi模块的工作电路如图3所示。

2.2 空调控制电路设计

为了控制空调,用CC2530的P2.0通过电阻外接三极管9013的基极,9013的集电极接红外发光二极管。通过CC2530的P2.0引脚输出脉冲可以开启和关闭空调。

2.3 电灯和开锁电路设计

用CC2530的P1.3和 P1.5 输出两路控制信号,经三极管驱动后接继电器,由继电器控制灯泡的220 V电源和12 V开锁电源,最终实现开关灯泡和门锁。

2.4 室内温度采集电路设计

DS18B20是美国DALLAS半导体公司设计的数字温度传感器[2],它可直接将温度转换成数字温度值,温度测量范围为 -55 ~ 125℃;采用1-Wire 接口。可以编程设置上限和下限报警温度和温度转换分辨,使用方便。在本系统中,CC2530的P1.1 接DS18B20的数据线,可实现室内温度的采集。

3 系统软件设计

线性布局(Linear Layout)是一种比较灵活的布局方式,具有操作简单、修改方便以及界面友好等特点[3]。因此,该平板APP的设计采用线性布局的方法实现。首先,将页面母板分成若干部分,母板Linear Layout使用Android:orientation="vertical"将各个部分垂直分布;然后,每个部分中的对象通过Android:orientation="horizontal"实现横向分布。且采用了TextView,Editext,ToggleButton , Button,ImageView等控件。通过对每一个Button设置setOnCheckedChangeListener()语句实现对该控件的监听。当Button被按下时,会触发一个事件。平板App软件大致分为3个模块,分别是连接模块、控制模块和接收模块。App运行界面如图4所示。

3.1 IP连接模块设计

App默认端口号为8080,默认IP地址为:192.168.1.1,如果需要也可以在IP地址栏输入新的IP。点击连接,会触发Socket事件,进行Socket通信。连接成功后,App与硬件的通信都通过Socket进行,进而控制硬件操作。具体开启线程代码如下:

toggleButton2.setOnCheckedChangeListener(new

CompoundButton.OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {endprint

toggleButton2.setChecked(isChecked);

if(isChecked == true)

{

socket = null;

ReceiveMessageThread r1 = new ReceiveMessageThread();// 开启客户端线程

r1.start();

//延时让子线程执行完毕后再执行下方程序

for(int i=1;i<10000;i++)

for(int j=1;j<10000;j++);

if(socket != null)

Toast.makeText(MainActivity.this,"正确连入", Toast.LENGTH_SHORT).show();

else {

Toast.makeText(MainActivity.this, "失败连入", Toast.LENGTH_SHORT).show();

}

}else{

socket = null;

Toast.makeText(MainActivity.this,"断开连接", Toast.LENGTH_SHORT).show();

}}})

3.2 控制模块

控制模块包括电灯控制,门锁控制,空调控制等。灯与门锁通过继电器控制,空调则用红外控制。软件通过Socket中的BufferedWriter将携带的所有控制信息发送给硬件。实现代码如下:

BufferedWriter writer = new BufferedWriter (new

InputStreamWriter(socket.getOutputStream()))

开关控制代码如下:

switch1.setOnCheckedChangeListener(new

CompoundButton.OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton

buttonView, boolean isChecked) {

Toast.makeText(LampActivity.this, "LED1"+isChecked,

Toast.LENGTH_SHORT).show();

if(isChecked == true)

{

String up1 = "@LED1UP";

try {

writer2.write(up1);

writer2.newLine();

writer2.flush();

} catch (IOException e) {

e.printStackTrace();

}catch(Exception e){

System.out.println(e.toString());

}}else{

String down1 = "@LED1DOWN";

try {

writer2.write(down1);

writer2.newLine();

writer2.flush();

} catch (IOException e) {

e.printStackTrace();

}catch(Exception e){

System.out.println(e.toString());

}}}})

3.3 温度采集显示模块

连接后,温度采集终端节点每秒采集一次温度,通过Socket缓冲区BufferedReader将温度实时上传到平板。具体代码如下:

线程:class ReceiveMessageThread extends Thread {

public void run() {

try {

s1 = ed1.getText().toString().trim();

//s1是文本框填写的IP地址

socket = new Socket(s1,8080);

reader = new BufferedReader(new

InputStreamReader(socket.getInputStream()));

while((valueString1=reader.readLine()) != null){

Message message1 = new Message();

message1.what = UPDATE_RECEIVEMSG;

handler.sendMessage(message1); }

} catch (IOException e) {

e.printStackTrace();

}}}

在onResume()中運行以下代码:

Handler handler = new Handler(){

public void handleMessage(Message msg) {

switch(msg.what) {

case UPDATE_RECEIVEMSG:

ed2.setText(valueString1.toString());

valueString1 = null;

break;

default:

break;

}}}

4 结 语

本文研究了基于平板的家居智能控制技术,通过WiFi和ZigBee无线方式传送命令和数据,省去了布线的麻烦。一方面,通过平板可以开门,由于电插锁安装在室内,使得想通过开锁行窃的盗贼望而却步,起到了防盗的作用。另一方面,特别是夏天,用户无需打开蚊帐,躺在床上即可用平板开关电灯和空调,避免蚊子钻入蚊帐中,使生活变得非常方便。本文设计的系统经过实际使用,取得了良好的效果,所研究的技术具有非常重要的意义和广阔的应用前景。

参考文献

[1]董泽龙,毋茂盛. SPI/UART与ZigBee协议转换模块设计[J].物联网技术,2015,5(12):32-34.

[2]毋茂盛.单片机原理与开发[M].北京:高等教育出版社,2015.

[3]郭霖.Android第一行代码[M].北京:中国工信出版集团, 2016.

[4]王健权,王蒙.基于WiFi的智能家居的设计与实现[J].科技风,2016(2):61-62.

[5]何文乐.基于物联网和wifi的智能家居移动控制系统[J].信息通信,2016(2):90-91.

[6]朱祥贤.基于Android和ZigBee的智能家居系统设计[J].数字技术与应用,2014(9):131-133.

[7]薛誓颖,李捍东.基于ZigBee技术智能家居安防监控系统[J].物联网技术,2017,7(7):68-70.

[8]鲁玉军,刘振.ZigBee技术在智能家居系统中的应用[J].物联网技术,2017,7(4):40-43.endprint

猜你喜欢

智能家居红外
网红外卖
闪亮的中国红外『芯』
TS系列红外传感器在嵌入式控制系统中的应用
基于Zigbee的无线通信技术在智能家居中的应用
基于快速递推模糊2-划分熵图割的红外图像分割
关于智能家居真正需求的探讨
基于LD3320的智能家居控制