自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

物聯(lián)網(wǎng)之藍(lán)牙初識(shí)

物聯(lián)網(wǎng) 物聯(lián)網(wǎng)應(yīng)用
藍(lán)牙技術(shù)是以 10 世紀(jì)的一位丹麥國(guó)王命名的?!八{(lán)牙(Bluetooth)”一詞來(lái)源于 10 世紀(jì)的丹麥國(guó)王 Harald Bl?tand(英文姓名為 Harold Bluetooth)。

[[389857]]

 1、藍(lán)牙簡(jiǎn)介

1.1、 藍(lán)牙技術(shù)的起源

藍(lán)牙的創(chuàng)始人是瑞典愛(ài)立信公司,愛(ài)立信早在 1994 年就已進(jìn)行研發(fā)。1997 年愛(ài)立信與其他設(shè)備生產(chǎn)商聯(lián)系,并激發(fā)了他們對(duì)該項(xiàng)技術(shù)的濃厚興趣。1998 年 2 月,5 個(gè)跨國(guó)大公司,包括愛(ài)立信、諾基亞、IBM、東芝及 Intel 組成了一個(gè)特殊興趣小組(SIG),他們共同的目標(biāo)是建立一個(gè)全球性的小范圍無(wú)線通信技術(shù),即現(xiàn)在的藍(lán)牙。

藍(lán)牙技術(shù)是以 10 世紀(jì)的一位丹麥國(guó)王命名的。“藍(lán)牙(Bluetooth)”一詞來(lái)源于 10 世紀(jì)的丹麥國(guó)王 Harald Bl?tand(英文姓名為 Harold Bluetooth)。這位國(guó)王將四分五裂的局面統(tǒng)一起來(lái)的行為,與這種傳輸技術(shù)將各種設(shè)備無(wú)線連接起來(lái),有相似的地方。為了紀(jì)念他,SIG 將自己的無(wú)線技術(shù)取名“藍(lán)牙”。

1.2、什么是藍(lán)牙低功耗

BLE 是藍(lán)牙低功耗的簡(jiǎn)稱(Bluetooh Low Energy)。藍(lán)牙低功耗(BLE)技術(shù)是低成本、短距離、可互操作的魯棒性無(wú)線技術(shù),工作在免許可的 2.4GHz ISM 射頻頻段。它從一開(kāi)始就設(shè)計(jì)為超低功耗(ULP)無(wú)線技術(shù)。它利用許多智能手段最大限度地降低功耗。

低成本,低功耗。

快速啟動(dòng),瞬間連接。最快 3ms 低延遲。

傳輸距離的提高。

高安全性,使用 AES-128 加密算法進(jìn)行數(shù)據(jù)包加密認(rèn)證。

藍(lán)牙低功耗在短距離無(wú)線通信領(lǐng)域占據(jù)著越來(lái)越重要的地位,在很多應(yīng)用場(chǎng)合均可見(jiàn)到藍(lán)牙低功耗的身影。

醫(yī)療和健康設(shè)備,如血糖儀、數(shù)字血壓計(jì)、血?dú)庥?jì)、心率監(jiān)視器等。

運(yùn)動(dòng)休閑,如心率監(jiān)測(cè)儀、體溫計(jì)、計(jì)步器等。

鼠標(biāo)、鍵盤、遙控器。

Beacons 藍(lán)牙信標(biāo)。

智能家居,如燈光控制、溫濕度控制、安全鎖控制等。

1.3、藍(lán)牙版本及 4.0 和 BLE 的關(guān)系

藍(lán)牙技術(shù)聯(lián)盟 :(Bluetooth Special Interest Group, SIG),是藍(lán)牙核心規(guī)格版本及藍(lán)牙技術(shù)的管理者,本身不負(fù)責(zé)具體的藍(lán)牙產(chǎn)品的設(shè)計(jì)和生產(chǎn)等。藍(lán)牙技術(shù)的發(fā)展經(jīng)歷了下面幾個(gè)主要的版本:

1、藍(lán)牙 1.0:基本碼率,Basic Rate,BR。

2、藍(lán)牙 2.0:增強(qiáng)碼率,Enhanced Data Rata,EDR。

3、藍(lán)牙 3.0:引入全新的交替射頻技術(shù)(AMP: Alternate MAC/PHY),允許藍(lán)牙協(xié)議棧針對(duì)任一任務(wù)動(dòng)態(tài)地選擇正確射頻,通過(guò)瞬間使用消費(fèi)者設(shè)備中已存在的輔助無(wú)線電提供更快的吞吐量。

4、藍(lán)牙 4.0 是第一個(gè)綜合性規(guī)范,其加入了全新的藍(lán)牙低功耗技術(shù)BLE(Bluetooth Low Energy),即藍(lán)牙 4.0 集三種規(guī)格于一體。

5、藍(lán)牙 4.2 提升了 BLE 數(shù)據(jù)傳輸速度,支持長(zhǎng)包傳輸,單個(gè)數(shù)據(jù)包最大可傳輸 255 個(gè)字節(jié),同時(shí)改善了隱私保護(hù)程度。

6、藍(lán)牙 5.0 相對(duì)于藍(lán)牙 4.2,具有 2 倍的數(shù)據(jù)速率、4 倍的覆蓋范圍和 8 倍的廣播能力。

