通過BLE實現類似UART的串行通信:NUS服務 vs GATT服務

在物聯網和智能設備的發展中,藍牙低功耗(Bluetooth Low Energy, BLE)技術已經成為無線數據傳輸的重要手段。本文將介紹通過BLE實現類似UART的串行通信,并對比NUS服務和GATT服務的使用場景,幫助開發者更好地選擇適合的技術方案。

什么是UART?

UART(Universal Asynchronous Receiver/Transmitter,通用異步收發器)是一種用于串行通信的硬件協議,常用于將數據從一個設備傳輸到另一個設備,比如從電腦傳輸到微控制器或傳感器。

什么是BLE?

BLE(Bluetooth Low Energy,藍牙低功耗)是一種無線通信技術,用于在設備之間傳輸數據,特點是低功耗和短距離通信。

BLE實現類似UART的串行通信

通過BLE實現類似UART的串行通信,意思是通過無線藍牙連接,在兩個設備之間傳輸數據,就像通過電線連接的UART那樣。這種方式可以替代傳統的有線連接,使用無線方式進行數據傳輸。

藍牙特征服務(GATT Services and Characteristics)

藍牙低功耗(BLE)使用通用屬性配置文件(Generic Attribute Profile,GATT)來組織和定義數據。GATT包含服務和特征,每個服務和特征都有其特定的功能。

  1. 服務(Service)
    • 服務是一個邏輯集合,包含一組相關的特征。
    • 每個服務都有一個唯一的UUID(通用唯一標識符),用來標識它。
  2. 特征(Characteristic)
    • 特征是服務的基本組成部分,表示一個數據點或屬性。
    • 每個特征也有一個UUID,并且包含一個或多個值和描述符。
    • 特征可以是可讀的、可寫的或支持通知和指示(當特征值改變時通知或指示中央設備)。

藍牙NUS服務(Nordic UART Service)

藍牙NUS服務是由Nordic Semiconductor公司定義的一個自定義服務,專門用于通過BLE實現類似UART的串行通信。

  1. NUS服務
    • NUS服務是一個自定義的GATT服務,有自己的UUID,通常由Nordic定義和使用。
  2. NUS特征
    • NUS服務包含兩個主要的特征:
      • RX特征:用于接收從中央設備發送到外圍設備的數據。
      • TX特征:用于從外圍設備向中央設備發送數據(通過通知機制)。

例子:智能家居環境監控系統

使用GATT服務特征的方式

設備設置

  1. 環境監控設備
    • 配置兩個特征:
      • 溫度特征:定期更新當前溫度值。
      • 濕度特征:定期更新當前濕度值。
  2. 手機應用
    • 訂閱這兩個特征,分別接收溫度和濕度數據。

數據傳輸過程

  1. 連接建立
    • 手機應用連接到環境監控設備。
  2. 服務發現
    • 應用程序發現設備上的溫度和濕度特征。
  3. 訂閱特征
    • 應用程序訂閱溫度特征和濕度特征。
  4. 接收數據
    • 每當環境監控設備更新溫度或濕度值時,應用程序會收到通知并顯示數據。

使用NUS服務的方式

設備設置

  1. 環境監控設備
    • 配置NUS(Nordic UART Service)服務,帶有兩個特征:
      • RX特征:用于接收手機發送的命令或數據。
      • TX特征:用于發送溫度和濕度數據到手機。
  2. 手機應用
    • 訂閱NUS服務的TX特征,接收環境監控設備的數據。
    • 通過RX特征發送命令或數據到環境監控設備。

數據傳輸過程

  1. 連接建立
    • 手機應用連接到環境監控設備。
  2. 服務發現
    • 應用程序發現設備上的NUS服務和其特征。
  3. 訂閱特征
    • 應用程序訂閱NUS服務的TX特征。
  4. 接收和發送數據
    • 接收數據:環境監控設備定期將溫度和濕度數據通過TX特征發送到手機,應用程序接收并顯示數據。
    • 發送數據:如果手機應用需要請求某些數據或發送命令(比如改變數據傳輸頻率),可以通過RX特征發送到環境監控設備。

最好用NUS服務的場景

例子:遠程設備控制與數據傳輸

場景描述
你有一個復雜的遠程監控和控制系統,例如無人機控制系統。無人機需要發送大量的實時傳感器數據(如GPS坐標、速度、姿態信息等)到地面控制站,同時接收地面站發送的控制指令(如調整飛行路徑、改變飛行高度等)。

