00_低功耗藍牙BLE基礎(chǔ)知識

官方文檔

specifications
assigned-numbers

藍牙傳輸頻段

低功耗藍牙一共有40個信道,頻段范圍從2402MHz到2480MHz,其中37,38,39是廣播信道,剩余的是數(shù)據(jù)信道。

ble-adv-channel

為什么要選擇37,38,39做廣播通道呢?

我們可以看看wifi傳輸信道情況,這樣設(shè)計可能是為了最大程度避開wifi傳輸信道的干擾,影響廣播掃描配對。配對成功后,藍牙傳輸支持channel hop功能來做抗干擾。


wifi-channel

為什么是2.4G頻段呢?

2.4GHz 頻率屬于 ISM(工業(yè)、科學及醫(yī)療設(shè)備)頻率,無需經(jīng)過當局許可便可使用,屬于全球通用。

藍牙廣播數(shù)據(jù)

藍牙廣播數(shù)據(jù)包長度37個字節(jié),其中前6個字節(jié)固定是Mac地址,剩余31個字節(jié)根據(jù)實際情況定義。


adv-data-struct

來看一個具體的例子,如下是一個廣播數(shù)據(jù)包的兩個結(jié)構(gòu)體,第一個占用5個字節(jié),第二個占用4個字節(jié),剩余不足31個字節(jié)的位置補零。


ad-structure1

上面知道了廣播數(shù)據(jù)結(jié)構(gòu)體的組織方式,下面來看看如何解釋這些數(shù)據(jù)結(jié)構(gòu)體。我們可以在官方提供的Generic Access Profile文檔中查看完整的廣播類型定義,這里列舉幾個常用的類型說明:

adv-usual-type

說了 這么多,我們來實踐一下,如下是通過nRF Connect抓取自研遙控器廣播數(shù)據(jù)包字段,我們來解析一下看看:


airemote-adv-data
aispeech_remote_adv

很多字段都是需要在藍牙官方資料中查詢,這里羅列幾個常用查詢地址:

類型說明
補充說明
注冊藍牙公司標識查詢
外觀類型查詢

藍牙掃描,廣播時長和窗口期

  1. scan 指的是central端在掃描周邊藍牙設(shè)備,必須設(shè)置scan interval(掃描周期:2.5ms~10.24s)Advertising 指的是peripheral端廣播信息,需設(shè)定Advertising interval(廣播周期:20ms~10.24s)
  2. Interval時間越長,越省點,反之越耗電
  3. 設(shè)定Time out時間,避免長期scan或者Advertising造成產(chǎn)品耗電。
scan-adv-interval_window

藍牙廣播分類和掃描

藍牙廣播分類主要從三個維度出發(fā):

  1. connectability可連接性:Connectable vs Non-connectable
  2. scannability可被掃描性:Scannable vs Non-scannable,可掃描的意思是scanner可以發(fā)送scan request,advertiser發(fā)送scan response data
  3. directability定向性:Directed vs Undirected,定向的意思是指定scanner的地址,其他scaner不能連接上來
    另外一個維度是discoverable,分為non-discoverable vs discoverable(general or limited),non-discoverable可以理解,就是不可發(fā)現(xiàn)。
廣播類型 使用 連接支持 掃描響應(yīng)
可連接非定向 常用普通廣播方式 支持
可連接定向 用于已配對過,快速回連廣播 指定設(shè)備可連 不支持
不可連接非定向 常用于信標,傳感器 不支持
可掃描非定向 在3的基礎(chǔ),添加可以掃描響應(yīng),用來承載更多數(shù)據(jù) 支持

藍牙廣播和掃描
藍牙廣播和掃描數(shù)據(jù)格式是一樣的,不同的是廣播是從機設(shè)備主動發(fā)出,而掃描是從機設(shè)備響應(yīng)主機設(shè)備的掃描請求后發(fā)出。有時藍牙廣播數(shù)據(jù)長度超過31個字節(jié),我們會把其他數(shù)據(jù)通過掃描響應(yīng)反饋給主機設(shè)備。


adv-scan

藍牙連接

在連接配對期間peripheral 需要提供四個參數(shù)給到central:
. MIN_CONN_INTERVAL
. MAX_CONN_INTERVAL
. SALVE_LATENCY
. CONN_SUP_TIMEOUT

central 會參考這四個參數(shù),并傳輸connect event給peripheral當做彼此溝通的時間。
connect interval:標準位7.5ms~4s(IOS interval:20ms~2s)
slave latency: 為了節(jié)省peripheral的功耗,central可以接受peripheral幾次不會傳。
supervision Timeout:設(shè)定當多久沒用收到任何通訊要求時,中斷連接。


connect-data-change

藍牙服務(wù)和特性

藍牙協(xié)議框圖


藍牙協(xié)議框圖

藍牙設(shè)備服務(wù)和特性關(guān)系


藍牙設(shè)備服務(wù)和特性關(guān)系

藍牙服務(wù)和特性UUID

uuid

可以看到上面128bit的uuid非常長,而我們在實際使用或者在nrfconnect里看到的uuid是沒有這么長的,是因為藍牙聯(lián)盟組織為了方便,給出了一個基地址,用戶可以在基地址的基礎(chǔ)上修改16bit來作為自己需要的uuid。


base-uuid

在低功耗藍牙中,所有的數(shù)據(jù)通信都依賴于各個服務(wù)中的特性,根據(jù)特性的可讀,可寫,通知等不同類型進行劃分。每個特性可以同時賦值為多個不同的權(quán)限。


service-char-permision

per-diff

16-bit UUIDs

官方定義16-bit UUIDs

over-uuid

這是因為從0x1800開始,是藍牙聯(lián)盟官方定義好的一些通用服務(wù)的UUID,每個藍牙設(shè)備如果需要使用,都需要遵守這個UUID定義,這樣在藍牙主機端則可以非常方便的獲取從機藍牙設(shè)備的相關(guān)屬性數(shù)據(jù)。

service-uuid-defined

從0x2A00開始,則是定義好的特性UUID


char-id-defined

附錄參考

知乎-藍牙技術(shù)總結(jié)
B站-我是鵬老師
B站-我愛藍牙網(wǎng)

?著作權(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)容

  • 概述 中心角色和外圍角色 在BLE中存在兩個角色,一個是中心角色(Central),一個是外圍角色(Periphe...
    EitteTL閱讀 2,760評論 0 2
  • 概述 中心角色和外圍角色在BLE中存在兩個角色,一個是中心角色(Central),一個是外圍角色(Peripher...
    丶麥芽閱讀 9,860評論 2 4
  • 一、初始藍牙低功耗 Android 4.3(API Level 18)開始引入Bluetooth Low Ener...
    SHHH閱讀 4,046評論 0 2
  • BLE廣播的原理 BLE的設(shè)備可以發(fā)出廣播信號,其信號占用的通道是37,38,39通道 設(shè)備可以選擇廣播在其中的任...
    銅鑼餅閱讀 5,582評論 0 2
  • 1 傳統(tǒng)藍牙與低功耗藍牙 傳統(tǒng)藍牙也叫經(jīng)典藍牙,經(jīng)典藍牙模塊泛指支持藍牙協(xié)議4.0以下的模塊,有v1.1/1.2/...
    zhan_haoyu閱讀 883評論 0 0

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