基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)_第1頁(yè)
基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)_第2頁(yè)
基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)_第3頁(yè)
基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)_第4頁(yè)
基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    基于android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)    陳菁 李昱釗摘要:本設(shè)計(jì)利用現(xiàn)在已普及的智能手機(jī)為載體,設(shè)計(jì)了一款基于android平臺(tái)和低功耗藍(lán)牙技術(shù)的智能防丟器。防丟器由兩部分組成,一部分是與物件綁定在一起的從機(jī),一部分是用戶所持有的主機(jī)。當(dāng)從機(jī)和主機(jī)建立藍(lán)牙連接以后,防丟系統(tǒng)便正式開(kāi)始運(yùn)行。從機(jī)部分采用支持藍(lán)牙4.0ble的cc2540芯片,主機(jī)部分是常見(jiàn)的android手機(jī)。在安卓系統(tǒng)上完成對(duì)檢測(cè)軟件的編程。該軟件能夠通過(guò)手機(jī)與藍(lán)牙芯片之間的信號(hào)強(qiáng)度值來(lái)進(jìn)行報(bào)警。文章闡述了android藍(lán)牙連接的一些細(xì)節(jié)并對(duì)判斷邏輯的實(shí)現(xiàn)做出解釋。關(guān)

2、鍵詞:低功耗藍(lán)牙;防丟器;android系統(tǒng):tn925 :a :1007-9416(2018)07-0195-02隨著科技的進(jìn)步以及各種新鮮事物的沖擊,個(gè)人在單位時(shí)間內(nèi)處理的任務(wù)和信息量相較于過(guò)去有顯著的提高。在高強(qiáng)度的生活中,遺忘現(xiàn)象十分普遍。如何尋找遺忘的物件也成為人們生活中的一個(gè)難題,比如隨手一放的鑰匙,錢幣,飾品,還有信用卡,個(gè)人證件,耳機(jī)等等物品。設(shè)計(jì)一款專門針對(duì)細(xì)小物件的防丟器非常實(shí)用,防丟器可以通過(guò)與細(xì)小物件綁定在一起,當(dāng)物主和物件分離時(shí)提供報(bào)警,尋回等功能。本設(shè)計(jì)利用現(xiàn)在已普及的智能手機(jī)為載體,設(shè)計(jì)了一款基于android平臺(tái)和低功耗藍(lán)牙技術(shù)的智能防丟器。1 防丟器的功能實(shí)現(xiàn)

3、藍(lán)牙防丟器由兩部分組成。一部分為與物件捆綁在一起藍(lán)牙設(shè)備從機(jī),一部分為用戶隨身攜帶的藍(lán)牙設(shè)備主機(jī)。用戶與其防丟物件之間往往需要維持較近的距離,所以利用藍(lán)牙短距離無(wú)線通信這一特點(diǎn)使設(shè)計(jì)非常便利。首先,從機(jī)和主機(jī)之間要建立了藍(lán)牙配對(duì)連接,用戶通過(guò)主機(jī)搜索到正在廣播的從機(jī),在主機(jī)的配對(duì)表里選擇從機(jī)完成連接。當(dāng)從機(jī)與主機(jī)建立連接后,主機(jī)周期性地得到一個(gè)主從機(jī)之間的信號(hào)強(qiáng)度值。當(dāng)該信號(hào)強(qiáng)度值小于預(yù)設(shè)的信號(hào)強(qiáng)度閾值時(shí),主機(jī)啟動(dòng)報(bào)警,提醒用戶物件即將遺失。當(dāng)安卓手機(jī)檢測(cè)到信號(hào)強(qiáng)度過(guò)弱并報(bào)警時(shí),便通過(guò)gps記錄下此時(shí)的位置信息。若施主沒(méi)有聽(tīng)到報(bào)警聲,便可以根據(jù)這個(gè)位置記錄找到失物的大致位置,并實(shí)現(xiàn)尋回。此位置

