一文搞懂藍牙模塊各種工作模式

来源:https://www.cnblogs.com/Sharemaker/archive/2022/12/08/16946041.html
-Advertisement-
Play Games

​ 摘要:本文主要歸納總結藍牙模塊的不同工作模式,通過藍牙模塊不同的工作模式瞭解其扮演不同角色時工作的一個基本原理,為更深入的研究藍牙模塊底層的工作機制和技術方案進行鋪墊。 1、主設備工作模式 主設備是能夠搜索別人並主動建立連接的一方,從掃描狀態轉化而來的。其可以和一個或多個從設備進行連接通信,它會 ...


​  摘要:本文主要歸納總結藍牙模塊的不同工作模式,通過藍牙模塊不同的工作模式瞭解其扮演不同角色時工作的一個基本原理,為更深入的研究藍牙模塊底層的工作機制和技術方案進行鋪墊。

1、主設備工作模式

        主設備是能夠搜索別人並主動建立連接的一方,從掃描狀態轉化而來的。其可以和一個或多個從設備進行連接通信,它會定期的掃描周圍的廣播狀態設備發送的廣播信息,可以對周圍設備進行搜索並選擇所需要連接的從設備進行配對連接,建立通信鏈路成功後,主從雙方就可以發送接收數據。例如智能手機,數據傳輸中做主機的藍牙模塊。

        一個藍牙設備以主模式發起連接時,需要知道從設備的mac地址,配對密碼等信息,配對完成後,可直接連接。同時主設備可以設置預設連接從設備的mac地址,這樣主設備模塊上電會自動搜索該mac地址的從設備並且進行連接。並且支持白名單功能,用戶只需要把需要連接的設備的mac寫入白名單中,模塊搜索到符合白名單的設備時就進行連接。主從透傳協議相同時,用戶不需要關註串口數據與無線數據包之間的數據轉換過程,只需通過簡單的參數設置,即可實現主設備串口與從設備串口之間的數據透傳。

        為保證連接的穩定性,預防斷電、信號等異常問題導致模塊之間斷開連接,可以開啟斷線重連功能,當異常干擾問題消失,模塊工作環境恢復正常,主設備會自動搜索剛剛斷連的從設備,儘可能減少數據的丟失,提高系統穩定性。


2、從設備工作模式

        從設備模式是從廣播者模式轉化而來的,未被連接的從設備首先進入廣播狀態,等待被主機搜索,當主機掃描到從設備建立連接後,就可以和主機設備進行數據的收發,其不能主動的建立連接,只能等別人來連接自己。和廣播模式有區別的地方在於,從設備模式的藍牙模塊是可以被連接的,定期的和主機進行連接和數據傳輸,在數據傳輸過程中作從機。例如藍牙手錶手環,藍牙滑鼠等工作在從設備模式。

        一對一應用中從設備可以設為兩種類型,一是靜默狀態,即只能與指定的主設備通信,不被別的藍牙設備查找;二是開髮狀態,既可被指定主設備查找,也可以被別的藍牙設備查找後建立連接。

        從設備模式下,用戶可以根據協議自己開發APP。此模式下包含一個串口收發的Service,用戶可以通過UUID找到它,裡面有兩個通道,分別是讀和寫。用戶可以操作這兩個通道進行數據的傳輸。如果用戶使用的主設備和從設備是同一個廠家生成的藍牙模塊,那麼主設備和從設備相連接可以無需關註裡面的協議,藍牙設備在出廠前預先設置了兩個藍牙設備之間的配對信息,兩端設備接通電源後自動構建鏈路,不需要外圍電路的介入,兩個設備的串口直接就可以進行數據的透明傳輸,為用戶建立一個簡單的無線傳輸通道。

        通過上述對藍牙模塊主設備模式和從設備模式的分別闡述,可以將基本的主從建立連接的過程總結如下:藍牙主設備發起連接,首先是查找,找出周圍處於可被查找的藍牙設備。主設備找到從設備後,與從設備進行配對,此時需要輸入從設備的PIN碼,也有設備不需要輸入PIN碼。

        配對完成後,從端藍牙設備會記錄主端設備的信任信息,此時主設備即可向從設備發起連接,已配對的設備在下次連接時不再需要重新配對。已配對的設備,作為從端藍牙設備也可以發起建立鏈路的請求,但作數據通信的藍牙模塊一般不啟動調用。一旦建立了鏈接,主機和從機之間就可以進行雙向的數據或語音通信。在通信狀態下,主設備和從設備都可以發起斷鏈,即斷開藍牙鏈路。

