一文認識藍牙(驗證基于Aduino IDE的ESP32)

1、簡介

????????藍牙技術是一種無線通信的方式,利用特定頻率的波段(2.4GHz-2.485GHz左右),進行電磁波傳輸,總共有83.5MHz的帶寬資源。

1.1、背景

????????藍牙(Bluetooth)一詞取自于十世紀丹麥國王哈拉爾HaralBluetooth。一位來自英特爾的工程師 Jim Kardach將“藍牙”與后來的無線通訊技術標準關聯在一起的。他在一次無線通訊行業會議上,提議將“Bluetooth”作為無線通訊技術標準的名稱。藍牙的 LOGO 則是來自后弗薩克文的符文組合,將哈拉爾國王名字的首字母 H 和 B 拼在一起,成為了今天大家熟知的藍色徽標。

藍牙技術開始于愛立信聯合在 1994 年創制的方案,該方案旨在研究移動電話和其他配件間進行低功耗、低成本無線通信連接的方法。發明者希望為設備間的無線通訊創造一組統一規則(標準化協議),以解決用戶間互不兼容的移動電子設備的通信問題,1999年在愛立信聯合IBM、英特爾、諾基亞及東芝公司等公司在1999 年 7 月 26 日正式公布 1.0A 版,確定使用 2.4GHz 頻段。從此之后,藍牙就開始了迅速發展的歷程。

1.2、發展歷程

版本時間PHY極限速率主要技術更新
1.0A/1.0B19990.7Mbit/s最早期的藍牙 1.0 A 和 1.0B 版存在多個問題,有多家廠商指出他們的產品互不兼容。.
2.0+EDR20041Mbps(3Mbps with EDR)

新增的 EDR(Enhanced Data Rate)技術通過提高多任務處理和多種藍牙設備同時運行的能力,使得藍牙設備的傳輸率可達 3Mbps。藍牙 2.0 支持雙工模式:可以一邊進行語音通訊,一邊傳輸文檔/高質素圖片。同時,EDR 技術通過減少工作負債循環來降低功耗,由于帶寬的增加,藍牙 2.0 增加了連接設備的數量。

3.0+HS20091Mbps(3Mbps with EDR,24Mbps over 802.11 WIFI)High Speed 可以使藍牙調用 802.11 WiFi 用于實現高速數據傳輸,傳輸率高達 24Mbps,是藍牙 2.0 的 8 倍,輕松實現錄像機至高清電視、PC 至 PMP、UMPC 至打印機之間的資料傳輸。
4.0+BLE20133Mbps with EDR ,1Mbps LE藍牙 4.0 是迄今為止第一個藍牙綜合協議規范,將三種規格集成在一起。其中最重要的變化就是 BLE(Bluetooth Low Energy)低功耗功能,提出了低功耗藍牙、傳統藍牙和高速藍牙三種模式。
5.020172Mbit/s LE

有效傳輸距離是藍牙 4.2 的四倍

(理論上可達 300 米)更低的功耗,低速率下保持幾個uA,增加了信標、MASH組網、擴展廣播、 室內定位等等新的技術。

????????

當前的藍牙技術主要分為BR/EDR(Basic Rate /Enhanced Data Rate)和低耗能(LE)兩種技術類型。其中BR/EDR型是以點對點網絡拓撲結構創建一對一設備通信;LE型則使用點對點(一對一)、廣播(一對多)和網格(多對多)等多種網絡拓撲結構。

????????低功耗藍牙不能向后兼容原有的藍牙協議(經典藍牙協議),所以它們之間是不能互通的。藍牙4.0規范允許設備同時支持經典與低功耗藍牙協議。

2、工作方式

廣播模式、主從模式、主從一體模式、掃描模式、透傳模式、AT指令模式

3、分類(藍牙規范)

在介紹藍牙協議之前,我們可以先復習一下TCP/IP5層網絡模型和它所對應的網絡協議集