4、信息還可以和一些地圖軟件的api相結(jié)合,在地圖上更加直觀地顯示出失物的位置。2 低功耗藍(lán)牙從機(jī)設(shè)計(jì)本設(shè)計(jì)的從機(jī)由cc2540藍(lán)牙芯片組成,實(shí)現(xiàn)簡(jiǎn)單的藍(lán)牙廣播功能。隨著智能手機(jī)的普及,市面上的大部分安卓手機(jī)都支持藍(lán)牙,但不是所有的安卓手機(jī)都能支持基于藍(lán)牙4.0的低功耗藍(lán)牙。所以主機(jī)選用搭載支持低功耗藍(lán)牙協(xié)議4.0的安卓手機(jī)(安卓4.3.1及以上)。每當(dāng)藍(lán)牙芯片向手機(jī)發(fā)送一個(gè)數(shù)據(jù)包,便會(huì)提供手機(jī)一個(gè)信號(hào)強(qiáng)度的估計(jì)值。本設(shè)計(jì)的主要過(guò)程便基于此實(shí)現(xiàn)1-3。2.1 cc2540軟件設(shè)計(jì)cc2540藍(lán)牙芯片的軟件由osal操作系統(tǒng)抽象層和硬件抽象層hal組成,osal操作系統(tǒng)抽象層是藍(lán)牙4.0ble協(xié)議棧

5、內(nèi)加入的一個(gè)小的操作系統(tǒng)。ble協(xié)議棧、profile以及所有應(yīng)用程序都是建立在osal的基礎(chǔ)上。硬件抽象層hal位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口。隱藏了硬件的具體細(xì)節(jié),方便軟件在各平臺(tái)上的移植并使得軟硬件測(cè)試功能成為可能4。2.1.1 低功耗藍(lán)牙協(xié)議棧的運(yùn)行流程簡(jiǎn)析在整個(gè)程序的main()函數(shù)中包含了整個(gè)程序的入口,低功耗藍(lán)牙協(xié)議棧的運(yùn)行流程大致如下:(1)初始化硬件。(2)初始化i/o板。(3)初始化hal驅(qū)動(dòng)。(4)初始化nv系統(tǒng)。(5)初始化操作系統(tǒng)。(6)使能中斷。(7)最后初始化電路板。(8)運(yùn)行osal操作系統(tǒng)。當(dāng)系統(tǒng)初始化后即進(jìn)入低功耗模式,若沒(méi)有任務(wù),則持續(xù)處于低功耗模式

6、。若有任務(wù)加入,則喚醒系統(tǒng),離開(kāi)低功耗模式,任務(wù)處理完成后,回到低功耗模式。2.1.2 低功耗藍(lán)牙實(shí)現(xiàn)低功耗的主要方法連接間隙:低功耗藍(lán)牙設(shè)備使用跳頻機(jī)制實(shí)現(xiàn)連接,即設(shè)備發(fā)送數(shù)據(jù)選用的信道是隨時(shí)間變化而變化的。設(shè)備之間可以通過(guò)鏈路層的數(shù)據(jù)交換來(lái)維持連接,而不用通過(guò)數(shù)據(jù)的接受和發(fā)送。從一次信道切換后收發(fā)數(shù)據(jù)到下一次信道切換收發(fā)數(shù)據(jù)之間的時(shí)間間隔叫連接間隔。通過(guò)設(shè)置較大的連接間隔可以明顯地節(jié)省功耗,而數(shù)據(jù)發(fā)送速度更慢。從機(jī)延遲:當(dāng)沒(méi)有數(shù)據(jù)數(shù)據(jù)可發(fā)送時(shí),從機(jī)便可以選擇跳過(guò)連接間隙,直到有數(shù)據(jù)發(fā)送,跳過(guò)間隙的數(shù)量有一定的限制,但通過(guò)跳過(guò)有限的連接間隙便可以極大地減小功耗的消耗。2.2 低功耗藍(lán)牙防丟器

