使用 BLE 低功耗藍牙
Last updated
Last updated
開發者可以透過 LBLE 程式庫來存取 LinkIt 7697 上面的低功耗藍牙功能,並將 LinkIt 7697 作為周邊裝置或主控裝置來使用。要注意的是,LinkIt 7697 並不支援傳統 Bluetooth 的相關 Profile 功能,比如 SPP、A2DP、AVRCP 等 Profile。
低功耗藍牙裝置可以區分為「主控(Central)」與「周邊(Peripheral)」兩種類型。比如說,像是電腦、或是手機這種主控裝置,會搜索附近的周邊裝置,並且視使用者的需求,連線到該周邊裝置,並進一步取得周邊裝置上面的各種資料。相對的,像心跳偵測器這種周邊裝置,則會發出廣播(Advertisement),好讓鄰近的主控裝置知道心跳偵測器的存在。
在周邊裝置上面所提供的資訊,統稱為屬性(attribute)。為了提供這些屬性,周邊裝置上面會運行一個支援 GATT(Generic Attribute) Profile 的伺服器(Server)。也就是說,周邊裝置是 GATT 伺服器,而主控裝置是 GATT 客戶端,由主控裝置去連接周邊裝置,就等同於是一個 GATT客戶端去連接 GATT 伺服器。
屬性可以再區分為:服務(services)、資料特性(characteristics)與特性描述(descriptors)。簡單的來說,一個 GATT 伺服器會提供多個服務,而每一個服務都有許多資料特性可供存取。而特性描述,則是用於描述資料特性的額外資訊。舉例來說,一個心跳偵測器上面的 GATT 伺服器,應該要提供一個「心率」服務,這個服務會提供許多資料特性,其中之一便是「心跳速率測量值」這個資料特性,而「心跳速率測量值」又有一個相關的特性描述,可讓主控裝置存取,以決定周邊裝置是否要主動通知心跳速率的變化。
為了識別不同的屬性,所有的屬性都會用 UUID(通用唯一識別碼)來識別。Bluetooth 官方有定義好一組服務的 UUID,如體重計、電池狀態、時間等,可參考此連結以及官方指定碼的列表。當然,也可以自行決定自訂服務所要使用的 UUID,在這種情況下,需要自己生成所有屬性的 UUID,並自行管理這些 UUID。
在LinkIt 7697 Arduino 安裝包裡面提供的 LBLE 程式庫,提供了下列的類別供開發者使用:
LBLE 類別用於初始化低功耗藍牙系統。
LBLECentral 類別提供了基本的主控裝置功能,比如掃描附近的周邊裝置。可接著使用 LBLEClient 類別來連接到周邊裝置。
LBLEPeripheral 類別提供了基本的周邊裝置功能:
設定周邊裝置發出的廣播內容
設定周邊裝置本身的服務與資料特性
要在 LinkIt 7697 上面使用藍牙之前,必須先初始化藍牙子系統。首先,需要呼叫 LBLE.begin()
來啟動藍牙子系統,然後不斷的呼叫 LBLE.ready()
來確認子系統的初始化是否已經完成。
在 LBLE 尚未初始化完成之前,不能夠使用其他的 LBLE 功能,包含主控與周邊的相關功能。
當 LBLE 初始化完成之後,開發者可以依照需求,進行下面三個操作的其中一個:
創建一個藍牙信標(Beacon)
創建一個藍牙主控裝置以連結到其他的周邊裝置
創建一個藍牙周邊裝置來提供服務與各種數據資料給其他的主控裝置取用。