• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android平臺(tái)的智能藍(lán)牙防丟器的設(shè)計(jì)

      2018-10-10 11:11:16陳菁李昱釗
      關(guān)鍵詞:Android系統(tǒng)

      陳菁 李昱釗

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

      關(guān)鍵詞:低功耗藍(lán)牙;防丟器;Android系統(tǒng)

      中圖分類號(hào):TN925 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)07-0195-02

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

      1 防丟器的功能實(shí)現(xiàn)

      藍(lán)牙防丟器由兩部分組成。一部分為與物件捆綁在一起藍(lán)牙設(shè)備從機(jī),一部分為用戶隨身攜帶的藍(lán)牙設(shè)備主機(jī)。用戶與其防丟物件之間往往需要維持較近的距離,所以利用藍(lán)牙短距離無線通信這一特點(diǎn)使設(shè)計(jì)非常便利。首先,從機(jī)和主機(jī)之間要建立了藍(lán)牙配對(duì)連接,用戶通過主機(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)度過弱并報(bào)警時(shí),便通過GPS記錄下此時(shí)的位置信息。若施主沒有聽到報(bào)警聲,便可以根據(jù)這個(gè)位置記錄找到失物的大致位置,并實(shí)現(xiàn)尋回。此位置信息還可以和一些地圖軟件的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ì)的主要過程便基于此實(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é)議棧內(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)入低功耗模式,若沒有任務(wù),則持續(xù)處于低功耗模式。若有任務(wù)加入,則喚醒系統(tǒng),離開低功耗模式,任務(wù)處理完成后,回到低功耗模式。

      2.1.2 低功耗藍(lán)牙實(shí)現(xiàn)低功耗的主要方法

      連接間隙:低功耗藍(lán)牙設(shè)備使用跳頻機(jī)制實(shí)現(xiàn)連接,即設(shè)備發(fā)送數(shù)據(jù)選用的信道是隨時(shí)間變化而變化的。設(shè)備之間可以通過鏈路層的數(shù)據(jù)交換來維持連接,而不用通過數(shù)據(jù)的接受和發(fā)送。從一次信道切換后收發(fā)數(shù)據(jù)到下一次信道切換收發(fā)數(shù)據(jù)之間的時(shí)間間隔叫連接間隔。通過設(shè)置較大的連接間隔可以明顯地節(jié)省功耗,而數(shù)據(jù)發(fā)送速度更慢。

      從機(jī)延遲:當(dāng)沒有數(shù)據(jù)數(shù)據(jù)可發(fā)送時(shí),從機(jī)便可以選擇跳過連接間隙,直到有數(shù)據(jù)發(fā)送,跳過間隙的數(shù)量有一定的限制,但通過跳過有限的連接間隙便可以極大地減小功耗的消耗。

      2.2 低功耗藍(lán)牙防丟器從機(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)過計(jì)算得出的兩設(shè)備之間的距離值只具有參考意義,并不運(yùn)用于實(shí)際的報(bào)警判斷。

      (4)將獲得的Rssi信號(hào)強(qiáng)度值經(jīng)過處理后發(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)開發(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è)備掃面界面。在此頁面中,軟件掃描外部可連接的藍(lán)牙設(shè)備,建立一個(gè)可連接設(shè)備的設(shè)備目錄,在其中顯示每一個(gè)可連接設(shè)備的設(shè)備名,UUID地址,Rssi信號(hào)強(qiáng)度值和估算的距離值。界面中的顯示設(shè)備的滾動(dòng)目錄通過定義ViewHolder類來輔助實(shí)現(xiàn)。目錄通過getView方法來獲取將要顯示的項(xiàng),而在getView方法中,主要通過findViewById方法來查找,findViewById是一個(gè)基于樹的查找方法,對(duì)時(shí)間的消耗非常大,而且要從XML布局文件中生成View對(duì)象。所以當(dāng)需要列出的項(xiàng)變得很多時(shí),軟件的運(yùn)行速度將會(huì)大大降低。ViewHolder主要針對(duì)可以滾動(dòng)顯示的目錄,通過優(yōu)化當(dāng)目錄項(xiàng)滾動(dòng)到屏幕外時(shí)的所進(jìn)行的操作來大大降低系統(tǒng)消耗。

      手機(jī)界面設(shè)計(jì)的第二部分:手機(jī)和藍(lán)牙芯片建立連接后顯示信號(hào)強(qiáng)度值,連接狀態(tài)等信息:在上面的可連接設(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和Activity

      Activity包括用戶正在訪問的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)行的,兩者可以相互通信。而藍(lán)牙建立連接后不斷傳輸數(shù)據(jù)的過程是一個(gè)長(zhǎng)時(shí)間的過程。所以必須建立一個(gè)為藍(lán)牙傳輸數(shù)據(jù)服務(wù)的Service。

      3.3 手機(jī)端和設(shè)備藍(lán)牙連接的建立[8-9]

      BLE藍(lán)牙通過GATT建立連接。建立連接后便開始數(shù)據(jù)的傳輸,藍(lán)牙在后臺(tái)傳輸?shù)玫降臄?shù)據(jù),通過傳遞消息控制Activity的實(shí)時(shí)更新。軟件流程設(shè)計(jì)如下:(1)初始化藍(lán)牙適配器;(2)打開藍(lán)牙:在BlueToothClass類中,定義了一些回調(diào)函數(shù),這些回調(diào)函數(shù)返回了手機(jī)和藍(lán)牙設(shè)備之間的通信結(jié)果;(3)連接狀態(tài)改變的回調(diào),通過此回調(diào)可以得知設(shè)備是否連接:(4)發(fā)現(xiàn)服務(wù)的回調(diào);(5)讀操作的回調(diào);(6)數(shù)據(jù)返回的回調(diào):在BlueToothCalss類中連接狀態(tài)回調(diào)函數(shù)onConnectionStateChange中打開TimerTask線程,周期性地讀取Rssi信號(hào)強(qiáng)度值。藍(lán)牙防丟器的從機(jī)會(huì)不斷向主機(jī)發(fā)送Rssi的值,作為主機(jī)的手機(jī)通過Android的readRemoteRssi方法來實(shí)現(xiàn)對(duì)Rssi值的讀取:(7)通過回調(diào)函數(shù)onReadRemoteRssi決定當(dāng)收到Rssi值的時(shí)候該做什么工作;(8)在安卓中Intent對(duì)象負(fù)責(zé)完成在Activity和Service之間以及Activity之間的消息傳遞,該函數(shù)通過Intent將藍(lán)牙進(jìn)程得到的Rssi信息傳給主進(jìn)程Activity進(jìn)行處理。

      3.4 手機(jī)端報(bào)警的實(shí)現(xiàn)

      接受藍(lán)牙線程傳輸過來的Rssi值,當(dāng)Rssi值大于允許范圍時(shí),手機(jī)便將此狀態(tài)視作危險(xiǎn)狀態(tà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è)備傳送過來的Rssi值時(shí)我們并不立即對(duì)其做出判斷。而是將每次收到的Rssi值存到一個(gè)緩存數(shù)組里面。當(dāng)緩存數(shù)組存滿十個(gè)值后。對(duì)這十個(gè)值取一個(gè)平均數(shù),把這個(gè)平均值作為判斷的主要依據(jù)。經(jīng)過測(cè)試這樣將極大地減少誤差,使判斷更加準(zhǔn)確。當(dāng)平均值超過指定的值時(shí),打開音樂報(bào)警線程,當(dāng)平均值在允許的范圍內(nèi)時(shí),關(guān)閉報(bào)警線程。

      4 防丟器的測(cè)試

      CC2540芯片的程序編寫在IAR Embedded Workbench中進(jìn)行。這是一款由IAR公司提供的一款C語言編譯器,支持眾多的微處理器同時(shí)也支持CC2540低功耗藍(lán)牙芯片,而手機(jī)端程序的編寫與調(diào)試則是在eclipse平臺(tái)上進(jìn)行。eclipse是一款基于java的開源開發(fā)環(huán)境,通過安裝Android系統(tǒng)的支持插件,結(jié)合Android SDK就可以開發(fā)安卓程序。

      測(cè)試過程以及結(jié)果:將CC2540芯片通過配套仿真器燒錄好程序,通上電以后與細(xì)小物件綁定在一起。智能手機(jī)用數(shù)據(jù)線與電腦連接,在eclipse上將調(diào)試好的程序下載到手機(jī)上進(jìn)行安裝。一切準(zhǔn)備就緒后開始測(cè)試防丟器。通過手機(jī)在打開藍(lán)牙的情況下打開軟件,軟件中出現(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ì)算出來的距離值。移動(dòng)手機(jī),當(dāng)手機(jī)在安全范圍內(nèi)時(shí),不報(bào)警。將手機(jī)移動(dòng)至遠(yuǎn)處,發(fā)現(xiàn)當(dāng)手機(jī)與物件之間的距離過遠(yuǎn)時(shí),手機(jī)開始報(bào)警。

      5 結(jié)語

      隨著藍(lán)牙4.0的發(fā)布,低功耗藍(lán)牙便成為短距離無線通信的首要之選。低功耗藍(lán)牙可以提高續(xù)航時(shí)間,而隨身物品恰好也需要長(zhǎng)時(shí)間和主人在一起,選用藍(lán)牙技術(shù)提供的支持極大地方便了防丟器的設(shè)計(jì)。防丟器設(shè)計(jì)的關(guān)鍵問題是如何防丟,怎么判斷物件是否處于遺失狀態(tài)。我們選用手機(jī)與設(shè)備之間的信號(hào)強(qiáng)度值來判斷,因?yàn)樾盘?hào)強(qiáng)度值隨距離的增大而減弱,當(dāng)物主與其物件之間的距離較遠(yuǎn)時(shí),可以看作物主已經(jīng)遺失了該物件,實(shí)驗(yàn)證明,通過這樣一種信號(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]葉冬,謝東力.無線防丟器設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2017,(8):52.

      [5]顏俊杰.基于WIFI的室內(nèi)定位技術(shù)研究[D].華南理工大學(xué),2013.

      [6]羅瑋.一種新興的藍(lán)牙技術(shù)—超低功耗藍(lán)牙技術(shù)[J].現(xiàn)在電信科技,2010,(10):31-34.

      [7]歐陽駿,陳子龍,黃寧淋.藍(lán)牙4.0BLE開發(fā)完全手冊(cè)—物聯(lián)網(wǎng)開發(fā)技術(shù)實(shí)戰(zhàn)[M].化學(xué)工業(yè)出版社,2016.

      [8]李曉.基于Android平臺(tái)的手持終端應(yīng)用功能開發(fā)與設(shè)計(jì)[D].湖北大學(xué),2010.

      [9]王長(zhǎng)青.Android智能穿戴設(shè)備開發(fā)指南[M].人民郵電出版社.

      猜你喜歡
      Android系統(tǒng)
      掌游西塘APP設(shè)計(jì)與實(shí)現(xiàn)
      基于污點(diǎn)傳播動(dòng)態(tài)分析的Android安全系統(tǒng)研究
      Android系統(tǒng)上的移動(dòng)互聯(lián)網(wǎng)集成平臺(tái)開發(fā)機(jī)制
      Android系統(tǒng)核心管理工具設(shè)計(jì)與實(shí)現(xiàn)
      Android下的機(jī)械式電表數(shù)字識(shí)別技術(shù)研究
      基于Android系統(tǒng)的掌上班級(jí)課表與學(xué)生考勤管理系統(tǒng)
      基于GPS和iBeacon的智能校園信息發(fā)布平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
      基于增強(qiáng)現(xiàn)實(shí)技術(shù)的導(dǎo)航系統(tǒng)研究
      基于Android的溫室智能視頻監(jiān)控系統(tǒng)研究
      面向移動(dòng)終端的語音簽到系統(tǒng)
      皮山县| 渝中区| 广宁县| 沅陵县| 宣化县| 山东| 土默特左旗| 台山市| 黎川县| 五河县| 万安县| 宁乡县| 平山县| 阜宁县| 濉溪县| 庐江县| 章丘市| 红安县| 会泽县| 镇康县| 垫江县| 新邵县| 北流市| 嘉黎县| 东兴市| 正安县| 松溪县| 涿州市| 西昌市| 乐陵市| 云霄县| 巴里| 新丰县| 阿巴嘎旗| 玛多县| 宣恩县| 滕州市| 察哈| 东方市| 安阳县| 乌兰察布市|