7、從機(jī)的關(guān)鍵實(shí)現(xiàn)(1)設(shè)備的配置以及藍(lán)牙協(xié)議棧的初始化:選用cc2540模塊主要是作為與隨身物件綁定的跟蹤器,故芯片模塊的狀態(tài)設(shè)為從機(jī)。初始化配置文件gap為外部設(shè)備模式,設(shè)置從機(jī)為上電即廣播。(2)設(shè)置gap參數(shù)的部分代碼,設(shè)置gap特性,信號(hào)強(qiáng)度值的更新速度,以及廣播間隙的部分代碼。(3)根據(jù)rssi信號(hào)強(qiáng)度值計(jì)算兩設(shè)備之間的距離。根據(jù)大量的調(diào)查,發(fā)現(xiàn)只在有限范圍內(nèi),兩設(shè)備之間的距離才和信號(hào)強(qiáng)度值成不太標(biāo)準(zhǔn)的線性關(guān)系。計(jì)算距離的算法精確度并不高,而且距離比起信號(hào)強(qiáng)度值參考價(jià)值較低。所以經(jīng)過(guò)計(jì)算得出的兩設(shè)備之間的距離值只具有參考意義,并不運(yùn)用于實(shí)際的報(bào)警判斷。(4)將獲得的rssi信號(hào)強(qiáng)度值經(jīng)

8、過(guò)處理后發(fā)送到主機(jī)(安卓手機(jī)設(shè)備),rssi為信號(hào)強(qiáng)度值,是藍(lán)牙防丟器的主要參考數(shù)據(jù)。3 安卓手機(jī)端設(shè)計(jì)應(yīng)用程序的實(shí)現(xiàn)因?yàn)橐玫街挥衋ndroid 4.3以上版本才有的api,所以本設(shè)計(jì)軟件選用android4.3.1系統(tǒng)開(kāi)發(fā)。而搭載android4.3.1的設(shè)備可以是智能手機(jī),智能手表,智能電視等。智能手機(jī)相對(duì)其他安卓設(shè)備而言更加普及、更加方便攜帶,本軟件設(shè)計(jì)主要針對(duì)手機(jī)進(jìn)行適配5-7。3.1 手機(jī)軟件界面手機(jī)軟件界面分為兩部分:第一部分是主要是藍(lán)牙設(shè)備的掃描,和連接的建立。我們把它叫做設(shè)備掃面界面。在此頁(yè)面中,軟件掃描外部可連接的藍(lán)牙設(shè)備,建立一個(gè)可連接設(shè)備的設(shè)備目錄,在其中顯示每一個(gè)可連

9、接設(shè)備的設(shè)備名,uuid地址,rssi信號(hào)強(qiáng)度值和估算的距離值。界面中的顯示設(shè)備的滾動(dòng)目錄通過(guò)定義viewholder類來(lái)輔助實(shí)現(xiàn)。目錄通過(guò)getview方法來(lái)獲取將要顯示的項(xiàng),而在getview方法中,主要通過(guò)findviewbyid方法來(lái)查找,findviewbyid是一個(gè)基于樹(shù)的查找方法,對(duì)時(shí)間的消耗非常大,而且要從xml布局文件中生成view對(duì)象。所以當(dāng)需要列出的項(xiàng)變得很多時(shí),軟件的運(yùn)行速度將會(huì)大大降低。viewholder主要針對(duì)可以滾動(dòng)顯示的目錄,通過(guò)優(yōu)化當(dāng)目錄項(xiàng)滾動(dòng)到屏幕外時(shí)的所進(jìn)行的操作來(lái)大大降低系統(tǒng)消耗。手機(jī)界面設(shè)計(jì)的第二部分:手機(jī)和藍(lán)牙芯片建立連接后顯示信號(hào)強(qiáng)度值,連接狀態(tài)

10、等信息:在上面的可連接設(shè)備目錄中選擇一個(gè)設(shè)備后,就進(jìn)入正式的監(jiān)測(cè)。該界面中主要顯示的是一些監(jiān)測(cè)得到的數(shù)據(jù)信息。該部分主要由一個(gè)可以滾動(dòng)的scrollview組成。在這個(gè)scrollview中滾動(dòng)顯示一些實(shí)時(shí)檢測(cè)到的數(shù)據(jù)。3.2 android手機(jī)中的service和activityactivity包括用戶正在訪問(wèn)的gui和創(chuàng)建gui時(shí)需要運(yùn)行的程序,而gui和這些程序是相互阻塞的。當(dāng)一個(gè)activity中運(yùn)行的代碼時(shí)間復(fù)雜度太大時(shí),這段代碼就會(huì)因?yàn)殚L(zhǎng)期阻塞gui而使界面崩潰。所以需要長(zhǎng)時(shí)間運(yùn)行的程序必須放入每個(gè)activity所對(duì)應(yīng)的service當(dāng)中。service是獨(dú)立于activity運(yùn)

