文獻(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)不能滿(mǎn)足人們對(duì)居住環(huán)境的要求,,智慧化和數(shù)字化是未來(lái)家居的發(fā)展趨勢(shì),。隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,智能家居成為新的研究熱點(diǎn)和應(yīng)用領(lǐng)域[1-2],。近幾年,,微信已經(jīng)被廣泛普及使用,它可以保證用戶(hù)的真實(shí)性,,所以可以將微信與智能家居相結(jié)合,,通過(guò)密鑰進(jìn)行身份認(rèn)證,認(rèn)證通過(guò)后用戶(hù)便可與智能設(shè)備之間進(jìn)行數(shù)據(jù)交換[3-4],?;诖耍疚膶?a class="innerlink" href="http://forexkbc.com/tags/微信公眾號(hào)" title="微信公眾號(hào)" target="_blank">微信公眾號(hào)和CC3200芯片相結(jié)合,,使用云服務(wù)器存儲(chǔ)數(shù)據(jù),,實(shí)現(xiàn)了用戶(hù)遠(yuǎn)程操控家居設(shè)備、獲取家居環(huán)境狀態(tài)的功能,系統(tǒng)可靠性高,、實(shí)用性好,、控制方便,具有較好的應(yīng)用前景,。
1 系統(tǒng)設(shè)計(jì)方案
系統(tǒng)框圖如圖1所示,。用戶(hù)首先需要接入網(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)等,;查詢(xún)?cè)O(shè)備狀態(tài),,例如獲取臺(tái)燈狀態(tài)、風(fēng)扇轉(zhuǎn)速,、空調(diào)溫度等,;獲取傳感器數(shù)據(jù),例如室內(nèi)溫濕度,、天然氣濃度值等,。
系統(tǒng)分為服務(wù)器端和客戶(hù)端:服務(wù)器端為微信服務(wù)器和阿里云服務(wù)器;客戶(hù)端為微信公眾號(hào)和CC3200 LaunchPad開(kāi)發(fā)板,,這兩個(gè)客戶(hù)端都可以向服務(wù)器提交數(shù)據(jù)和下載數(shù)據(jù),。
微信服務(wù)器定義了公眾號(hào)菜單,并且把微信客戶(hù)端發(fā)送的消息以可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language,,XML)形式的數(shù)據(jù)發(fā)送到阿里云服務(wù)器,;阿里云服務(wù)器根據(jù)指令更新數(shù)據(jù)庫(kù),同時(shí)接收開(kāi)發(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ā)到微信客戶(hù)端,;當(dāng)開(kāi)發(fā)板請(qǐng)求數(shù)據(jù)時(shí),阿里云服務(wù)器將請(qǐng)求的數(shù)據(jù)通過(guò)HTTP協(xié)議響應(yīng)給開(kāi)發(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客戶(hù)端,,連接到HTTP服務(wù)器上,,上傳傳感器狀態(tài)并且獲取最新的控制指令。
其中,,開(kā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)給開(kāi)發(fā)板,。
開(kāi)發(fā)板收到HTTP響應(yīng)后先判斷狀態(tài)行的狀態(tài)代碼是否等于200,,若等于200就代表客戶(hù)端請(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ù)器把用戶(hù)發(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,,然后獲取消息的類(lèi)型MsgType:文本、語(yǔ)音,、菜單消息分別對(duì)應(yīng)text,、voice、event,。
(2)根據(jù)消息的類(lèi)型分別路由到不同的函數(shù)進(jìn)行處理:文本,、語(yǔ)音和菜單消息分別對(duì)應(yīng)函數(shù)onText、onVoice,、onEvent,,在這些函數(shù)中獲取不同類(lèi)型數(shù)據(jù)中的微信消息wxMsg,然后判斷wxMsg中是否存在命令信息,,比如開(kāi)臺(tái)燈,、風(fēng)扇狀態(tài)等命令,若存在則將其轉(zhuǎn)換為關(guān)鍵字key,,例如L_ON,、F_STATUS等。
(3)根據(jù)關(guān)鍵字調(diào)用WxAction類(lèi)中相應(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ù)分為兩種處理方式:若操作為開(kāi)臺(tái)燈等類(lèi)別命令時(shí),,操作函數(shù)首先把命令保存到數(shù)據(jù)庫(kù),然后把需要回復(fù)的文本及對(duì)應(yīng)語(yǔ)音URL打包成XML格式回應(yīng)給微信服務(wù)器,;若操作為獲取臺(tái)燈狀態(tài)等類(lè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ù)更好更快地理解公眾號(hào)的功能。自定義菜單接口可實(shí)現(xiàn)多種類(lèi)型按鈕,,比如click按鈕,、view按鈕等[9]。
其中,,用戶(hù)點(diǎn)擊click類(lèi)型按鈕后,,微信服務(wù)器會(huì)通過(guò)消息接口推送消息類(lèi)型為event的結(jié)構(gòu)給阿里云服務(wù)器,并且?guī)习粹o中所填寫(xiě)的key值,,比如臺(tái)燈狀態(tài)等,;用戶(hù)點(diǎn)擊view類(lèi)型按鈕后,微信客戶(hù)端將會(huì)打開(kāi)在按鈕中填寫(xiě)的網(wǎng)頁(yè)URL,,比如本設(shè)計(jì)中用戶(hù)可以通過(guò)點(diǎn)擊公眾號(hào)右下角的“用戶(hù)手冊(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ù)使用微信公眾號(hào)即可遠(yuǎn)程控制家居設(shè)備并獲取家居環(huán)境狀態(tài),。
系統(tǒng)優(yōu)勢(shì)在于:(1)數(shù)據(jù)處理代碼部署在服務(wù)器上,,系統(tǒng)更新升級(jí)只需在服務(wù)器上進(jìn)行,用戶(hù)不需要進(jìn)行軟件更新,,體驗(yàn)性較好,;(2)將家居設(shè)備聯(lián)網(wǎng),使用戶(hù)隨時(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)搭建、開(kā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開(kāi)發(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] 郭書(shū)軍.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)開(kāi)發(fā)最佳實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2014.
[10] 劉捷.微信公眾平臺(tái)企業(yè)應(yīng)用開(kāi)發(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)