基于Android的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)
摘要:針對智能家居遠(yuǎn)程控制問題,結(jié)合Android終端設(shè)備,設(shè)計(jì)了一套控制信息對用戶透明的遠(yuǎn)程空調(diào)控制系統(tǒng)。系統(tǒng)底層控制信息通過基于GSM的短消息方式傳輸,實(shí)現(xiàn)了對由6臺空調(diào)組成系統(tǒng)的遠(yuǎn)程控制。系統(tǒng)采用自定義通信協(xié)議,在Android端討論并實(shí)現(xiàn)了兩種接收返回信息方式——BroadcastReceiver和ContentObserver方式,對Android中的Handler機(jī)制進(jìn)行講解應(yīng)用。測試結(jié)果表明,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)合理,操作簡單,性能穩(wěn)定。
本文引用地址:http://m.butianyuan.cn/article/245796.htm引言
遠(yuǎn)程控制作為智能家居的一種標(biāo)志性技術(shù),被廣泛應(yīng)用于各種智能家居系統(tǒng)中。本文設(shè)計(jì)并實(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)行通信,用戶端需要手動(dòng)輸入具體命令的模式,本系統(tǒng)采用text文本方式進(jìn)行通信,傳輸?shù)目刂泼顑H為數(shù)字即可。
本文實(shí)現(xiàn)了兩種Android應(yīng)用中接收短消息的方式BroadcastReceiver(廣播接收者)方式和ContentObserver(內(nèi)容觀察者)方式,采用Hand ler機(jī)制將接收到信息顯示,且對安卓中SQLite數(shù)據(jù)庫的操作進(jìn)行闡述及應(yīng)用。本系統(tǒng)通過接收GSM控制消息的基于LPC1766芯片的集中器傳輸控制消息到各個(gè)分控制器,可以同時(shí)控制6臺空調(diào),每臺空調(diào)對應(yīng)一個(gè)分控制器,具體系統(tǒng)控制端架構(gòu)見圖1。
?
?
1 系統(tǒng)控制端設(shè)計(jì)
1.1 硬件設(shè)計(jì)
本系統(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短消息的方式完成對每個(gè)房間的溫度獲取(通過分控制器上的溫度傳感器)和每個(gè)房間空調(diào)工作模式、溫度的設(shè)置,以及關(guān)閉房間空調(diào)的功能。從安卓終端的角度包括兩個(gè)方面的通信——發(fā)送和接收。
從安卓終端發(fā)送到GSM模塊的控制信息包括三個(gè)方面:獲取溫度值,設(shè)置某個(gè)房間空涮參數(shù),關(guān)閉某個(gè)房間李調(diào)。GSM模塊采用text方式通信,系統(tǒng)將發(fā)送的三種控制信息數(shù)字化為相同規(guī)格:
?
?
其中Sent1表示控制信息類型:“1”表示獲取溫度,“2”表示設(shè)置某個(gè)房間空調(diào),“3”表示關(guān)閉某個(gè)房間空調(diào)。Sent2表示房間號,取值1~6對應(yīng)相應(yīng)房間。Sent3表示當(dāng)Sent1為“2”時(shí),設(shè)置號碼為Sent2的房間空調(diào)的工作模式:“1”表示制熱,“2”表示制冷,“3”表示送風(fēng),“4”表示除濕。Sent4表示當(dāng)Sent1為“2”時(shí),設(shè)置號碼為Sent2房間的工作溫度。分隔符用冒號表示,主要作為區(qū)別控制信息與初始化返回信息的標(biāo)識符。所以,Android發(fā)送端發(fā)送的控制信息格式表示為“Sent1:Sent2:Sent3:Sent4”。
對安卓終端接收的反饋消息也包括三個(gè)方面:集中器從分控制器得到的溫度信息,設(shè)置某個(gè)房間空調(diào)成功的返回消息,某個(gè)房間空調(diào)關(guān)閉的返回消息。因?yàn)檫@三種消息長度不一致,處理方式不同,系統(tǒng)只對接收消息的前兩位格式化即可完成系統(tǒng)功能,具體如下:
?
?
其中:Rec1表示反饋信息類型:“1”表示溫度信息,“2”表示設(shè)置空調(diào)返回信息,“3”表示關(guān)閉空調(diào)返回信息。Rec2表示當(dāng)Rec1為“2”或“3”時(shí)空調(diào)返回信息,“1”表示設(shè)置或者關(guān)閉成功,“0”表示失敗。所以,Android接收端接收的由系統(tǒng)控制端返回的信息中,首先會判斷第1位(即Rec1位),如果是“1”,則表示返回的是各個(gè)房間的溫度;如果是“2”,表示的是設(shè)置空調(diào)(Sent1等于“2”時(shí))的返回消息;如果是“3”,表示的是關(guān)閉空調(diào)(Sent1等于“3”時(shí))的返回消息;對于Rce1等于“2”或者“3”,再根據(jù)Rce2來判斷相應(yīng)的返回消息狀態(tài)。
1.4 集中器軟件設(shè)計(jì)
集中器上的程序主要完成系統(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時(shí),向GSM模塊發(fā)送命令at+cmgf =1,如果返回值為“at+cmgf=1 ok”,設(shè)置recvfg=2。當(dāng)recvfg=2時(shí),向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,重新開始初始化。
評論