【翻譯】BLE簡介

Introduction to Bluetooth Low Energy

簡介

Bluetooth Low Energy (BLE),也經(jīng)常被稱為Bluetooth Smart,它是傳統(tǒng)藍牙的子集,在Bluetooth 4.0 core specification中被引入。雖然BLE和傳統(tǒng)藍牙有很多重疊的地方,但是它是有自己獨特的歷史血統(tǒng)的,BLE被Bluetooth SIG即藍牙標準納入之前,一直是諾基亞發(fā)展的一個叫做Wibree的室內(nèi)項目。

對工程師們來說雖然有很多種的無線協(xié)議可供選擇,但是BLE是實現(xiàn)和現(xiàn)代移動平臺通信的最簡單的方式,尤其是對于蘋果設(shè)備而言,BLE可以說是唯一的可以避免為了成功的提交蘋果商店的硬件設(shè)計選擇。

以下的簡介將使你有一個快速對BLE的總體的了解,尤其是數(shù)據(jù)如何組織,以及設(shè)備如何通過廣播來告之其存在,讓你可以連接他們并進行數(shù)據(jù)的傳輸。

BLE平臺支持

以下列出的設(shè)備和平臺均支持藍牙 4.0和BLE:

  • iOS5+ (iOS7+ preferred)
  • Android 4.3+ (numerous bug fixes in 4.4+)
  • Apple OS X 10.6+
  • Windows 8 (XP, Vista and 7 only support Bluetooth 2.1)
  • GNU/Linux Vanilla BlueZ 4.93+

GAP

GAP是Generic Access Profile的縮寫,它控制著藍牙的連接和廣播過程。GAP協(xié)議使得設(shè)備可以被其他設(shè)備識別,并決定兩個設(shè)備如何交互。

設(shè)備角色

GAP為設(shè)備定義了各種各樣的角色,但兩個最關(guān)鍵的概念是中心設(shè)備(Central devices)和周邊設(shè)備(Peripheral* devices)。

周邊設(shè)備是指那些體積較小,功耗較小,資源有限的設(shè)備,它可以連接更加強大的中心設(shè)備,例如各種手環(huán),手表,心跳檢測器等;中心設(shè)備通常指的是手機或者平板等擁有更強大的計算和存儲的設(shè)備。

下圖可以詳細的說明了整個廣播的過程,以及廣播負載和掃描回復(fù)負載是如何工作的。
周邊設(shè)備會設(shè)置一個特定的廣播的時間間隔(Advertising Interval),每個時間段的開始,它會發(fā)送其廣播數(shù)據(jù)包,時間間隔越長節(jié)省電量,但是不能及時被掃描到。這是很明顯的道理。

周邊設(shè)備的廣播包括兩種,一種是Advertising data,一種是scan response data,廣播數(shù)據(jù)就是上面所說的,是必選,每一廣播間隔開始都會不間斷發(fā)送,通過它來告訴中心設(shè)備自己的存在;掃描回復(fù)則是可選的,它包含了設(shè)備的基本信息,比如設(shè)備的名字和地址等,只有當中心設(shè)備對他感興趣,發(fā)送掃描回復(fù)請求時,周邊設(shè)備才會發(fā)送掃描回復(fù)數(shù)據(jù)包作為反饋。

廣播示意圖
廣播網(wǎng)絡(luò)拓撲

盡管大多數(shù)情況下,周邊設(shè)備廣播自己都是為了建立連接后使用GATT services、characteristics完成更多的雙向的數(shù)據(jù)交換,但也有些情況是不需要連接的,只需要周邊設(shè)備將數(shù)據(jù)廣播出去即可。

這種情況主要存在于需要周邊設(shè)備同時給多個中心設(shè)備發(fā)送數(shù)據(jù),而一旦建立連接,數(shù)據(jù)的收發(fā)就只對在建立連接的兩臺設(shè)備間可見。

周邊設(shè)備可以發(fā)送一段包含少量自定義數(shù)據(jù)的31字節(jié)的廣播或者掃描回復(fù)包給在監(jiān)聽范圍的所有設(shè)備,這就是典型的BLE廣播的過程。

通俗點的講就是BLE的廣播有兩種作用,一種是告訴中心設(shè)備自己的存在然后等待連接;另一種就是單純的對外廣播信息,蘋果的iBeacon就是后者的定性應(yīng)用,它在廣播包Manufacturer Specific Data中插入了一段自定義的數(shù)據(jù),用來完成特定的功能。

microcontrollers_BroadcastTopology

周邊設(shè)備和中心設(shè)備一旦建立連接,周邊設(shè)備的廣播過程就停止了,也不能再發(fā)送廣播包了,接下來就要通過GATT services和characteristic進行通信。

GATT

GATT全稱Generic Attribute Profile,中文名叫通用屬性協(xié)議,它定義了servicescharacteristic兩種東西來完成低功耗藍牙設(shè)備之間的數(shù)據(jù)傳輸。它是建立在通用數(shù)據(jù)協(xié)議Attribute Protocol (ATT),之上的,ATT把services和characteristic以及相關(guān)的數(shù)據(jù)保存在一張簡單的查找表中,該表使用16-bit的id作為索引。

一旦兩個設(shè)備建立了連接,GATT就開始發(fā)揮作用,同時意味著GAP協(xié)議管理的廣播過程結(jié)束了。但是必須要知道的是,建立GATT連接必要經(jīng)過GAP協(xié)議。