3、主從一體工作模式

        主從一體工作模式是指藍牙模塊可以同時作為主設備和從設備。其可以在兩個角色間切換,工作在從模式時,等待其它主設備來連接,需要時,轉換為主模式,向其它設備發起連接調用。主從一體提供了擴展藍牙模塊的能力,在藍牙4.1協議規範後,添加了“鏈路層拓撲”的功能,就可以允許藍牙模塊同時作為主設備和從設備,在任何角色組合中操作。例如藍牙HUB終端。

        當具備主從一體的藍牙模塊工作時,該藍牙模塊可以作為主設備搜集其它外圍從節點設備的信息,同時作為一個從設備將搜集到信息上報給主控終端如手機。這樣的好處就是外圍的從節點設備信息可以不局限在本地保存,通過主從一體的藍牙模塊發揮中繼器的作用,搜集後上傳給雲端或集中控制器保存或顯示。

        主從一體額外增加了藍牙模塊的功能,成本優化和易用性。 如果藍牙模塊以前在封閉系統中作為主設備工作,那現在還可以同時作為從機連接到智能手機,從而實現新的連接維度。在主從一體工作模式下,一個藍牙模塊就可以扮演兩種角色,從而可以優化系統架構。

4、廣播者工作模式

        藍牙廣播是藍牙4.0以上設備必須支持的功能。它不涉及到更上層的連接層和協議層。因此,利用藍牙廣播的數據包來傳遞的信息,在藍牙設備上具有更好的實時性和相容性。在廣播模式下,藍牙模塊定期持續的向周圍發送一定長度廣播的數據包,該數據可以被掃描者搜索到,模塊可以在低功耗的模式下持續的進行廣播,應用於極低功耗,小數據量,單向傳輸的應用場合。藍牙廣播通道的重要功能就是是用於發現設備,發起連接和發放數據。

        廣播模式主要有兩種使用場景:(1)單一方向的、無連接的數據通信,數據發送者在廣播通道上廣播數據,數據接收者掃描、接收數據;廣播者”將用作伺服器。其目的是定期將數據傳輸到設備,但不支持任何連接。如信標、廣告牌、室內定位、物料跟蹤等。(2)面向連接的建立,如藍牙從設備廣播消息後由主設備搜索到後進行連接,廣播者和從設備模式的唯一區別是不能被主機連接,只能廣播數據。

        藍牙的廣播一般是向外廣播自己的mac地址、名稱以及支持的特性,廣播主要是用於被其它的設備發現,而不是進行數據發送的。廣播包長度是固定的位元組,雖然可以有廠商自定義的數據,但是數據也是有限的。

        廣播數據包有兩種:廣播包(Advertising Data)和響應包(Scan Response),其中廣播包是每個設備必須廣播的,而響應包是可選的,每個包長度都是固定位元組N,數據包的長度N隨著藍牙協議的標準提高而擴容,例如藍牙5.0的數據包從藍牙4.2的31位元組升級成為255位元組,數據包中分為有效數據和無效數據兩部分。每個廣播包的長度必須是N個位元組,如果不到N個位元組 ,則剩下的全用0填充補全,這部分的數據是無效的。

