APP下载

基于Arduino与OneNET云平台的简易智能家居系统设计

2019-01-10陈凯旋周世恒陈涛池政炜林心怡

物联网技术 2019年12期
关键词:智能家居传感器

陈凯旋 周世恒 陈涛 池政炜 林心怡

摘 要:随着信息时代的发展和人民日益增长的美好生活的需要,智能家居系统的设计越来越受到广泛关注。文中设计基于Arduino与OneNET云平台的简易智能家居系统,以Arduino Sensor Sheild V2.0为主控模块,利用WiFi无线模块ESP8266将传感器数据传输至OneNET中国移动物联网开放平台,可以实时监测智能家居环境,并能通过手机应用进行远程操控。该系统成本低廉,搭建方便,具有数据可视化、网络化等特点,为实现智能家居生活提供了一种简易的解决方案。

关键词:Arduino;传感器;智能家居;ESP8266;OneNET;远程操控

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

0 引 言

目前,智能家居的研究主要以搭载STM32芯片[1]的硬件设备为中心控制器。同时,智能家居云平台大都建立在 YeeLink云[2]上,而对于基于OneNET云平台[3]的研究仍然相对较少。考虑到成本和操作简易程度等方面的因素,本文以Arduino单片机[4]为中心控制器设计系统,将OneNET作为数据处理平台,该程序能够跨平台运行,具有较好的开放性。

1 系统总体设计

本文智能家居系统以Arduino Sensor Sheild V2.0单片机为主控模块,各类传感器作为数据采集模块,在单片机中处理数据后经ESP8266无线模块发送至OneNET云平台进行数据处理,以Android的智能手机作为APP的展现平台。具体系统结构如图1所示。

系统主要包括四个部分。

(1)数据采集。该部分主要依靠各类传感器(如温湿度传感器、烟雾传感器等)采集环境数据,同时将采集到的数据传输到与之相连的单片机中。

(2)云平台数据传输。单片机将采集到的数据进行处理,同时向OneNET传输数据,在云平台中可以控制已经搭载的模块。

(3)APP。手机通过与无线模块ESP8266相连,接收到网站传来的数据,将其显示在APP上。

(4)指令执行。在接收到指令数据时对传感器或相应的模块进行操作。

2 系统硬件设计

2.1 Arduino Sensor Sheild V2.0

Arduino Sensor Shield V2.0专用传感器扩展板集市面上各种扩展板优点于一体,采用PCB沉金工艺加工,主板不仅将全部数字与模拟接口以舵机线序形式扩展出来,还特设蓝牙模块通信接口、SD卡模块通信接口、APC220无线射频模块通信接口,以及RB URF V1.1超声波传感器接口,独立扩出,更加易用方便。在本文系统中作为中心处理器,连接LED、继电器模块、烟雾传感器、红外传感器、温湿度传感器、ESP8266、LCD显示模块。各类传感器实时采集数据,单片机将处理好的数据传输到OneNET云平台上处理,由其返回控制信号从而控制相应的传感器或其他模块。

2.2 温湿度传感器DHT11

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器上电后要等待1 s,以越过不稳定状态,在此期间无需发送任何指令[5]。库文件中拥有非常完善的函数控制块,可以非常方便地采集到当前室内的温湿度信息,免去了手动解析的麻煩,并且修改起来也非常方便。

2.3 红外传感器

本文系统选用HC-SR501热释电红外传感器,采用可重复触发的工作方式(即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平),具有感应封锁时间等特点[6]。当感应到有人经过时向单片机传输信号,再由单片机控制蜂鸣器报警。

2.4 烟雾传感器MQ-2

MQ-2型烟雾传感器是多种气体探测器,探测范围极其广泛,具有灵敏度高、响应快、稳定性好、寿命长、驱动电路简单等优点[7]。在本文系统中,MQ-2烟雾传感器主要用于测量各种气体的总阈值,当有害气体达到一定浓度时才会进行蜂鸣报警。

2.5 继电器模块和LED灯

继电器模块的作用是传递信号或同时控制多个电路,也可直接控制小容量电动机或其他电气执行元件[8]。

发光二极管(Light Emitting Diode,LED)是一种能够将电能转化为可见光的固态半导体器件,它可以直接把电转化为光[9]。

这两个模块都可以在手机APP上进行控制,由OneNET网站发送控制指令,单片机在接收到数据以后,经过解析,判断控制信号,从而控制这两个模块。在家用的情况下,用手机远程控制这些小型模块非常方便。

2.6 ESP8266

ESP8266是由上海乐鑫信息科技有限公司开发的集成无线芯片,支持二次开发,具有超高的性价比。目前多家厂商在做ESP8266芯片的开发与服务工作,且其服务已经较为全面,利于开发者以较低的成本开发出个性的智能产品,因价格较低、性能稳定等受到较大关注[10]。该芯片可工作于AP模式、Station模式以及混合模式,本文系统中利用AT指令进行控制,使用ESP8266的Station模式,ESP8266模块连接到由接入点建立的WiFi网络,用于向OneNET云平台传输、接收数据。

3 系统软件设计

3.1 系统流程

Arduino Sensor Sheild V2.0通过串口发送AT指令来控制ESP8266 WiFi模块的各项操作。模块在开机启动后自动搜索附近网络,搜索到对应的在程序中定义过名称和密码的网络后进行连接,连接上WiFi后,与OneNET网站进行TCP连接,将传感器采集到的数据进行打包及JSON数据格式化后发送至OneNET网站。OneNET网站将上传的数据进行可视化处理,且添加了发送控制指令的功能,单片机接收到控制指令的同时控制模块进行响应。系统初始化如图2所示。