為什么用NUS服務

  1. 雙向通信需求
    • 無人機需要同時發送數據和接收命令。NUS服務提供了統一的接口(RX和TX特征)來處理雙向數據流,非常適合這種場景。
  2. 數據類型多樣
    • 傳感器數據種類多、更新頻率高,且需要實時傳輸。通過NUS服務,所有數據可以打包成統一的格式進行傳輸,簡化了數據處理邏輯。
  3. 靈活性和擴展性
    • 可以靈活地在數據包中添加新類型的數據或命令,而不需要重新定義和管理多個GATT特征。

具體操作

  1. 無人機設備(外圍設備)
    • 配置NUS服務,使用TX特征發送傳感器數據,使用RX特征接收地面站命令。
  2. 地面控制站(中央設備)
    • 訂閱無人機的TX特征,接收傳感器數據。
    • 通過寫入RX特征發送控制命令。

用GATT服務更合適的場景

例子:簡單的環境傳感器數據傳輸

場景描述
你有一個環境監測系統,例如一個簡單的溫度和濕度監測器。它只需要將溫度和濕度數據周期性地發送到手機應用,無需接收任何命令。

為什么用GATT服務

  1. 單向通信需求
    • 傳感器只需要發送數據到手機,無需接收命令。GATT服務的通知機制非常適合這種單向的數據傳輸。
  2. 數據類型單一
    • 只有兩個數據點:溫度和濕度,每個數據點對應一個特征,結構簡單且清晰。
  3. 低復雜度
    • 管理單一或少量特征比管理NUS服務的數據打包和解析更簡單,減少開發和維護的復雜度。

具體操作

  1. 環境傳感器設備(外圍設備)
    • 配置兩個GATT特征,一個用于溫度數據,一個用于濕度數據。
  2. 手機應用(中央設備)
    • 訂閱溫度和濕度特征,接收傳感器數據并顯示。

總結

NUS服務的最佳場景

  • 復雜、需要雙向通信的應用,例如無人機控制系統。
  • 多種數據類型和高頻更新的數據傳輸需求。
  • 需要靈活擴展數據格式和命令的場景。

GATT服務的最佳場景

  • 簡單、單向的數據傳輸應用,例如環境監測器。
  • 數據類型單一且更新頻率較低。
  • 開發和維護簡單的場景。

通過這些實例和對比,希望你能更清楚地理解何時選擇NUS服務,何時選擇GATT服務。如果你有任何疑問或需要進一步的技術說明,請隨時聯系我!

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

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

相關文章

2024越南醫藥、制藥機械展

2024年越南國際醫藥,制藥裝備及技術展覽會 時間: 2024年11月21--23日 地點:越南胡志明市-西貢會展中心SECC 2024年越南國際醫藥,制藥裝備及技術展覽會將于2024年11月21-23日在越南胡志明市盛大舉行!展覽會以國際化、專…

【Feature Pyramid Networks for Object Detection】

Feature Pyramid Networks for Object Detection 摘要引言2 相關工作3 FPN4 應用摘要 特征金字塔是識別系統中用于檢測不同尺度對象的基本組件。但是,最近的深度學習對象檢測器已經避免了金字塔表示,部分原因是它們在計算和內存方面都很密集。在這篇論文中,我們利用深度卷積…

LeetCode經典題之876、143 題解及延伸

系列目錄 88.合并兩個有序數組 52.螺旋數組 567.字符串的排列 643.子數組最大平均數 150.逆波蘭表達式 61.旋轉鏈表 160.相交鏈表 83.刪除排序鏈表中的重復元素 389.找不同 1491.去掉最低工資和最高工資后的工資平均值 896.單調序列 206.反轉鏈表 92.反轉鏈表II 141.環形鏈表 …

paddleocr查看標注好的數據錯誤信息

字符計數 import os import json from collections import Counter# 按字符計數 label_dir"/Users/thy/Downloads/chinese20240613" zi_ls[] with open(os.path.join(label_dir,"Label.txt")) as f:linesf.readlines()for line in lines:line line.strip…

Java面試題:聚簇索引和非聚簇索引

聚簇索引和非聚簇索引 聚簇索引(聚集索引) 將數據的存儲和索引放在一塊,索引結構的葉子節點保存了行數據 索引字段必須存在,且只能存在一個 非聚集索引(二級索引) 將數據和索引分開存儲,索引結構的葉子節點關聯的是對應的主鍵 索引字段可以存在多個 索引的選取規則 如果…

【學習】常用的分類網絡

1. LeNet 提出時間:1998年最新版本:原始版本使用的數據集格式:MNIST(28x28灰度圖像)優點: 結構簡單,易于理解和實現。對于小規模圖像數據集(如MNIST)有很好的表現。缺點…

豆瓣高分項目管理書籍推薦

📬豆瓣網站上有很多項目管理領域的書籍獲得了較高的評分,以下是一些高分項目管理書籍的精選列表,發出來跟大家分享一下: 《項目管理知識體系指南(PMBOK指南)》 【內容簡介】這本書是美國項目管理協會&…

