羸彩彩票

深圳市組創微電子有限公司
銷售部:158 1687 4032采購部:0755-8299 4126行政部:0755-8299 4126
咨詢電話
0755-8299 4141

藍牙產品

客戶成功故事與項目成功案例

智能藍牙防丟器控制板設計


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

一、防丟器的功能實現方案

藍牙防丟器由兩部分組成。一部分為與物件捆綁在一起藍牙設備從機,一部分為用戶隨身攜帶的藍牙設備主機。用戶與其防丟物件之間往往需要維持較近的距離,所以利用藍牙短距離無線通信這一特點使設計非常便利。首先,從機和主機之間要建立了藍牙配對連接,用戶通過主機搜索到正在廣播的從機,在主機的配對表里選擇從機完成連接。當從機與主機建立連接后,主機周期性地得到一個主從機之間的信號強度值。當該信號強度值小于預設的信號強度閾值時,主機啟動報警,提醒用戶物件即將遺失。

當安卓手機檢測到信號強度過弱并報警時,便通過GPS記錄下此時的位置信息。若施主沒有聽到報警聲,便可以根據這個位置記錄找到失物的大致位置,并實現尋回。此位置信息還可以和一些地圖軟件的API相結合,在地圖上更加直觀地顯示出失物的位置。

二、低功耗藍牙從機設計

本設計的從機由CC2540藍牙芯片組成,實現簡單的藍牙廣播功能。隨著智能手機的普及,市面上的大部分安卓手機都支持藍牙,但不是所有的安卓手機都能支持基于藍牙4.0的低功耗藍牙。所以主機選用搭載支持低功耗藍牙協議4.0的安卓手機(安卓4.3.1及以上)。每當藍牙芯片向手機發送一個數據包,便會提供手機一個信號強度的估計值。本設計的主要過程便基于此實現。

2.1 CC2540軟件設計

CC2540藍牙芯片的軟件由OSAL操作系統抽象層和硬件抽象層HAL組成,OSAL操作系統抽象層是藍牙4.0BLE協議棧內加入的一個小的操作系統。BLE協議棧、profile以及所有應用程序都是建立在OSAL的基礎上。硬件抽象層HAL位于操作系統內核與硬件電路之間的接口。隱藏了硬件的具體細節,方便軟件在各平臺上的移植并使得軟硬件測試功能成為可能。

低功耗藍牙協議棧的運行流程簡析:在整個程序的main()函數中包含了整個程序的入口,低功耗藍牙協議棧的運行流程大致如下:(1)初始化硬件。(2)初始化I/O板。(3)初始化HAL驅動。(4)初始化NV系統。(5)初始化操作系統。(6)使能中斷。(7)最后初始化電路板。(8)運行OSAL操作系統。當系統初始化后即進入低功耗模式,若沒有任務,則持續處于低功耗模式。若有任務加入,則喚醒系統,離開低功耗模式,任務處理完成后,回到低功耗模式。

低功耗藍牙實現低功耗的主要方法:連接間隙:低功耗藍牙設備使用跳頻機制實現連接,即設備發送數據選用的信道是隨時間變化而變化的。設備之間可以通過鏈路層的數據交換來維持連接,而不用通過數據的接受和發送。從一次信道切換后收發數據到下一次信道切換收發數據之間的時間間隔叫連接間隔。通過設置較大的連接間隔可以明顯地節省功耗,而數據發送速度更慢。

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

2.2低功耗藍牙防丟器從機的關鍵實現

(1)設備的配置以及藍牙協議棧的初始化:選用CC2540模塊主要是作為與隨身物件綁定的跟蹤器,故芯片模塊的狀態設為從機。初始化配置文件GAP為外部設備模式,設置從機為上電即廣播。

(2)設置GAP參數的部分代碼,設置GAP特性,信號強度值的更新速度,以及廣播間隙的部分代碼。

(3)根據Rssi信號強度值計算兩設備之間的距離。根據大量的調查,發現只在有限范圍內,兩設備之間的距離才和信號強度值成不太標準的線性關系。計算距離的算法精確度并不高,而且距離比起信號強度值參考價值較低。所以經過計算得出的兩設備之間的距離值只具有參考意義,并不運用于實際的報警判斷。

(4)將獲得的Rssi信號強度值經過處理后發送到主機(安卓手機設備),Rssi為信號強度值,是藍牙防丟器的主要參考數據。

三、防丟器安卓手機端設計

因為要用到只有Android 4.3以上版本才有的API,所以本設計軟件選用Android4.3.1系統開發。而搭載Android4.3.1的設備可以是智能手機,智能手表,智能電視等。智能手機相對其他安卓設備而言更加普及、更加方便攜帶,本軟件設計主要針對手機進行適配。

3.1手機軟件界面