高速模式:支持 2Mbps 數(shù)據(jù)速率,實(shí)現(xiàn)了數(shù)據(jù)吞吐量翻倍。

遠(yuǎn)距模式:通過(guò) 500kbps 和 125kbps 速率的全新編碼物理層 (PHY) 實(shí)現(xiàn)遠(yuǎn)距離覆蓋。

廣播擴(kuò)展:藍(lán)牙 BLE 有 3 個(gè)廣播信道(具體見(jiàn)2.1),之前的藍(lán)牙 BLE 版本中廣播載荷通過(guò)全部三個(gè)廣播通道進(jìn)行發(fā)送,藍(lán)牙 5.0 中這三個(gè)通道僅用于發(fā)送指針,顯示發(fā)送載荷的時(shí)間和地點(diǎn),廣播載荷僅在一個(gè)數(shù)據(jù)通道上傳輸一次。

1.4、 藍(lán)牙設(shè)備類型

1.4.1 藍(lán)牙的標(biāo)志

為了更好地區(qū)分藍(lán)牙的版本,SIG 發(fā)布了三種標(biāo)志Logo用于人們分辨這三個(gè)版本之間的區(qū)別和兼容性。

Bluetooth Smart Ready:適用于任何雙模藍(lán)牙 4.0 的電子產(chǎn)品,如蘋果公司 iPhone 4S 及以后的產(chǎn)品和安裝了安卓 4.3 以上的系統(tǒng),并且藍(lán)牙芯片支持 4.0 的手機(jī)。

Bluetooth Smart:?jiǎn)文TO(shè)備,如智能手環(huán)。

標(biāo)準(zhǔn)Bluetooth:傳統(tǒng)藍(lán)牙設(shè)備,如用于傳輸語(yǔ)音的藍(lán)牙耳機(jī)。

1.4.2 設(shè)備類型

低功耗藍(lán)牙分為單模(Bluetooth Smart)和雙模(Bluetooth Smart Ready)兩種設(shè)備:?jiǎn)文TO(shè)備:只支持藍(lán)牙低功耗 (BLE),單模設(shè)備對(duì)低功耗的要求很高。雙模設(shè)備:既支持經(jīng)典藍(lán)牙也支持藍(lán)牙低功耗,這兩種技術(shù)使用同一個(gè)射頻前端和天線,雙模設(shè)備一般都有足夠的供電能力,對(duì)低功耗要求不高。

雙模設(shè)備之間:可以通過(guò) LE 通信,也可以通過(guò)傳統(tǒng)藍(lán)牙通信;雙模設(shè)備和單模設(shè)備通 過(guò) LE 通信;雙模設(shè)備和傳統(tǒng)藍(lán)牙通過(guò)傳統(tǒng)藍(lán)牙通信。單模設(shè)備之間:通過(guò) LE 通信。傳統(tǒng)藍(lán)牙:通過(guò)傳統(tǒng)藍(lán)牙通信。單模設(shè)備和傳統(tǒng)藍(lán)牙:不能通信。

2、BLE 體系結(jié)構(gòu)

藍(lán)牙低功耗包含三個(gè)部分:控制器、主機(jī)和應(yīng)用程序。

2.1、 物理層(Physical Layer)

  • 調(diào)制方式:GFSK,高斯頻移鍵控。
  • 工作在 2.4GHz ISM 頻段。頻率范圍:2.400-2.4835 GHz
  • ISM 頻段:(Industrial Scientific Medical Band)主要是開(kāi)放給工業(yè)、科學(xué)和醫(yī)用 3 個(gè)主要機(jī)構(gòu)使用的頻段。ISM 頻段屬于無(wú)許可(Free License)頻段。2.4G ISM 頻段是唯一在所有國(guó)家都無(wú)需授權(quán)的頻段,只需要遵守一定的發(fā)射功率即可。我們熟知的無(wú)線局域網(wǎng)、藍(lán)牙、ZigBee 等無(wú)線網(wǎng)絡(luò),均可工作在 2.4GHz ISM 頻段上。
  • 2.4G 被劃分為 40 個(gè) RF 信道(f=2402+k*2 MHz, k=0, ? ,39),信道間隔 2MHz,其中:廣播信道:3 個(gè),固定;數(shù)據(jù)信道:37 個(gè),自適應(yīng)跳頻。
  • 無(wú)線速率:1Mbps、2Mbps。

2.2、鏈路層(LL)

鏈路層負(fù)責(zé)廣播、掃描、建立和維護(hù)連接,以及確保數(shù)據(jù)包按照正確的方式組織、正確地校驗(yàn)值和加密序列等。鏈路層信道映射

廣播信道:37 、38、39,對(duì)應(yīng)的中心頻率是 2402MHz,2426MHz,2480MHz。廣播信道之間至少相差 24MHz。每次廣播,都會(huì)在 3 個(gè)信道上將廣播數(shù)據(jù)發(fā)送一次,有效地避免干擾,即使一個(gè)信道存在干擾,另外的信道也可以很好地工作,而三個(gè)信道同時(shí)被干擾的情況極少。

為什么廣播信道是 3 個(gè),而不是更多?

廣播信道越多,各個(gè)信道同時(shí)受到干擾的幾率越小,抗干擾性越強(qiáng)。但是廣播信道越多,> 發(fā)射數(shù)據(jù)占用的時(shí)間就越長(zhǎng),功耗也就越高。綜合考慮抗干擾性和功耗的情況, SIG 將廣播信道設(shè)定為 3 個(gè)。

