当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:随着物联网技术的发展,智能家居的应用也愈加广泛。文中设计和实现了一款基于微信公众平台的智能家居系统。该系统包括手机微信端、服务器和安卓单片机控制端三部分。用户通过订阅指定的微信号,输入相关指令就可控制室内灯光的开关并查询室内的温湿度情况。该设计具有开发周期短、价格低廉、简单实用、用户体验好等优点。

引 言

智能家居即普通住宅通过布线将住宅里的电器、安防报警设备连接到控制器和网络上,用户通过网络对住宅进行远程控制和管理并监视住宅情况,使住宅环境保持舒适协调,为屋主提供一个适合生活、学习及工作的智能家居环境[1-3]。智能家居的概念符合当下人们对住宅环境的高要求,但由于目前智能家居技术还处于发展阶段,各方面技术还不完善导致智能家居的性价比较低,市面上的智能家居产品也五花八门,使智能家居难以得到广泛应用[4,5]。

本文设计并实现了一个性价比较高的智能家居控制系统, 其低廉的价格更容易为普通家庭所接受,由于系统的开源性, 用户也可以对该系统自定义设置,添加自己需要的设备。市面上有不少基于App 平台的智能家居产品,但 App 面对不同的设备和系统时需考虑兼容问题,设计较为复杂。本设计用微信公众平台作为控制终端,虽然操作界面不比 App,但由于大多数智能手机均可安装微信客户端,所以不用考虑兼容性问题, 大大缩短了开发周期,也为用户的使用提供了方便。

1 基于微信的智能家居系统设计

本智能家居系统包括手机微信子系统、服务器和安卓单片机子系统三部分。在该设计中用户只需通过订阅指定的微信号,就可以实现对住宅灯光的控制和对室内环境的查询。本系统选用的处理器为Arduino UNO 硬件平台, 开发了远程开/ 关LED 灯和温湿度查询功能。本系统微信的开发使用了PHP+MySQL 组合,并在 Arduino IDE 的开发环境下编写了Arduino 程序。

1.1  硬件设计

本设计要完成以下两个任务:

(1) 采集环境的温湿度并将温湿度数据上传;

(2) 获取服务器传来的开关灯指令从而控制 LED灯的开闭。本设计的控制终端选用ArduinoUNO作为主控制器,DHT11数字温湿度传感器作为温湿度采集器,其他包括Arduino EthernetShield以太网卡与LED灯、电阻和其它连线。系统的连接示意图如图 1所示。

一种基于微信平台的智能家居系统

1.2 系统软件设计

根据系统所完成的任务,本系统软件的设计主要涉及搭建服务器、设计微信公众号平台和编写Arduino 单片机端的通信程序。

1.2.1 服务器的搭建

使用微信公众平台的开发者模式需要服务器的支持,开发者需首先搭建好公网服务器,这里选择百度开放云BAE。打开 https://login.bce.baidu.com 网站,用百度账号登录,实名认证后便可以使用。打开 应用引擎基础版 添加部署,填写好相应配置之后点击 下一步 完成部署。

本文设计的简易智能家居系统需要传输温度、湿度和开关状态这三类数据。微信或者Arduino 单片机数据通过网络上传至数据库,另一端再通过网络下载相应的数据。将温湿度和灯光状态存储到数据库上,首先对MySQL 数据库初始化,在 添加部署 完成后, 扩展服务 里就会自动生成一个MySQL 数据库,名称、用户名和密码均已设置,不可修改。通过phpMyAdmin 图形化管理工具打开MySQL,新建三个字段数为 3 的数据表名称,分别为switch、humdsensor 和tempsensor,除 数据表名 不同,其他参数都一样。设置完成后在各数据表中插入一条 ID 为1 的记录,data 或state 的值不为空即可。至此,数据库初始化完成。

此外,服务器端需要完成两个方面的代码设计,一方面连接微信,另一方面连接Arduino 单片机,均用PHP 编写。

连接微信的代码可以参考微信官网提供的示例代码。连接微信的代码设计如下:

