文獻標識碼: 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)