魏銳斌+吳超益+毋茂盛
摘 要:隨著手機的普及和通信技術的發展,使用手機實現智能家居控制成為人們目前的研究熱點。文中開發了一個手機App程序和對應的硬件電路板,實現了家居溫濕度等數據的實時采集、顯示以及電燈和門鎖的智能化控制。
關鍵詞:App;硬件電路板;藍牙;智能家居
中圖分類號:TP277 文獻標識碼:A 文章編號:2095-1302(2017)12-00-03
0 引 言
隨著計算機技術和通信技術的發展,手機已成為人們生活中必不可少的工具,現在幾乎人手一部甚至幾部。藍牙是一種短距離的無線通信技術,采用藍牙方式傳輸數據,可以避免布線帶來的麻煩,并節約成本,由于手機都帶有藍牙接口,因此手機的普及大大拓寬了藍牙的應用領域[1,2]。例如,將手機應用到實時監控領域,手機通過藍牙發送命令或接收傳感器數據實現智能化控制。本文研究了通過手機控制家中電燈、門鎖開關的技術。
1 系統總體設計與特點
1.1 系統總體設計
系統由Android端、后臺數據統計以及硬件電路等組成,結構如圖1所示。
1.2 系統特點
系統帶有看門狗電路,可靠性高。當程序運行出問題時能自動重啟,且上層App有斷開重連的功能。系統還加入了環境監測模塊,可實時顯示家中環境的溫濕度,為生活提供方便。App采用MVP設計模式,分為界面控制、邏輯控制和控制器,以簡化程序設計。界面控制主要負責界面的更新;邏輯控制主要負責數據處理;控制器主要控制系統如何操作。采用這種設計模式可以方便在未來對系統功能進行增加、修改和完善,不用對以前的代碼進行過多的改動。
2 系統硬件設計
系統硬件主要包括STC15F2K60S2單片機,藍牙模塊,溫濕度傳感器,光敏模塊,紅外控制模塊,火焰報警模塊等。
2.1 控制器模塊
控制器選用STC15F2K60S2,該單片機具有兩個串行口,可以方便下載程序并通過藍牙串口通訊,簡化電路的設計。STC15F2K60S2單片機自帶E2PROM,可以編程,具有10的AD轉換和8個轉換通道,機器周期為1個時鐘周期,執行速度快,且內置復位電路。該芯片具有使用方便,調用簡單等特點。
2.2 傳感器模塊
傳感器模塊主要包括溫濕度傳感器DH11、光敏電阻5528、火焰傳感器等。溫濕度傳感器DH11通過單總線接口和單片機相連,單總線通過一條線進行數據傳送[3],與CPU連接接口簡單。上層接收處理藍牙發送的數據,完成對周圍環境的監測和數據獲取。DH11是集溫濕度采集于一體的復合型傳感器,極大地提高了數據轉換的效率。5528光敏電阻在與同類型電阻的對比下擁有較好的參數,在考慮低成本、低功耗的情況下使用這款電阻具有一定的優勢。
傳感器模塊電路如圖2所示。
2.3 藍牙模塊
藍牙模塊采用HC-08低功耗模塊,該模塊具有尺寸小、成本低等特點,采用藍牙4.0協議與自適應跳頻(AFH)技術,以確保低功耗藍牙在“嘈雜”射頻環境中穩定地傳輸。與很多藍牙技術、無線LAN、IEE802.15.4等無線技術一樣使用無需認證許可的2.4 GHz工業科學醫療(ISM)頻帶,通過與STC15F2K60S2的串口相連接,實現藍牙與單片機的通訊。由于STC15F2K60S2具有雙串口,不會與串口通訊互相干擾,因此,能夠保證在串口通訊的同時完成藍牙通訊。電路圖如圖3所示。
2.4 繼電器智能家居模塊
該模塊主要由繼電器、電插鎖、燈泡以及報警電路組成。STC15F2K60S2控制繼電器的開關實現對智能家居的控制,通過上層App發送命令給STC15F2K60S2單片機,STC15F2K60S2發出的控制信號經ULN2003驅動連接到繼電器實現開關控制。ULN2003的輸出連接2個繼電器和1個報警蜂鳴器。
(1)火焰報警電路。當火焰傳感器檢測到有火焰出現時,會向單片機申請中斷,在單片機執行中斷服務程序時通過蜂鳴器報警,同時通過藍牙向手機發送報警信號,手機發出報警信息。
(2)開鎖電路。系統采用YGS-600-S5電插鎖,用繼電器控制12 V開鎖電源實現開鎖。
(3)電燈控制電路。用繼電器控制220 V電源,當繼電器吸合時,接通電源,實現開燈操作。電燈控制電路如圖4所示。
3 系統軟件設計
Android端主要通過藍牙模塊向硬件發送各路命令或采集數據到手機顯示,通過設置選項允許手機端把數據發送到后臺,通過后臺生成統計表格。后臺數據主要使用javaEE,將Android手機端的數據上傳到后臺,存入數據庫,然后生成統計表;上層Android部分主要分為5個模塊,分別是注冊模塊、登錄模塊,藍牙掃描模塊,藍牙連接模塊和藍牙控制模塊,基本流程如圖5所示。
3.1 用戶登錄模塊
用戶登錄模塊主要通過登錄獲得遠程數據庫之前連接過的藍牙設備,減少藍牙掃描模塊的時間,提高效率。登錄后會獲得遠程連接的數據庫中該用戶曾連接過的藍牙設備名稱和UUID,在進入藍牙模塊后直接加載,減少藍牙設備掃描的時間,方便用戶直接連接已連接過的藍牙設備。登錄界面如圖6所示。
3.2 用戶注冊模塊
用戶注冊模塊主要負責新用戶,使用郵箱方式來完成注冊,通過HTTP協議與后臺連接,并寫入后臺數據庫中。用戶注冊界面如圖7所示。
3.3 藍牙掃描模塊
藍牙掃描模塊用于掃描周圍的低功耗藍牙,通過邏輯去除普通的藍牙設備,減少非必要的藍牙設備加入列表。同時使用最新的API,通過回調函數掃描設備,加快掃描速度。使用RecyclerView控件,大大減少了列表加載所需的內存并優化顯示。核心代碼如下:endprint
ScanCallback mcallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType,ScanResult result) {
super.onScanResult(callbackType, result);
for (int i = 0;
i if(result.getDevice().getAddress().equals (ScanBean.getScanBean().getBlelist().get(i). getDevice().getAddress())) {return; } } iscanModel.setResult(result); //掃描得到的藍牙設備加入列表 refresh();/更新列表 }} 掃描模塊運行界面如圖8所示。 3.4 藍牙連接模塊 藍牙連接模塊主要通過Android Service后臺進行連接,不會干擾前臺的運行。使用谷歌提供的專為低功耗藍牙連接與通訊設計的API,代替傳統的Socker通信。通過回調函數連接低功耗藍牙設備進行通訊,減少了建立Socker的時間。核心代碼如下: BluetoothGattCallback Callback = new BluetoothGattCallback () { //藍牙連接狀態回調函數 @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { super.onConnectionStateChange(gatt, status, newState); if (newState == 2) { gatt.discoverServices();} } //藍牙服務發現函數 @Override public void onServicesDiscovered(final BluetoothGatt gatt, int status) { super.onServicesDiscovered(gatt, status); if (BluetoothGatt.GATT_SUCCESS == status) { for (int i = 0; i < bluetoothGattServiceList.size(); i++) { if(bluetoothGattServiceList.get(i).getUuid().toString().equals(BLE_SERVICE_UUID)) { bluetoothGattCharacteristics = bluetoothGattServiceList.get(i).getCharacteristics(); for (int j=0; j< bluetoothGattCharacteristics.size(); j++) { if(bluetoothGattCharacteristics.get (j).getUuid ().toString().equals(BLE_CONNECT_UUID)) { bluetoothGattCharacteristic = bluetoothGattCharacteristics.get(j); Gatt.setCharacteristicNotification(bluetoothGattCharacteristic, true);} } } } } } //藍牙數據接收回調函數 @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { super.onCharacteristicChanged(gatt, characteristic); if (ble_callBack != null) { ble_callBack.GetData(characteristic.getStringValue(0)) } } } 3.5 藍牙控制模塊 藍牙控制模塊主要負責藍牙設備的通信,進行數據讀、寫操作,同時對下層發來的警告進行反饋。該模塊由兩個界面組成,分別為環境監測、智能家居控制界面。環境監測頁面主要完收集溫濕度以及光敏數據,設置溫濕度上下限等操作。智能家居控制相對簡單,主要負責燈泡的開關和鎖的開啟。主要通訊通過服務完成??刂平缑嫒鐖D9所示。 4 結 語 本項目開發了一個基于Android系統的App程序以及相關硬件控制單元模塊,分別實現了家中溫、濕度等數據的實時采集以及對家中燈泡和鎖的智能化控制。當檢測到有火焰時,將報警信息上傳給手機進行聲音和手機雙重報警。同時,實現了通過手機開關燈的功能,為生活提供了很大的方便?;丶視r通過手機也可打開家門,而且門鎖安裝在室內,起到了防盜作用。系統經過試運行,效果良好,應用前景廣闊。 參考文獻 [1] 常敏,梅曉敏,崔永進,等.基于BLE與Android的牧場溫濕度智能監控系統設計[J].通信電源技術,2015 (5):134-137. [2] 韓丹.BLE技術在智能家居中的應用[D]. 青島: 青島科技大學, 2015. [3] 毋茂盛. 單片機原理與開發[M]. 北京:高等教育出版社, 2015. [4] 張琦,穆遠威,劉美娟.基于STC15F2K60S2單片機的智能管理教室系統[J].物聯網技術,2017,7(6):85-86. [5]白志帥,穆士留,張峰,等.基于BLE技術的智能門禁系統[J].自動化與儀表,2017,32(4):67-71. [6]夏盼盼.BLE藍牙技術在智能門鎖的應用[J].科技廣場,2016(7):84-87. [7]劉康,林春景,熊宇.智能母線溫濕度監控系統設計[J].科技資訊,2016,14(31):20-22. [8] 汪月鵬.基于Android平臺上BLE的智能家居控制系統設計與實現[J].物聯網技術,2016,6(3):81-82.