文献标识码:A
DOI:10.16157/j.issn.0258-7998.173614
中文引用格式:高世皓,王立华,朱吉芳,等. 基于CC3200及微信公众号的云家居交互系统[J].电子技术应用,2018,44(3):52-55.
英文引用格式:Gao Shihao,Wang Lihua,Zhu Jifang,et al. Interactive system of cloud home based on CC3200 and WeChat official account[J]. Application of Electronic Technique,2018,44(3):52-55.
0 引言
随着科技的发展,人们对居住条件的要求逐渐提高,传统的只有居住功能的家居已经不能满足人们对居住环境的要求,智慧化和数字化是未来家居的发展趋势。随着物联网技术的不断发展,智能家居成为新的研究热点和应用领域[1-2]。近几年,微信已经被广泛普及使用,它可以保证用户的真实性,所以可以将微信与智能家居相结合,通过密钥进行身份认证,认证通过后用户便可与智能设备之间进行数据交换[3-4]。基于此,本文将微信公众号和CC3200芯片相结合,使用云服务器存储数据,实现了用户远程操控家居设备、获取家居环境状态的功能,系统可靠性高、实用性好、控制方便,具有较好的应用前景。
1 系统设计方案
系统框图如图1所示。用户首先需要接入网络并且关注云家居公众号,之后通过密钥绑定家居控制系统,就可以在公众号中发送文本、语音消息,或者点击公众号中的菜单实现以下功能:远程控制家居设备,例如台灯、风扇、空调等;查询设备状态,例如获取台灯状态、风扇转速、空调温度等;获取传感器数据,例如室内温湿度、天然气浓度值等。
系统分为服务器端和客户端:服务器端为微信服务器和阿里云服务器;客户端为微信公众号和CC3200 LaunchPad开发板,这两个客户端都可以向服务器提交数据和下载数据。
微信服务器定义了公众号菜单,并且把微信客户端发送的消息以可扩展标记语言(Extensible Markup Language,XML)形式的数据发送到阿里云服务器;阿里云服务器根据指令更新数据库,同时接收开发板上传的传感器数据,将数据存入数据库。
当微信公众号请求数据时,阿里云服务器将响应消息打包成XML数据,并通过微信服务器转发到微信客户端;当开发板请求数据时,阿里云服务器将请求的数据通过HTTP协议响应给开发板。
2 系统硬件设计
系统硬件组成框图如图2所示。本系统采用CC3200作为主控芯片,该芯片是TI推出的集成高性能ARM Cortex-M4内核的微控制器,是业界首个具有内置Wi-Fi的MCU[5-6]。CC3200芯片包括3大子模块:MCU子模块内核运行频率为80 MHz,具有多种外设;Wi-Fi网络处理器子模块支持站点STA、接入点AP和Wi-Fi Direct模式;电源管理子模块可以启用低功耗模式[7]。
CC3200通过Wi-Fi连接到路由器,进而接入互联网,然后通过HTTP-GET的方式获取数据库中台灯等设备的状态,同时将传感器数据上传到阿里云服务器[8]。
3 系统软件设计
软件设计包含3部分:CC3200微控制器程序设计涉及将设备联网进行数据的上传和下载、传感器数据的采集和显示;微信公众平台程序设计包含微信公众号菜单界面设计;阿里云服务器程序设计包括微信请求接口、CC3200数据交互接口。
3.1 CC3200微控制器程序设计
CC3200通过Wi-Fi连接到路由器,进而接入互联网,然后创建HTTP客户端,连接到HTTP服务器上,上传传感器状态并且获取最新的控制指令。
其中,开发板上传状态并获取指令流程图如图3所示。首先设置HTTP-GET的请求头,主机名Host为139.129.9.166,通过sprintf函数设置请求URL:sprintf(acSendBuff,"/WeChat/cc3200/upload_and_get.do?sequence=number1&temperature=%.2f&humidity=%d&MQ2Data=%d",temperature,humidity,MQ2Data),温湿度和天然气浓度通过此URL进行上传;之后发送HTTP-GET请求到阿里云服务器,服务器接收到请求后定位请求资源,然后将资源响应给开发板。
开发板收到HTTP响应后先判断状态行的状态代码是否等于200,若等于200就代表客户端请求成功,此时先逐行读取响应头部,直至到达响应头部的末尾,然后进行响应正文数据的处理。
处理响应正文数据过程为:响应正文为“light=off,fan=on,airconditionState=cold,airconditionTemp=26”,以获取台灯状态为例,通过strstr函数寻找“light=”字符串在响应正文中的位置(pcIndxPtr),然后将pcIndxPtr加上“light=”的长度得到台灯状态字符串的起始地址,进而得到台灯状态并更新。
3.2 阿里云服务器程序设计
3.2.1 微信请求接口设计
微信服务器把用户发送的消息(文本、语音、菜单)以XML代码形式转发到阿里云服务器,转发的URL为http://139.129.9.166/WeChat/wechat/index.do,微信请求接口程序流程图如图4所示。
具体过程如下:
(1)请求经过阿里云服务器的处理后分发到WeChatController.java文件中的index函数,此函数先将XML消息解析成Map,然后获取消息的类型MsgType:文本、语音、菜单消息分别对应text、voice、event。
(2)根据消息的类型分别路由到不同的函数进行处理:文本、语音和菜单消息分别对应函数onText、onVoice、onEvent,在这些函数中获取不同类型数据中的微信消息wxMsg,然后判断wxMsg中是否存在命令信息,比如开台灯、风扇状态等命令,若存在则将其转换为关键字key,例如L_ON、F_STATUS等。
(3)根据关键字调用WxAction类中相应操作函数:若关键字为L_ON,则调用函数do_l_on;如果关键字为F_STATUS,则调用函数do_f_status。
上述操作函数分为两种处理方式:若操作为开台灯等类别命令时,操作函数首先把命令保存到数据库,然后把需要回复的文本及对应语音URL打包成XML格式回应给微信服务器;若操作为获取台灯状态等类型命令时,操作函数首先从数据库里读取状态信息,然后打包回应给微信服务器。
3.2.2 CC3200数据交互接口程序设计
CC3200数据交互接口程序流程图如图5所示,具体过程为:CC3200的HTTP-GET请求经阿里云服务器处理后分发到CC3200Controller.uploadAndGet函数进行处理,从请求的URL中取出CC3200上传的温湿度和天然气浓度值,存入MySQL数据库;之后从数据库中读取台灯等设备的状态,通过HTTP协议响应给CC3200,从而可以更新设备状态。
3.3 微信公众号程序设计
微信公众平台上自定义菜单有助于丰富公众号的界面,让用户更好更快地理解公众号的功能。自定义菜单接口可实现多种类型按钮,比如click按钮、view按钮等[9]。
其中,用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给阿里云服务器,并且带上按钮中所填写的key值,比如台灯状态等;用户点击view类型按钮后,微信客户端将会打开在按钮中填写的网页URL,比如本设计中用户可以通过点击公众号右下角的“用户手册”查看该公众号如何使用[10]。
4 系统测试
液晶显示屏上显示的信息如图6所示,绑定设备和获取温湿度界面如图7所示,文本控制台灯和语音控制风扇界面如图8所示。
5 结论
本文将微信公众号和内置Wi-Fi的CC3200芯片加以结合,并利用云服务器存储数据,设计了一款云家居交互系统,用户使用微信公众号即可远程控制家居设备并获取家居环境状态。
系统优势在于:(1)数据处理代码部署在服务器上,系统更新升级只需在服务器上进行,用户不需要进行软件更新,体验性较好;(2)将家居设备联网,使用户随时都可以对家居设备进行控制,实现了智能化;(3)将微信和阿里云服务器巧妙地结合起来,为智能云家居提供了一个良好的范例。
参考文献
[1] 刘晓彤.嵌入式智能家居远程监控系统的设计与实现[D].北京:北京交通大学,2009.
[2] Zhou Xiaoyan,Huang Tinglei,Liu Pin,et al.Research on smart living technology based on WSN[C].International Conference on Intelligent Computing and Integrated Systems.IEEE,2010:938-941.
[3] 戴晟辉.微信公众平台搭建、开发与实践指南[M].北京:中国铁道出版社,2014.
[4] 朱智星,白鹏飞,罗智杰,等.基于微信公众平台的云智能采集系统的设计[J].电子技术应用,2015,41(8):17-19.
[5] TI.e络盟供应TI针对物联网应用的LaunchPad与Booster-Pack开发平台[J].单片机与嵌入式系统应用,2014(10):25.
[6] Feng Chao,Mao Pengyu,Bian Tingting,et al.A medical image transmission system for Wi-Fi based wireless capsule endoscopy[C].International Conference on Computer Science & Education.IEEE,2015:601-605.
[7] 郭书军.ARM Cortex-M4+Wi-Fi MCU应用指南——CC3200 CCS基础篇[M].北京:电子工业出版社,2015.
[8] PALLE D V,KANCHI R R.Cloud-based monitoring and measurement of pressure and temperature using CC3200[C].International Conference on Intelligent Systems and Control.IEEE,2017.
[9] 方倍工作室.微信公众平台开发最佳实践[M].北京:机械工业出版社,2014.
[10] 刘捷.微信公众平台企业应用开发实战[M].北京:电子工业出版社,2015.
作者信息:
高世皓1,2,王立华2,朱吉芳3,周松江4
(1.北京邮电大学 泛网无线通信教育部重点实验室,北京100876;
2.山东科技大学 电子通信与物理学院,山东 青岛266590;
3.阿里巴巴集团,浙江 杭州311121;4.北京邮电大学 信息光子学与光通信研究院,北京100876)