師公社 王義菊
(西安工業(yè)大學(xué)電子信息工程學(xué)院 西安 710021)
基于Android智能家居控制系統(tǒng)的研究與實(shí)現(xiàn)*
師公社 王義菊
(西安工業(yè)大學(xué)電子信息工程學(xué)院 西安 710021)
隨著經(jīng)濟(jì)、科技和生活水平的普遍提高,人們?cè)絹?lái)越向往舒適、便捷的家居生活環(huán)境。為了降低成本,提高效率,論文介紹一套基于Android終端的智能家居控制系統(tǒng)。通過(guò)采用Android操作系統(tǒng)和TLN13UA06嵌入式無(wú)線WiFi模塊進(jìn)行通信,搭建良好的通信平臺(tái)從而實(shí)現(xiàn)對(duì)家居環(huán)境中開關(guān)量、連續(xù)量的控制。
Android系統(tǒng); WiFi技術(shù); 智能家居
智能家居是計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、網(wǎng)絡(luò)技術(shù)向傳統(tǒng)建筑滲透的產(chǎn)物。隨著人們生活水平的提高,消費(fèi)觀念的轉(zhuǎn)變以及物聯(lián)網(wǎng)的不斷發(fā)展,智能家居已悄然走進(jìn)人們的生活[1]。
縱觀我國(guó)的智能家居控制系統(tǒng),一些解決方案采用了無(wú)線的Zigbee技術(shù),但由于現(xiàn)在的智能終端設(shè)備并不配備智能的Zigbee模塊,仍然需要中間模塊進(jìn)行轉(zhuǎn)換,這樣既不方便又增加了成本[2]。出于對(duì)以上問(wèn)題的考慮,本文將實(shí)現(xiàn)一種基于手持Android操作系統(tǒng)平臺(tái)的智能家居控制系統(tǒng),以低成本、高效率的特性,為以后的發(fā)展道路奠定現(xiàn)實(shí)且長(zhǎng)遠(yuǎn)的基礎(chǔ)。

圖1 智能家居網(wǎng)絡(luò)控制示意圖
智能家居網(wǎng)絡(luò)控制示意圖如圖1所示,主要由手持操作終端、集總控制器和設(shè)備終端三部分組成[3]。
手持操作終端為Android智能手機(jī)或平板電腦;集總控制器作為智能家居系統(tǒng)的心臟部位,主要由無(wú)線WiFi通信模塊以及微處理器構(gòu)成,其作用是通過(guò)接收手持操作終端發(fā)來(lái)的指令,進(jìn)而控制相應(yīng)智能家電的運(yùn)行狀態(tài),同時(shí)檢測(cè)家居環(huán)境中傳感器的狀態(tài)信息,進(jìn)而反饋給手持操作終端;設(shè)備終端則包括室內(nèi)電器設(shè)備以及各傳感器,如電視、空調(diào)、電動(dòng)窗簾、溫濕度傳感器、光強(qiáng)度傳感器以及紅外遙控等設(shè)備。
在本文設(shè)計(jì)中,手持操作終端通過(guò)WiFi連接到家庭網(wǎng)絡(luò),集總控制器通過(guò)串口也與其連接。當(dāng)用戶進(jìn)行Android終端操作后,命令通過(guò)無(wú)線路由器發(fā)送給集總控制器,集總控制器接收到操作命令并將命令轉(zhuǎn)發(fā)到設(shè)備終端(室內(nèi)各電器),設(shè)備終端接收命令進(jìn)而執(zhí)行相應(yīng)功能。同時(shí)也可以通過(guò)相反路徑將設(shè)備狀態(tài)信息反饋給Android終端,從而實(shí)現(xiàn)智能家居的控制。
在集總控制器接收Android終端操作命令并將命令轉(zhuǎn)發(fā)給設(shè)備終端這一執(zhí)行過(guò)程中,智能家居根據(jù)傳輸介質(zhì)的不同,可分為有線和無(wú)線兩種連接方式。其中,有線連接方式在家居環(huán)境中,一方面用來(lái)與自帶網(wǎng)絡(luò)通信接口且位置相對(duì)固定的智能家電通信(數(shù)字線控),例如空調(diào)、電視、機(jī)頂盒等,由于有線通信功能穩(wěn)定可靠,且反饋速度較快,即用戶對(duì)智能家電的操作立刻生效,并且可以立刻查看到電器狀態(tài)的反饋結(jié)果;另一方面則是通過(guò)模擬線控形式,控制對(duì)象可以是開關(guān)量也可以是連續(xù)調(diào)節(jié)量,例如環(huán)境燈光、音樂(lè)的強(qiáng)度等。無(wú)線連接方式主要為紅外遙控,紅外遙控調(diào)制簡(jiǎn)單,易于編碼,可實(shí)現(xiàn)多路控制。論文主要通過(guò)集總控制器學(xué)習(xí)并發(fā)射紅外信號(hào),從而實(shí)現(xiàn)空調(diào)的開關(guān)、模式、溫度等操作,電視的開關(guān)、音量調(diào)節(jié)、頻道選擇、播放、停止等操作。
4.1 Android 開發(fā)環(huán)境
和其他應(yīng)用程序開發(fā)一樣,Android應(yīng)用程序開發(fā)之前需要對(duì)其運(yùn)行環(huán)境進(jìn)行配置。通常情況下會(huì)使用Eclipse開發(fā)軟件,同時(shí)在Eclipse環(huán)境下安裝插件ADT(Android development tools),其功能主要是進(jìn)行功能擴(kuò)展,除此之外,需要下載Android SDK(Android software development kit),因?yàn)槠涮峁┝肆己玫哪M器和調(diào)試方法,為后期的測(cè)試提供了便利[4]。成功搭建Android運(yùn)行環(huán)境后,可以在其應(yīng)用界面進(jìn)行操作,并通過(guò)虛擬模擬器進(jìn)行測(cè)試。具體Android運(yùn)行開發(fā)環(huán)境和搭建完成后的運(yùn)行模擬器如圖2所示。

