喬明澤 邊凱宸 王世喆
摘 ?要: 為了降低智能家居系統(tǒng)的配置成本,并通過集成式的解決方案,嘗試緩解智能家居市場的碎片化問題,提高用戶的購買和使用體驗。設計了一套基于Raspberry Pi平臺,利用低功耗藍牙?紅外等無線數(shù)據(jù)傳輸技術進行輔助控制的智能家居系統(tǒng)。本平臺可以通過手機微信小程序、PC智能語音助手“Cortana”對家用電器進行控制,實現(xiàn)了通過個人智能設備控制家用電器的目的。本套智能家居系統(tǒng)使用方便,購置成本低廉,具有較好的實用性和應用開發(fā)前景,將有望提高智能家居在我國的普及程度,緩解智能家居市場碎片化問題,使普通用戶可以更方便的接觸、體驗到智能家居給生活帶來的便利。
關鍵詞: 樹莓派;智能家居;藍牙;微信小程序;語音助手
中圖分類號: TP274 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.08.009
本文著錄格式:喬明澤,邊凱宸,王世喆,等. 集成式低功耗智能家居系統(tǒng)的設計與實現(xiàn)[J]. 軟件,2019,40(8):4245
【Abstract】: In order to reduce the configuration cost of the smart home system, and through the integrated solution, try to alleviate the fragmentation problem of the smart home market and improve the user's purchase and use experience. This team designed a smart home system that based on Raspberry Pi platform, using wireless data transmission technologies such as low-power Bluetooth and infrared to assist in the control of household appliances. The platform can control household appliances through the mobile phone WeChat applet and the PC intelligent voice assistant “Cortana”, which could realize the purpose of controlling household appliances through personal smart devi?ces. This smart home system is easy to use, low in cost, good in practicality and application development prospects, and it is expected to increase the popularity of smart homes in China, alleviate the fragmentation of the smart home market, and make it easier for ordinary users to contact. Experience the convenience that smart home brings to life.
【Key words】: Raspberry Pi; Smart home; Bluetooth; WeChat applet; Voice assistant
0 ?引言
近年來,智能家居系統(tǒng)在我國已經(jīng)開始逐漸普及,物聯(lián)網(wǎng)產(chǎn)業(yè)取得了長足進步。目前市面上常見的智能家居系統(tǒng)有基于紅外、ZigBee與藍牙的系統(tǒng)[1]。華為?小米等數(shù)碼科技巨頭及國內(nèi)各大家用電器廠商都已開始進行一定程度的智能家居系統(tǒng)的研發(fā)。然而目前智能家居的普及率仍處在較低水平,這與智能家居系統(tǒng)的高成本?碎片化以及人們對于智能家居系統(tǒng)的了解不足都有著很大關系,同時,市場上常見的智能家居系統(tǒng)在單一系統(tǒng)內(nèi)搭建物聯(lián)網(wǎng)所使用的通訊手段通常較為單一與局限。智能家居存在安裝過程復雜、維護成本過高、穩(wěn)定性差、終端設備使用不方便、用戶體驗欠佳等問題[2-3]?;谶@種情況,項目小組設計了一款基于Raspberry Pi平臺,利用低功耗藍牙(Bluetooth Low Energy,BLE)、紅外等無線數(shù)據(jù)傳輸技術進行輔助控制的智能家居系統(tǒng)。本系統(tǒng)的實現(xiàn)目標,是降低智能家居系統(tǒng)的配置成本,并通過集成式的解決方案,嘗試緩解智能家居市場的碎片化問題,提高用戶的購買和使用體驗。
1 ?樹莓派中控系統(tǒng)設計與實現(xiàn)
1.1 ?關于中控硬件的選擇
(1)初版硬件選擇為Arduino開發(fā)板,搭配HC-05藍牙擴展芯片控制硬件,但是由于HC-05藍牙芯片與Arduino開發(fā)板之間連接困難?開發(fā)板處理能力低下等問題,放棄了Arduino開發(fā)板。
(2)在之后的開發(fā)實驗中采用了Raspberry Pi與HC-05藍牙芯片搭配的開發(fā)方式。Raspberry Pi是一款基于Linux的單片機計算機。它由英國的樹莓派基金會所開發(fā),目的是以低價硬件及自由軟件促進學校的基本計算機科學教育。樹莓派配備一枚博通出產(chǎn)的ARM架構700 MHz BCM2835處理器,256 MB內(nèi)存(B型已升級到512 MB內(nèi)存),使用SD卡當作存儲媒體,且擁有一個Ethernet?兩個USB接口?以及HDMI(支持聲音輸出)和RCA端子輸出支持[4]。(于2016年2月發(fā)布的第三代樹莓派已經(jīng)集成了WiFi和藍牙模塊,處理器也升級為博通BCM2837。項目組使用的為樹莓派一代版本,并未配備藍牙模塊,故而外接了一枚HC-05藍牙芯片。)
1.2 ?關于程序語言的選擇
(1)在使用Arduino開發(fā)板時,使用的是Arduino語言,其基于C/C++。
(2)在改用Raspberry Pi之后,曾采用C語言結合wiringPi。但是由于接口使用相對復雜,最后放棄了該方案。
(3)最終版采用了Python語言,由于Python語言是一種高層次的解釋型語言,所以語言的可讀性很強。在編寫程序的時候可以引用的庫比較多,所以代碼量比較小,有助于中控程序的編寫?豐富與優(yōu)化。
1.3 ?設計思路
(1)采用樹莓派與HC-05芯片進行串口連接,在用戶使用手機時,可以通過接收用戶發(fā)過來的串口指令的方式進行控制。在實驗的過程中,設備連接與控制正常。
(2)由于Raspberry Pi上面擁有40Pin的引腳,并且有線連接的安全性比較高,所以采用引腳對硬件進行直接控制的方式比較穩(wěn)妥。在此思路基礎上,我們團隊決定使用引腳對硬件進行控制。
(3)調(diào)查市面上的用電器基本情況后,我們發(fā)現(xiàn)可以將市面上的用電器大體分為兩類,分別是雙狀態(tài)電器(只有開和關兩狀態(tài)的用電器)和多狀態(tài)電器(例如風扇有多個擋位),在進行更深度調(diào)查后,我們發(fā)現(xiàn)雙狀態(tài)用電器可以采用供電控制的方式進行控制。例如電燈只需要控制其是否供電,就可以對其進行完全控制。而多狀態(tài)電器大多可以采用紅外對其遙控,所以可以采用樹莓派+紅外二極管的方式對信號進行模擬。以上思路可以控制家庭內(nèi)大多數(shù)用電器。
(4)編程采用Python語言,腳本在樹莓派開機后自動執(zhí)行,等待藍牙設備的信號傳入。如果傳入信號,根據(jù)傳入的狀態(tài)碼自動運行對應的程序功能塊。
2 ?手機端交互程序設計與實現(xiàn)
藍牙(Bluetooth),一種無線技術標準, 使用2.4—2.485 GHz的ISM波段的UHF無線電波,可實現(xiàn)固定設備?移動設備之間的短距離數(shù)據(jù)交換。藍牙技術最初由電信巨頭愛立信公司于1994年創(chuàng)制,當時是作為RS232數(shù)據(jù)線的替代方案。藍牙可連接多個設備,克服了數(shù)據(jù)同步的難題。藍牙模塊是利用無線藍牙技術進行藍牙傳輸?shù)囊环N模塊,藍牙模塊對外聯(lián)絡網(wǎng)絡環(huán)境,對內(nèi)聯(lián)絡單片機,在智能家居系統(tǒng)中起到非常重要的銜接作用。
2.1 ?工作原理
本模塊旨在實現(xiàn):手機連接藍牙發(fā)送指令,藍牙模塊接收到指令,開啟適配器,進行設備連接。最后,藍牙模塊將指令發(fā)送給單片機接口,完成無線傳輸。
在智能家居系統(tǒng)中采用BLE(低功耗藍牙)通訊技術具有以下優(yōu)勢:
(1)功耗低且傳輸速率較快
藍牙的短數(shù)據(jù)封包特性是其低功耗技術特點的根本,傳輸速度大概每秒195-215 KB左右,最高24 Mbps,也就是每秒3 MB。而功耗主要由傳輸速率和距離來決定,低功耗藍牙一開始是藍牙4.0核心規(guī)格的一部分,專門在低功耗?低帶寬?低成本與低復雜性方面做了優(yōu)化。
(2)建立連接時間短
藍牙用應用程序打開到建立連接只需要短短的3 ms,同時能以數(shù)毫秒的傳輸速度完成經(jīng)認可的數(shù)據(jù)傳遞后并立即關閉連接。
(3)兼容性較強
藍牙的普及性廣,也是基于其兼容性較強,幾乎能夠兼容所有數(shù)碼設備,讓各種數(shù)碼設備之間能夠無線溝通。
同時,選用藍牙做智能家居系統(tǒng)的無線連接技術也有幾點缺陷待改進,如:有一定傳輸距離的約束?藍牙的安全性不容易保證?穩(wěn)定性也有待加強。在本實驗中,針對藍牙模塊,我們采用了微信小程序開發(fā)方式,調(diào)用微信官方的藍牙API文檔,使用微信小程序對藍牙進行操作。
2.2 ?程序設計
2.2.1 ?藍牙建立連接過程梳理
首先,開啟藍牙適配,獲取藍牙適配器狀態(tài),判斷設備藍牙是否可用。判斷藍牙適配器可用時開啟掃描藍牙設備和開啟獲取已連接的藍牙設備。如果開啟掃描藍牙設備失敗,自動再次開啟掃描。開啟掃描藍牙設備成功后開啟監(jiān)聽已掃描的設備。開始連接設備,獲取已連接藍牙設備ID及name。開始連接某設備時停止掃描設備,停止循環(huán)獲取已連接設備。連接成功后停止掃描設備,停止循環(huán)獲取已連接設備。
2.2.2 ?關鍵步驟說明
Step1. 調(diào)用wx.openBluetoothAdapter(),初始化小程序藍牙模塊,生效周期為調(diào)用wx.openBlue?too-thAdapter至調(diào)用wx.closeBluetoothAdapter或小程序被銷毀為止。
Step2. 開啟藍牙適配,判斷藍牙是否可用wx.openBluetoothAdapter(OBJECT);
Step3. 調(diào)用wx.onBluetoothAdapterState?Chan?ge()監(jiān)聽藍牙適配器狀態(tài)變化事件;
Step4. 調(diào)用wx.onBluetoothDeviceFound()監(jiān)聽尋找到新設備的事件,在log文件中記錄下來設備ID和name。若初始適配器失敗,給出提示,“檢測手機藍牙是否打開”;
Step5. 調(diào)用wx.closeBluetoothAdapter()關閉藍牙模塊,使其進入未初始化狀態(tài)。調(diào)用該方法將斷開所有已建立的鏈接并釋放系統(tǒng)資源。在使用小程序藍牙流程后調(diào)用,與wx.openBluetoothAdapter()成對調(diào)用;
Step6. 調(diào)用wx.startBluetoothDevicesDiscovery()開始搜尋附近的藍牙外圍設備。此操作比較耗費系統(tǒng)資源,在搜索并連接到設備后需要立即調(diào)用 stop 方法停止搜索。即調(diào)用方法wx.stopBluetooth?Devi?ces-Discovery()停止搜尋附近的藍牙外圍設備。若已經(jīng)找到需要的藍牙設備并不需要繼續(xù)搜索時,調(diào)用該接口停止藍牙搜索;