基于Android的遠(yuǎn)程家電控制終端設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:家電控制是智能家居系統(tǒng)的重要組成部分,而隨著智能手機(jī)的普及和3G網(wǎng)絡(luò)技術(shù)的快速發(fā)展,以智能手機(jī)作為智能家居遠(yuǎn)程控制的終端設(shè)備是一個(gè)非常理想的選擇。目前在全球范圍內(nèi),Android是一個(gè)市場(chǎng)占有率高,免費(fèi),開放的智能設(shè)備操作系統(tǒng)。因此,本系統(tǒng)以Android智能終端作為客戶端,使用UDP網(wǎng)絡(luò)傳輸協(xié)議,以實(shí)現(xiàn)家電遠(yuǎn)程控制系。
關(guān)鍵詞:Android;家電控制;智能家居;UDP協(xié)議
在科學(xué)技術(shù)飛速發(fā)展的今天,人們的物質(zhì)條件和生活水平都在不斷地提高,人們對(duì)家居環(huán)境的要求也在不斷地增長(zhǎng)。家居不僅要舒適更加需要安全和便捷。遠(yuǎn)程家電控制,使人們可以隨時(shí)隨地控制家中設(shè)備,給人們帶來(lái)便捷的生活方式。傳統(tǒng)的智能家居系統(tǒng)中,大多基于Int ernet的遠(yuǎn)程控制,并采用PC做監(jiān)控終端,受到Internet地域的限制,使用起來(lái)不是很方便。但隨著智能手機(jī)的普及,由于手機(jī)體積小便于攜帶,智能手機(jī)作為智能家居的控制終端是大勢(shì)所趨。
1 Android介紹
Android是Google公司在2007年11月正式推出的一款開源的操作系統(tǒng)。Android系統(tǒng)在它推出后僅僅兩年的時(shí)間,就打敗了稱霸智能手機(jī)市場(chǎng)10年的諾基亞Symbian成為全球最受歡迎的手機(jī)操作系統(tǒng)。
1.1 Android的安全機(jī)制
Google為Android引進(jìn)了以下特有的安全機(jī)制:應(yīng)用程序權(quán)限機(jī)制,組件包裝和數(shù)字簽名。
(1)應(yīng)用程序權(quán)限機(jī)制
Android把每個(gè)權(quán)限定義成一個(gè)字符串,開發(fā)過(guò)程中可以通過(guò)在XML Manifest文件中進(jìn)行權(quán)限的聲明和請(qǐng)求。權(quán)限定義分為兩個(gè)類別,一類是應(yīng)用程序在執(zhí)行時(shí)所需要請(qǐng)求的權(quán)限,另一類是被其他組件請(qǐng)求的權(quán)限。
(2)組件包裝
Android通過(guò)定義組件的“exported”屬性來(lái)實(shí)現(xiàn)把組件包裝在程序內(nèi)容內(nèi)。將“exported”屬性設(shè)置為“false”就是拒絕被其他外部程序調(diào)用。
(3)數(shù)字簽名
Android的所有應(yīng)用程序必須有數(shù)字證書,這個(gè)數(shù)字證書是可以自簽名的。
1.2 Android的系統(tǒng)框架
如圖1所示Android的系統(tǒng)框架由4個(gè)部分組成:Linux內(nèi)核層、系統(tǒng)運(yùn)行庫(kù)層、應(yīng)用程序框架層和應(yīng)用程序?qū)印?/p>
(1)Linux內(nèi)核層
Android的Linux內(nèi)核層是基于Linux2.6的,它是介于硬件層和其他軟件組的一個(gè)抽象層次。提供內(nèi)存管理、安全性、進(jìn)程管理、驅(qū)動(dòng)模型、網(wǎng)絡(luò)組等核心服務(wù)。
(2)系統(tǒng)運(yùn)行庫(kù)層
這一層分成兩個(gè)部分,系統(tǒng)庫(kù)和Android運(yùn)行時(shí)庫(kù)。
系統(tǒng)庫(kù)是應(yīng)用層框架庫(kù)的支撐。它起到了紐帶的作用。它主要負(fù)責(zé)2D和3D繪圖、顯示合成和支持多種常用的音頻、視頻格式錄制和回放等功能。
Android運(yùn)行時(shí)庫(kù)又包括核心庫(kù)和Dalvik虛擬機(jī)兩部分。核心庫(kù)提供了Java語(yǔ)言核心庫(kù)內(nèi)的大部分功能;Dalvik虛擬機(jī)是Android重新設(shè)計(jì)的一款虛擬機(jī)。Dalvik可以在消耗較少的資源情況下,使一臺(tái)設(shè)備同時(shí)運(yùn)行多個(gè)虛擬機(jī)程序。[!--empirenews.page--]
(3)應(yīng)用程序框架層
應(yīng)用程序框架層為開發(fā)者提供開發(fā)所需的各種API,常用的組件有:UI組件、Content Providers(提供一種使應(yīng)用程序之間可以實(shí)現(xiàn)數(shù)據(jù)互相訪問(wèn)和共享的服務(wù))、資源管理(管理字體、圖片、組件ID等)、活動(dòng)管理(它管理了整個(gè)程序的生命周期)等。
(4)應(yīng)用程序?qū)?br />
應(yīng)用層是和用戶交互的一個(gè)層次,用戶可以看得見和操作的一些應(yīng)用。Android本身提供了桌面,聯(lián)系人,撥打電話,瀏覽器等很多基本的應(yīng)用程序。開發(fā)人員可以使用應(yīng)用框架提供的API編寫自己的應(yīng)用程序。
2 智能家居遠(yuǎn)程家電控制系統(tǒng)的組成
整個(gè)系統(tǒng)主要包括3個(gè)部分:遠(yuǎn)程控制終端(Android手機(jī)或者平板電腦),服務(wù)器和家電控制器。先由遠(yuǎn)程終端發(fā)送帶有控制命令的數(shù)據(jù)包到服務(wù)器,當(dāng)服務(wù)器收到控制指令之后,再由服務(wù)器發(fā)送控制命令到相應(yīng)的家電控制器上。圖2是遠(yuǎn)程家電控制系統(tǒng)的結(jié)構(gòu)圖。
在本文中,主要介紹控制終端的設(shè)計(jì),下面簡(jiǎn)單地介紹一下服務(wù)器和家電控制終端。服務(wù)器收到命令數(shù)據(jù)時(shí),通過(guò)設(shè)備類型和子設(shè)備號(hào)來(lái)識(shí)別是哪個(gè)設(shè)備的控制命令,然后將相應(yīng)的控制命令發(fā)送到相應(yīng)的控制器上。具體的幀格式定義,會(huì)在下一章節(jié)中講解。對(duì)于家電控制器,分為兩種。一種是簡(jiǎn)單控制電路的通斷來(lái)控制電器的控制器,主要可控制燈光、冰箱、排風(fēng)扇等家電,一種是模擬紅外遙控器發(fā)出信號(hào)的控制器,主要可控制空調(diào)、電視機(jī)等使用紅外遙控器的家電。我們有了家電控制器之后,就可以在不對(duì)家電做任何的改動(dòng)的情況下,對(duì)家電進(jìn)行控制。
3 終端程序設(shè)計(jì)
3.1 傳輸協(xié)議的選擇
在智能家居中的應(yīng)用原則中,TCP和UDP作為目前最常用到的網(wǎng)絡(luò)通信協(xié)議,可以看出TCP是基于連接的協(xié)議,UDP是一個(gè)無(wú)連接的、不可靠的協(xié)議,相對(duì)于基于流傳輸?shù)腡CP而言,UDP是基于消息傳輸?shù)模w上具有傳輸速度快等優(yōu)點(diǎn)。通過(guò)研究可以看出家用電器的控制信息特點(diǎn)是數(shù)據(jù)量小,控制信息短,適合用于傳送少量數(shù)據(jù)、對(duì)可靠性要求不高的應(yīng)用環(huán)境,因此更適合采用簡(jiǎn)單的、面向數(shù)據(jù)報(bào)的UDP協(xié)議。
3.2 應(yīng)用層幀格式的定義
由于目前智能家居沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),各個(gè)不同的系統(tǒng)都是自己定義各個(gè)設(shè)備的通信協(xié)議。表1是本系統(tǒng)家電控制系統(tǒng)應(yīng)用層報(bào)文幀格式的定義。
(1)報(bào)頭:固定為0x66、0xAD兩字節(jié),表示一個(gè)報(bào)文幀的開始。
(2)數(shù)據(jù)長(zhǎng)度:從報(bào)頭段0x開始算到命令數(shù)據(jù)段的最后一個(gè)字節(jié)總和。表示整個(gè)幀的字節(jié)數(shù)。
(3)路由地址:這個(gè)數(shù)據(jù)位是對(duì)路由進(jìn)行選擇。根據(jù)部署的網(wǎng)絡(luò)不同的位置,選擇鏈路質(zhì)量最好的路由節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸。
(4)設(shè)備類型:表示家居設(shè)備的種類,我們將家電控制系統(tǒng)固定為0xF4。
(5)子設(shè)備號(hào):此字段為家電控制系統(tǒng)里的設(shè)備分配唯一的地址,這樣我們可通過(guò)設(shè)備類型段和子設(shè)備號(hào)兩個(gè)字段唯一標(biāo)識(shí)某個(gè)家電設(shè)備,便于控制信息的準(zhǔn)確有效送達(dá)到控制器。
(6)命令數(shù)據(jù):裝載具體的家電控制命令,告訴家電控制器收到數(shù)據(jù)之后需要對(duì)家用電器做哪些操作。
3.3 Socket套接宇
在網(wǎng)絡(luò)層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),常常會(huì)遇到多個(gè)應(yīng)用程序提供并發(fā)服務(wù)的問(wèn)題,為了區(qū)別不同的應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,就需要使用socket套接字這個(gè)接口。對(duì)于使用不同的協(xié)議通信,TCP是使用socket對(duì)象來(lái)實(shí)現(xiàn),而UDP是使用DatagramSocket對(duì)象來(lái)實(shí)現(xiàn)。由于我們遠(yuǎn)程家電控制系統(tǒng)使用的是UDP協(xié)議,在這里我只介紹DatagramSocket。
DatagramSocket是用于連接兩個(gè)端點(diǎn)的分組投遞服務(wù),是由Android系統(tǒng)提供的一個(gè)公共類。根據(jù)編程人員所給的參數(shù),它可以建立與任意可用端口或者與給定端口的連接。
這里我們需要了解的方法有close()、receive(Datagram Packet pack)和send(DatagramPaeket pack)。它們分別是關(guān)閉套接字、接收數(shù)據(jù)報(bào)和發(fā)送數(shù)據(jù)報(bào)。
從上文我們可以看到發(fā)送和接收數(shù)據(jù)報(bào)時(shí),我們接收到的是一個(gè)DatagramPaeket對(duì)象。所以在這里必須得提到的就是用來(lái)存儲(chǔ)數(shù)據(jù)報(bào)數(shù)據(jù)的final類DatagramPacket。DatagramPacket有多個(gè)構(gòu)造方法,但是它的每個(gè)構(gòu)造方法中一定包括byte[]buf和int lcnsth這兩個(gè)參數(shù)。buf是用來(lái)存儲(chǔ)所要傳輸?shù)臄?shù)據(jù),length是表示傳輸?shù)臄?shù)據(jù)的長(zhǎng)度。當(dāng)然你在創(chuàng)建DatagramPaeket對(duì)象時(shí),還可以指定接收端的IP地址和端口號(hào)。
發(fā)送數(shù)據(jù)報(bào)的代碼為:
其中portNumber是指服務(wù)器的端口號(hào),message是根據(jù)應(yīng)用層幀格式得到的控制命令,serverAddr是指服務(wù)器的IP地址。[!--empirenews.page--]
3.4 軟件設(shè)計(jì)流程
圖3是整個(gè)基于Android遠(yuǎn)程控制系統(tǒng)軟件設(shè)計(jì)流程圖。
為了方便地適用于不同的家電控制系統(tǒng),我們將服務(wù)器的IP地址以一個(gè)由用戶輸入的方式來(lái)完成,這樣當(dāng)在一個(gè)新的地方安裝整套系統(tǒng)時(shí),在無(wú)需改變Android安裝包的情況下,自己輸入新的系統(tǒng)的服務(wù)器IP即可實(shí)現(xiàn)遠(yuǎn)程控制。
4 測(cè)試結(jié)果
本家電控制器在完成設(shè)計(jì)、調(diào)試后,在實(shí)際展廳進(jìn)行控制實(shí)驗(yàn)表明該設(shè)計(jì)可以完成預(yù)定功能。在長(zhǎng)期的實(shí)踐和全面測(cè)試的過(guò)程中,證實(shí)本套系統(tǒng)可完成以下功能并且性能穩(wěn)定。
(1)空調(diào)控制:空調(diào)開關(guān),模式轉(zhuǎn)換,掃風(fēng)功能,調(diào)節(jié)風(fēng)速;
(2)電視控制:電視遙控(開關(guān)、選臺(tái)、音量調(diào)節(jié)、電視菜單),電視導(dǎo)航(包括各地省級(jí)市級(jí)電視臺(tái)電視節(jié)目預(yù)告),電視游戲;
(3)燈光控制:各個(gè)房間燈光的開關(guān);
(4)風(fēng)扇控制:各個(gè)房間風(fēng)扇的開關(guān)。
如圖4所示,是手機(jī)控制界面圖。從左到右依次是空調(diào)控制界面,電視控制界面,燈光和風(fēng)扇控制界面。
5 小結(jié)
本文簡(jiǎn)要的介紹了基于Android的智能家居遠(yuǎn)程家電控制的終端設(shè)計(jì)和關(guān)鍵技術(shù),包括Android的安全機(jī)制和內(nèi)核分析,遠(yuǎn)程家電控制系統(tǒng)的組成,每個(gè)組成部分的功能,應(yīng)用層幀格式的定義,傳輸協(xié)議的選用以及軟件設(shè)計(jì)流程。并在最后展示了測(cè)試結(jié)果,證明了基于Android遠(yuǎn)程家電控制的可行性。與傳統(tǒng)的基于Internet的遠(yuǎn)程家電控制系統(tǒng)相比,基于Android手機(jī)的控制系統(tǒng)有著巨大的優(yōu)勢(shì)和前景。