基于微信公众平台的智能家居系统研究

2018-10-12 08:06贾月辉孙林娟
无线互联科技 2018年18期
关键词:智能家居服务器公众

贾月辉,孙林娟,刘 佳

(1.天津中德应用技术大学,天津 300350;2.天津大学仁爱学院,天津 301636)

随着经济和社会的发展,人们的生活水平日益提高,智能家居系统逐渐走进了普通家庭。智能家居系统的出现很大程度上提升了家庭人居环境的安全性、方便性及宜居性[1-2],但传统智能家居系统存在成本贵、控制平台不统一、操作和监控系统复杂、不符合人们的使用习惯等问题,为了解决目前智能家居行业存在的问题,基于社交应用的智能家居控制系统应运而生。不论是国外的Facebook,Twitter,还是国内的微信、微博,都在积极地推进这方面技术的发展。

微信是当前应用最为广泛的社交应用程序之一,基于微信的应用开发也是最近几年互联网新的热点。微信利用自身在社交网络的优势趁机在微信公众平台的基础上推出了微信硬件平台,将微信作为智能硬件的入口,让第三方硬件厂商的设备接入微信平台。由于微信具有平台技术成熟、用户群体庞大、用户平台开放等优点,对于智能家居而言,微信无疑成了一个时尚便利的终端应用。

本文设计并实现了一种基于微信公众平台、开源硬件、开放云平台和Internet网络的智能家居控制系统,可实现对室内环境的采集检测、安防报警以及远程家电控制等功能。该设计成本低廉,同时由于系统的开源性,用户可以对该系统进行定制设计,增加了系统应用的灵活性。

1 系统整体方案

本系统以微信公众平台为控制入口,以路由器为连接中介,以云服务器为信息处理中心,实现了一种基于微信的智能家居控制系统。系统整体由3部分构成,如图1所示。

数据采集及执行机构控制部分由Arduino主控、各类传感器以及执行元件构成,主要负责获取家居环境参数(温度、湿度等)、火灾预警、非法侵入监测、窗帘控制、家电控制等,属于智能家居系统的感知层。

网络数据传输部分是联通感知层和应用程序的桥梁,由W5100 Ethernet扩展模块、路由器及Internet构成,主要负责将感知层采集到的数据信息上传到云服务器并存贮在数据库中,以便微信公众号用户随时查看;同时还要能将微信用户的指令下传到感知层执行,属于智能家居系统网络层。

应用端直接与用户相连,由云服务器、数据库和微信公众平台构成,主要负责接收来自网络层的数据信息并存储在相应的数据库中,同时根据用户发出的请求,将数据库中的信息反馈给用户,以及根据用户的指令要求,发送到感知层处理器执行,属于智能家居系统应用层。

图1 智能家居系统方案

2 硬件系统设计

本系统硬件系统主要由感知设备、网络设备和服务端设备构成。

2.1 感知设备

感知设备主控为Arduino UNO R3,是目前使用最广泛的Arduino。它基于ATmega328的单片机板,Arduino UNO R3共有14个数字I/O端口(其中6个可以做PWM输出),6个模拟端口,一个16 MHz晶体振荡器,一个USB接口,一个DC电源插座,一个ICSP和一个复位按钮。温湿度的采集采用含有已校准数字信号输出的温湿度复合传感器DHT11,数据输出端口接在Arduino串口输入端。烟雾传感器采用MQ-2,该传感器对液化气、天然气等可燃性气体以及烟雾灵敏度较高,其输出接口接Arduino模拟输入口。其他感知层设备还有热释电红外探测仪、报警器、继电器等,为简化硬件设计,降低成本,传感器、执行元件与主控采用有线连接,连接电路如图2所示。窗帘控制电机采用5 V直流电机,由Arduino控制电机正反转,由于Arduino的I/O口不足以驱动电机运行,故需要设计驱动电路,如图3所示。

图2 传感器、执行元件与主控连接图

2.2 网络传输设备

网络传输设备由Arduino Ethernet扩展板和路由器构成,Arduino Ethernet扩展板直接堆叠到Arduino主控板,再通过网线直接连到路由器即可。

Arduino Ethernet扩展板通过SPI总线连接一个Wiznet以太网控制器(本设计扩展板采用的是W5100)到Arduino主控板,SPI总线连接的Arduino引脚为数字端口10,11,12,和13。

2.3 服务端设备

在智能家居系统中,服务端设备一般采用租用的网络云服务器。本系统采用的云服务器为新浪云SAE平台。

3 软件系统设计

本系统软件设计由3部分构成:主控端程序设计(主控端程序设计涉及传感器的数据采集、执行机构的控制、数据通信等,这里重点讲解通信程序的设计)、服务器平台的搭建以及微信公众平台的搭建。

3.1 通信程序设计

Arduino与服务器的连接通过HTTP协议,作为HTTP客户端的Arduino用get的方式访问服务器并上传数据表单,服务器返回用户指令,Arduino根据获得的用户指令对执行机构进行控制。

图3 直流电机驱动电路

Arduino与应用层的数据传输利用扩展板的W5100,在使用网络功能时需要包含该库头文件Ethernet类,由于Arduino是通过SPI总线连接W5100实现网络功能的,所以也需要包含SPI头文件。设计步骤为:首先实例化一个对象;然后配置物理地址和板卡的IP地址;连接成功,把传感器的数据添加在get的后边发送。

3.2 微信平台服务器认证

为实现微信公众平台与系统服务器的消息交换,需要给微信公众平台服务器提供系统服务器的URL和Tocken值,并根据微信公众平台验证规则证明URL和Tocken值有效。因此,需要在服务器Web应用程序中设计微信公众平台服务器验证模块。URL是系统服务器应用提供的一个网址,微信公众平台服务器可以访问到这个网址,这样微信公众平台服务器和系统服务器才可以通信。除了给微信公众平台提供了一个URL外,还需要一个标记Tocken,在认证的时候使用,URL和Tocken代表唯一的微信公众平台账号。微信公众平台服务器与云服务器传递的消息被封装成XML数据包格式,因此,在需要数据包解析模块对XML数据包进行解析从而提取相应信息[3]。

3.3 云服务器搭建

新浪云SAE服务器需要和微信公众平台以及Arduino主控板进行信息交互,因此需要开发对应的服务器代码去完成相应的功能,在开发过程中,均采用PHP语言进行编写。

用户通过微信给控制器发送指令,控制指令在经过数据包解析模块处理后,需要再经过指令请求处理模块才能传送到主控。用户发送的控制指令被存储在SAE服务器的MySQL数据库中,主控上传到服务器的传感器数据也保存在服务器数据库中,因此需要分别设计指令存储和数据存储的两个数据库文件[4]。

4 结语

本文采用开源Arduino、新浪云虚拟服务器以及微信公众号平台,构建了可远程监控的智能系统,实现对家庭环境的监控及其电器设备的控制。系统采用成熟的硬件平台,不仅稳定性高,成本低,且易于部署推广。

猜你喜欢
智能家居服务器公众
公众号3月热榜
公众号9月热榜
公众号8月热榜
公众号5月热榜
通信控制服务器(CCS)维护终端的设计与实现
基于Zigbee的无线通信技术在智能家居中的应用
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
基于LD3320的智能家居控制