(1) 判断是否为第一次接入,若是,则进行验证,否则无需验证。

(2) 判断接收的消息类型,若为 subscribe类型,则向用户回复消息,即在用户关注公众号时回复消息。

(3) 用 switc(h)结构判断接收的文本消息的内容。若为 开灯 ,则更新 MySQL数据库switch表单里ID为1的记录时间, 将该记录 state的值更新为 1,并向用户回复开灯完成的提示; 若为 关灯 ,则更新 MySQL数据库switch表单里ID为1的记录时间,将该记录 state的值更新为 0,并向用户回复关灯完成的提示;若为 温度 ,则从MySQL数据库 tempsensor 表单里ID为1的记录中获取data的值,并将该值回复给用户; 若为 湿度 ,则从MySQL数据库 humdsensor表单里ID为1的记录中获取data的值,并将该值回复给用户;若不是上述四种情况,则向用户回复 不支持该指令 。

Arduino单片机作为HTTP客户端,通过GET方式向服务器发送HTTP请求,服务器端连接Arduino单片机的代码用GET的方式获取温湿度,并向Arduino返回灯的开关状态。连接Arduino的代码设计如下[6] :

(1) 判断通过GET方式获取的数据humddata和tempdata 是否为空且token 是否为Arduino,若不是, 则输出Error ;若是,则连接MySQL数据库,获取switch 表单里ID为1的记录的state值并输出。

(2) 将通过GET方式获得的数据humddata和tempdata 分别更新到MySQL数据库的表单humdsensor 和tempsensorID为1的记录的data中。

1.2.2 微信公众平台的搭建

打开 https://mp.weixin.qq.com注册成为微信公众平台用户后,启用开发者模式。开发者模式的使用需要服务器的支持, 用户需要建好服务器。搭建好服务器环境之后开发者需要按如下步骤进入微信公众平台开发:

(1) 填写服务器配置。登录微信公众平台官网后,启用开发者模式,点击 修改配置 选项,填写开发者申请的服务器域名、Token和 EncodingAESKey。其中URL用于开发者申请的服务器与微信服务器之间的数据传输。Token由开发者自行设置,须与服务器脚本代码里定义的 Token相同,用于微信公众号的验证接入。EncodingAESKey随机生成,可用于消息加密。

(2) 验证消息来自微信服务器。开发者提交配置后,微信服务器向用户填写公网服务器地址发送GET请求。开发者通过检验 signature对请求进行校验。

(3) 依据接口文档实现业务逻辑。验证服务器域名成功后即可完成接入。

1.2.3 Arduino单片机端程序设计

Arduino 单片机端要完成上传温湿度和下载灯光状态的工作。单片机与服务器的连接通过HTTP 协议,作为HTTP 客户端的单片机用GET 的方式访问服务器并上传温湿度表单,服务器返回灯光状态,单片机根据获得的灯光状态对灯光进行控制。灯光控制流程图如图 2 所示,上传温湿度流程图如图 3 所示。


一种基于微信平台的智能家居系统

2 系统测试

用手机关注微信公众号,通过发送相关指令观察微信公众号能否实现预期功能。向微信公众号发送 开灯 关灯 温度 湿度 和其他消息,按照预期,公众号能够自动回复 已经为您打开!! 已经为您关闭!! 您所查询房间的温度为数据库 tempsensor表单 ℃。 您所查询房间的湿度为 数据库 humdsensor表单 %RH。和 暂不支持该指令。请输入开灯 关灯 控制灯光或者输入 温度 湿度 查询房间实时温湿度。,表明系统能够正常工作。微信操作界面如图 4所示。电路实物连接图如图 5 所示。连接好电路之后上传程序代码, 程序启动后即可正常控制系统。

一种基于微信平台的智能家居系统

3 结 语

本文设计了一款基于微信公众平台的智能家居控制系统。其中包括微信公众平台开发技术、PHP、MySQL 数据库、Arduino 程序设计和HTTP 协议,也包括网络端和Arduino 单片机端的软件设计。该设计实现了一种远程控制灯光开关和查询环境温湿度的智能家居系统。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