可能不同應用的只需要關注在不同層次上的網絡協議就可以滿足日常工作使用了,像應用開發的程序猿,一般只關注應用層的協議,http,https等等;網絡的程序猿可能只需要關注TCP協議、IP協議以及ARP協議等;WiFi的程序猿主要focus在802.11協議上。但藍牙技術不同,它并不處于TCP/IP5層模型中的任何一層,而是覆蓋了整個5層TCP/IP模型。有了這個概念之后,讓我們來看看下圖

在圖中我們可以看到,藍牙的架構分為HostController兩個模塊。在開發過程中,我們一般把藍牙的架構分為這兩個模塊,

Host主要是各種業務場景需求的實現

Controller部分主要負責的是藍牙報文的收發以及藍牙物理連接的管理這些基本功能

????????通常絕大部分的開發工作都是在Host端進行,Controller部分的工作大都是由專門的藍牙芯片廠商來負責;Host和Controller分模塊的最初設計理念是想讓這兩個模塊單獨運行在兩顆不同的芯片甚至系統上,之間通過硬件通信端口(串口,USB)使用HCI協議進行連接和通信,這樣可以方便替換和升級,例如對于不帶藍牙功能的電腦,我們可以買一個USB藍牙接收器插到電腦上,就可以支持了藍牙功能,這個場景下,HOST模塊就是運行在電腦系統上,Controller模塊就是運行在USB藍牙接收器上。現在雖然有不少芯片把Host和Controller模塊都放在了一顆芯片上,但是基本還是遵循這樣的層次結構,只是將HCI協議從硬件通信端口換成了軟件端口。
????????從應用場景來說,藍牙規范針對了我們日常生活中會碰到的非常多的場景分別定義了不同的場景規范(Profile)來支持這些場景下的需求

在圖中我們可以看見:

HFP(Hands Free Profile):來支持藍牙耳機通話場景

SPP(Serial Port Profile):用于串口傳輸

OPP(Object Push Profile):用于設備之間的文件傳輸場景

A2DP(Advanced Audio Distribution Profile):用于藍牙耳機收聽音樂場景

AVRCP(A/V Remote Control Profile):用于藍牙耳機音樂播放控制場景

PAN(Personal Area Networking Profile):可以讓手機作為藍牙熱點提供上網服務

HOGP(HID Over GATT Profile):低功耗藍牙鼠標鍵盤,充一次電可以用三個月到半年。

藍牙其實還有其他的像打印(Basic Printing Profile),心率(Heart Rate Profile),尋物(Find Me Profile)等等一系列場景規范(Profile)來支持不同的應用場景

傳統藍牙和低功耗藍牙雖然都是藍牙技術,但兩種之間有非常大的差別,一個簡單的區分就是看版本,版本低于4.0的都是經典藍牙,高于4.0的才能支持低功耗藍牙。在這里我們簡單介紹一下兩種藍牙技術的概念

3.1傳統藍牙

????????泛指支持藍牙協議在4.0以下的模塊,一般用于數據量比較大的傳輸,如:語音、音樂等較高數據量傳輸。 經典藍牙模塊可再細分為:傳統藍牙模塊和高速藍牙模塊。傳統藍牙模塊在2004年推出,主要代表是支持藍牙2.1協議的模塊,在智能手機爆發的時期得到廣泛支持。高速藍牙模塊在2009年推出,速率提高到約24Mbps,是傳統藍牙模塊的八倍,可以輕松用于錄像機至高清電視、PC至PMP、UMPC至打印機之間的資料傳輸。

3.1.1、協議架構

藍牙協議規定了兩個層次的協議,分別為藍牙核心協議(Bluetooth Core)和藍牙應用層協議(Bluetooth Application)

藍牙核心協議

Bluetooth Core由兩部分組成,Host和Controller。這兩部分在不同的藍牙技術中,承擔角色略有不同,但大致的功能是相同的。Controller負責定義RF、Baseband等偏硬件的規范,并在這之上抽象出用于通信的邏輯鏈路(Logical Link);Host負責在邏輯鏈路的基礎上,進行更為友好的封裝,這樣就可以屏蔽掉藍牙技術的細節,讓Bluetooth Application更為方便的使用。

