基于Android平臺上BLE的智能家居控制系統(tǒng)設(shè)計與實現(xiàn)
引 言
近年來,隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展和生活水平的提高,人們對居住環(huán)境的要求越來越高,智能家居隨之成為物聯(lián)網(wǎng)技術(shù)領(lǐng)域的一個重要研究課題,而家居系統(tǒng)的智能控制是其中的一個重要研究方向。低功耗藍牙(Bluetooth Low Energy, BLE)是 2010 年推出的最新藍牙版本,BLE 相對于傳統(tǒng)藍牙最大的特點是超低功耗,并且目前 BLE 的硬件成本已經(jīng)降到一個合理水平,非常適合應用于智能家居系統(tǒng)控制領(lǐng)域,據(jù)Bluetooth SIG 高級市場總監(jiān)柯瑞德分析,2013 年至 2018 年, BLE 的最大市場增長空間將會出現(xiàn)在智能家居系統(tǒng)領(lǐng)域。筆者研究了Android 手機 BLE 應用及智能家居控制,以智能插座為例,設(shè)計了一套基于 Android 智能手機的BLE 智能家居控制系統(tǒng),實現(xiàn)對智能設(shè)備的實時控制功能。
1 Android系統(tǒng)中的 BLE
Bluetooth SIG 于 2010 年 6 月發(fā)布了藍 牙 4.0 技術(shù)標準, 而 Android 智能手機全面支持 BLE 是在 2013 年 7 月Android4.3 系統(tǒng)發(fā)布后。相較于傳統(tǒng)藍牙,BLE 運行和待機功耗極低,一顆標準紐扣電池可以使其連續(xù)工作一年到幾年時間。BLE 與傳統(tǒng)藍牙協(xié)議及開發(fā)差別較大,以下對BLE 通信協(xié)議及Android 中的BLE 開發(fā)做簡單介紹。
1.1 BLE通信協(xié)議
低功耗藍牙協(xié)議棧由控制器(Controller),主機(Host)和應用程序(Apps)組成,其協(xié)議棧如圖 1 所示。各層的各種規(guī)范都基于 GATT 制定,它規(guī)定了發(fā)送和接收設(shè)備的各種屬性值的方法。BLE 通信把各種屬性表示為服務(Service)的集合,而每個Service 都由多個特征值(Characteristic)組成, Characteristic 可以理解為一個數(shù)據(jù)類型,它包括一個 value 和 0 至多個對此value 的描述(Descriptor)。BLE 在連接建立過程中可以分為中心設(shè)備(Central)和外圍設(shè)備(Peripheral) 兩個角色,Central 負責 scan advertisement,而 Peripheral 負責 make advertisement。在 BLE 連接建立后,兩個連接的設(shè)備又可分為服務端(GATT server)和客戶端(GATT client),發(fā)送數(shù)據(jù)的設(shè)備為Server,接收數(shù)據(jù)的設(shè)備為Client。
1.2 Android中BLE的開發(fā)
Android 平臺的BLE 開發(fā)常用類如表 1 所列,開發(fā)主要包括以下步驟:
(1) BLE授權(quán),為使應用能使用手機 BLE 功能,需要在AndroidManifest.xml 中進行授權(quán)。
<uses-permission android :name="android.permission.BLUETOOTH"/>
<uvses-permission android :name="android.permission.BLUETOOTH_ADMIN"/>
(2) 檢查并啟動BLE功能,驗證手機是否支持BLE。如果支持, 通過藍牙適配器 BluetoothAdapter來查看藍牙是否已經(jīng)開啟, 也可以通過 Intent傳遞ACTION_REQUEST_ ENABLE參數(shù)調(diào)出藍牙開啟界面。
(3) 搜 索 BLE 設(shè) 備 , 使 用 BluetoothAdapter 的startLeScan方法配合 BluetoothAdapter.LeScanCallback回調(diào)參數(shù)進行BLE 廣播搜索,搜索需要設(shè)置時間上限并在發(fā)現(xiàn)設(shè)備后停止搜索以減少電量消耗。如果只想搜索某些設(shè)備,可以加入一個 UUID 數(shù)組參數(shù)。
(4) 建立 GATT連接, 當搜索到設(shè)備之后, 可以使用BluetoothAdapter的getRemoteDevice方法根據(jù) UUID獲得目標 device,并通過BluetoothDevice的 connectGatt方法進行 BLE連接,之后即可進行數(shù)據(jù)交換。
2 系統(tǒng)設(shè)計
Android 智能手機作為智能家居控制系統(tǒng)中 BLE 通信的 主設(shè)備,負責搜索智能插座設(shè)備、發(fā)起連接、發(fā)送控制指令、 斷開連接等操作。軟件整體運行流程如圖 2 所示。
Android 客戶端主界面如圖 3 所示,通過智能插座控制功能模塊可以檢查并打開手機藍牙,添加設(shè)備,即開啟 BLE 設(shè)備搜索,設(shè)置搜索時間上限為 180 s,發(fā)現(xiàn)插座設(shè)備后發(fā)起連接請求并進行密碼配對驗證,建立連接后把設(shè)備信息保存到Sqlite 數(shù)據(jù)庫并添加到列表實現(xiàn)界面顯示,之后可以點擊開關(guān)按鈕對插座通斷電進行控制,即通過發(fā)送封裝好的指定Service 代表通斷電Characteristic 值。為實現(xiàn)多設(shè)備控制,在每次發(fā)送指令后斷開 GATT 連接,當再次點擊開關(guān)按鈕時則先連接設(shè)備再發(fā)送相應指令。
3 實驗結(jié)果及分析
3.1 功能測試
多次實驗測試發(fā)現(xiàn),在理想情況下系統(tǒng)實現(xiàn)了對集成 CSR1010 低功耗藍牙芯片的智能插座通斷控制功能。
3.2 性能測試
通過室內(nèi)有障礙物及室外空曠環(huán)境下的實驗測試發(fā)現(xiàn), 系統(tǒng)在室內(nèi)障礙物環(huán)境下有效控制距離為 13 ~ 15 米,室外 空曠環(huán)境下有效控制距離則達到 30 米以上,性能良好。
3.3 遇到的問題及解決方法
Android 智能手機 BLE 在建立 GATT 連接之后馬上進 行 Characteristic 值傳輸有一定傳輸失敗的概率。經(jīng)研究實驗, 在連接建立成功后延時 0.2 秒進行數(shù)據(jù)傳輸能使控制成功率 達到 99% 以上,使用效果良好。
4 結(jié) 語
本文介紹了一種 Android 平臺上基于 BLE 的智能家居控 制系統(tǒng),通過 Android App 控制集成了藍牙芯片的智能插座, 整個系統(tǒng)結(jié)構(gòu)明了、操作簡單,經(jīng)實驗測試,系統(tǒng)對智能插 座通斷控制準確、反應靈敏、控制距離優(yōu)秀,完全能夠滿足 在室內(nèi)復雜環(huán)境下工作的要求。