您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 一种基于微信平台的智能家居系统
龙源期刊网一种基于微信平台的智能家居系统作者:郑艳华蔡佳林来源:《物联网技术》2016年第12期摘要:随着物联网技术的发展,智能家居的应用也愈加广泛。文中设计和实现了一款基于微信公众平台的智能家居系统。该系统包括手机微信端、服务器和安卓单片机控制端三部分。用户通过订阅指定的微信号,输入相关指令就可控制室内灯光的开关并查询室内的温湿度情况。该设计具有开发周期短、价格低廉、简单实用、用户体验好等优点。关键词:智能家居;微信公众平台;Arduino单片机;智能灯光控制;环境查询中图分类号:TN911;TP393文献标识码:A文章编号:2095-1302(2016)12-00-030引言智能家居即普通住宅通过布线将住宅里的电器、安防报警设备连接到控制器和网络上,用户通过网络对住宅进行远程控制和管理并监视住宅情况,使住宅环境保持舒适协调,为屋主提供一个适合生活、学习及工作的智能家居环境[1-3]。智能家居的概念符合当下人们对住宅环境的高要求,但由于目前智能家居技术还处于发展阶段,各方面技术还不完善导致智能家居的性价比较低,市面上的智能家居产品也五花八门,使智能家居难以得到广泛应用[4,5]。本文设计并实现了一个性价比较高的智能家居控制系统,其低廉的价格更容易为普通家庭所接受,由于系统的开源性,用户也可以对该系统自定义设置,添加自己需要的设备。市面上有不少基于App平台的智能家居产品,但App面对不同的设备和系统时需考虑兼容问题,设计较为复杂。本设计用微信公众平台作为控制终端,虽然操作界面不比App,但由于大多数智能手机均可安装微信客户端,所以不用考虑兼容性问题,大大缩短了开发周期,也为用户的使用提供了方便。1基于微信的智能家居系统设计本智能家居系统包括手机微信子系统、服务器和安卓单片机子系统三部分。在该设计中用户只需通过订阅指定的微信号,就可以实现对住宅灯光的控制和对室内环境的查询。本系统选用的处理器为ArduinoUNO硬件平台,开发了远程开/关LED灯和温湿度查询功能。本系统微信的开发使用了PHP+MySQL组合,并在ArduinoIDE的开发环境下编写了Arduino程序。1.1硬件设计本设计要完成以下两个任务:(1)采集环境的温湿度并将温湿度数据上传;龙源期刊网(2)获取服务器传来的开关灯指令从而控制LED灯的开闭。本设计的控制终端选用ArduinoUNO作为主控制器,DHT11数字温湿度传感器作为温湿度采集器,其他包括ArduinoEthernetShield以太网卡与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)用switch()结构判断接收的文本消息的内容。若为“开灯”,则更新MySQL数据库switch表单里ID为1的记录时间,将该记录state的值更新为1,并向用户回复开灯完成的提示;若为“关灯”,则更新MySQL数据库switch表单里ID为1的记录时间,将该记录state的值更新为0,并向用户回复关灯完成的提示;若为“温度”,则从MySQL数据库tempsensor表单里ID为1的记录中获取data的值,并将该值回复给用户;若为“湿度”,则从MySQL数据库humdsensor表单里ID为1的记录中获取data的值,并将该值回复给用户;若不是上述四种情况,则向用户回复“不支持该指令”。龙源期刊网客户端,通过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”和“tempsensor”ID为1的记录的data中。1.2.2微信公众平台的搭建打开https://mp.weixin.qq.com注册成为微信公众平台用户后,启用开发者模式。开发者模式的使用需要服务器的支持,用户需要建好服务器。搭建好服务器环境之后开发者需要按如下步骤进入微信公众平台开发:(1)填写服务器配置。登录微信公众平台官网后,启用开发者模式,点击“修改配置”选项,填写开发者申请的服务器域名、Token和EncodingAESKey。其中URL用于开发者申请的服务器与微信服务器之间的数据传输。Token由开发者自行设置,须与服务器脚本代码里定义的Token相同,用于微信公众号的验证接入。EncodingAESKey随机生成,可用于消息加密。(2)验证消息来自微信服务器。开发者提交配置后,微信服务器向用户填写公网服务器地址发送GET请求。开发者通过检验signature对请求进行校验。(3)依据接口文档实现业务逻辑。验证服务器域名成功后即可完成接入。1.2.3Arduino单片机端程序设计Arduino单片机端要完成上传温湿度和下载灯光状态的工作。单片机与服务器的连接通过HTTP协议,作为HTTP客户端的单片机用GET的方式访问服务器并上传温湿度表单,服务器返回灯光状态,单片机根据获得的灯光状态对灯光进行控制。灯光控制流程图如图2所示,上传温湿度流程图如图3所示。2系统测试用手机关注微信公众号,通过发送相关指令观察微信公众号能否实现预期功能。向微信公众号发送“开灯”“关灯”“温度”“湿度”和其他消息,按照预期,公众号能够自动回复“已经为您打开!!”“已经为您关闭!!”“您所查询房间的温度为‘数据库tempsensor表单’℃。”“您所查询房间的湿度为‘数据库humdsensor表单’%RH。”和“暂不支持该指令。请输入‘开灯’‘关灯’控制灯光或者输入‘温度’‘湿度’查询房间实时温湿度。”,表明系统能够正常工作。微信操作界面如龙源期刊网所示。电路实物连接图如图5所示。连接好电路之后上传程序代码,程序启动后即可正常控制系统。3结语本文设计了一款基于微信公众平台的智能家居控制系统。其中包括微信公众平台开发技术、PHP、MySQL数据库、Arduino程序设计和HTTP协议,也包括网络端和Arduino单片机端的软件设计。该设计实现了一种远程控制灯光开关和查询环境温湿度的智能家居系统。参考文献[1]王君佑.室内环境质量无线监测系统设计[J].物联网技术,2016,6(1):26-28.[2]胡燕来.基于Android平台智能家居系统研究与实现探讨[J].建筑·建材·装饰,2015(6):164.[3]孙俊杰,张伟,刘洋.一种智能家居系统的实现[J].物联网技术,2015,5(2):74-75.[4]周武.基于物联网智能家居发展分析[J].信息技术与信息化,2015(2):136-137.[5]张.浅析家居智能化[C].第八届办公自动化国际学术研讨会,北京,2004.[6]赵文波.LAMP系统的搭建[J].科技创业家,2011(10):92.[7]聂佰玲,刘亚,李宇,等.基于微信控制的智能家居系统研究与设计[J].山西农经,2016(2):97-98.[8]温江涛,张煜.物联网智能家居平台DIY:Arduino+Xively+手机+微信[M].北京:科学出版社,2014.龙源期刊网龙源期刊网龙源期刊网
本文标题:一种基于微信平台的智能家居系统
链接地址:https://www.777doc.com/doc-5226210 .html