5、觀察者工作模式

         觀察者模式,該模式下模塊為非連接,相對廣播者模式的一對多發送廣播,觀察者可以一對多接收數據。在該模式中,設備可以僅監聽和讀取空中的廣播數據。和主機唯一的區別是不能發起連接,只能持續掃描從機。

        觀察者工作模式可應用於數據採集集中器的應用場合,如感測器集中器採集等功能;另一個典型的例子是藍牙網關,藍牙模塊處於觀察者模式,無廣播,它可以掃描周圍的廣播設備,但不能要求與廣播設備連接。

6、iBeacon工作模式   

        iBeacon 是蘋果公司2013年9月推出的一項室內低耗能藍牙技術。其工作方式是:iBeacon是一個低功耗的藍牙信標,使用的是BLE技術,工作在廣播模式,利用的是BLE中名為“通告幀”(Advertising)的廣播幀。通告幀是定期發送的幀,只要是支持BLE的設備就可以接收到。廣播的發射功率可以調整,不停的廣播藍牙設備的mac地址、UUID等固定位元組的字元串等信息,接收到該字元串應用軟體會根據該字元串採取一些措施。

        iBeacon是基於2010年發佈的藍牙4.0技術規範的基礎上發展而來的微定位技術。它是建立在低功耗藍牙協議基礎上的一種廣播協議,同時它也是擁有這個協議的一款低功耗藍牙設備(從機),但是它不能和任何低功耗藍牙主機進行連接,通常是放在室內的某個固定位置,藉此向周圍進行連續性廣播,所有廣播數據在特定規則下進行排列。

        與WIFI定位相比,iBeacon定位具有低成本和高安全性,其應用場景多種多樣。常見的應用是精確營銷,比如博物館、展廳的信息推送或者購物中心服務商向顧客發送折扣捲及進店積分等。如果把它放在室內固定的位置,可以作為一個定位器,手機打開藍牙連接之後通過APP就可以獲取其位置,同時會推送一些設置好的信息到我們手機上。

        微信搖一搖也加入了iBeacon功能,例如住酒店,用戶在酒店大堂搖一搖,就可以獲取房間信息。很簡單,你的手機加入裝了一個支持iBeacon的APP或者你用微信搖一搖周邊,剛好你又在這個iBeacon設備旁邊,手機就會收到一段藍牙信號,然後手機帶著這個信號,去伺服器問,這個信號是啥意思,伺服器看到這個信號,又看到是你的手機帶著這個信號過來的,那就給你發信息。

        藍牙iBeacon是一種非常新穎的交互方式,它是一種低功耗協議,也是一種低功耗藍牙設備。在智能領域有非常廣泛的前景

7、Mesh組網工作模式

        藍牙Mesh組網技術在2017年得到SIG批准,這是一種獨立的網路技術,相容4及5系列藍牙協議。它把藍牙設備作為信號中繼站,利用低功耗藍牙廣播的方式進行信息收發,藍牙Mesh技術拓展了藍牙的通訊關係,打破了以往藍牙設備只能夠主從一對一、廣播一對多通信的限制,使網路內的藍牙設備可以實現“多對多”的設備通信,這將大大增加藍牙的通訊距離和應用場景,填補了藍牙在大規模組網,大面積覆蓋應用領域的空白。

        Mesh網路也稱為"多跳網路",或者“網狀網路”。Mesh網路的每一個節點都可以作為AP和路由器,通信時,當某個節點損壞或者堵塞時,可以自動繞過該節點,重新選擇路徑達到目的地,可以讓網路更高效可靠。

        工作在Mesh組網模式的BLE藍牙模塊可以簡單的將多個模塊加入到網路中來,一個加入到藍牙Mesh網路中的設備稱為節點利用星型網路和中繼技術,每個網路可以連接理論最大65536個節點,每個節點都可以發送、接收、轉發消息。消息可以在Mesh網路中被轉發從而到達更遠的距離。網路和網路還可以互連,最終可將無數藍牙模塊通過手機、平板電腦或 PC 進行互聯或直接操控。並且不需要網關,即使某一個設備出現故障也會跳過並選擇最近的設備進行傳輸。整個聯網過程只需要設備上電並設置通信密碼就可以自動組網,真正實現簡單互聯。

        由於目前幾乎所有的智能手機都具備藍牙功能,所以可以使用手機對藍牙Mesh設備進行直接控制。藍牙Mesh是一種可以像ZigBee一樣實現大規模組網,同時又不必依賴網關,可以使用手機進行直接控制的方案。

        總而言之,藍牙Mesh組網有著廣闊的發展前景,這種技術可組節點成百上千,無需網關可以直接與智能終端通信,滿足物聯網的連接需求,這是任何其它短距離無線技術都不具備的條件,在智能家居、智能建築等眾多領域具有應用優勢,藍牙Mesh技術將成為物聯網短距離規模組網的最優方案。