3.2 数据流程

(1)使用DHT11温湿度传感器的库,读取温湿度值。

int chk = DHT11.read(DHT11PIN);//读取温湿度值

//串口调试DHT11输出信息

DebugSerial.print("Read sensor:");

switch (chk)

{

case DHTLIB_OK:

DebugSerial.println("OK");

break;

case DHTLIB_ERROR_CHECKSUM:

DebugSerial.println("Checksum error");

break;

case DHTLIB_ERROR_TIMEOUT:

DebugSerial.println("Time out error");

break;

default:

DebugSerial.println("Unknown error");

break;

}

(2)使用定时器库监控AT指令发送和获取返回数据的时间。

(3)使用OneNET提供的库,合成POST请求的HTTP头。

packet.setHostAddress(OneNETServer);

packet.setDevId(device_id_temp);//device_id

packet.setAccessKey(API_VALUE_temp);//API_KEY

packet.createCmdPacket(POST,TYPE_DATAPOINT,p);

(4)使用库,合成需要的JSON数据流。

StaticJsonBuffer<200> jsonBuffer;

JsonObject&value = jsonBuffer.createObject();

value["value"] = thisData;

JsonObject&id_datapoints = jsonBuffer.createObject();

id_datapoints["id"] = sensor_id_temp;

JsonArray&datapoints = id_datapoints.createNestedArray(“datapoints”);

datapoints.add(value);

JsonObject&myJson = jsonBuffer.createObject();

JsonArray&datastreams = myJson.createNestedArray(“datastreams”);

datastreams.add(id_datapoints);

char p[200];

int num = myJson.printTo(p,sizeof(p));

(5)使用ESP8266连接路由器,将数据发送到OneNET服务器。

if (sendCommand("AT\r\n","OK",1000,10) == Success);

else ESP8266_ERROR(5);

clrEsp8266RxBuffer();

if (sendCommand("AT+CWMODE=1\r\n","OK",3000,10) == Success);

else ESP8266_ERROR(7);

clrEsp8266RxBuffer();

char cmd[50];

strcpy(cmd,"AT+CWJAP=\"");

strcat(cmd,ssid);

strcat(cmd,"\",\"");

strcat(cmd,password);

strcat(cmd,"\"\r\n");

if (sendCommand(cmd,“OK”,20000,10) == Success);

else ESP8266_ERROR(8);

clrEsp8266RxBuffer();

传感器数据上传流程如图3所示。

4 系统测试结果

首先将单片机与PC机用数据线相连,然后打开手机热点,设定好热点名称与密码,连接成功后,在程序中设定延迟500 ms发送一次数据,因此单片机每500 ms更新一次数据,并将数据上传至OneNET云平台,同时APP同步更新数据。将LED与继电器开关打向OFF,由于网络的传输造成一定的时间延迟(约为3 s),单片机上的LED灯熄灭且继电器红灯亮起表示已经关闭。同样,打开开关,发现单片机上的LED灯亮起,且继电器上的绿灯亮起表示继电器已经打开。开关关闭如图4所示,LED灯和继电器关闭如图5所示,开关打开如图6所示,LED灯和继电器开启如图7所示。

連接至Arduino主控模块的各类硬件外设如图8所示,从左到右分别是MQ-2烟雾传感器,ESP8266,DHT11温湿度传感器、人体红外传感器。

5 结 语

从实验的测试结果来看,本文所设计的系统能够实时监控室内的各项指标,并且能够通过红外传感器、温湿度传感器、烟雾传感器等获取数据,实时传输到APP上。用户可以通过APP上可视化的数据查看室内状况。该系统结构简单,数据查询方便,具有一定的可扩展性,可以实现基本的智能家居环境监测功能和简单的控制功能。

参 考 文 献

[1]李锦诗,黄彦蓉,刘龠.智能家居现状调查与未来发展[J].科技经济导刊,2017(1):19-21.

[2]基于YeeLink物联网平台的校园环境监测系统的设计[D].保定:河北大学,2015.

[3]杨艳,李东睿.浅谈基于OneNET平台的物联网通用应用平台的设计与实现[J].数字通信世界,2018(1):57-58.

[4]刘文杰,朱明,覃振权.基于Arduino的物联网温控实验设计[J].实验技术与管理,2017,34(1):150-152.

[5]柴世龙,刘毅,张振虎.基于ZigBee的温湿度监测系统设计[J].科技视界,2015(4):211-212.

[6]王东,莫先.基于STM32和HC-SR501智能家居的智能照明系统设计[J].重庆理工大学学报,2016,30(6):135-142.

[7]郑道林,孙耀杰,左兆辉.基于MQ-2与GSM的CO监测报警系统的设计[J].电子设计工程,2014,22(4):162-165.

[8]邹洪森.基于物联网技术的无线继电器模块研制与应用[J].宁夏电力,2014(5):33-38.

[9]陈大华,章荷珍.物联网LED智能照明产业的崛起[J].中国照明电器,2013(1):11-15.

[10]邱宏斌.一种基于ESP8266模块的物联网设计思路[J].电子世界,2017(7):157.

猜你喜欢

智能家居传感器
康奈尔大学制造出可拉伸传感器
简述传感器在物联网中的应用
“传感器新闻”会带来什么
跟踪导练(三)2
基于Zigbee的无线通信技术在智能家居中的应用
关于智能家居真正需求的探讨
基于LD3320的智能家居控制