2023年1月27日 星期五

Android Studio - 藍牙低功耗(BLE)設備連接例子(九十九)

Android Studio - 藍牙低功耗(BLE)設備連接例子(九十九):

藍牙低功耗(Bluetooth Low Energy / BLE)連接方法和步驟是有點複習,所以利用下面的例子來描述如何連接藍牙低功耗(BLE)?

連接實現的步驟:
  1. 通過掃描,試圖發現新設備
  2. 確認發現的設備沒有而已軟體,也沒有處於鎖定狀態
  3. 發送 Device Address 地址
  4. 收到並解讀待配對設備發送過來的資料
  5. 建立並保存連接

藍牙低功耗(BLE)的連接
例: 手機 A(Observer)要跟設備 B 建立連接之前,設備 B 需要先進行廣播,即設備 B(Advertiser)不斷發送如下廣播信號,T 為廣播間隔。每發送一次廣播包,我們稱其為一次廣播事件(Advertising Event),因此 T 也稱為廣播事件間隔。藍牙晶片只有在廣播事件期間才打開射頻模組,這個時候功耗比較高,其餘時間藍牙晶片都處於 idle 狀態,因此平均功耗非常低。

設備 B 不斷發送廣播信號給手機(Observer),如果手機不開啟掃描視窗,手機是收不到設備 B 的廣播的,不僅手機要開啟射頻接收視窗,而且只有手機的射頻接收視窗跟廣播發送的發射視窗匹配成功,而且廣播射頻通道和手機掃描射頻通道是同一個通道,手機才能收到設備 B 的廣播信號。

中心(Central/Scanner)和外圍設備(Peripheral/Advertiser)的廣播信號
建立連接(Connection Establishment):
  • 根據藍牙規格規定,Advertiser 發送完一個廣播包之後150us(T_IFS),Advertiser 必須開啟一段時間的射頻Rx視窗,以接收來自 Observer 的資料包。 Observer 就可以在這段時間裡給 Advertiser 發送連接請求。
  • 同步手機和設備的時鐘,也就是說,設備每收到手機發來的一個包,都會把自己的時序原點重新設置,以跟手機同步。
  • 告訴設備你現在可以傳資料給我了。連接成功後,BLE 通信將變成主從模式,因此把連接發起者(手機)稱為 Master 或者 Central,把被連接者(之前的 Advertiser)稱為 Slave 或者 Peripheral。BLE 通信之所以為主從模式,是因為 Slave 不能隨性給 Master 發資訊,它只有等到 Master 給它發了一個 Packet 後,然後才能在規定的時間把自己的資料回傳給 Master。
  • 連接成功後,Master 和 Slave在每一個 Connection Interval開始的時候,都必須交互一次,即 Master 給 Slave 發一個包,Slave 再給 Master 發一個包,整個交互過程稱為一個 Connection Event 或者 Gap Event。。Master 不可能時時刻刻都有資料發給 Slave,所以 Master 大部分時候都是發的空包(Empty Packet)給 Slave。同樣 Slave 也不是時時刻刻都有資料給 Master,因此 Slave 回復給 Master 的包大部分時候也是空包。另外在一個 Connection Event 期間,Master 也可以發多個包給 Slave,以提高吞吐率。

中心(Central/Scanner)和外圍設備(Peripheral/Advertiser)的連接訊號
BLE 裝置位址 (Device Address) :

在通訊系統當中,Device Address 是用來唯一辨識一個物理設備的,像是 TCP/IP 中的 MAC Address, Bluetooth Classic 的 Bluetooth Device Address。對於 Device Address 來說一個很重要的特性就是唯一性,否則很可能會造成很多問題。
Public Address 屬於一種 48-bit 的 MA-L 類型地址,它的結構為:NN:NN:NN:NN:NN:NN。其中前三個 byte 使用 OUI(Organizationally Unique Identifier),後三個 byte 自由分配。OUI 代表了一個指定的組織機構識別碼,全球已經有許多公司申請了自己的 OUI。開發者可以從 IEEE 網站 https://standards.ieee.org/develop/regauth/oui/oui.csv 下載已被分配的 MA-L 位址。

BLE 結構的組成:

每個 BLE 設備由多個 Profile(GATT)組成
每個 Profile 由多個的 Service 服務組成,Service 用於資料的分類。
每個 Service 由多個 Characteristic 特徵組成,Characteristic用於存放屬性。
每個 Characteristic 由一個 Value 值和多個 Descriptor 描述組成 Descriptor 是對 Value 不同角度的描述和說明,所以有多個 Descriptor。
2023年 1月 27日(Fri)天氣報告
氣溫:44.0°F / 7.0°C @ 07:00
風速:每小時 3公里
降雨機會:11%
相對濕度:百分之 97%
天氣:多雲

沒有留言:

張貼留言