2.3、 主機(jī)控制器接口(HCI)

主機(jī)控制器接口 HCI(Host controller interface)在 Host 和 Controller 之間提供一個(gè)標(biāo)準(zhǔn)化的接口,該層可以由應(yīng)用程序接口 API 實(shí)現(xiàn)或者使用硬件接口 UART、SPI 或 USB 來(lái)控制??刂破魍ㄟ^(guò) HCI 發(fā)送數(shù)據(jù)和事件給主機(jī),主機(jī)通過(guò) HCI 發(fā)送命令和數(shù)據(jù)給控制器。

2.4、 邏輯鏈路控制和適配協(xié)議(L2CAP)

L2CAP 層向上層提供數(shù)據(jù)封裝服務(wù),從而使邏輯上允許端到端的數(shù)據(jù)通信。L2CAP 提供可復(fù)用,分割和重組的面向連接或者無(wú)連接的數(shù)據(jù)服務(wù)。L2CAP 數(shù)據(jù)包可以達(dá)到 64K。L2CAP 允許每個(gè) L2CAP 通道流控和重傳。

2.5、 安全管理層(SM)

安全管理層 SM(Security Manager)提供配對(duì)和密鑰的分發(fā)。

2.6、 屬性協(xié)議(ATT)

屬性協(xié)議(ATT)規(guī)定了怎樣去訪問(wèn)對(duì)端設(shè)備的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在屬性服務(wù)器的“屬性”里,供屬性客戶端進(jìn)行讀寫操作。

2.7、 通用屬性配置文件(GATT)

通用屬性配置文件(GATT)建立在屬性協(xié)議的基礎(chǔ)上,GATT 通過(guò)使用 ATT 協(xié)議層定義 了如何發(fā)現(xiàn)與使用服務(wù)、特征和描述符的標(biāo)準(zhǔn)方法。

客戶端與服務(wù)器架構(gòu):GATT 定義了兩個(gè)角色:服務(wù)器和客戶端。

服務(wù)器:客戶端提供數(shù)據(jù)服務(wù),就是數(shù)據(jù)中心。

客戶端:從服務(wù)器讀寫應(yīng)用數(shù)據(jù),就是訪問(wèn)數(shù)據(jù)者。

特別注意:下面三個(gè)概念是完全獨(dú)立的,針對(duì)不同層的不同稱呼。如主機(jī)既可以是 GATT客戶端,也可以是 GATT 服務(wù)器。而從機(jī)也一樣,既可以是 GATT 客戶端,也可以是GATT 服務(wù)器。

服務(wù)器:客戶端提供數(shù)據(jù)服務(wù),就是數(shù)據(jù)中心??蛻舳耍簭姆?wù)器讀寫應(yīng)用數(shù)據(jù),就是訪問(wèn)數(shù)據(jù)者。

主機(jī)、從機(jī):針對(duì)鏈接層。

外圍設(shè)備、中央設(shè)備:GAP 定義的角色。

2.8、 通用訪問(wèn)配置文件(GAP)

GAP 層負(fù)責(zé)處理設(shè)備的接入方式和過(guò)程,包括設(shè)備發(fā)現(xiàn),鏈路建立,鏈路終止以及實(shí)現(xiàn)綁定。

2.9、 應(yīng)用層

應(yīng)用層定義了三種種類型:特征(characteristic)、服務(wù)(service)和配置文件(profile)。

特征:采用已知格式、以通用唯一識(shí)別碼(UUID)作為表示的一個(gè)小塊數(shù)據(jù),由于特征要求能夠重復(fù)使用,因而設(shè)計(jì)時(shí)沒(méi)有涉及行為,特征被定義為計(jì)算機(jī)的可讀格式,當(dāng)計(jì)算機(jī)遇到一個(gè)從未接觸過(guò)的特征時(shí),計(jì)算機(jī)可以去更新這個(gè)特征的讀取規(guī)則,從而正確讀取特征,并向用戶展示讀取的特征。

服務(wù):服務(wù)是人類可讀的一組特征及其相關(guān)的行為規(guī)范,只定義了位于服務(wù)器上的相關(guān)特性和行為,而不定義客戶端的行為。服務(wù)有兩種類型,首要服務(wù)和次要服務(wù),一個(gè)服務(wù)是首要服務(wù)還是次要服務(wù)取決于服務(wù)的定義,首要服務(wù)表征一個(gè)給定的設(shè)備主要做些什么。正是通過(guò)這些服務(wù),用戶才了解到該設(shè)備是做什么的。次要服務(wù)是那些協(xié)助主要業(yè)務(wù)或其他次要服務(wù)的服務(wù)。

配置文件:是用例或應(yīng)用的最終體現(xiàn)。配置文件是描述一個(gè)或多個(gè)設(shè)備的說(shuō)明,每一個(gè)設(shè)備提供一個(gè)或多個(gè)服務(wù),配置文件描述了如何發(fā)現(xiàn)和連接設(shè)備,從而為每臺(tái)設(shè)備確定了拓展結(jié)構(gòu),配置文件還描述的客戶端的行為,用于發(fā)現(xiàn)服務(wù)和服務(wù)特性。