總結

        可以看出,不同類型的藍牙模塊根據使用場景的不同,可以有不同的工作模式,並不僅僅是簡單的點對點通信,隨著藍牙協議標準的升級,藍牙技術也跟著不斷提高,工作模式的不同使得藍牙模塊可以扮演不同的角色,適配不同的技術應用,發揮其所需要的功能,最後通過一張思維導圖來對本文進行概述性總結。


更多技術內容和書籍資料獲取敬請關註微信公眾號“明解嵌入式”

本文來自博客園,作者:Sharemaker,轉載請註明原文鏈接:https://www.cnblogs.com/Sharemaker/p/16946041.html


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

-Advertisement-
Play Games
更多相關文章
  • aliases: [JAVA Lambda] tags : " #Java " summary: [如何使用函數式編程寫出優雅高效的JAVA代碼] author : [yaenli] date : [2022-11-10] 1 簡介 簡潔的代碼就能處理大型數據集合,讓複雜的集合處理演算法高效的運行在多 ...
  • "Writing in C or C++ is like running a chain saw with all the safety guards removed. " - Bob Gray “用C或C++寫代碼就像是在揮舞一把卸掉所有安全防護裝置的鏈鋸。” —— 鮑勃·格雷 0x00 大綱 0 ...
  • keys命令的用法: keys pattern 查找符合正則匹配的key的列表。掃描對象是Redis服務中所有的key,想想都很慢對不對? 同時執行keys命令的同時,Redis進程將被阻塞,無法執行其他命令,假如超過了哨兵的down-after-milliseconds配置,還會進行主從切換,切換 ...
  • 原文鏈接 [https://www.cnblogs.com/densen2014/p/16964858.html] 在Blazor項目嵌入 pdf.js 時不能正確顯示中文,瀏覽器F12顯示如下錯誤 錯誤 l10n.js /web/locale/locale.properties not found ...
  • 當我們編寫了自己的C#程式,有程式自定義的文件類型時,通常希望它滿足以下需求:雙擊自定義文件打開自定義程式、自定義文件有著自己的圖標 此時,在網上檢索可以發現,大多數回答是使用Microsoft.Win32下的CreateSubKey(String)函數,但是很不幸,Win10的註冊表項受訪問控制列... ...
  • .NET 6 使用 MagicOnion MagicOnion開源地址:https://github.com/Cysharp/MagicOnion 什麼是MagicOnion? MagicOnion 是用於 .NET 平臺的現代 RPC 框架,它提供雙向實時通信(如SignalR和Socket.io ...
  • 一、需求描述 由於WTM預設只支持查詢關係型資料庫,但實際生產過程中,我們的數據可能會存在時序資料庫。 WTM LayUI的架構下,實現通過查詢InfluxDB時序資料庫數據,並將數據放到DataTable中。 二、解決思路 通過Influx語法,將數據查詢出來放到List的容器中,然後再在GetS ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家講的是國內外串列NOR Flash廠商官網Cross Reference功能。 串列 NOR Flash 是一個相對發展穩定的市場,目前全球市場約 90% 的份額被中國的三家廠商(Winbond華邦/MXIC旺巨集/GigaDevice兆易創新) ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...