最重要的事情,GATT連接是獨占的,也就意味著一個BLE周邊設(shè)備同時只能與一個中心設(shè)備連接。一旦周邊設(shè)備與中心設(shè)備連接成功,直至連接斷開,它不再對外廣播自己的存在,其他的設(shè)備就無法發(fā)現(xiàn)該周邊設(shè)備的存在了。

周邊設(shè)備和中心設(shè)備要完成雙方的通信只能通過建立GATT連接的方式。

網(wǎng)絡(luò)連接拓撲

下圖展示了BLE設(shè)備如何工作的。一個周邊設(shè)備只能同時連接一臺中心設(shè)備,但是中心設(shè)備可以連接多臺周邊設(shè)備。

如果兩個周邊設(shè)備需要進行數(shù)據(jù)的交換的話,就必須經(jīng)由中心設(shè)備的中轉(zhuǎn)。
一旦周邊設(shè)備和中心設(shè)備建立了連接,通信就是雙向的了,對比前面的GAP廣播的網(wǎng)絡(luò)拓撲,通信是單向的,只能由周邊設(shè)備往中心設(shè)備廣播數(shù)據(jù)。

GATT網(wǎng)絡(luò)拓撲
GATT事務(wù)

GATT是基于典型的C/S模式,其中周邊設(shè)備通常扮演GATT Server,它保有services、characteristic以及查找表,也就是數(shù)據(jù)的存儲是在GATT Server中;而例如手機平板等中心設(shè)備通常是GATT Client,他們向GATT Server發(fā)送請求。一切都是主設(shè)備GATT Client發(fā)起,然后接受來自從設(shè)備GATT Server的相應(yīng)。

當連接建立之后,周邊設(shè)備會給中心設(shè)備建議一個連接間隔(Connection Interval),然后中心設(shè)備每個時間間隔都會重連查看是否有新數(shù)據(jù)可以獲取。但是這個連接間隔只是一個建議,因為中心設(shè)備可能忙于與其它周邊設(shè)備通信或者系統(tǒng)資源不可得而并不能完全遵循。

下圖展示了周邊設(shè)備和中心設(shè)備的數(shù)據(jù)交換的流程,可以看出每一次事務(wù)都是由中心設(shè)備發(fā)起的,而周邊設(shè)備只負責應(yīng)答。

通信事務(wù)流程
  • Services and Characteristics

BLE GATT通信是基于嵌套的Profiles, Services andCharacteristics結(jié)構(gòu)之上的,下圖是其框架:

GATT數(shù)據(jù)存儲結(jié)構(gòu)
  • Profiles

Profile并不是真實存在的一種結(jié)構(gòu),而是多個完成某一特定功能services的集合,或者說是對這個特定結(jié)合的功能的描述,或者名稱。以Heart Rate Profile為例,它包括Heart Rate Service 和 Device Information Service,他們都是為了完成測量心率這個功能而存在的service。

更詳細的可以查看Profiles Overview。

  • Services

每個service擁有一個唯一標識UUID,可以是官方認證的16bit的id,也可以是128位的自定義id。service是GATT數(shù)據(jù)的邏輯分類,它包含一個或者多個characteristic。

官方通過了一些標準 Service,完整列表在這里。以 Heart Rate Service為例,可以看到它的官方通過 16 bit UUID 是 0x180D
,包含 3 個 Characteristic:Heart Rate Measurement, Body Sensor LocationHeart Rate Control Point,實現(xiàn)該service第一個Heart Rate Measurement是必選的,其他兩個是可選的。

  • Characteristics

Characteristic也擁有一個16-bit 或者128-bit的UUID,它是GATT通信中的最小的邏輯數(shù)據(jù)單元,它封裝了一個單一的數(shù)據(jù)點,當然這個數(shù)據(jù)點可能包含一組相關(guān)的數(shù)據(jù),比如加速度傳感器的x/y/z三個坐標軸的數(shù)據(jù)。

實際上,和 BLE 外設(shè)打交道,主要是通過 Characteristic。你可以從 Characteristic 讀取數(shù)據(jù),也可以往 Characteristic 寫數(shù)據(jù)。這樣就實現(xiàn)了雙向的通信。你可以使用Characteristic實現(xiàn)一個類似串口(UART)的 Sevice,這個 Service 中包含兩個 Characteristic,一個被配置只讀的通道(RX),另一個配置為只寫的通道(TX)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 藍牙 藍牙的波段為2400-2483.5MHz(包括防護頻帶)。這是全球范圍內(nèi)無需取得執(zhí)照(但定不是無管制的)的工...
    蘇永茂閱讀 6,581評論 0 11
  • 前言: 本文主要描述Android BLE的一些基礎(chǔ)知識及相關(guān)操作流程,不牽扯具體的業(yè)務(wù)實現(xiàn),其中提供了針對廣播包...
    幻影宇寰閱讀 5,583評論 6 19
  • 一. 引言 現(xiàn)在低功耗藍牙(BLE)連接都是建立在GATT(Generic Attribute Profile)協(xié)...
    75cec28807b7閱讀 15,650評論 0 19
  • 安卓4.3(API 18)為BLE的核心功能提供平臺支持和API,App可以利用它來發(fā)現(xiàn)設(shè)備、查詢服務(wù)和讀寫特性。...
    風雨byt閱讀 14,191評論 3 43
  • Key Terms And Concepts 關(guān)鍵術(shù)語和概念 Here is a summary of key B...
    Jaesoon閱讀 2,563評論 0 5

友情鏈接更多精彩內(nèi)容