基于SDK的軟件開(kāi)發(fā),前面基本都是使用既有API,主要app邏輯是在應(yīng)用層,也就一般軟件工程師的發(fā)揮余地。

3、藍(lán)牙事件

3.1、廣播事件

  1. 通用廣播:最常用的廣播方式,可以被掃描,接收到連接請(qǐng)求時(shí)可以作為從設(shè)備進(jìn)入一個(gè)連接。
  2. 定向廣播:針對(duì)于快速建立連接的需求,定向廣播會(huì)占滿整個(gè)廣播信道,數(shù)據(jù)凈荷只包 含廣播者和發(fā)起者地址,發(fā)起者收到發(fā)給自己的定向廣播后,會(huì)立即發(fā)送連接請(qǐng)求。
  3. 不可連接廣播:廣播數(shù)據(jù),而不進(jìn)入連接態(tài)。
  4. 可發(fā)現(xiàn)廣播:不可連接,但可以響應(yīng)掃描。

BLE 廣播間隔:是指兩次廣播事件之間的最小時(shí)間間隔,一般取值范圍在 20ms-10.24S之間,鏈路層會(huì)在每次廣播時(shí)間期間產(chǎn)生一個(gè)隨機(jī)廣播延時(shí)時(shí)間(0ms-10ms)。

3.2、掃描事件

每次掃描,設(shè)備打開(kāi)接收器去監(jiān)聽(tīng)廣播設(shè)備,這稱為一個(gè)掃描事件,掃描事件有兩個(gè)時(shí)間參數(shù)掃描窗口和掃描間隔:

掃描窗口(scan window):一次掃描進(jìn)行的時(shí)間寬度。掃描間隔(scan interval):兩個(gè)連續(xù)的掃描窗口的起始時(shí)間之間的時(shí)間差,包括掃描休息的時(shí)間和掃描進(jìn)行的時(shí)間。

通俗的解釋就是,每隔一段時(shí)間(掃描間隔)開(kāi)啟掃描一段時(shí)間(掃描窗口),在低功耗應(yīng)用中需要考慮,掃描是比較耗電的,但是掃描間隔太長(zhǎng)又會(huì)出現(xiàn)可能掃描不到指定的廣播。

關(guān)于掃描,分為主動(dòng)掃描和被動(dòng)掃描 ,如果僅需要廣播數(shù)據(jù)則設(shè)置為被動(dòng)掃描,主動(dòng)掃描可以獲得廣播數(shù)據(jù)和掃描回應(yīng)數(shù)據(jù),廣播者會(huì)額外回復(fù)掃描回復(fù)包內(nèi)容,例如iBeacon的電量信息。有些傳感器會(huì)在3個(gè)信道廣播不同消息,還需多次掃描才能獲取完整信息。

3.3、連接事件

一個(gè)連接事件是指主設(shè)備和從設(shè)備之間相互發(fā)送數(shù)據(jù)包的過(guò)程,所有的數(shù)據(jù)交換都是通過(guò)連接事件來(lái)完成,每個(gè)事件發(fā)生在某個(gè)數(shù)據(jù)通道(0~36)。一個(gè)連接中,主從設(shè)備依靠連接事件交換數(shù)據(jù)。設(shè)備連接后,無(wú)論有無(wú)數(shù)據(jù)收發(fā),連接事件都在按照設(shè)置的連接參數(shù)周而復(fù)始的進(jìn)行著,直到一方停止響應(yīng)。主機(jī)與從機(jī)可在單次連接事件,即連接后,可以進(jìn)行多次數(shù)據(jù)傳輸。

連接間隔:必須是 1.25ms 的倍數(shù),范圍是從最小值 6(7.5ms)到最大值 3200(4.0s)。監(jiān)督超時(shí):這是兩個(gè)成功的連接事件之間間隔的最大值。如果超過(guò)這個(gè)時(shí)間還未出現(xiàn)成功的連接事件,那么設(shè)備將會(huì)考慮失去連接,返回一個(gè)未連接狀態(tài)。這個(gè)參數(shù)值使用10ms 的步進(jìn)(10ms 的倍數(shù))。監(jiān)督超時(shí)時(shí)間從最小 10(100ms)到最大 3200(32.0s)。

不同的應(yīng)用也許需要不同的連接間隔,一個(gè)長(zhǎng)時(shí)間的連接間隔將會(huì)節(jié)約更多的能量,因?yàn)樵O(shè)備可以在兩個(gè)連接事件之間睡眠更長(zhǎng)的時(shí)間。但是他會(huì)導(dǎo)致數(shù)據(jù)發(fā)送不及時(shí),如果有數(shù)據(jù)要發(fā)送那么他只能夠在下一次連接事件到來(lái)時(shí)才能被發(fā)送。

4、藍(lán)牙參數(shù)屬性

4.1、 profile(配置文件)

profile 是 Service 的集合,它是預(yù)定義的,并不是實(shí)際存在于設(shè)備中,所以在外圍設(shè)備的代碼中,我們看不到 profile 的實(shí)現(xiàn)代碼。Profile 分為標(biāo)準(zhǔn)的和自定義的,標(biāo)準(zhǔn)的 profile是由 SIG 定義和發(fā)布的,如心率 profile、防丟 profile,自定義的 profile 是由開(kāi)發(fā)者自己定義。標(biāo)準(zhǔn)的 profile 可以在 SIG 的網(wǎng)站上查到,網(wǎng)址 https://www.bluetooth.com/specifications/gatt

