偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

[[389857]]

 1、藍牙簡介

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

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

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

1.2、什么是藍牙低功耗

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

低成本,低功耗。

快速啟動,瞬間連接。最快 3ms 低延遲。

傳輸距離的提高。

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

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

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

運動休閑,如心率監(jiān)測儀、體溫計、計步器等。

鼠標、鍵盤、遙控器。

Beacons 藍牙信標。

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

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

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

1、藍牙 1.0:基本碼率,Basic Rate,BR。

2、藍牙 2.0:增強碼率,Enhanced Data Rata,EDR。

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

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

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

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

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

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

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

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

1.4.1 藍牙的標志

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

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

Bluetooth Smart:單模設(shè)備,如智能手環(huán)。

標準Bluetooth:傳統(tǒng)藍牙設(shè)備,如用于傳輸語音的藍牙耳機。

1.4.2 設(shè)備類型

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

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

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

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

2.1、 物理層(Physical Layer)

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

2.2、鏈路層(LL)

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

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

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

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

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

主機控制器接口 HCI(Host controller interface)在 Host 和 Controller 之間提供一個標準化的接口,該層可以由應(yīng)用程序接口 API 實現(xiàn)或者使用硬件接口 UART、SPI 或 USB 來控制。控制器通過 HCI 發(fā)送數(shù)據(jù)和事件給主機,主機通過 HCI 發(fā)送命令和數(shù)據(jù)給控制器。

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

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

2.5、 安全管理層(SM)

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

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

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

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

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

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

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

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

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

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

主機、從機:針對鏈接層。

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

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

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

2.9、 應(yīng)用層

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

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

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

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

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

3、藍牙事件

3.1、廣播事件

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

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

3.2、掃描事件

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

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

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

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

3.3、連接事件

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

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

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

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

4.1、 profile(配置文件)

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

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

4.2、 Service(服務(wù))

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

4.3、Characteristic(特征)

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

4.4、UUID

UUID(Universally Unique Identifier)是一個 128 位的數(shù)字,用來標志屬性的類型。Service和 Characteristic 都是一種屬性,都需要一個唯一的 UUID 來標識。

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

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

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

0x2700 ~ 0x27FF:用于標識計量單位。

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

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

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

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

5、藍牙廣播

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

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

5.1 、廣播類型

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

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

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

不可連接廣播:廣播數(shù)據(jù),而不進入連接態(tài),也不響應(yīng)掃描,這是唯一一個允許硬件設(shè)備只有發(fā)射機的廣播類型,因為它不需要接收任何數(shù)據(jù)。

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

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

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

前導

是一個 8 比特的交替序列。他不是 01010101 就是 10101010,取決于接入地址的第 一個比特。若接入地址的第一個比特為 0:01010101 若接入地址的第一個比特為 1:10101010 接收機可以根據(jù)前導的無線信號強度來配置自動增益控制。

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

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

廣播報文類型

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

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

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

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

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

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

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

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

其中AD Type表示的意義,可以查看SIG標準。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手機的包括MAC地址。內(nèi)容總長度不得大于31字節(jié)。

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

6、設(shè)備地址

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

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

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

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

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

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

6.1、公共地址

公共地址由兩部分組成,如下圖所示。公共地址由制造商從 IEEE 申請(購買),由 IEEE注冊機構(gòu)為該制造商分配的機構(gòu)唯一標識符 OUI(Organizationally Unique Identifier)。這個地址是獨一無二,不能修改的。

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

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

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

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

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

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

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

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

6.3、不可解析私有地址

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

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

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

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

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

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

6.4、可解析私有地址

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

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

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

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

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

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

7、MTU交換

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

8、DFU固件更新

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

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

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

9、開發(fā)套路

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

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

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

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

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

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

10、參考文章

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

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

 

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

2023-09-20 11:46:54

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

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

2013-12-09 09:37:11

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

2023-02-17 17:21:17

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

2018-01-26 10:37:45

2021-03-16 16:07:37

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

2018-07-20 05:44:33

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

2022-07-29 08:06:31

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

2018-08-03 16:09:09

2018-08-06 06:57:49

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

2023-11-29 10:58:28

AIoTIOT數(shù)據(jù)平臺

2022-11-08 10:19:15

2020-06-12 17:33:20

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

2019-03-14 09:41:28

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

2021-12-09 22:47:26

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

2024-05-17 12:53:54

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

2023-12-04 11:17:20

2023-04-23 14:50:41

物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)傳感器

2015-12-02 15:18:05

物聯(lián)網(wǎng)物聯(lián)網(wǎng)技術(shù)
點贊
收藏

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