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