一個(gè) profile 文件可以包含一個(gè)或者多個(gè)服務(wù),如心率 profile 包含了 Heart Rate Service(心率服務(wù))和 Device Information Service(設(shè)備信息服務(wù)),從 SIG 網(wǎng)站上下載心率 profile,打開(kāi)后可以看到心率傳感器服務(wù)需求表格,由表中可以看到心率 profile 規(guī)定必須包含 HeartRate Service 和 Device Information Service。

4.2、 Service(服務(wù))

服務(wù)是一組特征和它們公開(kāi)的行為的集合,一個(gè)服務(wù)可以包含一個(gè)或多個(gè)特性。Service也分為標(biāo)準(zhǔn)的和自定義的,標(biāo)準(zhǔn)的 Service 是由 SIG 定義和發(fā)布的,如心率 Service、防丟Service,自定義的 Service 是由開(kāi)發(fā)者自己定義。標(biāo)準(zhǔn)的 Service 可以在 SIG 的網(wǎng)站上查到(網(wǎng)址同 profile)。

4.3、Characteristic(特征)

特征是具有特定意義的數(shù)值,如心率、溫度值等等。BLE 主從機(jī)之間的數(shù)據(jù)傳輸實(shí)際傳輸?shù)木褪翘卣髦怠?/p>

4.4、UUID

UUID(Universally Unique Identifier)是一個(gè) 128 位的數(shù)字,用來(lái)標(biāo)志屬性的類型。Service和 Characteristic 都是一種屬性,都需要一個(gè)唯一的 UUID 來(lái)標(biāo)識(shí)。

既然 UUID 是 128 位的數(shù)字,那么為什么有 16 位的 UUID?因?yàn)?128 位的 UUID 相當(dāng)長(zhǎng),設(shè)備間為了識(shí)別數(shù)據(jù)的類型需要發(fā)送長(zhǎng)達(dá) 16 字節(jié)的數(shù)據(jù)。為了提高傳輸效率,藍(lán)牙技術(shù)聯(lián)盟(SIG)定義了一個(gè)“UUID 基數(shù)”,結(jié)合一個(gè)較短的 16 位數(shù)使用。二者仍然遵循通用唯一識(shí)別碼的分配規(guī)則,只不過(guò)在設(shè)備間傳輸常用的 UUID 時(shí),只發(fā)送較短的 16 位版本,接收方收到后補(bǔ)上藍(lán)牙 UUID 基數(shù)即可。

UUID 分為標(biāo)準(zhǔn)的 UUID 和廠商自定義的 UUID。標(biāo)準(zhǔn)的 UUID:由 SIG 發(fā)布,采用 UUID 基數(shù)+16 位 UUID 的形式,如心率服務(wù)的 UUID 是 0x180D,使用的 UUID 基數(shù)是:00000000 - 0000 - 1000 - 8000 – 00805F9B34FB。廠商自定義的 UUID:同樣采用 UUID 基數(shù)+16 位 UUID 的形式,由廠商定義。為了方便管理,增加 UUID 的可讀性,藍(lán)牙低功耗使用的那部分 UUID 被分為下列幾組:

0x1800 ~ 0x26FF:用作服務(wù)類通用唯一識(shí)別碼。

0x2700 ~ 0x27FF:用于標(biāo)識(shí)計(jì)量單位。

0x2800 ~ 0x28FF:用于區(qū)分屬性類型。

0x2900 ~ 0x29FF:用作特征描述。

0x2A00 ~ 0x7FFF:用于區(qū)分特征類型。

對(duì)于開(kāi)發(fā)標(biāo)準(zhǔn)藍(lán)牙產(chǎn)品,如心律監(jiān)測(cè),需要參考SIG標(biāo)準(zhǔn),但一般物聯(lián)網(wǎng)設(shè)備使用藍(lán)牙,都是自定義,其參數(shù)沒(méi)有明確要求,不要和標(biāo)準(zhǔn)定義沖突即可。一般自定義服務(wù),以及在服務(wù)下自定義成對(duì)的UUID屬性,分別用于收發(fā)交互。

5、藍(lán)牙廣播

對(duì)外廣播的目的,是為了像周邊的設(shè)備顯示自己的存在和“我是誰(shuí)”,所以廣播包必須按照規(guī)定的格式填充。

設(shè)備每次廣播時(shí),會(huì)在 3 個(gè)廣播信道上發(fā)送相同的報(bào)文。這些報(bào)文被稱為一個(gè)廣播事件。除了定向報(bào)文以外,其他廣播事件均可以選擇“20ms ~ 10.28s”不等的間隔。

5.1 、廣播類型

廣播就是設(shè)備將自身愿意展示的信息按照一定的間隔以“掃描者”可理解的方式向周邊發(fā)射。廣播有如下四種類型,廣播報(bào)文的報(bào)頭中有 4 位專門用于指示廣播報(bào)文的類型。

通用廣播:最常用的廣播方式,可以被掃描,接收到連接請(qǐng)求時(shí)可以作為從設(shè)備進(jìn)入一個(gè)連接。

