【Bluetooth|藍牙開發】二、藍牙開發入門

来源:https://www.cnblogs.com/-Donge/archive/2022/11/03/16855984.html
-Advertisement-
Play Games

個人主頁:董哥聊技術 我是董哥,嵌入式領域新星創作者 創作理念:專註分享高質量嵌入式文章,讓大家讀有所得! 【所有文章彙總】 1、藍牙基礎概念 藍牙,是一種利用低功率無線電,支持設備短距離通信的無線電技術,能在包括行動電話、PDA、無線耳機、筆記本電腦、相關外設等眾多設備之間進行無線信息交換,藍牙工 ...


img
個人主頁:董哥聊技術
我是董哥,嵌入式領域新星創作者
創作理念:專註分享高質量嵌入式文章,讓大家讀有所得!
img

1、BLE開發入門基礎

 
所有文章彙總
 

1、藍牙基礎概念

藍牙,是一種利用低功率無線電,支持設備短距離通信的無線電技術,能在包括行動電話、PDA、無線耳機、筆記本電腦、相關外設等眾多設備之間進行無線信息交換,藍牙工作在全球通用的2.4GHz ISM(即工業、科學、醫學)頻段,使用IEEE802.11協議。

 

2、藍牙發展歷程

自1994年由愛立信推出至今,藍牙技術已經走過了20個歲月。從最初的Bluetooth V1.0,到Bluetooth V5.2,經歷了近9個版本的修訂後,發展為當前的狀況。

 

“藍牙”的形成背景是這樣的

1998 年 5 月,愛立信、諾基亞、東芝、 IBM和英特爾公司等五家著名廠商, 在聯合開展短程無線通信技術的標準化活動時提出了藍牙技術,其宗旨是提供一種短距離、 低成本的無線傳輸應用技術

晶元霸主 Intel 公司負責半導體晶元和傳輸軟體的開發,愛立信負責無線射頻和行動電話軟體的開發, IBM 和東芝負責筆記本電腦介面規格的開發。

1999 年下半年,著名的業界巨頭微軟、摩托羅拉、三星、朗訊與藍牙特別小組的五家公司共同發起成立了藍牙技術推廣組織,從而在全球範圍內掀起了一股“藍牙”熱潮。

全球業界即將開發一大批藍牙技術的應用產品, 使藍牙技術呈現出極其廣闊的市場前景,並預示著 21 世紀初將迎來波瀾壯闊的全球無線通信浪潮。

  • 第一代藍牙:關於短距離通訊早期的探索,使用的是BR技術,此時藍牙的理論傳輸速率,只能達到721.2Kbps。
  • 第二代藍牙:新增的 EDR(Enhanced Data Rate)技術,使得藍牙設備的傳輸率可達 3Mbps。
  • 第三代藍牙:核心是 AMP(Generic Alternate MAC/PHY),這是一種全新的交替射頻技術,支持動態地選擇正確射頻,傳輸速率高達 24Mbps
  • 第四代藍牙:主推” Low Energy”低功耗, BLE(Bluetooth Low Energy)低功耗功能
  • 第五代藍牙:開啟「物聯網」時代大門,在低功耗模式下具備更快更遠的傳輸能力

 

3、藍牙技術概述

藍牙協議包括兩種技術:BR:Basic RateLE:Low Energy。這兩種技術都包括搜索(discovery)管理、連接(connection)管理等機制,但它們是相互獨立的,不能互通的技術!

廠商如果只實現了一種,那麼只能與同樣實現該技術的設備互通。

如果廠商要確保能和所有的藍牙設備互通,那麼就只能同時實現兩種技術,而不去管是否真的需要。

 

3.1 Basic Rate(BR)

BR:Basic Rate是正宗的藍牙技術,可以包括**可選(optional)EDR(Enhanced Data Rate)技術,以及交替使用的(Alternate)**的MAC(Media Access Control)層和PHY層擴展(簡稱AMP(Alternate MAC and PHY layer extension))。

  • BR:最早期的藍牙技術,速度只能達到721.2Kbps,在那個年代,已為高大上了。
  • EDR:隨著技術的提升,使用EDR技術的藍牙,理論速率可以達到2.1Mbps
  • AMP:使用AMP技術的藍牙,理論速率可以達到54Mbps

AMPAlternate交替使用體現在:由於藍牙自身的物理層和AMP技術差異太明顯,BR/EDRAMP是不能同時使用的。

簡單的說,就是:BREDR是可以同時存在的,但BR/EDRAMP只能二選一

 

3.2 Low Energy(LE)

上面所講的BR技術的進化路線,就是傳輸速率的加快、加快、再加快。

但能量是守恆的,你想傳的更快,代價就是消耗更多的能量。而有很多的應用場景,並不關心傳輸速率,反而非常關心功耗。

這就是Bluetooth LE(稱作藍牙低功耗)產生的背景。

從它的英文名字上就可以看出它是一種低功耗藍牙技術,是藍牙技術聯盟設計和銷售的一種個人區域網技術,旨在用於醫療保健、運動健身、信標、安防、家庭娛樂等領域的新興應用。

低功耗藍牙與經典藍牙使用相同的2.4GHz無線電頻率,因此雙模設備可以共用同一個天線。低功耗藍牙使用的調製系統更簡單。