圖2 Android運(yùn)行開發(fā)環(huán)境和搭建完成后運(yùn)行模擬器
4.2 用戶注冊(cè)及登錄
智能家居控制系統(tǒng)是可以進(jìn)行自我設(shè)定的個(gè)人家居管理系統(tǒng),因此用戶需要進(jìn)行注冊(cè),從而通過(guò)數(shù)據(jù)庫(kù)對(duì)用戶的設(shè)置和登錄日志進(jìn)行記錄。
4.2.1 用戶界面設(shè)計(jì)
在智能家居控制系統(tǒng)布局中,采用 XML 語(yǔ)言作為布局文件來(lái)定義頁(yè)面,使得應(yīng)用中的視圖模塊和功能模塊分離,進(jìn)而增加視圖模塊的重用性,此外,XML的可配置性方便了程序參數(shù)的修改,無(wú)需重新更改程序再編譯[5~6]。
用戶界面通過(guò)線性布局和相對(duì)布局的方式進(jìn)行了整體布局。首先用線性布局的方式設(shè)置歡迎進(jìn)入智能家居控制系統(tǒng)的文本視圖,然后用相對(duì)布局的方式設(shè)置兩個(gè)文本編輯框,分別為登錄賬號(hào)和密碼,最后在用線性布局的方式設(shè)置三個(gè)按鈕,分別為登錄、注冊(cè)和重置,根據(jù)用戶的需求可以點(diǎn)擊相應(yīng)的按鈕進(jìn)行相應(yīng)的操作。通過(guò)程序編程,SmartHome工程下的res文件中的Layout文件下會(huì)程現(xiàn)智能家居控制系統(tǒng)的登錄、注冊(cè)布局界面,如圖3所示。