定向廣播:針對(duì)于快速建立連接的需求,定向廣播會(huì)占滿整個(gè)廣播信道,定向廣播的數(shù)據(jù)凈荷只包含廣播者和發(fā)起者地址,發(fā)起者收到發(fā)給自己的定向廣播后,會(huì)立即發(fā)送連接請(qǐng)求。定向廣播最長(zhǎng)時(shí)間不能超過(guò)1.28 秒,并且不能被主動(dòng)掃描。

不可連接廣播:廣播數(shù)據(jù),而不進(jìn)入連接態(tài),也不響應(yīng)掃描,這是唯一一個(gè)允許硬件設(shè)備只有發(fā)射機(jī)的廣播類型,因?yàn)樗恍枰邮杖魏螖?shù)據(jù)。

可發(fā)現(xiàn)廣播:不可連接,但可以響應(yīng)掃描。

5.2、廣播數(shù)據(jù)包報(bào)文結(jié)構(gòu)

BLE 報(bào)文結(jié)構(gòu)如下:圖片1、前導(dǎo)

前導(dǎo)

是一個(gè) 8 比特的交替序列。他不是 01010101 就是 10101010,取決于接入地址的第 一個(gè)比特。若接入地址的第一個(gè)比特為 0:01010101 若接入地址的第一個(gè)比特為 1:10101010 接收機(jī)可以根據(jù)前導(dǎo)的無(wú)線信號(hào)強(qiáng)度來(lái)配置自動(dòng)增益控制。

2、接入地址 接入地址有兩種類型:廣播接入地址和數(shù)據(jù)接入地址。廣播接入地址:固定為 0x8E89BED6,在廣播、掃描、發(fā)起連接時(shí)使用。數(shù)據(jù)接入地址:隨機(jī)值,不同的連接有不同的值。在連接建立之后的兩個(gè)設(shè)備間使用。對(duì)于數(shù)據(jù)信道,數(shù)據(jù)接入地址是一個(gè)隨機(jī)值。

3、報(bào)頭 報(bào)頭的內(nèi)容取決于該報(bào)文是廣播報(bào)文還是數(shù)據(jù)報(bào)文。廣播報(bào)文的報(bào)頭包含 4bit 廣播報(bào)文類型、2bit 保留位、1bit 發(fā)送地址類型和 1bit 接收地址類型。

廣播報(bào)文類型

內(nèi)核協(xié)議中定義了 7 種類型:

發(fā)送地址類型和接收地址類型

發(fā)送地址類型和接收地址類型,俗稱藍(lán)牙MAC,指示設(shè)備使用公共地址(Public Address)還是隨機(jī)地址 (Random Address)。公共地址和隨機(jī)地址的長(zhǎng)度一樣,都包含 6 個(gè)字節(jié)共 48 位。BLE 設(shè)備 至少要擁有這兩種地址類型中的一種,也可以同時(shí)擁有這兩種地址類型。具體見(jiàn)第6章。

4、長(zhǎng)度 廣播報(bào)文:長(zhǎng)度域包含 6 個(gè)比特,有效值的范圍是 6~37。數(shù)據(jù)報(bào)文:長(zhǎng)度域包含 5 個(gè)比特,有效值的范圍是 0~31。

廣播報(bào)文和和數(shù)據(jù)報(bào)文的長(zhǎng)度域有所不同,主要原因是:廣播報(bào)文除了最多 31 個(gè)字節(jié) 的數(shù)據(jù)之外,還必須要包含 6 個(gè)字節(jié)的廣播設(shè)備地址。6+31=37,所以需要 6 比特的長(zhǎng)度域。

5、 數(shù)據(jù)(AdvData)

廣播和掃描響應(yīng)的數(shù)據(jù)格式如下圖所示,由有效數(shù)據(jù)部分和無(wú)效數(shù)據(jù)部分組成。

有效數(shù)據(jù)部分:包含 N 個(gè) AD Structure,每個(gè) AD Structure 由 Length,AD Type 和 AD Data 組成。對(duì)于應(yīng)用層開(kāi)發(fā),實(shí)際可見(jiàn)或者操作的只是有效數(shù)據(jù)部分,其格式為:Length:AD Type 和 AD Data 的長(zhǎng)度。AD Type:指示 AD Data 數(shù)據(jù)的含義。AD Data:數(shù)據(jù)內(nèi)容。

其中AD Type表示的意義,可以查看SIG標(biāo)準(zhǔn)。https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile

5.3、廣播可以包含的數(shù)據(jù)

參照前一節(jié)的數(shù)據(jù)(AdvData)格式,廣播中的有效數(shù)據(jù),按SIG規(guī)定的添加部分。一般情況下,建議廣播包中至少包含:設(shè)備名稱、Flags、外觀和首要服務(wù)的 UUID,如果需連接IOS手機(jī)的包括MAC地址。內(nèi)容總長(zhǎng)度不得大于31字節(jié)。

目前與廣播應(yīng)用較多的,諸如藍(lán)牙傳感器,蘋果的iBeacon信標(biāo),都是設(shè)備掃描它,從廣播中獲取傳感器結(jié)果等信息。更多細(xì)節(jié)請(qǐng)關(guān)注微信公眾號(hào)【嵌入式系統(tǒng)】。

6、設(shè)備地址

