基于 Arduino 与 OneNET 云平台的简易智能家居系统设计
扫描二维码
随时随地手机看文章
引 言
目前,智能家居的研究主要以搭载 STM32 芯片 [1] 的硬件设备为中心控制器。同时,智能家居云平台大都建立在YeeLink 云 [2] 上, 而对于基于 OneNET 云平台 [3] 的研究仍然相对较少。考虑到成本和操作简易程度等方面的因素,本文以 Arduino 单片机 [4] 为中心控制器设计系统,将 OneNET 作为数据处理平台,该程序能够跨平台运行,具有较好的开放性。
1 系统总体设计
本文智能家居系统以 Arduino Sensor Sheild V2.0 单片机为主控模块,各类传感器作为数据采集模块,在单片机中处理数据后经ESP8266 无线模块发送至OneNET 云平台进行数据处理,以 Android 的智能手机作为 APP 的展现平台。具体系统结构如图 1 所示。
图 1 简易智能家居系统结构
系统主要包括四个部分。
(1) 数据采集。该部分主要依靠各类传感器(如温湿度传感器、烟雾传感器等)采集环境数据,同时将采集到的数据传输到与之相连的单片机中。
(2)云平台数据传输。单片机将采集到的数据进行处理,同时向 OneNET传输数据,在云平台中可以控制已经搭载的模块。
(3)APP。手机通过与无线模块 ESP8266 相连,接收到网站传来的数据,将其显示在 APP 上。
(4)指令执行。在接收到指令数据时对传感器或相应的模块进行操作。
2 系统硬件设计
2.1 Arduino Sensor SheildV2.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温湿度传感器的库 <dht11.h>,读取温湿度值。
(2) 使用定时器 <TimerOne.h>库监控 AT指令发送和获取返回数据的时间。
(3) 使 用 OneNET提 供 的 <HttpPacket.h>库, 合 成POST 请求的HTTP 头。
(5)使用 ESP8266 连接路由器,将数据发送到 OneNET服务器。
传感器数据上传流程如图 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 温湿度传感器、人体红外传感器。
图 8 连接至 Arduino 主控模块的各类硬件外设
5 结 语
从实验的测试结果来看,本文所设计的系统能够实时监控室内的各项指标,并且能够通过红外传感器、温湿度传感器、烟雾传感器等获取数据,实时传输到 APP 上。用户可以通过 APP 上可视化的数据查看室内状况。该系统结构简单, 数据查询方便,具有一定的可扩展性,可以实现基本的智能家居环境监测功能和简单的控制功能。