11、行的,兩者可以相互通信。而藍(lán)牙建立連接后不斷傳輸數(shù)據(jù)的過(guò)程是一個(gè)長(zhǎng)時(shí)間的過(guò)程。所以必須建立一個(gè)為藍(lán)牙傳輸數(shù)據(jù)服務(wù)的service。3.3 手機(jī)端和設(shè)備藍(lán)牙連接的建立8-9ble藍(lán)牙通過(guò)gatt建立連接。建立連接后便開(kāi)始數(shù)據(jù)的傳輸,藍(lán)牙在后臺(tái)傳輸?shù)玫降臄?shù)據(jù),通過(guò)傳遞消息控制activity的實(shí)時(shí)更新。軟件流程設(shè)計(jì)如下:(1)初始化藍(lán)牙適配器;(2)打開(kāi)藍(lán)牙:在bluetoothclass類中,定義了一些回調(diào)函數(shù),這些回調(diào)函數(shù)返回了手機(jī)和藍(lán)牙設(shè)備之間的通信結(jié)果;(3)連接狀態(tài)改變的回調(diào),通過(guò)此回調(diào)可以得知設(shè)備是否連接:(4)發(fā)現(xiàn)服務(wù)的回調(diào);(5)讀操作的回調(diào);(6)數(shù)據(jù)返回的回調(diào):在bluetoo

12、thcalss類中連接狀態(tài)回調(diào)函數(shù)onconnectionstatechange中打開(kāi)timertask線程,周期性地讀取rssi信號(hào)強(qiáng)度值。藍(lán)牙防丟器的從機(jī)會(huì)不斷向主機(jī)發(fā)送rssi的值,作為主機(jī)的手機(jī)通過(guò)android的readremoterssi方法來(lái)實(shí)現(xiàn)對(duì)rssi值的讀?。海?)通過(guò)回調(diào)函數(shù)onreadremoterssi決定當(dāng)收到rssi值的時(shí)候該做什么工作;(8)在安卓中intent對(duì)象負(fù)責(zé)完成在activity和service之間以及activity之間的消息傳遞,該函數(shù)通過(guò)intent將藍(lán)牙進(jìn)程得到的rssi信息傳給主進(jìn)程activity進(jìn)行處理。3.4 手機(jī)端報(bào)警的實(shí)現(xiàn)接受藍(lán)牙

13、線程傳輸過(guò)來(lái)的rssi值,當(dāng)rssi值大于允許范圍時(shí),手機(jī)便將此狀態(tài)視作危險(xiǎn)狀態(tài),開(kāi)始報(bào)警。但這種方法存在很大的誤差:第一,從機(jī)對(duì)rssi值的估計(jì)存在一定的誤差,很可能由于天氣,溫度等因素而發(fā)生較大的差異。第二,如果物品攜帶者正在移動(dòng),那么在手機(jī)和防丟物品之間就很有可能出現(xiàn)障礙物。障礙物將干擾設(shè)備報(bào)送的信號(hào)強(qiáng)度值,從而對(duì)判斷產(chǎn)生影響。為了減少由上述原因造成的誤差,當(dāng)收到設(shè)備傳送過(guò)來(lái)的rssi值時(shí)我們并不立即對(duì)其做出判斷。而是將每次收到的rssi值存到一個(gè)緩存數(shù)組里面。當(dāng)緩存數(shù)組存滿十個(gè)值后。對(duì)這十個(gè)值取一個(gè)平均數(shù),把這個(gè)平均值作為判斷的主要依據(jù)。經(jīng)過(guò)測(cè)試這樣將極大地減少誤差,使判斷更加準(zhǔn)確。當(dāng)