BLE 設(shè)備地址可以使用公共地址(Public Device Address)或隨機(jī)地址(Random Device Address)兩種地址類型,一個(gè) BLE 至少使用一種地址類型,當(dāng)然也可以同時(shí)具備兩種地址類型。公共地址和隨機(jī)地址的長(zhǎng)度一樣,都是 48 位(6 個(gè)字節(jié))的。BLE 設(shè)備地址類型的關(guān)系如下圖所示。

設(shè)備地址一共有如下 4 種類型:

公共地址:從 IEEE 申請(qǐng)(購(gòu)買),IEEE 保證地址分發(fā)的唯一性。

隨機(jī)靜態(tài)地址(Static Device Address):自定義,上電初始化完成后不能修改。

隨機(jī)不可解析私有地址(Non-resolvable private address):定時(shí)更新地址,藍(lán)牙內(nèi)核協(xié)議建議 15 分鐘更新一次。

隨機(jī)可解析私有地址(RPA:Resolvable Private Address):通信雙方使用共享的身份解析密鑰(IRK:Identity Resolving Key),生成和解析可解析私有地址。只有一臺(tái)設(shè)備擁有另一臺(tái)廣播設(shè)備的 IRK 時(shí),才能跟蹤該廣播設(shè)備的活動(dòng)。

6.1、公共地址

公共地址由兩部分組成,如下圖所示。公共地址由制造商從 IEEE 申請(qǐng)(購(gòu)買),由 IEEE注冊(cè)機(jī)構(gòu)為該制造商分配的機(jī)構(gòu)唯一標(biāo)識(shí)符 OUI(Organizationally Unique Identifier)。這個(gè)地址是獨(dú)一無(wú)二,不能修改的。

公共地址能明確的指示出設(shè)備,同時(shí)具有唯一性,但是安全度不夠,為了加強(qiáng)隱私保護(hù),藍(lán)牙內(nèi)核協(xié)議中提供了另外一種地址:隨機(jī)地址,隨機(jī)地址是隨機(jī)產(chǎn)生的,不是固定分配的,隨機(jī)地址又分為多種類型,以適應(yīng)不同的應(yīng)用場(chǎng)景對(duì)隱私的需求。

6.2、隨機(jī)靜態(tài)地址

隨機(jī)靜態(tài)地址是隨機(jī)生成的 48 位地址,隨機(jī)靜態(tài)地址必須符合以下要求:

靜態(tài)地址的最高 2 位有效位必須是 1。

靜態(tài)地址最高 2 位有效位之外的其余部分不能全為 0。

靜態(tài)地址最高 2 位有效位之外的其余部分不能全為 1。

一個(gè)上電周期內(nèi)不變。

靜態(tài)地址的格式如下,共 48 位,最高 2 位是固定的,必須是 1。

6.3、不可解析私有地址

設(shè)備生成不可解析私有地址時(shí)必須符合以下要求:

地址的最高 2 位有效位必須是 0。

地址最高 2 位有效位之外的其余部分不能全為 0。

地址最高 2 位有效位之外的其余部分不能全為 1。

不可解析私有地址不能和公共地址一樣。

不可解析私有地址的格式如下,共 48 位,最高 2 位是固定的,必須是 0。圖片不可解析私有地址相當(dāng)于周期性改變的隨機(jī)靜態(tài)地址,不可解析私有地址一直在變化,并且該地址是個(gè)隨機(jī)數(shù),沒(méi)有提供任何可解析的信息,因此,很難通過(guò)跟蹤地址來(lái)跟蹤設(shè)備,所以具有很高的安全性。但是因?yàn)榈刂芬恢弊兓?,在隱私上“敵我”不分,實(shí)際應(yīng)用中使用的不多。

6.4、可解析私有地址

設(shè)備生成可解析私有地址時(shí)必須符合以下要求:

地址的最高 2 位有效位必須是 0 和 1。

Prand 中地址最高 2 位有效位之外的其余部分不能全為 0。

Prand 中地址最高 2 位有效位之外的其余部分不能全為 1。

不可解析私有地址不能和公共地址一樣。

不可解析私有地址的格式如下,共 48 位,最高 2 位是固定的,必須是 01。

7、MTU交換

藍(lán)牙 4.2 之前,BLE 的 MTU(Maximum Transmission Unit,最大傳輸單元)為 23 個(gè)字節(jié),這 23 個(gè)字節(jié)中包含了 1 個(gè)字節(jié)的操作碼(op code)和 2 個(gè)字節(jié)的屬性句柄(attribute handle),因此一次最多傳輸 20 個(gè)字節(jié)。從藍(lán)牙 4.2 開(kāi)始,BLE 支持長(zhǎng)包傳輸,MTU 擴(kuò)展到了 247 個(gè)字節(jié),除去 op code 和 attribute handle,一次可傳輸?shù)淖畲箝L(zhǎng)度為 244 個(gè)字節(jié)。兩種 MTU 存在,那么客戶端和服務(wù)器是如何知道使用什么樣的 MTU 的?客戶端和服務(wù)器是通過(guò)協(xié)商來(lái)交換各自支持的 MTU 的長(zhǎng)度的,這個(gè)過(guò)程稱為 MTU 交換(Exchange MTU),通過(guò) MTU 交換,客戶端和服務(wù)器具備了自適應(yīng) MTU 的功能,但是注冊(cè)每個(gè)建立的連接只能在連接建立時(shí)交換一次,而不能實(shí)時(shí)通過(guò) MTU 交換協(xié)商數(shù)據(jù)傳輸長(zhǎng)度。

