袁曉峰+趙越+李巖+高德遠+高武
摘 要: 為了保護貴重物品的安全,設(shè)計出一款基于超低功耗單片機MSP430和藍牙技術(shù)的防盜系統(tǒng)。防盜器的控制端是基于安卓智能手機開發(fā)的應(yīng)用軟件,操作便捷,智能手機用戶即是防盜器的潛在用戶。手機通過讀取防盜器藍牙的RSSI值,可以判斷手機與防盜器的距離,從而根據(jù)距離實現(xiàn)防盜功能。實驗表明,防盜器設(shè)計方案可以實現(xiàn)主動報警和防盜功能,且軟件所測的距離在5 m的范圍內(nèi)精度達到1 m以內(nèi),具有良好的實用性。
關(guān)鍵詞: 防盜器; MSP430; 藍牙技術(shù); 安卓系統(tǒng); 接收信號強度
中圖分類號: TN926?34; TP39 文獻標(biāo)識碼: A 文章編號: 1004?373X(2014)04?0045?04
Design of anti?theft system based on Bluetooth technology
YUAN Xiaofeng, ZHAO Yue, LI Yan,GAODeyuan, GAO Wu
(School of Computer, Northwestern Polytechnical University, Xian 710072, China)
Abstract: In order to protect the security of valuables, an anti?theft system based on ultra?low power MSP430 and Bluetooth technology was designed. The burglar alarm is controlled by application software developed for Android smartphone. Its easy to operate. Smartphone users are the potential users of burglar alarm. The smartphone APP can judge the distance between the cellphone and burglar alarm by reading the RSSI values of the burglar alarm Bluetooth. The results obtained in a lot of experiments show that the burglar alarm can realize the functions of initiative alarm and anti?theft. The softwares measuring accuracy is 1 m in the range of 5 m. The design scheme has better practicability.
Keywords: burglar alarm; MSP430; Bluetooth technology; Android system; RSSI
0 引 言
隨著現(xiàn)代生活節(jié)奏的加快,貴重物品經(jīng)常會丟失或被遺忘。利用嵌入式計算機技術(shù)和電子技術(shù)設(shè)計的防盜器,可以幫助人們有效地保護貴重物品。防盜器因其特殊的應(yīng)用場景,應(yīng)該具備小體積、低功耗、大電量等特點。傳統(tǒng)的電子防盜器多分為主機和子機,需要通過主機控制子機來實現(xiàn)防盜功能[1],無疑增加了操作難度和制作成本。近年來智能手機的用戶數(shù)量呈爆炸式增長,將智能手機應(yīng)用于物聯(lián)網(wǎng)領(lǐng)域,可以節(jié)約成本,而且產(chǎn)品將擁有大量的潛在用戶[2]。
本文設(shè)計出可以利用智能手機軟件進行控制的防盜器,防盜器與智能手機之間通過藍牙進行無線連接。我們只需要在智能手機安裝控制軟件APP并建立藍牙連接,即可輕松控制防盜器實現(xiàn)主動報警、斷開連接報警、超出安全距離報警、更改防盜器名稱以及藍牙連接密碼等功能。當(dāng)監(jiān)測到貴重物品可能丟失時,手機和防盜器均會立即發(fā)出報警聲音,具有很強的實用性和良好的市場前景。
1 總體設(shè)計方案
防盜器系統(tǒng)包括硬件系統(tǒng)和軟件系統(tǒng)兩部分。防盜器的硬件實物體積輕巧,與需要保護的貴重物品放在一起來實現(xiàn)防盜功能。軟件系統(tǒng)包括單片機嵌入式軟件和智能手機應(yīng)用軟件兩部分。單片機代碼的主要功能是監(jiān)測藍牙連接狀況和接收手機發(fā)送的指令,從而控制外圍電路進行相應(yīng)操作。智能手機控制軟件則是基于Android系統(tǒng)開發(fā)的一款應(yīng)用APP,手機通過控制軟件可以與防盜器建立藍牙連接、發(fā)送響鈴和修改名稱等指令、設(shè)置安全距離等。圖1展示了防盜器與智能手機之間的通信原理。
為了提高貴重物品的安全系數(shù),防盜器在兩種情況下可以報警,一種是藍牙連接斷開后,另一種是智能手機和防盜器之間的距離超過控制軟件設(shè)置的安全距離。智能手機通過不斷檢查Android系統(tǒng)的藍牙設(shè)備是否讀取錯誤來實現(xiàn)藍牙連接狀態(tài)的檢測。防盜器中的單片機通過向藍牙發(fā)送“AT”指令來檢測藍牙連接狀態(tài):當(dāng)藍牙連接時,手機會收到單片機發(fā)送的字符;若藍牙斷開,防盜器的藍牙模塊則會向單片機返回“OK”字符,單片機檢測到“OK”字符后得知藍牙連接斷開,從而發(fā)出報警響鈴。
圖1 防盜器與智能手機的連接
智能手機的控制軟件可以通過RSSI(Received Signal Strength Indicator)來判斷手機與防盜器的距離。RSSI是接收信號的強度指示,智能手機通過Android系統(tǒng)的intent.getExtra(BluetoothDevice.EXTRA_RSSI)獲取藍牙信號RSSI值的變化。當(dāng)控制軟件監(jiān)測到手機與防盜器的距離超出所設(shè)置的安全距離時,立即進行報警并向防盜器發(fā)送報警指令,使得防盜及時響鈴報警。手機接收到的信號強度PR與傳輸距離r的關(guān)系如式(1)所示:
[PR=A-10nlgr] (1)
式中:A為距離1 m時手機接收到防盜器的RSSI值;n為傳播因子,與所處的環(huán)境有關(guān)[3]。
2 硬件系統(tǒng)設(shè)計
防盜器的硬件系統(tǒng)采用小體積、低功耗的商用現(xiàn)成芯片(COTS)搭建而成,硬件系統(tǒng)功能模塊如圖2所示。
圖2 防盜器硬件系統(tǒng)功能模塊
控制模塊核心為超低功耗單片機MSP430G2553。MSP430系列單片機是TI公司推出的16位精簡指令集混合處理器,大量實驗和產(chǎn)品應(yīng)用證明,MSP430相較其他系列的單片機具有卓越的低功耗的性能[4],可以大大節(jié)省防盜器的電量。單片機根據(jù)防盜器系統(tǒng)狀態(tài)以及智能手機發(fā)送的指令,對防盜器的功能模塊發(fā)送控制信號,從而實現(xiàn)相應(yīng)操作。
藍牙模塊是采用CSR(Cambridge Silicon Radio)公司的藍牙芯片,支持AT指令集,通過串口與單片機進行數(shù)據(jù)通信。藍牙模塊與手機的藍牙建立連接后,為智能手機和防盜器提供無線通路,可傳輸數(shù)據(jù)和控制指令。
電源模塊為防盜器系統(tǒng)的各個模塊提供所需的電源,主要包括小體積的鋰電池和LDO芯片。鋰電池的使用,使防盜器具有充電功能,無需頻繁更換電池,從而更加實用。LDO芯片則將鋰電池的輸出電壓轉(zhuǎn)換為穩(wěn)定的3.3 V,保證芯片正常工作。
指示模塊由多個LED燈組成,分別指示防盜器電源的開關(guān)、藍牙通路連接的狀態(tài)以及工作模式等。
報警模塊可以是蜂鳴器或音樂芯片等。單片機接收到手機發(fā)來的響鈴指令或檢測到藍牙連接斷開后,可以控制報警模塊進行響鈴報警。
用戶通過按鍵,可以控制防盜器的電源開關(guān)和單片機的復(fù)位功能。
此外,LCD顯示模塊可以和用戶更好的交互,必要時可以實現(xiàn)這部分的功能。由于LCD顯示模塊需要占用大量面積,與防盜器小體積的目標(biāo)相悖,本設(shè)計沒有采用顯示模塊,而是通過智能手機的控制軟件進行可視化操作。
所制作的防盜器實物如圖3所示。
圖3 防盜器硬件系統(tǒng)
3 軟件系統(tǒng)設(shè)計
3.1 嵌入式軟件設(shè)計
防盜器的單片機需要實現(xiàn)的主要功能為接收手機發(fā)送的指令并判斷所要執(zhí)行的操作、控制響鈴的開關(guān)以及修改藍牙模塊的名稱和密碼等[5]。單片機代碼的主要功能函數(shù)及作用如下:
CLOCK_INIT(); // 設(shè)置單片機運行的系統(tǒng)時鐘
UART_INIT (); // 初始化單片機與藍牙模塊之間的串口,配置波特率為9 600 b/s
LINK_STATUS(); // 判斷藍牙的連接狀態(tài)
MODIFY_NAME(); // 修改防盜器的名稱
CHANGE_PW(); // 修改藍牙的連接密碼
在防盜功能中,單片機MSP430在上電后的運行流程如圖4所示。
圖4 單片機代碼流程圖
單片機接收到手機軟件所發(fā)送操作指令誤命令的概率與指令碼集的最小碼距有關(guān)。假設(shè)指令碼集的大小為n(n個指令碼),碼距為d,指令碼長度為L,則指令碼集的誤命令概率為[(n-1)Pde(1-Pe)L-d],其中Pe為信道誤碼率[6]。從上式可以看出,在碼集大小n和指令碼長度L相同時,指令碼集的最小碼距越大,發(fā)生誤命令的概率越低。因此手機發(fā)送的藍牙指令集應(yīng)盡可能選擇最小碼距較大的指令集。
本文定義操作指令為8 b,需要6條指令,所以最小碼距為4的操作指令及其對應(yīng)操作定義如表1所示[7]。
表1 指令定義
3.2 安卓應(yīng)用軟件設(shè)計
智能手機端應(yīng)用軟件是基于Android開源平臺開發(fā)的藍牙控制軟件。利用Android平臺提供的UI管理機制和藍牙設(shè)備管理接口,可以輕松方便地實現(xiàn)智能手機藍牙適配器與防盜器藍牙模塊之間的通信以及接收信號強度(RSSI)測量[7]。
安卓控制軟件的功能模塊如圖5所示。
圖5 安卓應(yīng)用軟件模塊結(jié)構(gòu)
其中,主界面模塊顯示軟件的功能按鈕和當(dāng)前防盜器的狀態(tài),在后臺接收其他模塊返回的藍牙操作請求,并通過與藍牙設(shè)備服務(wù)模塊進行交互來實現(xiàn)這些操作。
藍牙設(shè)備服務(wù)模塊通過調(diào)用Android系統(tǒng)API來處理各種前臺發(fā)出的藍牙設(shè)備操作請求。
設(shè)備列表模塊負責(zé)顯示手機藍牙已配對的設(shè)備列表(Paired Device List)和新發(fā)現(xiàn)的設(shè)備列表(Discovered Device List),并且負責(zé)管理后臺刷新線程,通過不斷刷新設(shè)備列表來尋找新的設(shè)備。
設(shè)備功能菜單模塊顯示設(shè)備相關(guān)的功能操作(如修改名稱、響鈴報警等),并將用戶選擇的功能轉(zhuǎn)換為后臺命令傳送至主界面模塊,進而完成相應(yīng)的操作。
環(huán)境設(shè)置模塊通過較為直觀的方式,采集環(huán)境嘈雜度和安全距離兩個數(shù)值,為測距函數(shù)提供參數(shù)。
防盜器安卓控制軟件的核心為藍牙設(shè)備服務(wù)模塊,主要負責(zé)手機藍牙的打開與關(guān)閉、藍牙掃描的啟動與中止、掃描結(jié)果的獲取、藍牙連接的創(chuàng)建與斷開以及藍牙設(shè)備的距離檢測等功能。
藍牙設(shè)備服務(wù)模塊作為監(jiān)控系統(tǒng)藍牙設(shè)備的模塊,具有以下四種狀態(tài)[8]:就緒狀態(tài)、偵聽狀態(tài)、連接請求狀態(tài)和已連接狀態(tài)。功能模塊的狀態(tài)轉(zhuǎn)化關(guān)系見圖6。
圖6 藍牙設(shè)備服務(wù)模塊的狀態(tài)轉(zhuǎn)換
如圖6所示,當(dāng)軟件啟動時,該模塊自動初始化為就緒狀態(tài),并將利用BluetoothAdapter.getDefaultAdapter() 函數(shù)獲取手機默認的藍牙適配器(Bluetooth Adapter),并檢查其是否可用。若手機藍牙適配器可用,模塊將轉(zhuǎn)換為偵聽狀態(tài),啟動Accept Thread線程來偵聽防盜器藍牙設(shè)備(Bluetooth Device)的連接請求。若偵聽狀態(tài)下得到其他藍牙設(shè)備的連接請求,則偵聽線程的listenUsingRfcommWithServiceRecor() 函數(shù)將被喚醒,并嘗試建立藍牙Socket連接[9],此時模塊將轉(zhuǎn)換為已連接狀態(tài)。而當(dāng)模塊在偵聽狀態(tài)下得到前臺模塊(如主界面模塊等)發(fā)出的連接防盜器藍牙設(shè)備的請求時,模塊會轉(zhuǎn)換為請求連接狀態(tài)。在此狀態(tài)轉(zhuǎn)換時,會終止Accept Thread線程并啟動Connect Thread,Connect Thread線程則會調(diào)用安卓系統(tǒng)API中對應(yīng)藍牙設(shè)備類的createRfcommSocketToServiceRecord()方法來嘗試與防盜器藍牙建立Socket連接。若在請求連接時,得到了防盜器的響應(yīng),并成功創(chuàng)建了藍牙連接,則該模塊將轉(zhuǎn)換為已連接狀態(tài)。當(dāng)轉(zhuǎn)換為已連接狀態(tài)時,模塊將終止其他一切線程,并創(chuàng)建Connected Thread線程來維護連接。同時,通過該線程提供與防盜器藍牙設(shè)備消息的輸入和輸出操作。
藍牙設(shè)備服務(wù)模塊在提供了模式轉(zhuǎn)換的同時,封裝了一些常用的操作,來使前臺模塊更容易與該后臺模塊進行交互。下面是前臺模塊常用到的操作:
start (); // 啟動/重置服務(wù)
getState (); // 獲取模塊狀態(tài)
connectDevice (); // 連接指定設(shè)備
stop (); // 停止服務(wù)
write (); // 向設(shè)備寫入字符
read (); // 從設(shè)備讀取字符
connectionFailed (); // 當(dāng)連接請求失敗時的操作
connectionLost (); // 當(dāng)已建立的連接斷開時的操作
基于Android系統(tǒng)設(shè)計的應(yīng)用軟件功能界面截圖如圖7所示。
圖7 軟件功能界面
4 系統(tǒng)測試
打開控制軟件,與防盜器建立藍牙連接后,發(fā)送響鈴指令,防盜器主動報警;停止響鈴指令則可使防盜器停止報警。手機軟件對防盜器進行追蹤,可實現(xiàn)藍牙連接斷開后報警和超出安全距離后報警的功能,有效防止貴重物品的遺失。此外,點擊軟件“修改名稱”和“修改密碼”按鈕,并輸入新的名稱密碼,即可成功修改防盜器的名稱和藍牙連接密碼。
在空曠的環(huán)境下,對安卓應(yīng)用軟件的測距功能進行了測試。軟件除了可以手動設(shè)置外界環(huán)境參數(shù),還具有學(xué)習(xí)A和n值的功能,從而提高所測距離的精度。根據(jù)式(1),在手機和防盜器距離1 m時測得A值,然后根據(jù)距離2 m時的RSSI值計算出n值,則距離r與防盜器的RSSI值PR關(guān)系如式(2)所示:
[r=10[(A-PR)/(10?n)]] (2)
手機軟件所測得防盜器的距離與實際距離的對比如表2所示。
表2 手機與防盜器距離 m
由表2的數(shù)據(jù)可以看出,控制軟件在5 m以內(nèi)的范圍內(nèi)所測數(shù)據(jù)精度較高,在1 m以內(nèi);當(dāng)距離大于5 m時,軟件所算出的距離精度較差,但藍牙連接斷開后報警的功能可以彌補精度的不足。
5 結(jié) 論
本文設(shè)計的防盜系統(tǒng),體積小巧,通過智能手機控制即可實現(xiàn)防盜功能,操作方便。所設(shè)計的安卓應(yīng)用軟件操作界面簡潔,功能完善,5 m以內(nèi)的測距精度可達1 m以內(nèi)。后續(xù)可將本設(shè)計繼續(xù)優(yōu)化,將防盜器做的更??;同時也可增加GPS、GSM等模塊,實現(xiàn)可定位的小孩防丟器等更強功能的作品。此外,開發(fā)基于其他操作系統(tǒng)的控制軟件,可以使個人計算機和其他智能系統(tǒng)的手機控制防盜器,從而有更好的市場前景。
參考文獻
[1] 張立霞,周立余,馮新.基于 AVR 和 RFID 的電子防丟防盜器設(shè)計[J].現(xiàn)代電子技術(shù),2013,36(15):91?94.
[2] 王賀.談物聯(lián)網(wǎng)于智能手機應(yīng)用系統(tǒng)設(shè)計環(huán)節(jié)[J].河南科技,2013(4):23?24.
[3] 方震,趙湛,郭鵬,等.基于RSSI測距分析[J].傳感技術(shù)學(xué)報,2007,20(11):2526?2530.
(上接第48頁)
[4] Texas Instruments. MSP430x2xx family user's guide [EB/OL]. [2013?07?10]. http://www.ti.com.
[5] 沈建華,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機原理與應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[6] 譚維熾.關(guān)于遙控指令錯誤概率的計算[J].遙測遙控,2003(4):63?65.
[7] Anon. Android Bluetooth connection:service discovery failed [EB/OL]. [2012?08?23]. http://developer.android.com/guide/topics/connectivity/bluetooth.
[8] 鄭昊.基于Arduino/Android 的藍牙通信系統(tǒng)設(shè)計與實現(xiàn)[D]. 武漢:湖北大學(xué),2012.
[9] 范晨燦.基于藍牙4.0傳輸?shù)腁ndroid手機心電監(jiān)護系統(tǒng)[D].杭州:浙江大學(xué),2013.
[10] 于敏芳,曾連連,張明哲.最小碼距為4比特、長度為12比特的復(fù)合正交碼集的生成方法[J].遙測遙控,2013(3):9?11.
圖6 藍牙設(shè)備服務(wù)模塊的狀態(tài)轉(zhuǎn)換
如圖6所示,當(dāng)軟件啟動時,該模塊自動初始化為就緒狀態(tài),并將利用BluetoothAdapter.getDefaultAdapter() 函數(shù)獲取手機默認的藍牙適配器(Bluetooth Adapter),并檢查其是否可用。若手機藍牙適配器可用,模塊將轉(zhuǎn)換為偵聽狀態(tài),啟動Accept Thread線程來偵聽防盜器藍牙設(shè)備(Bluetooth Device)的連接請求。若偵聽狀態(tài)下得到其他藍牙設(shè)備的連接請求,則偵聽線程的listenUsingRfcommWithServiceRecor() 函數(shù)將被喚醒,并嘗試建立藍牙Socket連接[9],此時模塊將轉(zhuǎn)換為已連接狀態(tài)。而當(dāng)模塊在偵聽狀態(tài)下得到前臺模塊(如主界面模塊等)發(fā)出的連接防盜器藍牙設(shè)備的請求時,模塊會轉(zhuǎn)換為請求連接狀態(tài)。在此狀態(tài)轉(zhuǎn)換時,會終止Accept Thread線程并啟動Connect Thread,Connect Thread線程則會調(diào)用安卓系統(tǒng)API中對應(yīng)藍牙設(shè)備類的createRfcommSocketToServiceRecord()方法來嘗試與防盜器藍牙建立Socket連接。若在請求連接時,得到了防盜器的響應(yīng),并成功創(chuàng)建了藍牙連接,則該模塊將轉(zhuǎn)換為已連接狀態(tài)。當(dāng)轉(zhuǎn)換為已連接狀態(tài)時,模塊將終止其他一切線程,并創(chuàng)建Connected Thread線程來維護連接。同時,通過該線程提供與防盜器藍牙設(shè)備消息的輸入和輸出操作。
藍牙設(shè)備服務(wù)模塊在提供了模式轉(zhuǎn)換的同時,封裝了一些常用的操作,來使前臺模塊更容易與該后臺模塊進行交互。下面是前臺模塊常用到的操作:
start (); // 啟動/重置服務(wù)
getState (); // 獲取模塊狀態(tài)
connectDevice (); // 連接指定設(shè)備
stop (); // 停止服務(wù)
write (); // 向設(shè)備寫入字符
read (); // 從設(shè)備讀取字符
connectionFailed (); // 當(dāng)連接請求失敗時的操作
connectionLost (); // 當(dāng)已建立的連接斷開時的操作
基于Android系統(tǒng)設(shè)計的應(yīng)用軟件功能界面截圖如圖7所示。
圖7 軟件功能界面
4 系統(tǒng)測試
打開控制軟件,與防盜器建立藍牙連接后,發(fā)送響鈴指令,防盜器主動報警;停止響鈴指令則可使防盜器停止報警。手機軟件對防盜器進行追蹤,可實現(xiàn)藍牙連接斷開后報警和超出安全距離后報警的功能,有效防止貴重物品的遺失。此外,點擊軟件“修改名稱”和“修改密碼”按鈕,并輸入新的名稱密碼,即可成功修改防盜器的名稱和藍牙連接密碼。
在空曠的環(huán)境下,對安卓應(yīng)用軟件的測距功能進行了測試。軟件除了可以手動設(shè)置外界環(huán)境參數(shù),還具有學(xué)習(xí)A和n值的功能,從而提高所測距離的精度。根據(jù)式(1),在手機和防盜器距離1 m時測得A值,然后根據(jù)距離2 m時的RSSI值計算出n值,則距離r與防盜器的RSSI值PR關(guān)系如式(2)所示:
[r=10[(A-PR)/(10?n)]] (2)
手機軟件所測得防盜器的距離與實際距離的對比如表2所示。
表2 手機與防盜器距離 m
由表2的數(shù)據(jù)可以看出,控制軟件在5 m以內(nèi)的范圍內(nèi)所測數(shù)據(jù)精度較高,在1 m以內(nèi);當(dāng)距離大于5 m時,軟件所算出的距離精度較差,但藍牙連接斷開后報警的功能可以彌補精度的不足。
5 結(jié) 論
本文設(shè)計的防盜系統(tǒng),體積小巧,通過智能手機控制即可實現(xiàn)防盜功能,操作方便。所設(shè)計的安卓應(yīng)用軟件操作界面簡潔,功能完善,5 m以內(nèi)的測距精度可達1 m以內(nèi)。后續(xù)可將本設(shè)計繼續(xù)優(yōu)化,將防盜器做的更小;同時也可增加GPS、GSM等模塊,實現(xiàn)可定位的小孩防丟器等更強功能的作品。此外,開發(fā)基于其他操作系統(tǒng)的控制軟件,可以使個人計算機和其他智能系統(tǒng)的手機控制防盜器,從而有更好的市場前景。
參考文獻
[1] 張立霞,周立余,馮新.基于 AVR 和 RFID 的電子防丟防盜器設(shè)計[J].現(xiàn)代電子技術(shù),2013,36(15):91?94.
[2] 王賀.談物聯(lián)網(wǎng)于智能手機應(yīng)用系統(tǒng)設(shè)計環(huán)節(jié)[J].河南科技,2013(4):23?24.
[3] 方震,趙湛,郭鵬,等.基于RSSI測距分析[J].傳感技術(shù)學(xué)報,2007,20(11):2526?2530.
(上接第48頁)
[4] Texas Instruments. MSP430x2xx family user's guide [EB/OL]. [2013?07?10]. http://www.ti.com.
[5] 沈建華,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機原理與應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[6] 譚維熾.關(guān)于遙控指令錯誤概率的計算[J].遙測遙控,2003(4):63?65.
[7] Anon. Android Bluetooth connection:service discovery failed [EB/OL]. [2012?08?23]. http://developer.android.com/guide/topics/connectivity/bluetooth.
[8] 鄭昊.基于Arduino/Android 的藍牙通信系統(tǒng)設(shè)計與實現(xiàn)[D]. 武漢:湖北大學(xué),2012.
[9] 范晨燦.基于藍牙4.0傳輸?shù)腁ndroid手機心電監(jiān)護系統(tǒng)[D].杭州:浙江大學(xué),2013.
[10] 于敏芳,曾連連,張明哲.最小碼距為4比特、長度為12比特的復(fù)合正交碼集的生成方法[J].遙測遙控,2013(3):9?11.
圖6 藍牙設(shè)備服務(wù)模塊的狀態(tài)轉(zhuǎn)換
如圖6所示,當(dāng)軟件啟動時,該模塊自動初始化為就緒狀態(tài),并將利用BluetoothAdapter.getDefaultAdapter() 函數(shù)獲取手機默認的藍牙適配器(Bluetooth Adapter),并檢查其是否可用。若手機藍牙適配器可用,模塊將轉(zhuǎn)換為偵聽狀態(tài),啟動Accept Thread線程來偵聽防盜器藍牙設(shè)備(Bluetooth Device)的連接請求。若偵聽狀態(tài)下得到其他藍牙設(shè)備的連接請求,則偵聽線程的listenUsingRfcommWithServiceRecor() 函數(shù)將被喚醒,并嘗試建立藍牙Socket連接[9],此時模塊將轉(zhuǎn)換為已連接狀態(tài)。而當(dāng)模塊在偵聽狀態(tài)下得到前臺模塊(如主界面模塊等)發(fā)出的連接防盜器藍牙設(shè)備的請求時,模塊會轉(zhuǎn)換為請求連接狀態(tài)。在此狀態(tài)轉(zhuǎn)換時,會終止Accept Thread線程并啟動Connect Thread,Connect Thread線程則會調(diào)用安卓系統(tǒng)API中對應(yīng)藍牙設(shè)備類的createRfcommSocketToServiceRecord()方法來嘗試與防盜器藍牙建立Socket連接。若在請求連接時,得到了防盜器的響應(yīng),并成功創(chuàng)建了藍牙連接,則該模塊將轉(zhuǎn)換為已連接狀態(tài)。當(dāng)轉(zhuǎn)換為已連接狀態(tài)時,模塊將終止其他一切線程,并創(chuàng)建Connected Thread線程來維護連接。同時,通過該線程提供與防盜器藍牙設(shè)備消息的輸入和輸出操作。
藍牙設(shè)備服務(wù)模塊在提供了模式轉(zhuǎn)換的同時,封裝了一些常用的操作,來使前臺模塊更容易與該后臺模塊進行交互。下面是前臺模塊常用到的操作:
start (); // 啟動/重置服務(wù)
getState (); // 獲取模塊狀態(tài)
connectDevice (); // 連接指定設(shè)備
stop (); // 停止服務(wù)
write (); // 向設(shè)備寫入字符
read (); // 從設(shè)備讀取字符
connectionFailed (); // 當(dāng)連接請求失敗時的操作
connectionLost (); // 當(dāng)已建立的連接斷開時的操作
基于Android系統(tǒng)設(shè)計的應(yīng)用軟件功能界面截圖如圖7所示。
圖7 軟件功能界面
4 系統(tǒng)測試
打開控制軟件,與防盜器建立藍牙連接后,發(fā)送響鈴指令,防盜器主動報警;停止響鈴指令則可使防盜器停止報警。手機軟件對防盜器進行追蹤,可實現(xiàn)藍牙連接斷開后報警和超出安全距離后報警的功能,有效防止貴重物品的遺失。此外,點擊軟件“修改名稱”和“修改密碼”按鈕,并輸入新的名稱密碼,即可成功修改防盜器的名稱和藍牙連接密碼。
在空曠的環(huán)境下,對安卓應(yīng)用軟件的測距功能進行了測試。軟件除了可以手動設(shè)置外界環(huán)境參數(shù),還具有學(xué)習(xí)A和n值的功能,從而提高所測距離的精度。根據(jù)式(1),在手機和防盜器距離1 m時測得A值,然后根據(jù)距離2 m時的RSSI值計算出n值,則距離r與防盜器的RSSI值PR關(guān)系如式(2)所示:
[r=10[(A-PR)/(10?n)]] (2)
手機軟件所測得防盜器的距離與實際距離的對比如表2所示。
表2 手機與防盜器距離 m
由表2的數(shù)據(jù)可以看出,控制軟件在5 m以內(nèi)的范圍內(nèi)所測數(shù)據(jù)精度較高,在1 m以內(nèi);當(dāng)距離大于5 m時,軟件所算出的距離精度較差,但藍牙連接斷開后報警的功能可以彌補精度的不足。
5 結(jié) 論
本文設(shè)計的防盜系統(tǒng),體積小巧,通過智能手機控制即可實現(xiàn)防盜功能,操作方便。所設(shè)計的安卓應(yīng)用軟件操作界面簡潔,功能完善,5 m以內(nèi)的測距精度可達1 m以內(nèi)。后續(xù)可將本設(shè)計繼續(xù)優(yōu)化,將防盜器做的更小;同時也可增加GPS、GSM等模塊,實現(xiàn)可定位的小孩防丟器等更強功能的作品。此外,開發(fā)基于其他操作系統(tǒng)的控制軟件,可以使個人計算機和其他智能系統(tǒng)的手機控制防盜器,從而有更好的市場前景。
參考文獻
[1] 張立霞,周立余,馮新.基于 AVR 和 RFID 的電子防丟防盜器設(shè)計[J].現(xiàn)代電子技術(shù),2013,36(15):91?94.
[2] 王賀.談物聯(lián)網(wǎng)于智能手機應(yīng)用系統(tǒng)設(shè)計環(huán)節(jié)[J].河南科技,2013(4):23?24.
[3] 方震,趙湛,郭鵬,等.基于RSSI測距分析[J].傳感技術(shù)學(xué)報,2007,20(11):2526?2530.
(上接第48頁)
[4] Texas Instruments. MSP430x2xx family user's guide [EB/OL]. [2013?07?10]. http://www.ti.com.
[5] 沈建華,楊艷琴,翟驍曙.MSP430系列16位超低功耗單片機原理與應(yīng)用[M].北京:清華大學(xué)出版社,2004.
[6] 譚維熾.關(guān)于遙控指令錯誤概率的計算[J].遙測遙控,2003(4):63?65.
[7] Anon. Android Bluetooth connection:service discovery failed [EB/OL]. [2012?08?23]. http://developer.android.com/guide/topics/connectivity/bluetooth.
[8] 鄭昊.基于Arduino/Android 的藍牙通信系統(tǒng)設(shè)計與實現(xiàn)[D]. 武漢:湖北大學(xué),2012.
[9] 范晨燦.基于藍牙4.0傳輸?shù)腁ndroid手機心電監(jiān)護系統(tǒng)[D].杭州:浙江大學(xué),2013.
[10] 于敏芳,曾連連,張明哲.最小碼距為4比特、長度為12比特的復(fù)合正交碼集的生成方法[J].遙測遙控,2013(3):9?11.