在一個系統中,Host只有一個,但Controller可以一個,也可以有多個。一個常見的例子是藍牙耳機與手機之間的通信。在這種情況下,手機充當藍牙主設備(Host),負責管理整個藍牙連接。手機內部可能搭載了一個或多個藍牙控制器(Controller),用來處理和管理藍牙信號的發送和接收。當用戶使用藍牙耳機時,手機會與藍牙耳機進行配對并建立連接。手機作為主設備發送音頻數據到藍牙耳機,而藍牙耳機的控制器接收并處理這些數據,然后將音頻播放出來。在這個例子中,手機是唯一的主設備(Host),但可能搭載一個或多個藍牙控制器(Controller),以實現音頻數據的傳輸和處理。

藍牙應用層協議

定義了藍牙設備之間進行數據傳輸和通信所需的協議和規范。

藍牙應用層協議包括多個子協議,其中最常用的是串口配置協議(SPP)、對象交換協議(OPP)、電話簿訪問協議(PBAP)、音頻/視頻遠程控制協議(AVRCP)等。

SPP協議用于在藍牙設備之間建立虛擬串口通信,可以實現數據的雙向傳輸。

OPP協議用于在藍牙設備之間進行對象(如照片、音樂等)的傳輸和共享。

PBAP協議用于在藍牙設備之間共享電話簿數據,方便用戶在藍牙設備上查看和管理聯系人信息。

AVRCP協議用于在藍牙設備之間進行音頻/視頻播放控制,例如播放、暫停、下一曲等操作。

除了上述常用的應用層協議外,藍牙還支持一些其他的應用層協議,如藍牙打印協議(BPP)、藍牙鍵盤協議(HID)等,這些協議都為不同類型的藍牙設備之間的通信和數據傳輸提供了標準化的解決方案。通過應用層協議,藍牙設備可以實現各種不同類型的功能和應用,為用戶提供更加便利和豐富的藍牙體驗。

SPEC中藍牙協議分為四個層次:物理層(Physical Layer)、邏輯層(Logical Layer)、L2CAP Layer和應用層(APP Layer)

3.1.1.1、物理層

????????物理層負責提供數據傳輸的物理信道,藍牙的物理層分為Physical Channel和Physical Links兩個子層。一個通信系統中通常存在多種類型的物理信道,BR/EDRLE?AMP?在物理層的實現就較大的差異。

相同點

BR/EDR、LE和AMP的RF都使用2.4GHz頻段,頻率范圍是2.400-2.4835 GHz

不同點

分類頻率信道備注
BR/EDR(經典藍牙)分成79個channel,每一個channel占用1M的帶寬5種物理信道(跳頻信道)
LE(低功耗藍牙)分成40個channel,每一個channel占用2M的帶寬2種物理信道
AMP(高速數據傳輸)直接采用802.11(WIFI)的PHY規范一個AMP Physical Channel

3.1.1.2、邏輯層