8、DFU固件更新

產(chǎn)品交付后,使用中可能發(fā)現(xiàn)隱藏的BUG 或者需要增加新功能,重新召回產(chǎn)品使用編程器更新軟件,對(duì)成本是個(gè)考驗(yàn),最好的方式使用空中升級(jí),DFU(Device Firmware Upgrade)固件更新就是非接觸解決軟件版本升級(jí)的問(wèn)題。

一般芯片SDK都提供了完整的DFU方案,支持對(duì) SD、Bootloader 或 APP 升級(jí),DFU 的核心是Bootloader,接收新固件、更新應(yīng)用程序。

自定義升級(jí)方案可參考 終端設(shè)備在線升級(jí) 一文。

9、開(kāi)發(fā)套路

基于SDK的藍(lán)牙設(shè)備端開(kāi)發(fā),一般是先熟悉API,主要包括藍(lán)牙開(kāi)啟、關(guān)閉,設(shè)置廣播內(nèi)容、間隔,設(shè)備名稱和MAC,發(fā)起掃描請(qǐng)求,連接請(qǐng)求,新建服務(wù)(物聯(lián)網(wǎng)產(chǎn)品一般都是GATT低功耗設(shè)備)以及接收事件回調(diào)(如連接成功事件、斷開(kāi)事件)、廣播掃描結(jié)果。

再針對(duì)應(yīng)用場(chǎng)景,本機(jī)是作為客戶端主動(dòng)發(fā)起藍(lán)牙連接,還是提供藍(lán)牙服務(wù)等待外設(shè)連接。

如果是客戶端,開(kāi)啟藍(lán)牙掃描周圍廣播,找到合適的發(fā)起連接,再使用對(duì)應(yīng)的UUID進(jìn)行通信交互;有些簡(jiǎn)單的BLE傳感器,不需要連接,只需解析廣播數(shù)據(jù)即可獲取有效信息。特別說(shuō)明,藍(lán)牙掃描比較耗電。

如果是服務(wù)端,開(kāi)啟藍(lán)牙建立服務(wù),一般都是自定義服務(wù)ID和其下多個(gè)屬性UUID,屬性UUID配置支持讀或者寫或者通知。其廣播內(nèi)容參考標(biāo)準(zhǔn)格式定義,總長(zhǎng)不得大于31字節(jié),一般得包含MAC,否則IOS APP開(kāi)發(fā)人員有意見(jiàn),然后等待外部藍(lán)牙來(lái)連接。

藍(lán)牙連接后,為保證數(shù)據(jù)安全,一般使用AES128加密通信,不過(guò)BLE藍(lán)牙單次傳輸數(shù)據(jù)包長(zhǎng)度有限,效率不高。

調(diào)試時(shí)使用手機(jī)APP對(duì)接,個(gè)人一般使用Android版 nRF Connect.apk,功能全面;調(diào)試時(shí)也使用IOS手機(jī)看看效果,尤其關(guān)注MAC地址類型(第6章)的影響,IOS的開(kāi)發(fā)比較特別。

10、參考文章

本文主要參考 艾克姆科技的藍(lán)牙低功耗開(kāi)發(fā)指南。

本文轉(zhuǎn)載自微信公眾號(hào)「嵌入式系統(tǒng)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系嵌入式系統(tǒng)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 嵌入式系統(tǒng)
相關(guān)推薦

2023-09-20 11:46:54

藍(lán)牙物聯(lián)網(wǎng)IOT

2021-03-16 16:07:37

物聯(lián)網(wǎng)藍(lán)牙連接IoT

2013-12-09 09:37:11

藍(lán)牙4.1物聯(lián)網(wǎng)

2023-02-17 17:21:17

藍(lán)牙5.0物聯(lián)網(wǎng)

2018-01-26 10:37:45

2019-06-20 08:13:33

物聯(lián)網(wǎng)IOT技術(shù)

2023-12-14 15:03:01

Andon系統(tǒng)物聯(lián)網(wǎng)IO

2020-06-12 17:33:20

物聯(lián)網(wǎng)藍(lán)牙技術(shù)

2018-07-20 05:44:33

藍(lán)牙5物聯(lián)網(wǎng)通信

2019-03-14 09:41:28

物聯(lián)網(wǎng)安全惡意攻擊僵尸網(wǎng)絡(luò)

2024-05-17 12:53:54

IOT網(wǎng)關(guān)物聯(lián)網(wǎng)平臺(tái)物聯(lián)網(wǎng)

2023-12-04 11:17:20

2021-12-09 22:47:26

物聯(lián)網(wǎng)室內(nèi)定位

2015-12-02 15:18:05

物聯(lián)網(wǎng)物聯(lián)網(wǎng)技術(shù)

2022-11-08 10:19:15

2023-11-29 10:58:28

AIoTIOT數(shù)據(jù)平臺(tái)

2018-08-03 16:09:09

2018-08-06 06:57:49

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)設(shè)備

2022-07-29 08:06:31

物聯(lián)網(wǎng)終端安全

2012-10-10 09:15:56

藍(lán)牙藍(lán)牙技術(shù)聯(lián)盟
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)