<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Android的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計

          基于Android的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計

          作者: 時間:2014-04-22 來源:網(wǎng)絡(luò) 收藏

          摘要:針對遠(yuǎn)程控制問題,結(jié)合終端設(shè)備,設(shè)計了一套控制信息對用戶透明的遠(yuǎn)程空調(diào)控制系統(tǒng)。系統(tǒng)底層控制信息通過基于GSM的短消息方式傳輸,實現(xiàn)了對由6臺空調(diào)組成系統(tǒng)的遠(yuǎn)程控制。系統(tǒng)采用自定義通信協(xié)議,在端討論并實現(xiàn)了兩種接收返回信息方式——BroadcastReceiver和ContentObserver方式,對中的Handler機(jī)制進(jìn)行講解應(yīng)用。測試結(jié)果表明,系統(tǒng)結(jié)構(gòu)設(shè)計合理,操作簡單,性能穩(wěn)定。

          本文引用地址:http://www.ex-cimer.com/article/245796.htm

          引言

          遠(yuǎn)程控制作為的一種標(biāo)志性技術(shù),被廣泛應(yīng)用于各種系統(tǒng)中。本文設(shè)計并實現(xiàn)了一種智能家居中遠(yuǎn)程空調(diào)控制方案。本系統(tǒng)基于Android系統(tǒng)客戶端用戶友好型界面和GSM模塊,屏蔽控制信息傳輸處理細(xì)節(jié),客戶端采用控件綁定號碼的方式,用戶只需根據(jù)終端Android界面提示,即可完成遠(yuǎn)程空調(diào)控制。相比于以往方案中GSM模塊采用PDU方式進(jìn)行通信,用戶端需要手動輸入具體命令的模式,本系統(tǒng)采用text文本方式進(jìn)行通信,傳輸?shù)目刂泼顑H為數(shù)字即可。

          本文實現(xiàn)了兩種Android應(yīng)用中接收短消息的方式BroadcastReceiver(廣播接收者)方式和ContentObserver(內(nèi)容觀察者)方式,采用Hand ler機(jī)制將接收到信息顯示,且對安卓中SQLite數(shù)據(jù)庫的操作進(jìn)行闡述及應(yīng)用。本系統(tǒng)通過接收GSM控制消息的基于LPC1766芯片的集中器傳輸控制消息到各個分控制器,可以同時控制6臺空調(diào),每臺空調(diào)對應(yīng)一個分控制器,具體系統(tǒng)控制端架構(gòu)見圖1。

          ?

          ?

          1 系統(tǒng)控制端設(shè)計

          1.1 硬件設(shè)計

          本系統(tǒng)采用NXP公司的LPC1766芯片作為集中器的SoC。系統(tǒng)GSM模塊采用華為公司的GTM900-B型號無線模塊,該模塊具有標(biāo)準(zhǔn)的AT命令接口,并提供無線接口用于短消息的收發(fā),且可通過串口通信和嵌入式MCU相連。

          本系統(tǒng)葉GSM模塊和集中器通過串口相連。GTM900-B模塊的串口與LPC1766的UART0相連,具體連接見圖2。

          ?

          ?

          1.2 AT指令

          GTM900-B模塊使用了GSM Rec.07.07中規(guī)定的標(biāo)準(zhǔn)AT命令,本系統(tǒng)需要使用到的AT命令如表1所列。

          ?

          ?

          1.3 通信協(xié)議

          本系統(tǒng)主要通過GSM短消息的方式完成對每個房間的溫度獲取(通過分控制器上的溫度傳感器)和每個房間空調(diào)工作模式、溫度的設(shè)置,以及關(guān)閉房間空調(diào)的功能。從安卓終端的角度包括兩個方面的通信——發(fā)送和接收。

          從安卓終端發(fā)送到GSM模塊的控制信息包括三個方面:獲取溫度值,設(shè)置某個房間空涮參數(shù),關(guān)閉某個房間李調(diào)。GSM模塊采用text方式通信,系統(tǒng)將發(fā)送的三種控制信息數(shù)字化為相同規(guī)格:

          ?

          一種Android端智能家居遠(yuǎn)程控制方案的實現(xiàn)

          ?

          其中Sent1表示控制信息類型:“1”表示獲取溫度,“2”表示設(shè)置某個房間空調(diào),“3”表示關(guān)閉某個房間空調(diào)。Sent2表示房間號,取值1~6對應(yīng)相應(yīng)房間。Sent3表示當(dāng)Sent1為“2”時,設(shè)置號碼為Sent2的房間空調(diào)的工作模式:“1”表示制熱,“2”表示制冷,“3”表示送風(fēng),“4”表示除濕。Sent4表示當(dāng)Sent1為“2”時,設(shè)置號碼為Sent2房間的工作溫度。分隔符用冒號表示,主要作為區(qū)別控制信息與初始化返回信息的標(biāo)識符。所以,Android發(fā)送端發(fā)送的控制信息格式表示為“Sent1:Sent2:Sent3:Sent4”。

          對安卓終端接收的反饋消息也包括三個方面:集中器從分控制器得到的溫度信息,設(shè)置某個房間空調(diào)成功的返回消息,某個房間空調(diào)關(guān)閉的返回消息。因為這三種消息長度不一致,處理方式不同,系統(tǒng)只對接收消息的前兩位格式化即可完成系統(tǒng)功能,具體如下:

          ?

          一種Android端智能家居遠(yuǎn)程控制方案的實現(xiàn)

          ?

          其中:Rec1表示反饋信息類型:“1”表示溫度信息,“2”表示設(shè)置空調(diào)返回信息,“3”表示關(guān)閉空調(diào)返回信息。Rec2表示當(dāng)Rec1為“2”或“3”時空調(diào)返回信息,“1”表示設(shè)置或者關(guān)閉成功,“0”表示失敗。所以,Android接收端接收的由系統(tǒng)控制端返回的信息中,首先會判斷第1位(即Rec1位),如果是“1”,則表示返回的是各個房間的溫度;如果是“2”,表示的是設(shè)置空調(diào)(Sent1等于“2”時)的返回消息;如果是“3”,表示的是關(guān)閉空調(diào)(Sent1等于“3”時)的返回消息;對于Rce1等于“2”或者“3”,再根據(jù)Rce2來判斷相應(yīng)的返回消息狀態(tài)。

          1.4 集中器軟件設(shè)計

          集中器上的程序主要完成系統(tǒng)模塊和GSM模塊初始化,判斷控制信息類型及作相應(yīng)的處理,向終端用戶返回消息。具體程序流程見圖3。

          ?

          ?

          其中GucRcvNew=1表示集中器從UART0接收到來自GSM模塊的返回消息,recvfg用來對GSM模塊進(jìn)行初始化,其初值為0。集中器發(fā)送命令at到GSM模塊,如果接收到GSM模塊的“at ok”返回消息,則設(shè)置recvfg=1,然后進(jìn)入switch語句,當(dāng)recvfg=1時,向GSM模塊發(fā)送命令at+cmgf =1,如果返回值為“at+cmgf=1 ok”,設(shè)置recvfg=2。當(dāng)recvfg=2時,向GSM模塊發(fā)送命令“at+cnmi=2,2,,1”,如果返回值為“at+cnmi =2,2,,1 ok”,設(shè)置recvfg=3,到此GSM模塊初始化結(jié)束。如果初始化過程中當(dāng)集中器發(fā)送AT命令后,接收到的不是正確返回值,則設(shè)置recvfg=0,重新開始初始化。


          上一頁 1 2 下一頁

          關(guān)鍵詞: Android 智能家居

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();