opencv檢測圖片上七種顏色,分辨顏色和對應位置

opencv檢測圖片上七種顏色,分辨顏色和對應位置 讀取圖片:使用cv2.imread()函數讀取目標圖片。 轉換顏色空間:通常在HSV顏色空間中進行顏色檢測,因為HSV顏色空間更適合描述顏色的屬性。 定義顏色范圍:為七種顏色定義…

RabbitMQ 修改默認密碼

RabbitMQ的一些常用命令 #啟動rabbitmq service rabbitmq-server start# 查看rabbitMQ的運行狀態 service rabbitmq-server status# 開啟rabbitMQ的后臺管理插件 rabbitmq-plugins enable rabbitmq_management # 重啟RabbitMQ服務 service rabbitmq-server restart RabbitMQ的…

AcWing 797:差分 ← 一維差分模板題

【題目來源】https://www.acwing.com/problem/content/799/【題目描述】 輸入一個長度為 n 的整數序列。 接下來輸入 m 個操作,每個操作包含三個整數 l,r,c,表示將序列中 [l,r] 之間的每個數加上 c。 請你輸出進行完所有操作后的序列。【輸入格式】 第一…

富格林:正規操作實現穩健出金

富格林認為,當下的金融市場,投資者進行理財都會特別關注盈利效率高的產品,而近年來興起的現貨黃金,其高效的盈利效率吸引著大批朋友關注。不過,要想在這盈利出金,就得學習掌握正規的交易策略。下面富格林將…

onnx模型修改:去掉Dropout層

文章目錄 嘗試1:強行設置dropout層train mode為False嘗試2:找到onnx模型中的dropout, train mode設置為False嘗試3:直接刪除dropout層,連接其輸入輸出結語 最近訓練模型使用了tinyvit,性能挺強的: 但是導出…

超細毛搭配超寬設計,一款更呵護牙齦的牙刷

牙齦敏感的時候,刷牙特別難受,最近試了試惠百施(EBISU)65孔寬頭軟毛牙刷,感覺它的口腔護理體驗很不錯。這款牙刷的設計獨特,采用寬頭設計,一次就能刷兩排牙齒,極大地提高了清潔效率。…

RS232自由轉Profinet協議網關模塊連接1200PLC與掃碼槍通訊及手動清零案例

一、RS232和Profinet這兩種通訊接口的特點和應用場景: RS232是一種串行通訊接口標準,常用于連接計算機和外部設備,傳輸速率較低但穩定可靠。Profinet則是一種工業以太網通訊協議,具有高速、實時性強的特點,適用于工業…

C/C++語言通過動態鏈表實現按需內存分配和使用(Linux Ubuntu 24.04環境)

我認為比較理想的內存使用方式應該實現這幾個特性: 1. 分配一塊能滿足大多數情況下需求的內存,比如80%的情況下都不需要再次分配內存。 2. 對另外20%需要較多內存的情況,可以通過動態鏈表按需追加新的內存塊。 3. 要對總共消耗的內存有一個…

【C語言】解決C語言報錯:Dangling Pointer

文章目錄 簡介什么是Dangling PointerDangling Pointer的常見原因如何檢測和調試Dangling Pointer解決Dangling Pointer的最佳實踐詳細實例解析示例1:釋放內存后未將指針置為NULL示例2:返回指向局部變量的指針示例3:指針懸空后繼續使用示例4&…

引領未來:AI Native與物聯網(IoT)的革命性融合

引領未來:AI Native與物聯網(IoT)的革命性融合 在數字化轉型的浪潮中,AI Native作為一種新興的軟件開發模式,正逐漸成為推動技術創新的核心力量。與此同時,物聯網(IoT)技術通過連接物理世界與數字世界,不斷擴展其應用…

自編碼器筆記

編碼器解碼器自編碼器 先壓縮特征,再通過特征還原。 判斷還原的和原來的是否相等 encode data 在一個“潛在空間”里。它的用途是“深度學習”的核心-學習數據的特征并簡化數據表示形式以尋找模式。 變分自編碼器: 1. 首先、假設輸入數據是符合正態分布…

tiny-redis 項目可能的問題

https://build-your-own.org/redis/ 事件循環怎么實現的 首先我將連接包裝為一個 Connect 類,它包含了 socket fd,讀寫緩沖區,連接狀態(這個連接是發送數據還是接收數據)等成員屬性 我會在全局維護一個從 socket fd…

003 選擇排序

文章目錄 先挑最值,再把剩下的挑最值,再把剩下的挑最值。。。 -- 排序函數 function selectionSort(arr) -- 外層循環,從數組的第一個元素開始,對每個元素進行排序 for i 1, #arr do -- 假設當前位置的元素是最小的 local …