www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 摘要:針對(duì)智能家居遠(yuǎn)程控制問題,結(jié)合Android終端設(shè)備,設(shè)計(jì)了一套控制信息對(duì)用戶透明的遠(yuǎn)程空調(diào)控制系統(tǒng)。系統(tǒng)底層控制信息通過基于GSM的短消息方式傳輸,實(shí)現(xiàn)了對(duì)由6臺(tái)空調(diào)組成系統(tǒng)的遠(yuǎn)程控制。系統(tǒng)采用自定義通

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

引言

遠(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é),客戶端采用控件綁定號(hào)碼的方式,用戶只需根據(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ī)制將接收到信息顯示,且對(duì)安卓中SQLite數(shù)據(jù)庫(kù)的操作進(jìn)行闡述及應(yīng)用。本系統(tǒng)通過接收GSM控制消息的基于LPC1766芯片的集中器傳輸控制消息到各個(gè)分控制器,可以同時(shí)控制6臺(tái)空調(diào),每臺(tái)空調(diào)對(duì)應(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型號(hào)無線模塊,該模塊具有標(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短消息的方式完成對(duì)每個(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表示房間號(hào),取值1~6對(duì)應(yīng)相應(yīng)房間。Sent3表示當(dāng)Sent1為“2”時(shí),設(shè)置號(hào)碼為Sent2的房間空調(diào)的工作模式:“1”表示制熱,“2”表示制冷,“3”表示送風(fēng),“4”表示除濕。Sent4表示當(dāng)Sent1為“2”時(shí),設(shè)置號(hào)碼為Sent2房間的工作溫度。分隔符用冒號(hào)表示,主要作為區(qū)別控制信息與初始化返回信息的標(biāo)識(shí)符。所以,Android發(fā)送端發(fā)送的控制信息格式表示為“Sent1:Sent2:Sent3:Sent4”。

對(duì)安卓終端接收的反饋消息也包括三個(gè)方面:集中器從分控制器得到的溫度信息,設(shè)置某個(gè)房間空調(diào)成功的返回消息,某個(gè)房間空調(diào)關(guān)閉的返回消息。因?yàn)檫@三種消息長(zhǎng)度不一致,處理方式不同,系統(tǒng)只對(duì)接收消息的前兩位格式化即可完成系統(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)控制端返回的信息中,首先會(huì)判斷第1位(即Rec1位),如果是“1”,則表示返回的是各個(gè)房間的溫度;如果是“2”,表示的是設(shè)置空調(diào)(Sent1等于“2”時(shí))的返回消息;如果是“3”,表示的是關(guān)閉空調(diào)(Sent1等于“3”時(shí))的返回消息;對(duì)于Rce1等于“2”或者“3”,再根據(jù)Rce2來判斷相應(yīng)的返回消息狀態(tài)。

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

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

其中GucRcvNew=1表示集中器從UART0接收到來自GSM模塊的返回消息,recvfg用來對(duì)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,重新開始初始化。

根據(jù)控制信息類型設(shè)置flag子程序和根據(jù)flag值進(jìn)行相應(yīng)處理的子程序主要是在初始化結(jié)束后完成系統(tǒng)功能,程序流程見圖4、圖5。

本系統(tǒng)集中器采用UART中斷方式和GSM模塊通信,當(dāng)有數(shù)據(jù)返回集中器時(shí),會(huì)觸發(fā)UART中斷,在UART中斷處理程序中從U0RBR寄存器讀數(shù)據(jù)到GucRcvBur[Gu1Num]數(shù)組中。因?yàn)槊看瓮ㄐ欧祷氐淖止?jié)數(shù)不相等,本系統(tǒng)在UART中斷處理函數(shù)中引入定時(shí)器中斷,在定時(shí)器中斷處理函數(shù)中設(shè)置GucRcvNew==1。即每次進(jìn)入U(xiǎn)ART中斷處理函數(shù)時(shí),開啟定時(shí)器,UART在初始化時(shí)設(shè)定的中斷觸發(fā)點(diǎn)是1個(gè)字節(jié),當(dāng)所有返回字節(jié)都接收完成時(shí),定時(shí)器超時(shí)會(huì)觸發(fā)定時(shí)器中斷處理函數(shù),設(shè)置GucRcvNew==1,主程序檢測(cè)到有數(shù)據(jù)返回。系統(tǒng)中設(shè)置定時(shí)器的觸發(fā)時(shí)間是0.5 s。

2 Android端設(shè)計(jì)