14、平均值超過(guò)指定的值時(shí),打開(kāi)音樂(lè)報(bào)警線程,當(dāng)平均值在允許的范圍內(nèi)時(shí),關(guān)閉報(bào)警線程。4 防丟器的測(cè)試cc2540芯片的程序編寫(xiě)在iar embedded workbench中進(jìn)行。這是一款由iar公司提供的一款c語(yǔ)言編譯器,支持眾多的微處理器同時(shí)也支持cc2540低功耗藍(lán)牙芯片,而手機(jī)端程序的編寫(xiě)與調(diào)試則是在eclipse平臺(tái)上進(jìn)行。eclipse是一款基于java的開(kāi)源開(kāi)發(fā)環(huán)境,通過(guò)安裝android系統(tǒng)的支持插件,結(jié)合android sdk就可以開(kāi)發(fā)安卓程序。測(cè)試過(guò)程以及結(jié)果:將cc2540芯片通過(guò)配套仿真器燒錄好程序,通上電以后與細(xì)小物件綁定在一起。智能手機(jī)用數(shù)據(jù)線與電腦連接,在eclips

15、e上將調(diào)試好的程序下載到手機(jī)上進(jìn)行安裝。一切準(zhǔn)備就緒后開(kāi)始測(cè)試防丟器。通過(guò)手機(jī)在打開(kāi)藍(lán)牙的情況下打開(kāi)軟件,軟件中出現(xiàn)滾動(dòng)列表,顯示搜索到的正在廣播的藍(lán)牙設(shè)備。選擇我們的cc2540藍(lán)牙芯片建立連接。幾秒后,連接建立成功,手機(jī)進(jìn)入監(jiān)測(cè)報(bào)警模式。進(jìn)入報(bào)警模式后,cc2540不斷發(fā)送rssi值到手機(jī)上。同時(shí),手機(jī)屏幕上也滾動(dòng)顯示每一次收到的rssi值以及根據(jù)rssi值計(jì)算出來(lái)的距離值。移動(dòng)手機(jī),當(dāng)手機(jī)在安全范圍內(nèi)時(shí),不報(bào)警。將手機(jī)移動(dòng)至遠(yuǎn)處,發(fā)現(xiàn)當(dāng)手機(jī)與物件之間的距離過(guò)遠(yuǎn)時(shí),手機(jī)開(kāi)始報(bào)警。5 結(jié)語(yǔ)隨著藍(lán)牙4.0的發(fā)布,低功耗藍(lán)牙便成為短距離無(wú)線通信的首要之選。低功耗藍(lán)牙可以提高續(xù)航時(shí)間,而隨身物品恰好也需要長(zhǎng)時(shí)間和主人在一起,選用藍(lán)牙技術(shù)提供的支持極大地方便了防丟器的設(shè)計(jì)。防丟器設(shè)計(jì)的關(guān)鍵問(wèn)題是如何防丟,怎么判斷物件是否處于遺失狀態(tài)。我們選用手機(jī)與設(shè)備之間的信號(hào)強(qiáng)度值來(lái)判斷,因?yàn)樾盘?hào)強(qiáng)度值隨距離的增大而減弱,當(dāng)物主與其物件之間的距離較遠(yuǎn)時(shí),可以看作物主已經(jīng)遺失了該物件,實(shí)驗(yàn)證明,通過(guò)這樣一種信號(hào)弱則報(bào)警的簡(jiǎn)單判斷是可以應(yīng)對(duì)大多數(shù)的情況的,設(shè)計(jì)具有良好的實(shí)用性。參考文獻(xiàn)1包健.基于安卓系統(tǒng)的智能藍(lán)牙音箱設(shè)計(jì)研究d.昆明理工大學(xué),2013.2霍丙乾.基于藍(lán)牙4.0的防丟系統(tǒng)的研究與設(shè)計(jì)d.北京郵電大學(xué),2015.3王磊,基于藍(lán)牙4.0的防丟系統(tǒng)的研究與設(shè)計(jì)d.太原理工大學(xué),2013.4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論