文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.173614
中文引用格式: 高世皓,王立華,朱吉芳,等. 基于CC3200及微信公眾號(hào)的云家居交互系統(tǒng)[J].電子技術(shù)應(yīng)用,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 引言
隨著科技的發(fā)展,人們對(duì)居住條件的要求逐漸提高,傳統(tǒng)的只有居住功能的家居已經(jīng)不能滿足人們對(duì)居住環(huán)境的要求,智慧化和數(shù)字化是未來(lái)家居的發(fā)展趨勢(shì)。隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,智能家居成為新的研究熱點(diǎn)和應(yīng)用領(lǐng)域[1-2]。近幾年,微信已經(jīng)被廣泛普及使用,它可以保證用戶的真實(shí)性,所以可以將微信與智能家居相結(jié)合,通過(guò)密鑰進(jìn)行身份認(rèn)證,認(rèn)證通過(guò)后用戶便可與智能設(shè)備之間進(jìn)行數(shù)據(jù)交換[3-4]?;诖?,本文將微信公眾號(hào)和CC3200芯片相結(jié)合,使用云服務(wù)器存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)了用戶遠(yuǎn)程操控家居設(shè)備、獲取家居環(huán)境狀態(tài)的功能,系統(tǒng)可靠性高、實(shí)用性好、控制方便,具有較好的應(yīng)用前景。
1 系統(tǒng)設(shè)計(jì)方案
系統(tǒng)框圖如圖1所示。用戶首先需要接入網(wǎng)絡(luò)并且關(guān)注云家居公眾號(hào),之后通過(guò)密鑰綁定家居控制系統(tǒng),就可以在公眾號(hào)中發(fā)送文本、語(yǔ)音消息,或者點(diǎn)擊公眾號(hào)中的菜單實(shí)現(xiàn)以下功能:遠(yuǎn)程控制家居設(shè)備,例如臺(tái)燈、風(fēng)扇、空調(diào)等;查詢?cè)O(shè)備狀態(tài),例如獲取臺(tái)燈狀態(tài)、風(fēng)扇轉(zhuǎn)速、空調(diào)溫度等;獲取傳感器數(shù)據(jù),例如室內(nèi)溫濕度、天然氣濃度值等。
系統(tǒng)分為服務(wù)器端和客戶端:服務(wù)器端為微信服務(wù)器和阿里云服務(wù)器;客戶端為微信公眾號(hào)和CC3200 LaunchPad開發(fā)板,這兩個(gè)客戶端都可以向服務(wù)器提交數(shù)據(jù)和下載數(shù)據(jù)。
微信服務(wù)器定義了公眾號(hào)菜單,并且把微信客戶端發(fā)送的消息以可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language,XML)形式的數(shù)據(jù)發(fā)送到阿里云服務(wù)器;阿里云服務(wù)器根據(jù)指令更新數(shù)據(jù)庫(kù),同時(shí)接收開發(fā)板上傳的傳感器數(shù)據(jù),將數(shù)據(jù)存入數(shù)據(jù)庫(kù)。
當(dāng)微信公眾號(hào)請(qǐng)求數(shù)據(jù)時(shí),阿里云服務(wù)器將響應(yīng)消息打包成XML數(shù)據(jù),并通過(guò)微信服務(wù)器轉(zhuǎn)發(fā)到微信客戶端;當(dāng)開發(fā)板請(qǐng)求數(shù)據(jù)時(shí),阿里云服務(wù)器將請(qǐng)求的數(shù)據(jù)通過(guò)HTTP協(xié)議響應(yīng)給開發(fā)板。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件組成框圖如圖2所示。本系統(tǒng)采用CC3200作為主控芯片,該芯片是TI推出的集成高性能ARM Cortex-M4內(nèi)核的微控制器,是業(yè)界首個(gè)具有內(nèi)置Wi-Fi的MCU[5-6]。CC3200芯片包括3大子模塊:MCU子模塊內(nèi)核運(yùn)行頻率為80 MHz,具有多種外設(shè);Wi-Fi網(wǎng)絡(luò)處理器子模塊支持站點(diǎn)STA、接入點(diǎn)AP和Wi-Fi Direct模式;電源管理子模塊可以啟用低功耗模式[7]。
CC3200通過(guò)Wi-Fi連接到路由器,進(jìn)而接入互聯(lián)網(wǎng),然后通過(guò)HTTP-GET的方式獲取數(shù)據(jù)庫(kù)中臺(tái)燈等設(shè)備的狀態(tài),同時(shí)將傳感器數(shù)據(jù)上傳到阿里云服務(wù)器[8]。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)包含3部分:CC3200微控制器程序設(shè)計(jì)涉及將設(shè)備聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)的上傳和下載、傳感器數(shù)據(jù)的采集和顯示;微信公眾平臺(tái)程序設(shè)計(jì)包含微信公眾號(hào)菜單界面設(shè)計(jì);阿里云服務(wù)器程序設(shè)計(jì)包括微信請(qǐng)求接口、CC3200數(shù)據(jù)交互接口。
3.1 CC3200微控制器程序設(shè)計(jì)
CC3200通過(guò)Wi-Fi連接到路由器,進(jìn)而接入互聯(lián)網(wǎng),然后創(chuàng)建HTTP客戶端,連接到HTTP服務(wù)器上,上傳傳感器狀態(tài)并且獲取最新的控制指令。
其中,開發(fā)板上傳狀態(tài)并獲取指令流程圖如圖3所示。首先設(shè)置HTTP-GET的請(qǐng)求頭,主機(jī)名Host為139.129.9.166,通過(guò)sprintf函數(shù)設(shè)置請(qǐng)求URL:sprintf(acSendBuff,"/WeChat/cc3200/upload_and_get.do?sequence=number1&temperature=%.2f&humidity=%d&MQ2Data=%d",temperature,humidity,MQ2Data),溫濕度和天然氣濃度通過(guò)此URL進(jìn)行上傳;之后發(fā)送HTTP-GET請(qǐng)求到阿里云服務(wù)器,服務(wù)器接收到請(qǐng)求后定位請(qǐng)求資源,然后將資源響應(yīng)給開發(fā)板。
開發(fā)板收到HTTP響應(yīng)后先判斷狀態(tài)行的狀態(tài)代碼是否等于200,若等于200就代表客戶端請(qǐng)求成功,此時(shí)先逐行讀取響應(yīng)頭部,直至到達(dá)響應(yīng)頭部的末尾,然后進(jìn)行響應(yīng)正文數(shù)據(jù)的處理。
處理響應(yīng)正文數(shù)據(jù)過(guò)程為:響應(yīng)正文為“l(fā)ight=off,fan=on,airconditionState=cold,airconditionTemp=26”,以獲取臺(tái)燈狀態(tài)為例,通過(guò)strstr函數(shù)尋找“l(fā)ight=”字符串在響應(yīng)正文中的位置(pcIndxPtr),然后將pcIndxPtr加上“l(fā)ight=”的長(zhǎng)度得到臺(tái)燈狀態(tài)字符串的起始地址,進(jìn)而得到臺(tái)燈狀態(tài)并更新。
3.2 阿里云服務(wù)器程序設(shè)計(jì)
3.2.1 微信請(qǐng)求接口設(shè)計(jì)
微信服務(wù)器把用戶發(fā)送的消息(文本、語(yǔ)音、菜單)以XML代碼形式轉(zhuǎn)發(fā)到阿里云服務(wù)器,轉(zhuǎn)發(fā)的URL為http://139.129.9.166/WeChat/wechat/index.do,微信請(qǐng)求接口程序流程圖如圖4所示。
具體過(guò)程如下:
(1)請(qǐng)求經(jīng)過(guò)阿里云服務(wù)器的處理后分發(fā)到WeChatController.java文件中的index函數(shù),此函數(shù)先將XML消息解析成Map,然后獲取消息的類型MsgType:文本、語(yǔ)音、菜單消息分別對(duì)應(yīng)text、voice、event。
(2)根據(jù)消息的類型分別路由到不同的函數(shù)進(jìn)行處理:文本、語(yǔ)音和菜單消息分別對(duì)應(yīng)函數(shù)onText、onVoice、onEvent,在這些函數(shù)中獲取不同類型數(shù)據(jù)中的微信消息wxMsg,然后判斷wxMsg中是否存在命令信息,比如開臺(tái)燈、風(fēng)扇狀態(tài)等命令,若存在則將其轉(zhuǎn)換為關(guān)鍵字key,例如L_ON、F_STATUS等。
(3)根據(jù)關(guān)鍵字調(diào)用WxAction類中相應(yīng)操作函數(shù):若關(guān)鍵字為L(zhǎng)_ON,則調(diào)用函數(shù)do_l_on;如果關(guān)鍵字為F_STATUS,則調(diào)用函數(shù)do_f_status。
上述操作函數(shù)分為兩種處理方式:若操作為開臺(tái)燈等類別命令時(shí),操作函數(shù)首先把命令保存到數(shù)據(jù)庫(kù),然后把需要回復(fù)的文本及對(duì)應(yīng)語(yǔ)音URL打包成XML格式回應(yīng)給微信服務(wù)器;若操作為獲取臺(tái)燈狀態(tài)等類型命令時(shí),操作函數(shù)首先從數(shù)據(jù)庫(kù)里讀取狀態(tài)信息,然后打包回應(yīng)給微信服務(wù)器。
3.2.2 CC3200數(shù)據(jù)交互接口程序設(shè)計(jì)
CC3200數(shù)據(jù)交互接口程序流程圖如圖5所示,具體過(guò)程為:CC3200的HTTP-GET請(qǐng)求經(jīng)阿里云服務(wù)器處理后分發(fā)到CC3200Controller.uploadAndGet函數(shù)進(jìn)行處理,從請(qǐng)求的URL中取出CC3200上傳的溫濕度和天然氣濃度值,存入MySQL數(shù)據(jù)庫(kù);之后從數(shù)據(jù)庫(kù)中讀取臺(tái)燈等設(shè)備的狀態(tài),通過(guò)HTTP協(xié)議響應(yīng)給CC3200,從而可以更新設(shè)備狀態(tài)。
3.3 微信公眾號(hào)程序設(shè)計(jì)
微信公眾平臺(tái)上自定義菜單有助于豐富公眾號(hào)的界面,讓用戶更好更快地理解公眾號(hào)的功能。自定義菜單接口可實(shí)現(xiàn)多種類型按鈕,比如click按鈕、view按鈕等[9]。
其中,用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會(huì)通過(guò)消息接口推送消息類型為event的結(jié)構(gòu)給阿里云服務(wù)器,并且?guī)习粹o中所填寫的key值,比如臺(tái)燈狀態(tài)等;用戶點(diǎn)擊view類型按鈕后,微信客戶端將會(huì)打開在按鈕中填寫的網(wǎng)頁(yè)URL,比如本設(shè)計(jì)中用戶可以通過(guò)點(diǎn)擊公眾號(hào)右下角的“用戶手冊(cè)”查看該公眾號(hào)如何使用[10]。
4 系統(tǒng)測(cè)試
液晶顯示屏上顯示的信息如圖6所示,綁定設(shè)備和獲取溫濕度界面如圖7所示,文本控制臺(tái)燈和語(yǔ)音控制風(fēng)扇界面如圖8所示。
5 結(jié)論
本文將微信公眾號(hào)和內(nèi)置Wi-Fi的CC3200芯片加以結(jié)合,并利用云服務(wù)器存儲(chǔ)數(shù)據(jù),設(shè)計(jì)了一款云家居交互系統(tǒng),用戶使用微信公眾號(hào)即可遠(yuǎn)程控制家居設(shè)備并獲取家居環(huán)境狀態(tài)。
系統(tǒng)優(yōu)勢(shì)在于:(1)數(shù)據(jù)處理代碼部署在服務(wù)器上,系統(tǒng)更新升級(jí)只需在服務(wù)器上進(jìn)行,用戶不需要進(jìn)行軟件更新,體驗(yàn)性較好;(2)將家居設(shè)備聯(lián)網(wǎng),使用戶隨時(shí)都可以對(duì)家居設(shè)備進(jìn)行控制,實(shí)現(xiàn)了智能化;(3)將微信和阿里云服務(wù)器巧妙地結(jié)合起來(lái),為智能云家居提供了一個(gè)良好的范例。
參考文獻(xiàn)
[1] 劉曉彤.嵌入式智能家居遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),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] 戴晟輝.微信公眾平臺(tái)搭建、開發(fā)與實(shí)踐指南[M].北京:中國(guó)鐵道出版社,2014.
[4] 朱智星,白鵬飛,羅智杰,等.基于微信公眾平臺(tái)的云智能采集系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(8):17-19.
[5] TI.e絡(luò)盟供應(yīng)TI針對(duì)物聯(lián)網(wǎng)應(yīng)用的LaunchPad與Booster-Pack開發(fā)平臺(tái)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,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應(yīng)用指南——CC3200 CCS基礎(chǔ)篇[M].北京:電子工業(yè)出版社,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] 方倍工作室.微信公眾平臺(tái)開發(fā)最佳實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2014.
[10] 劉捷.微信公眾平臺(tái)企業(yè)應(yīng)用開發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2015.
作者信息:
高世皓1,2,王立華2,朱吉芳3,周松江4
(1.北京郵電大學(xué) 泛網(wǎng)無(wú)線通信教育部重點(diǎn)實(shí)驗(yàn)室,北京100876;
2.山東科技大學(xué) 電子通信與物理學(xué)院,山東 青島266590;
3.阿里巴巴集團(tuán),浙江 杭州311121;4.北京郵電大學(xué) 信息光子學(xué)與光通信研究院,北京100876)