本系統(tǒng)采用Android應(yīng)用程序的用戶友好型界面作為與用戶的接口,Android終端程序通過控件綁定方式對(duì)固定號(hào)碼進(jìn)行短信接收與發(fā)送,用戶只需通過點(diǎn)擊控件方式即可傳遞和接收控制信息,具體根據(jù)系統(tǒng)自定義通信協(xié)議發(fā)送的控制信息則完全被程序屏蔽,對(duì)用戶完全透明。其中發(fā)送短信和接收短息都會(huì)對(duì)Android系統(tǒng)的SQLite數(shù)據(jù)庫(kù)作出改動(dòng),需要對(duì)數(shù)據(jù)庫(kù)中的相關(guān)信息進(jìn)行刪除來保證對(duì)用戶透明。另外對(duì)于控件之間消息傳遞采用Android中的Handler機(jī)制。

2.1 發(fā)送控制信息

Android中發(fā)送消息主要通過SmsManager類來實(shí)現(xiàn),它繼承自java.lang.Object類。其主要的方法說明略——編者注。

發(fā)送短信程序首先調(diào)用SmsManager. getDefault()獲取SmsManager對(duì)象,然后通過PendingIntent的getActivity方法獲得一個(gè)Pending Intent對(duì)象。根據(jù)短信長(zhǎng)度Message.length()與短信長(zhǎng)度最大值比較來判斷是否需要調(diào)用smsManager.divideMessage(Message)將短信分割,然后再調(diào)用smsManager的sendTextMessage方法發(fā)送短信。代碼略——編者注。

發(fā)送短信模塊需要在清單文件AndroidManifest.xml中加入允許發(fā)送短信的權(quán)限:

2.2 接收返回信息

在Android端接收消息,可以采用兩種方式,一種通過BroadcastReceiver廣播接收器的方式,另外一種是通過觀察數(shù)據(jù)庫(kù)變化的內(nèi)容觀察者類ContentObserver來實(shí)現(xiàn)。

2.2.1 BroadcastReceiver接收短信

Android中的廣播是一種在應(yīng)用程序之間傳遞信息的機(jī)制,在Android中有多種廣播,基于GSM短信的接收會(huì)產(chǎn)生一個(gè)廣播,應(yīng)用程序可以監(jiān)聽這些廣播并根據(jù)廣播類型作出相應(yīng)的處理。BroadcastReceiver就是對(duì)接收到的廣播進(jìn)行過濾并響應(yīng)的一類組件。

當(dāng)應(yīng)用程序接收到廣播發(fā)送來的intent對(duì)象,BroadcastReceiver類根據(jù)其注冊(cè)的廣播地址與接收到的intent對(duì)象進(jìn)行比較,如果匹配則調(diào)用BroadcastReceiver的onReceive()方法。

BroadcastReceiver類的注冊(cè)有兩種方式,第一種是靜態(tài)注冊(cè)方式,即在AndroidManifest.xml文件中利用intent—filter指明需要過濾的廣播地址。靜態(tài)注冊(cè)方式會(huì)使程序始終監(jiān)聽廣播消息,并自動(dòng)調(diào)用程序繼承自BroadcastReceiver的類。第二種是動(dòng)態(tài)注冊(cè)方式,其在activity中調(diào)用函數(shù)registerReceiver來注冊(cè),當(dāng)應(yīng)用程序關(guān)閉后,就不在進(jìn)行監(jiān)聽。在動(dòng)態(tài)注冊(cè)的activity被銷毀前,需要調(diào)用unregist er Receiver解除注冊(cè)。

短消息廣播是一個(gè)有序廣播,即每次只被優(yōu)先級(jí)最高的接收者處理,然后由優(yōu)先級(jí)高的接收者傳遞到優(yōu)先級(jí)低的接收者。優(yōu)先級(jí)高的接收者可以終止這個(gè)廣播。對(duì)于有序廣播而言,動(dòng)態(tài)注冊(cè)的優(yōu)先級(jí)高于靜態(tài)注冊(cè)。

系統(tǒng)中定義SmsReceiver類繼承自BroadcastReceiver類,采用動(dòng)態(tài)注冊(cè)的方式,在activity中用于動(dòng)態(tài)注冊(cè)的代碼略——編者注。

接收短信模塊需要在清單文件AndroidManifest.xml中加入允許發(fā)送短信的權(quán)限:。

2.2.2 ContentObserver接收短信

系統(tǒng)實(shí)際使用中,對(duì)于用BroadcastReceiver接收短信往往效果不好,主要因?yàn)橛脩粼贏ndroid終端安裝的第三方軟件,比如接收短信軟件、安全軟件等,這類軟件從底層獲取系統(tǒng)權(quán)限,優(yōu)先級(jí)始終高于應(yīng)用層軟件,導(dǎo)致應(yīng)用層軟件不能優(yōu)先接收到廣播消息,所以在設(shè)計(jì)短信接收客戶端時(shí)一般采用監(jiān)聽數(shù)據(jù)庫(kù)方式。

當(dāng)客戶端接收到短信后會(huì)將其插入SQLite數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)發(fā)生變化會(huì)觸發(fā)內(nèi)容觀察者——ContentObserver。