圖3 智能家居控制系統(tǒng)的登錄、注冊(cè)界面設(shè)計(jì)
4.2.2 注冊(cè)和登陸邏輯
當(dāng)用戶進(jìn)入智能家居控制系統(tǒng)后,需要進(jìn)行注冊(cè)與登錄,若用戶沒有賬號(hào)與密碼,則需要點(diǎn)擊注冊(cè)按鈕進(jìn)行新用戶的注冊(cè),注冊(cè)成功后,通過(guò)直接調(diào)用Toast類的makeText()方法,界面下方會(huì)自動(dòng)彈出“恭喜注冊(cè)成功,請(qǐng)進(jìn)入登錄”,并直接轉(zhuǎn)至登錄界面,通過(guò)設(shè)置文件的訪問(wèn)權(quán),可以將已注冊(cè)的賬號(hào)復(fù)寫到登錄賬號(hào)的文本編輯框,用戶只需要輸入正確的密碼即可登陸成功;若用戶已經(jīng)注冊(cè)賬號(hào),則可以直接輸入賬號(hào)和密碼,點(diǎn)擊登錄,如果用戶密碼輸入錯(cuò)誤,同樣調(diào)用Toast類的makeText()方法,界面下方會(huì)彈出“請(qǐng)重新輸入密碼”,當(dāng)用戶再次輸入正確密碼點(diǎn)擊登錄按鈕即可驗(yàn)證成功,成功登陸。登錄、注冊(cè)系統(tǒng)流程圖如下圖4所示:

圖4 登錄系統(tǒng)的流程圖
通過(guò)將SmartHome工程發(fā)布,在Android虛擬機(jī)進(jìn)行模擬操作,具體的登錄注冊(cè)過(guò)程及界面顯示如圖5所示。

圖5 登錄注冊(cè)過(guò)程及界面顯示
4.3 家電控制界面
用戶進(jìn)入WiFi智能家居生活界面后,可以根據(jù)需求點(diǎn)擊相關(guān)的家電設(shè)備,然后進(jìn)入該設(shè)備的控制界面,完成對(duì)該設(shè)備的相應(yīng)操作。智能家居系統(tǒng)的家電控制界面總體框架設(shè)計(jì)如圖6所示。

圖6 智能家居系統(tǒng)的家電控制界面總體框架設(shè)計(jì)
以燈光控制和窗簾控制為例:
1) 燈光控制界面
燈光控制主要實(shí)現(xiàn)對(duì)燈光開關(guān)、亮度調(diào)節(jié)以及情景模式的選擇。燈光控制界面采用Relative Layout,界面從上至下布局為燈光開關(guān)、情景模式以及燈光亮度三部分,其中,燈光開關(guān)通過(guò)按鈕實(shí)現(xiàn)了用模擬線控形式控制開關(guān)量的對(duì)象,從而反映燈光的狀態(tài);為了方便操作與布局,情景模式設(shè)置為含有下拉菜單的文本編輯框,包括日光、夜間、家庭影院、家庭聚餐四種模式,根據(jù)需求用戶可以選擇相應(yīng)的工作模式。燈光亮度設(shè)置為拖動(dòng)條,向左右拖動(dòng)分別實(shí)現(xiàn)對(duì)亮度做減弱和加強(qiáng)操作,用戶可以根據(jù)需求拖動(dòng)其大小,結(jié)合后期在硬件中通過(guò)調(diào)制脈沖寬度(PWM)進(jìn)而完成對(duì)燈光亮度的調(diào)節(jié)。界面右上角是退出按鈕,當(dāng)用戶完成需求設(shè)置后,點(diǎn)擊該按鈕可以返回至WiFi智能家居生活控制的主界面。
2) 電視控制界面
電視控制需要實(shí)現(xiàn)電視開關(guān)、聲音調(diào)節(jié)、頻道切換三方面控制,通過(guò)模擬線控的方式對(duì)聲音實(shí)現(xiàn)了連續(xù)量的調(diào)節(jié);用戶可以根據(jù)自己的需求對(duì)頻道進(jìn)行選擇,手機(jī)界面也會(huì)出現(xiàn)相應(yīng)的提示。具體操作界面如圖7所示。