手機軟件界面分為兩部分:第一部分是主要是藍牙設備的掃描,和連接的建立。我們把它叫做設備掃面界面。在此頁面中,軟件掃描外部可連接的藍牙設備,建立一個可連接設備的設備目錄,在其中顯示每一個可連接設備的設備名,UUID地址,Rssi信號強度值和估算的距離值。界面中的顯示設備的滾動目錄通過定義ViewHolder類來輔助實現。目錄通過getView方法來獲取將要顯示的項,而在getView方法中,主要通過findViewById方法來查找,findViewById是一個基于樹的查找方法,對時間的消耗非常大,而且要從XML布局文件中生成View對象。所以當需要列出的項變得很多時,軟件的運行速度將會大大降低。ViewHolder主要針對可以滾動顯示的目錄,通過優化當目錄項滾動到屏幕外時的所進行的操作來大大降低系統消耗。

手機界面設計的第二部分:手機和藍牙芯片建立連接后顯示信號強度值,連接狀態等信息:在上面的可連接設備目錄中選擇一個設備后,就進入正式的監測。該界面中主要顯示的是一些監測得到的數據信息。該部分主要由一個可以滾動的ScrollView組成。在這個ScrollView中滾動顯示一些實時檢測到的數據。

3.2 Android手機中的Service和Activity

Activity包括用戶正在訪問的GUI和創建GUI時需要運行的程序,而GUI和這些程序是相互阻塞的。當一個Activity中運行的代碼時間復雜度太大時,這段代碼就會因為長期阻塞GUI而使界面崩潰。所以需要長時間運行的程序必須放入每個Activity所對應的Service當中。Service是獨立于Activity運行的,兩者可以相互通信。而藍牙建立連接后不斷傳輸數據的過程是一個長時間的過程。所以必須建立一個為藍牙傳輸數據服務的Service。

3.3手機端和設備藍牙連接的建立

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

3.4手機端報警的實現

接受藍牙線程傳輸過來的Rssi值,當Rssi值大于允許范圍時,手機便將此狀態視作危險狀態,開始報警。但這種方法存在很大的誤差:第一,從機對Rssi值的估計存在一定的誤差,很可能由于天氣,溫度等因素而發生較大的差異。第二,如果物品攜帶者正在移動,那么在手機和防丟物品之間就很有可能出現障礙物。障礙物將干擾設備報送的信號強度值,從而對判斷產生影響。為了減少由上述原因造成的誤差,當收到設備傳送過來的Rssi值時我們并不立即對其做出判斷。而是將每次收到的Rssi值存到一個緩存數組里面。當緩存數組存滿十個值后。對這十個值取一個平均數,把這個平均值作為判斷的主要依據。經過測試這樣將極大地減少誤差,使判斷更加準確。當平均值超過指定的值時,打開音樂報警線程,當平均值在允許的范圍內時,關閉報警線程。

四、防丟器的測試

CC2540芯片的程序編寫在IAR Embedded Workbench中進行。這是一款由IAR公司提供的一款C語言編譯器,支持眾多的微處理器同時也支持CC2540低功耗藍牙芯片,而手機端程序的編寫與調試則是在eclipse平臺上進行。eclipse是一款基于java的開源開發環境,通過安裝Android系統的支持插件,結合Android SDK就可以開發安卓程序。

測試過程以及結果:將CC2540芯片通過配套仿真器燒錄好程序,通上電以后與細小物件綁定在一起。智能手機用數據線與電腦連接,在eclipse上將調試好的程序下載到手機上進行安裝。一切準備就緒后開始測試防丟器。通過手機在打開藍牙的情況下打開軟件,軟件中出現滾動列表,顯示搜索到的正在廣播的藍牙設備。選擇我們的CC2540藍牙芯片建立連接。幾秒后,連接建立成功,手機進入監測報警模式。進入報警模式后,CC2540不斷發送Rssi值到手機上。同時,手機屏幕上也滾動顯示每一次收到的Rssi值以及根據Rssi值計算出來的距離值。移動手機,當手機在安全范圍內時,不報警。將手機移動至遠處,發現當手機與物件之間的距離過遠時,手機開始報警。

結語

隨著藍牙4.2的發布,低功耗藍牙便成為短距離無線通信的首要之選。低功耗藍牙可以提高續航時間,而隨身物品恰好也需要長時間和主人在一起,選用藍牙技術提供的支持極大地方便了防丟器的設計。防丟器設計的關鍵問題是如何防丟,怎么判斷物件是否處于遺失狀態。我們選用手機與設備之間的信號強度值來判斷,因為信號強度值隨距離的增大而減弱,當物主與其物件之間的距離較遠時,可以看作物主已經遺失了該物件,實驗證明,通過這樣一種信號弱則報警的簡單判斷是可以應對大多數的情況的,設計具有良好的實用性。

以上就是我們深圳市組創微電子有限公司為您介紹的基于Android平臺的智能藍牙防丟器的設計開發示例。如果您有藍牙耳機方案開發需求,可以放心交給我們。我們代理多種單片機、語音芯片、雙模藍牙IC、wifi芯片。品牌有松翰單片機、應廣單片機、杰理藍牙、安凱藍牙、全志、瑞昱(realtek)。我們的技術服務范圍有:PCB設計、單片機開發、藍牙方案、軟硬件定制開發、APP開發、小程序開發、微信公眾號開發等。還可以承接智能電子產品方案設計、生活電器開發、美容儀器研發、物聯網平臺應用、智能家居控制系統、TWS耳機、藍牙耳機音箱開發、兒童益智玩具方案開發、電子教育產品方案設計等。