LE技術相比BR技術,差異非常大,或者說就是兩種不同的技術,湊巧都加一個“藍牙”的首碼而已。

目前BLE主要廣泛應用於IoT產品領域。

BT_RF_Baseband_Overview.gif

 

4、常見藍牙架構

市面上,大致有幾種藍牙架構:

 

4.1 SOC藍牙單晶元方案

一般是半導體廠商半開源協議棧,把開發的藍牙協議棧直接燒寫到藍牙晶元中,(比如CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,樂鑫ESP32等等),架構如下:

img

此類晶元一般可以直接做為MCU用,這類產品一般用於消費類電子,集成度很高,調調部參數可以直接使用,常見的有藍牙耳機等產品。

 

4.2 SOC藍牙+MCU方案

在集成好的藍牙晶元基礎上,通過特定的介面(UART居多),發送自定義的command來達到想要的功能。比如發送0x01代表搜索周圍設備…

img

此部分的應用,將藍牙作為一個外設使用,用於遠程通信

例如網上賣的一些藍牙串口。

 

4.3 藍牙host + controller分開方案

這種應用算是藍牙最複雜的應用,客戶需要使用藍牙的場景有很多,牽涉到的藍牙協議也有很多,需要將HostController分開,集成更多的藍牙協議,比如藍牙電話(HFP),藍牙音頻(A2DP),藍牙音樂控制(AVRCP),藍牙電話本(PBAP),藍牙簡訊(MAP)等。

其中Transport是一個協議,H2就是在USB的基礎上的協議,H4,H5,BCSP是UART基礎上的協議,當然還有SDIO

此部分應用,將定製藍牙的各種服務,實現藍牙多功能需求,

img

 

4.4 使用場景

大概列舉了以下幾種,幫助理解

1)手機 -> 手機的藍牙複雜應用,註定要用第3種方案,也就是藍牙協議棧(host)在主晶元中,藍牙晶元為HCI架構的

2)藍牙音響,藍牙耳機 -> 此種應用一般用單晶元方案就能hold住,比如CSR8670/8675/傑理藍牙等,好處在於開發便捷

3)藍牙手錶 -> 手錶要看功能複雜性,如果僅僅有時間顯示,感測器交互,藍牙,那麼可以選擇單晶元方案(也就是方案1),如果有網路等比較複雜的功能就要使用MCU+藍牙晶元方案(也就是方案3)了

4)藍牙手環,藍牙心率帶等 -> 基本上是單晶元方案

 

5、參考文檔

[1]:藍牙官網:https://www.bluetooth.com/

[2]:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107466841

[3]:https://zhuanlan.zhihu.com/p/43516534

img img 文章知識點與官方知識檔案匹配,可進一步學習相關知識CS入門技能樹Linux入門初識Linux21355 人正在系統學習中

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 邏輯導航 1.當一訪問127.0.0.1:8000時,就會向某一地址發送請求 2.請求介面需要返迴首頁所需要的輪播圖片 3.前端vue輪播圖組件迴圈一下後端發送的圖片連接列表,依次展示輪播圖 輪播圖表設計 輪播圖中一些共有的欄位,我們可以創建一個公共的基礎表,以後需要該欄位直接基礎該表就行 基表,可 ...
  • 疫情尚未結束,我們需要做好自己,時刻防範,不給別人添麻煩。 今天我們來嘗試用Python抓取世界疫情,實現可視化地圖展示。 話不多說直接開搞! 採集數據 1、數據來源 數據來源於TX新聞,鏈接展示不了,就只貼圖了。 2、模塊 import requests import csv # Python學習 ...
  • 1. Seata Server 部署 Seata分TC、TM和RM三個角色,TC(Server端)為單獨服務端部署,TM和RM(Client端)由業務系統集成。 首先,下載最新的安裝包 也可以下載源碼,然後本地編譯。最新的版本是1.5.2 下載後的啟動包(或者源碼)中有個scripts目錄,裡面有各 ...
  • 前言 在 Java 和 Kotlin 中, 除了使用Spring Boot創建微服務外,還有很多其他的替代方案。 | 名稱 | 開發商 | | : : | : : | | Helidon SE | 甲骨文 | | Ktor | JetBrains | | Micronaut | Object Com ...
  • namespace Qingyun.QingBaiFang.V2.APITest.Web { using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Collections.Generic; using System.Text ...
  • 運行一個.NET Core 項目 報錯:引發的異常:“sqlsugar.sqlsugarexception” 位於 system.private.corelib.dll 中 。 我運行的項目是 : 核心商城系統(CoreShop),本地運行起來項目後,輸入用戶名和密碼進行登錄,登錄後也沒有報錯,但是 ...
  • 一:背景 1.講故事 前段時間有位朋友在微信上找到我,說他對一個商業的 C# 程式用 WinDbg 附加不上去,每次附加之後那個 C# 程式就自動退出了,問一下到底是怎麼回事?是不是哪裡搞錯了,有經驗的朋友應該知道,其實這是 商業程式 的反調試機制搗鬼的,為了保護程式隱私,一般都不希望他人對自己做逆 ...
  • 先上結論 | Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | | | :| :| :| :| :| :| | JSONConvert | 2,273.02 ns | 43.758 ns | 52.091 ns | 0.6599 | ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...