圖7 燈光控制和窗簾控制界面
燈光控制和電視控制的部分具體實(shí)現(xiàn)代碼如下所示:
燈光控制:
private String[] images = new String[] { "日光","夜間","家庭影院","家庭聚餐" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隱藏制冷開關(guān)
tv3.setVisibility(View.GONE);
button3.setVisibility(View.GONE);
ivArrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDropDown();
}
});
電視控制:
public class DianShiActivity extends BaseActivity implements OnClickListener{
private ImageView iv1;
private ImageView iv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tvTtile.setText("電視控制");
tv1.setText("電視開關(guān):");
rlQj.setVisibility(View.GONE);
tv3.setVisibility(View.GONE);
tv5.setVisibility(View.VISIBLE);
rl.setVisibility(View.VISIBLE);
button3.setVisibility(View.GONE);
tv4.setText("音量控制:");
iv1 = (ImageView) this.findViewById(R.id.iv1);
iv2 = (ImageView) this.findViewById(R.id.iv2);
iv1.setOnClickListener(this);
iv2.setOnClickListener(this);
}
結(jié)合基于Android的智能家居系統(tǒng)對(duì)無(wú)線控制的要求和系統(tǒng)開發(fā)的便捷性,本系統(tǒng)采用TLN13UA06嵌入式WiFi模塊作為通信的硬件平臺(tái)。該模塊內(nèi)置IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)用戶串口到無(wú)線網(wǎng)絡(luò)之間的轉(zhuǎn)換,支持串口透明數(shù)據(jù)傳輸模式,使傳統(tǒng)的串口設(shè)備可輕松接入無(wú)線網(wǎng)絡(luò)[7]。
5.1 WiFi模塊數(shù)據(jù)通信的實(shí)現(xiàn)
智能家居控制系統(tǒng)采用WiFi技術(shù)在WiFi發(fā)送模塊和接收模塊間進(jìn)行通信,通過(guò)Socket通信方式傳送TCP/IP協(xié)議達(dá)到控制家電的目的。要在Android客戶端使用WiFi通信,必須在工程的AndroidManifest.xml 文件中添加WiFi訪問(wèn)許可權(quán)限:〈uses-permission Android:name=”android.permission.ACCESS_WIFI_STATE”/〉。
5.2 網(wǎng)絡(luò)通信協(xié)議
在智能家居中,目前比較常用的傳輸協(xié)議為UDP、TCP協(xié)議。出于對(duì)通信可靠、正確等因素的考慮,本系統(tǒng)選用TCP協(xié)議。對(duì)于TCP協(xié)議,Android系統(tǒng)提供了Socket 和 ServerSocket 兩個(gè)類,Android客戶端與WiFi模塊之間進(jìn)行通信,通訊格式如表1所示[8~9]。

表1 WiFi通訊幀格式
10字節(jié)為一個(gè)命令的固定長(zhǎng)度,將序號(hào)按照遞增的方式編為字節(jié)0、1直到9,前導(dǎo)碼為Oxff,是長(zhǎng)度為全1序列的1個(gè)字節(jié),作用是通知WiFi芯片有數(shù)據(jù)到達(dá)。當(dāng)芯片接收到前導(dǎo)碼后,將會(huì)準(zhǔn)備接收數(shù)據(jù);起始位表示前導(dǎo)碼的結(jié)束和數(shù)據(jù)包的開始,Oxaa為初始值;消息體則包括設(shè)備編號(hào)、設(shè)備序號(hào)、設(shè)備狀態(tài)、設(shè)備模式等總共6個(gè)字節(jié)。消息體的發(fā)送為:若A設(shè)備向C設(shè)備發(fā)送消息,初始狀態(tài)下A設(shè)備并不知道C設(shè)備的目的地址,則會(huì)將0x00默認(rèn)地址進(jìn)行群發(fā)。當(dāng)周邊設(shè)備接收到此消息后,會(huì)進(jìn)行判斷是否是自身的消息請(qǐng)求。若不是,則會(huì)在轉(zhuǎn)發(fā)時(shí)將“轉(zhuǎn)發(fā)次數(shù)”對(duì)應(yīng)的字節(jié)遞增1;若是,則C設(shè)備會(huì)對(duì)A設(shè)備作出響應(yīng),并把轉(zhuǎn)發(fā)次數(shù)清零。校驗(yàn)碼是對(duì)前9個(gè)字節(jié)進(jìn)行異或,它的值=字節(jié)0異或字節(jié)1異或……異或字節(jié)9。
5.3 Socket通信的實(shí)現(xiàn)
Socket稱作“套接字”,主要功能是描述IP地址和端口[10]。由于本系統(tǒng)采用TCP協(xié)議,所以選擇面向連接的Socket通信。Android用戶首先要建立一個(gè)Socket對(duì)象,然后通過(guò)Bind函數(shù)綁定服務(wù)器的IP地址和端口號(hào)[11]。服務(wù)器端調(diào)用accept函數(shù)設(shè)置阻塞,以便等待客戶端發(fā)送數(shù)據(jù)。若Android客戶端的IP地址和端口號(hào)與服務(wù)器端的對(duì)應(yīng)信息相匹配,則客戶端與服務(wù)器端就可以建立連接。然后,用戶端再調(diào)用write函數(shù)向要發(fā)送的輸出流寫入數(shù)據(jù),即Android客戶端只需要向WiFi通信模塊寫入數(shù)據(jù)即可。服務(wù)器端和客戶端Socket通信流程圖如圖8所示。