? ? ? ? 主要功能是在已連接(的藍牙設備之間,基于物理鏈路,建立邏輯信道。所謂的邏輯信道,和城市道路上的車道類似:一條城市單行道路可以看做一個物理鏈路,該物理鏈路根據行車用途,可以劃分為多個邏輯信道,如直行車道、右轉車道、左轉車道、快速車道、慢速車道等等。如圖

AMP ACL基于AMP技術的、面前連接的、異步傳輸鏈路,為AMP-U提供服務
BR/EDR ACL基于BR/EDR技術的ACL鏈路,為ACL-C、ACL-U提供服務
SCO/eSCO基于BR/EDR技術的、面向連接的、同步傳輸鏈路,為stream類型的Logical Link提供服務
ASB、PSB基于BR/EDR技術的、面向連接的廣播傳輸鏈路,為ACL-U、PSB-U、PSB-C提供服務
CSB基于BR/EDR技術的、無連接的廣播鏈路,為PBD提供服務。
LE ACL基于LE技術的、面前連接的、異步傳輸鏈路,為LE-U、LE-C提供服務
ADVB基于LE技術的、廣告/廣播鏈路,為ADVB-U、ADVB-C提供服務
3.1.1.3、L2CAP

L2CAP是邏輯鏈路控制和適配協議(Logical Link Control and Adaptation Protocol)的縮寫,負責管理邏輯層提供的邏輯鏈路。基于該協議,不同Application可共享同一個邏輯鏈路,類似TCP/IP中端口(port)的概念。通過L2CAP層可以將ACL數據分組交換為便于高層應用的數據分組格式,并提供協議復用和服務質量交換等功能。L2CAP提供多路復用角色,允許許多不同的應用程序共享ACL-U,ASB-U,LE-U或AMP-U邏輯鏈接。通過協議多路復用、分段重組操作和組概念,向高層提供面向連接的和無連接的數據服務,L2CAP還屏蔽了低層傳輸協議中的很多特性,使得高層協議應用開發人員可以不必了解基層協議而進行開發。

3.1.1.4、應用層

基于L2CAP提供的channel,實現各種各樣的應用功能。。Profile是藍牙協議的特有概念,為了實現不同平臺下的不同設備的互聯互通,藍牙協議不止規定了核心規范(稱作Bluetooth core),也為各種不同的應用場景,定義了各種Application規范,這些應用層規范稱作藍牙profile。更新一下圖

核心規范

Core Specifications,定義了藍牙技術最核心的內容。覆蓋了從物理層一直到傳輸層的內容。
Protocol規范

Protocol Specfications,在核心規范之上針對某一大類場景(例如音視頻傳輸,線纜通信傳輸,網絡通信傳輸)的數據通信需求來定義的傳輸協議,屬于應用層協議,只在經典藍牙中存在。
Profile規范

包含經典藍牙的Traditional Profile Specifications和低功耗藍牙的GATT Specifications。這類規范是針對某一個特定場景需求(例如聽音樂,打電話)來對核心規范和protocol做出更細化的定義和對這些協議無法滿足的一些細化需求做了補充協議。
藍牙mesh規范

Mesh Networking Specifications,這是藍牙最新的mesh規范。只使用了低功耗藍牙的?

?3.1.2、代碼(待更新)

待更新

3.2低功耗藍牙

????????指支持藍牙協議4.0或更高的模塊,也稱為BLE模塊,最大的特點是成本和功耗的降低,應用于實時性要求比較高的產品中,比如:智能家居類(藍牙鎖、藍牙燈)、傳感設備的數據發送(血壓計、溫度傳感器)、消費類電子(電子煙、遙控玩具)等。

3.2.1、協議架構

BLE的協議可分為Bluetooth ApplicationBluetooth Core兩大部分,Bluetooth Core又包含BLE Controller和BLE Host兩部分(在傳統藍牙的協議架構的時候講過)。Bluetooth Application主要調用API實現上層功能,本質上來說不屬于協議層,重點了解GAP、ATT、Link Layer,其它有個簡單認識即可

PS:傳統藍牙和低功耗藍牙區別

PS.1、Controler端

在經典藍牙的定義里,將這83.5MHz總共分為80個頻道每個頻道是1MHz帶寬,藍牙連接管理是用連接管理協議(Link Manager Protocol LMP)。低功耗藍牙里,空中只有40個頻道,每個頻道是2MHz帶寬,連接管理使用的是連接層(Link Layer),空中數據包的結構也完全不同。我們可以看到,Controler部分的功能完全是兩個獨立的路徑,也就是說,經典藍牙和低功耗藍牙的controller可以獨立存在,互相不依賴,所以目前市面上有只支持經典藍牙的芯片,也有只支持低功耗藍牙芯片,當然,也有兩種藍牙模式共存的芯片。

PS.2、Host端

????????在經典藍牙協議里,在邏輯鏈路控制與適配協議層(Logical Link Control and Adaptation Protocol L2CAP)之上,還根據不同的應用場景定義了不同的傳輸協議,例如RFCOM, AVDTP,AVCTP,在不同的傳輸協議之上才定義了不同的Profile,層次結構比較復雜,開發人員學習成本高。

????????低功耗藍牙就比較簡單,只定義了一個屬性協議(Attribute Protocol ATT),基于屬性協議定義了一個通用屬性場景規范(Generic Attribute Profile GATT)和其他的針對特定業務的場景規范(Profile),開發起來比較簡單,整體框架也比較容易實現私有場景的開發。

PS.3、應用和功耗

應用區別:

????????BLE低功耗藍牙一般多用在藍牙數據模塊,擁有極低的運行和待機功耗,使用一粒紐扣電池可連續工作數年之久;

????????BT經典藍牙模塊多用在藍牙音頻模塊,音頻需要大碼流的數據傳輸更適合使用。
?
在功耗上:

????????傳統藍牙有3個級別的功耗,class1、class2、class3分別支持100m、10m、1m的傳輸距離;

????????低功耗藍牙沒有功耗級別,一般發送功率在7dbm。低功耗BLE5.0模塊可支持藍牙Mesh技術。

3.3藍牙Mesh(待更新)

待更新

參考資料

三張圖帶你入門藍牙規范

Bluetooth 藍牙介紹(一) :基礎知識

?藍牙

深入淺出講解低功耗藍牙(BLE)協議棧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Thread.start() run()

Thread.start() & run() public static void main(String[] args) { new Thread(new Runnable() {Overridepublic void run() {System.out.println("2432");}}).start(); }public class Thread implements Runnable {//通過構造方法調用init方法,在…

Springboot+vue的商業輔助決策系統的設計與實現(有報告)。Javaee項目,springboot vue前后端分離項目

演示視頻: Springbootvue的商業輔助決策系統的設計與實現(有報告)。Javaee項目,springboot vue前后端分離項目 項目介紹: 本文設計了一個基于Springbootvue的前后端分離的商業輔助決策系統的設計與實現,采…

Leetcode210. 課程表 II

Every day a Leetcode 題目來源:210. 課程表 II 解法1: 什么是拓撲排序? 我們考慮拓撲排序中最前面的節點,該節點一定不會有任何入邊,也就是它沒有任何的先修課程要求。當我們將一個節點加入答案中后,我…

html5新增標簽+css3新增標簽

新增標簽 一.html5新增標簽1.語義化標簽2.多媒體標簽(1)視頻video(2)音頻audio(3).總結 3.input屬性4.表單屬性 二.css3新增選擇器1.新增選擇器(1)屬性選擇器(2&#xff…

Ubuntu進入python時報錯:找不到命令 “python”,“python3” 命令來自 Debian 軟件包 python3

一、錯誤描述 二、解決辦法 進入”/usr/bin”目錄下,查看/usr/bin目錄中所有與python相關的文件和鏈接: cd /usr/bin ls -l | grep python 可以看到Python3指向的是Python3.10,而并無指向python3的軟連接 只需要在python與python3之間手動…

微服務治理:Nacos, Zookeeper, consul, etcd, Eureka等 5 個常用微服務注冊工具對比

當然!下面是 Nacos、Zookeeper、Consul、etcd 和 Eureka 這五個常用的注冊中心的詳細對比: Nacos: Nacos 是由 HashiCorp 開發的高度可擴展和可靠的服務發現、配置管理和服務網格解決方案。它的架構基于一組服務器代理形成的共識組和與服務器…

Github配置SSH免密認證

以Ubuntu Server為例 生成SSH ssh-keygen -t ed25519 -C "your_emailexample.com" 如果系統不支持Ed25519算法,使用舊的命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 根據提示生成公私鑰文件,記下位置…

前端學習、CSS

CSS可以嵌入到HTML中使用。 每個CSS語法包含兩部分,選擇器和應用的屬性。 div用來聲明針對頁面上的哪些元素生效。 具體設置的屬性以鍵值對形式表示,屬性都在{}里,屬性之間用;分割,鍵和值之間用:分割。 因為CSS的特殊命名風格…

MySQL 常用優化方式

MySQL 常用優化方式 sql 書寫順序與執行順序SQL設計優化使用索引避免索引失效分析慢查詢合理使用子查詢和臨時表列相關使用 日常SQL優化場景limit語句隱式類型轉換嵌套子查詢混合排序查詢重寫 sql 書寫順序與執行順序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…

ctf_show筆記篇(web入門---php特性)

目錄 php特性 89&#xff1a;直接數組繞過preg_match當遇到數組時會直接報錯輸出0 90&#xff1a;這里利用了intval的特性 91&#xff1a;這里需要細節一點 92-93&#xff1a;這兩題的方法很多可以發散思維 94&#xff1a;還是利用小數繞過例如4476.0 95&#xff1a;這里…

HTML和CSS (前端共三篇)【詳解】

目錄 一、前端開發介紹 二、HTML入門 三、HTML基礎標簽 四、CSS樣式修飾 五、HTML表格標簽 六、HTML表單標簽 一、前端開發介紹 web應用有BS和CS架構兩種&#xff0c;其中我們主要涉及的是BS架構。而BS架構里&#xff0c;B&#xff08;Browser瀏覽器&#xff09;是客戶端的…

藍橋杯(3.1)

92. 遞歸實現指數型枚舉 import java.util.Scanner;public class Main {static int N 16;static int n;static int[] st new int[N]; public static void dfs(int u) {if(u > n) {for(int i1;i<n;i) {if(st[i] 1)System.out.print(i" ");}System.out.print…

798. 差分矩陣

Problem: 798. 差分矩陣 文章目錄 思路解題方法復雜度Code 思路 這是一個差分矩陣的問題。差分矩陣是一種用于處理區間修改問題的數據結構&#xff0c;它可以在O(1)的時間復雜度內完成區間的修改操作&#xff0c;然后在O(n)的時間復雜度內完成所有元素的更新操作。 在這個問題中…

【k8s管理--兩種方式安裝prometheus】

1、k8s的監控方案 1.1 Heapster Heapster是容器集群監控和性能分忻工具&#xff0c;天然的支持Kubernetes和CoreOS。 Kubernetes有個出名的監控agent–cAdvisor。在每個kubernetes Node上都會運行cAdvisor&#xff0c;它會收集本機以及容器的監控數(cpu,memory,filesystem,ne…

conda目錄遷移

conda默認安裝在系統目錄&#xff0c; 但隨著使用&#xff0c; 占用的空間越來越大&#xff0c; 需要遷移到其他目錄。 假設原來conda安裝在/home/leo/anaconda3目錄&#xff0c; 現在要遷移到/data路徑。 方法是&#xff1a; 1 移動文件位置 mv /home/leo/anaconda3 /dat…

python筆記_鍵盤輸入

例&#xff1a;從控制臺接收員工信息 name input("輸入姓名:") age input("輸入年齡:") id input("輸入id:") print("name",name) print("age",age) print("id",id) ——> 輸入姓名: 1&#xff0c;接收到的…

Ubuntu將c++編譯成.so文件并測試

一、準備cpp和h文件 創建test.cpp 在cpp中定義相加的函數funcAdd&#xff0c;給出函數的細節代碼 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }創建test.h 在h中聲明定義的函數&#xff0c;不需要任何細節 #ifndef __TEST__ #…

LeetCode 熱題 HOT 100(P1~P10)

&#x1f525; LeetCode 熱題 HOT 100 這里記錄下刷題過程中的心得&#xff0c;其實算法題基本就是個套路問題&#xff0c;很多時候你不知道套路或者模板&#xff0c;第一次嘗試去做的時候就會非常懵逼、沮喪和無助。而且就算你一時理解并掌握了&#xff0c;過一段時間往往會絕…

蘋果 Vision Pro零售部件成本價格分析

蘋果公司發布的全新頭戴式顯示器 Apple Vision Pro 雖然售價高達3499美元&#xff0c;但其制造成本同樣不菲&#xff0c;根據研究機構 Omdia 的估計&#xff0c;該頭顯僅零部件成本就超過了1500美元。這款頭顯的總零部件成本估計為1542美元&#xff0c;這還并不包括研發、包裝、…

騰訊云服務器CVM_云主機_云計算服務器_彈性云服務器

騰訊云服務器CVM提供安全可靠的彈性計算服務&#xff0c;騰訊云明星級云服務器&#xff0c;彈性計算實時擴展或縮減計算資源&#xff0c;支持包年包月、按量計費和競價實例計費模式&#xff0c;CVM提供多種CPU、內存、硬盤和帶寬可以靈活調整的實例規格&#xff0c;提供9個9的數…