ContentObserver類似于一個(gè)觸發(fā)器,當(dāng)其所觀察的Uri發(fā)生變化,這個(gè)觸發(fā)器就會(huì)觸發(fā)來執(zhí)行相應(yīng)的處理。主要方法的說明略——編者注。

本系統(tǒng)在onChange的方法中,利用Context實(shí)例對(duì)象的getContentResolver方法獲得一個(gè)ContentResolver對(duì)象,然后調(diào)用Content Reso lver的query方法獲取當(dāng)前數(shù)據(jù)庫(kù)中的短消息。具體代碼略——編者注。

對(duì)于得到的短消息通過Cursor對(duì)象的getColumnIndexOrThrow方法獲取其thread_id,id和body內(nèi)容。對(duì)于在數(shù)據(jù)庫(kù)中的短消息,為了保證對(duì)用戶的透明傳輸,要調(diào)用ContentResolver對(duì)象的delete方法將收件箱中的短消息刪除。具體代碼略——編者注。

ContentObserver接收短信模塊需要在清單文件AndroidManifest.xml中加入允許接收短信的權(quán)限:

2.3 Handler機(jī)制

對(duì)于使用ContentObserver接收到房間溫度信息后,通過Android的Handler機(jī)制將信息傳送到主activity顯示。在Android中,主程序會(huì)創(chuàng)建一個(gè)Looper對(duì)象,在Looper對(duì)象初始化時(shí)候會(huì)創(chuàng)建一個(gè)消息隊(duì)列Message Queue用來存放線程放入的消息。用戶可以構(gòu)造一個(gè)Handler對(duì)象與Looper溝通,以便將消息push到消息隊(duì)列中。當(dāng)主線程檢測(cè)到有新消息進(jìn)入消息隊(duì)列后,首先判斷該消息對(duì)應(yīng)的Handler,然后將消息分發(fā)到指定的Handler處理。

系統(tǒng)中通過ContentObserver繼承類SMSContentObserver的構(gòu)造函數(shù)將在activity中定義的Handler對(duì)象傳入SMSContentObserver中,然后調(diào)用Handler對(duì)象的obtainMessage方法獲得一個(gè)message對(duì)象,最后調(diào)用message對(duì)象的sendToTarget方法將控制消息發(fā)送到消息隊(duì)列,在activity中定義了handleMessage函數(shù)用來處理得到的控制消息。具體代碼略——編者注。

2.4 Android終端效果

Android客戶端控制界面見圖6,當(dāng)點(diǎn)擊“獲取溫度”按鈕,Android端會(huì)自動(dòng)向系統(tǒng)控制端發(fā)送短信“1:O:O:00”,這樣系統(tǒng)控制端會(huì)檢測(cè)到是1類控制信息,則返回每個(gè)房間溫度。

當(dāng)需要設(shè)置某個(gè)房間空調(diào)的丁作方式,則通過點(diǎn)擊“設(shè)置空調(diào)”按鈕左側(cè)的“房間號(hào)”、“空調(diào)模式”和“設(shè)置溫度”等三個(gè)下拉列表(Spinner)來設(shè)置。如設(shè)置房間號(hào)為“房間二”,空調(diào)模式為“制冷”,設(shè)置溫度為“25℃”,然后點(diǎn)擊“設(shè)置空調(diào)”按鈕,安卓端會(huì)自動(dòng)發(fā)送2類控制信息“2:2:2:25”到系統(tǒng)控制端,系統(tǒng)接收到控制信息會(huì)處理后返回設(shè)置是否成功消息。安卓端解析后將其顯示。當(dāng)需要關(guān)閉某個(gè)房間空調(diào),可以通過“關(guān)閉空淵”按鈕左側(cè)的“要關(guān)閉空調(diào)所在房間號(hào)”下拉列表實(shí)現(xiàn),比如選擇“房間五”,然后點(diǎn)擊“關(guān)閉空調(diào)”按鈕,Android端即把3類控制信息“3:5:0:00”發(fā)送到系統(tǒng)控制端,系統(tǒng)控制端處理后將空調(diào)關(guān)閉狀態(tài)返回。

結(jié)語

智能家居中的遠(yuǎn)程控制方式有很多,本系統(tǒng)結(jié)合Androld終端的用戶友好型界面,采用自定義協(xié)議方式,設(shè)計(jì)了一套基于短消息的空調(diào)控制系統(tǒng)。在Android終端接收返回信息的兩種方式中,ContentObserver因其穩(wěn)定性在工程實(shí)踐中使用較多,本系統(tǒng)最終也是采用了Cont entOb—server的方式,并取得很好的效果。本系統(tǒng)設(shè)計(jì)合理,性能穩(wěn)定,對(duì)其他工程設(shè)計(jì)也具有一定參考價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