圖8 服務(wù)器端和客戶端Socket通信流程圖
Android客戶端的部分Socket通信代碼如下所示:
public static void main(String[] args) throws IOException, IOException {
Socket s = new Socket("192.168.0.100", 1000);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while ((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
// 禁用輸出流
s.shutdownOutput();
// 接收反饋
BufferedReader brClient=new BufferedReader(new InputStreamReader(s.getInputStream()));
String buf=brClient.readLine();
System.out.println(buf);
// 釋放資源
bw.close();
s.close();
5.4 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是對(duì)整個(gè)系統(tǒng)運(yùn)行過(guò)程中的數(shù)據(jù)進(jìn)行存儲(chǔ)。由于智能家居的各種家電信息量較小,周期短,所以選用Android平臺(tái)內(nèi)置的SQLite數(shù)據(jù)庫(kù),以減少應(yīng)用程序管理數(shù)據(jù)的開銷。通過(guò)對(duì)SQLite進(jìn)行操作,可以調(diào)用SQLiteOpenHelper類提供的onCreat()和onUpgrade()方法對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行創(chuàng)建和更新;通過(guò)execSQL()可以執(zhí)行 SQL語(yǔ)句,insert()可以插入表項(xiàng),update()可以更新表項(xiàng)等。數(shù)據(jù)庫(kù)主要存儲(chǔ)的信息有:用戶的登錄日志,家用電器的設(shè)備類型,各個(gè)設(shè)備的工作狀態(tài)( 開關(guān)、亮度、溫度、濕度、工作模式等)以及反饋給用戶和硬件節(jié)點(diǎn)的命令信息[12]。
5.5 階段性設(shè)計(jì)測(cè)試
本設(shè)計(jì)主要實(shí)現(xiàn)客戶端編程,服務(wù)端用SocketTool TCP/IP通信調(diào)試工具在PC端建立,使用Socket通信方式來(lái)實(shí)現(xiàn)與客戶端的交互。通過(guò)測(cè)試程序可以監(jiān)聽到Android客戶端向WiFi服務(wù)器發(fā)送的數(shù)據(jù),如圖9測(cè)試界面所示。

圖9 SocketTool TCP/IP調(diào)試界面
本文由淺及深,首先介紹了基于Android系統(tǒng)的智能家居控制系統(tǒng)的系統(tǒng)架構(gòu)和整體方案,其次通過(guò)Android操作系統(tǒng)的運(yùn)行環(huán)境,詳細(xì)說(shuō)明Android用戶操作界面的合理布局與設(shè)計(jì),最后通過(guò)介紹本系統(tǒng)所選用的無(wú)線WiFi模塊及通信方式,經(jīng)反復(fù)測(cè)試,可以通過(guò)家庭內(nèi)部網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)家居設(shè)備的無(wú)線控制,本系統(tǒng)所用硬件簡(jiǎn)單易用、穩(wěn)定可靠并具有較好的擴(kuò)展性。
[1] 高陽(yáng).基于Android的智能家居系統(tǒng)的研究與設(shè)計(jì)[D].廣州:廣東工業(yè)大學(xué),2015. GAO Yang. The research and design of smart home system based on Android[D]. Guangzhou: guangdong university of technology,2015.
[2] 劉凌云.智能家居控制系統(tǒng)[D].呼和浩特:內(nèi)蒙古大學(xué),2014. LIU Lingyun. Smart home control system[D]. Huhhot: Inner Mongolia university,2014.
[3] 孫浩.基于Wi-Fi技術(shù)和Android系統(tǒng)的智能家居系統(tǒng)設(shè)計(jì)[D].徐州:中國(guó)礦業(yè)大學(xué),2014. SUN Hao. Based on the wi-fi technology and smart home system design of the Android system[D]. Xuzhou: China university of mining,2014.
[4] 鄭萌.Android系統(tǒng)下Java編程詳解[M].北京:電子工業(yè)出版社,2012:8. ZHENG Meng. Under the Android Java programming explanation[M]. Beijing: electronic industry press,2012:8.
[5] 曾健平,邵艷潔.Android系統(tǒng)架構(gòu)及應(yīng)用程序開發(fā)研究[J].微計(jì)算機(jī)信息,2011,27(9):1-3. ZENG Jianping, SHAO Yanjie. Android system architecture and application development research[J]. Microcomputer information,2011,27(9):1-3.
[6] 朱晶.TCP協(xié)議簡(jiǎn)述與三次握手原理解析[J].電腦知識(shí)與技術(shù),2009,5(1):23-26. ZHU Jing. TCP protocol briefly and three-way handshake principle analysis[J]. Computer knowledge and technology,2009,5(1):23-26.
[7] Park S H, Won S H, Lee J B, etal. Smart home-digitally engineered domestic life[J]. Personal and Ubiquitous Computing, 2003,7(3-4):189-196.
[8] 祝紅濤,李璽.SQL Server數(shù)據(jù)庫(kù)應(yīng)用簡(jiǎn)明教程[M].北京:清華大學(xué)出版社,2010:45. ZHU Hongtao LI Xi. SQL Server database application introductory tutorial[M]. Beijing: tsinghua university press,2010:45.
[9] 徐友武.SQL Server2005觸發(fā)器應(yīng)用研究[J].計(jì)算機(jī)與信息技術(shù),2009,32(9):105-106. XU Youwu. SQL Server2005 trigger application study[J]. Computer and information technology,2009,32(9):105-106.
[10] Reto Meier.Professional Android Application Development[M].America:Wiley,2008:13.
[11] Lee Kwang Yeo,Choi Jae Weon.Remote-controlled Home Automation System via Bluetooth Home Network[C]//Proc of SICE 2003 Annum Conference. Tokyo:Soc of Instrum and ControlEng-2008:2824-2829.
[12] Fakas GJ,Cawley B,Cai Zhi.AutomatedGenerationofPersonalDataReportsfromRelational Databases[J]. Journal of Information&Knowledge Management(JIKM),2011,10(2):193-208.
Research and Implementation of Intelligent Home Control System Based on Android
SHI Gongshe WANG Yiju
(School of Electronics and Information Engineering, Xi’an Technological University, Xi’an 710021)
As the improvement of economy, science and technology and living standards, an increasing number of people are eager for comfortable and convenient living environment. In order to reduce costs, improve efficiency, this paper introduces a set of smart home control system based on Android terminal, by using the Android operating system and TLN13UA06 embedded wireless WiFi module for communication, to build good communication platform so as to achieve on home environment switch quantity, continuous volume control.
Android system, WiFi technology, smart home Class Number TP273
2016年10月15日,
2016年11月30日
師公社,男,高級(jí)工程師,碩士生導(dǎo)師,研究方向:電力電子技術(shù)、運(yùn)動(dòng)控制系統(tǒng)、建筑給水控制、應(yīng)急照明、能饋并網(wǎng)等。王義菊,女,碩士,研究方向:控制工程。
TP273
10.3969/j.issn.1672-9722.2017.04.039