Bluedroid vs NimBLE

🔹 對比:Bluedroid vs NimBLE

1. 協議棧體積 & 內存占用

  • Bluedroid:體積大,RAM 占用也大(幾十 KB 到上百 KB)。
  • NimBLE:輕量級,內存占用大概是 Bluedroid 的一半甚至更少。

👉 內存少 ≠ 功耗低,但 NimBLE 的輕量化確實讓 CPU 空閑時間更長。


2. 功耗管理能力

  • Bluedroid

    • 功能全面,但設計更早,對低功耗優化一般。
    • Light Sleep 下可能會維持較高的 wakeup 頻率,功耗相對偏高。
  • NimBLE

    • 專門為 低功耗 IoT 設備 設計,和 FreeRTOS 的 tickless idle、modem sleep 配合更好。
    • 連接保持時的 平均電流更低

3. 實際應用場景

  • 如果你跑的是 HID 鍵盤/鼠標

    • Bluedroid 更合適,因為它有完整的 HID profile。
    • 雖然功耗比 NimBLE 高一點,但 HID 設備通常喚醒頻率低(按鍵才觸發),所以差別不大。
  • 如果你跑的是 傳感器 / 廣播型設備(Beacon、心率帶、溫濕度等)

    • NimBLE 更省電,因為它的連接維護和廣播調度更高效。

4. 官方數據(Espressif 提供的典型情況)

  • Bluedroid BLE 連接保持:大概 300~500 μA
  • NimBLE BLE 連接保持:可能降低到 100~300 μA

?? 注意:具體功耗還是取決于 連接參數 (conn interval, latency, timeout)是否開啟 modem sleep/light sleep,協議棧只是其中一部分。


? 總結

  • Bluedroid:功能全(支持 HID),功耗比 NimBLE 稍高,但在鍵盤/鼠標這種低流量場景里問題不大。
  • NimBLE:輕量化,功耗更低,但 HID profile 不完整,兼容性差。

👉 如果你要做 BLE 鍵盤 → 用 Bluedroid(功耗已經足夠低,重點是穩定性和兼容性)。
👉 如果你要做 低功耗傳感器/廣播設備 → 用 NimBLE(省電優勢明顯)。


理論上是的 ?——把 HID Profile 寫完整,任何協議棧都能讓主機識別為鍵盤/鼠標
但問題在于 NimBLE 下實現完整 HID Profile 比看上去復雜得多,原因如下:


1?? HID Profile 要求嚴格

一個標準 BLE 鍵盤/鼠標 HID Profile 至少包含:

組件描述必要性
HID Service (0x1812)根服務,告訴主機這是 HID 設備必須
HID Information設備版本、語言、標志必須
Report Map描述所有 Input/Output Report 格式必須
Input Report按鍵/鼠標數據必須
Output ReportLED/其他控制必須
Control Point協議切換、復位等推薦
Protocol ModeBoot Mode / Report Mode推薦,兼容舊主機
Battery Service電量指示可選,但 iOS/macOS 喜歡有

一點小錯誤都可能讓 Windows、iOS、macOS 不識別你的設備。


2?? NimBLE 不提供封裝

  • NimBLE 只提供 GATT server / client 接口。

  • 你必須手動:

    • 寫 Report Map 二進制數據(Boot Mode、Keycodes、Modifier Bits 等)
    • 正確配置 Characteristic 屬性(Read / Notify / Write / Encrypted)
    • 實現 Protocol Mode 切換邏輯
    • 處理主機發來的 Output Report(LED 燈)

這部分邏輯在 Bluedroid 里已經封裝好了,開發者只需調用 esp_hidd_profile_init()


3?? 兼容性陷阱

即使你“寫完 HID Profile”,仍然可能出現問題:

  1. iOS/macOS 安全要求高

    • 必須加密 + Bonding,否則 HID 被拒絕。
  2. Windows 對 Report Map 格式要求嚴格

    • 比如 Boot Mode 必須正確,否則 CapsLock/NumLock 燈不亮。
  3. 不同主機對 Consumer Report(音量、多媒體鍵)支持不同

    • 你的 HID Report 不符合某些主機規范,就無法使用。

4?? 總結

  • 理論上:寫完整 HID Profile 就行。

  • 實際操作難點

    1. Report Map 編寫復雜,容易出錯
    2. Characteristic 屬性、權限、加密、Bonding 細節要嚴格
    3. 各操作系統對 HID 兼容性要求不同

所以大部分開發者在 BLE 鍵盤/鼠標場景下,還是用 Bluedroid 的 HID Profile,穩定、少坑。


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

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

相關文章

(純新手教學)計算機視覺(opencv)實戰八——四種邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny

邊緣檢測詳解:Sobel、Scharr、Laplacian、Canny邊緣檢測是圖像處理和計算機視覺中的重要步驟,主要用于發現圖像中亮度變化劇烈的區域,即物體的輪廓、邊界或紋理特征。OpenCV 提供了多種常用的邊緣檢測算子,本教程將通過四種方法帶…

PyTorch 環境配置

目錄一、安裝 CUDA二、安裝 PyTorch1. 創建虛擬環境2. 安裝 PyTorch三、在 PyCharm 上創建一個 PyTorch 項目參考文章: 【2025年最新PyTorch環境配置保姆級教程(附安裝包)】 【超詳細 CUDA 安裝與卸載教程(圖文教程)】…

鴻蒙中冷啟動分析:Launch分析

啟動的分類(熱身環節) 啟動動類型觸發條件系統開銷 & 速度主要優化方向冷啟動應用進程不存在(首次啟動或進程被殺后啟動)最高,需創建進程、加載資源、初始化所有組件主要優化目標,減少主線程任務&…

告別盲目排查,PolarDB+DAS Agent智能運維新突破

1.概述 周五下午6點正準備下班,數據庫CPU突然爆滿,業務告警響成一片,DBA卻要手動翻查CPU/內存/負載等多個監控指標,還要查詢是否有新增慢SQL,死鎖等問題?” 這可能是數據庫DBA最鬧心的場景了,…

Linux------《零基礎到聯網:CentOS 7 在 VMware Workstation 中的全流程安裝與 NAT 網絡配置實戰》

(一)Linux的發行版Centos安裝與配置 下載Linux發行版本Centos:centos-7-isos-x86_64安裝包下載_開源鏡像站-阿里云點擊CentOS-7-x86_64-DVD-2009.torrent ,CentOS-7-x86_64-DVD-2009.torrent是官方提供的 BT 種子文件(176.1 KB&a…

iOS App 混淆工具實戰,教育培訓類 App 的安全保護方案

隨著在線教育、企業培訓、知識付費平臺的興起,越來越多的 iOS 應用需要保護自己的課程資源和核心邏輯。然而,教育類 App 面臨的最大風險并非傳統的外掛或刷分,而是 視頻盜鏈、題庫數據泄露、源碼邏輯被二次利用。 在這種場景下,合…

RabbitMQ:SpringAMQP Topic Exchange(主題交換機)

目錄一、案例需求二、基礎配置三、代碼實現TopicExchange與DirectExchange類似,區別在于RoutingKey可以是多個單次的列表,并且以.分割。 Queue與Exchange指定BindingKey時可以使用通配符: #:代指0個或多個單詞。*:代…

(純新手教學)計算機視覺(opencv)實戰六——圖像形態學(腐蝕、膨脹、開運算、閉運算、梯度、頂帽、黑帽)

圖像形態學在圖像處理中,形態學(Morphology) 是一種基于圖像中物體形狀的處理方法,通常用于二值圖像和灰度圖像。它通過腐蝕、膨脹等基本操作,結合開運算、閉運算、梯度運算、頂帽、黑帽等派生操作,來實現去…

學習嵌入式第三十五天

文章目錄網絡(續上)1.函數接口2.相關功能實現1.TCP連接2.UDP習題網絡(續上) 1.函數接口 sendto 原型:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, sockle…

為什么給數據表加了索引,寫入速度反而變慢了

為數據表增加索引后之所以會導致寫入(包括插入、更新、刪除)操作的速度變慢,其根本原因在于索引本質上是一個獨立的、需要與主表數據保持實時同步的“數據結構”。這一機制的核心邏輯涵蓋五個方面:因為索引本質上是一個“獨立的數…

.NET Core 中采用獨立數據庫的SAAS(多租戶)方法

介紹多租戶是指一種軟件架構,其中軟件的單個實例在服務器上運行并為多個租戶提供服務。在基于 SAAS 的平臺中,租戶是指使用該平臺開展業務運營的客戶。每個租戶都擁有獨立的數據、用戶帳戶和配置設置,并且與其他租戶隔離。多租戶允許有效利用…

運維日常工作100條

這是一份非常詳細和實用的“運維日常工作100條”清單。它涵蓋了從日常巡檢、變更管理、故障處理到安全、優化和文檔等運維工作的方方面面,可以作為運維工程師的日常工作指南和檢查清單。 運維日常工作100條 一、日常巡檢與監控 (20條) 檢查核心監控大盤:查看整體業務健康狀態…

OpenHarmony子系統介紹

OpenHarmony子系統OpenHarmony子系統1. AI業務子系統2. 方舟運行時子系統3. ArkUI框架子系統4. DFX子系統5. DeviceProfile子系統6. XTS子系統7. 上傳下載子系統8. 主題框架子系統9. 事件通知子系統10. 位置服務子系統11. 元能力子系統12. 全局資源調度子系統13. 全球化子系統1…

博士招生 | 英國謝菲爾德大學 招收計算機博士

內容源自“圖靈學術博研社”gongzhonghao學校簡介謝菲爾德大學(The University of Sheffield)是英國久負盛名的公立研究型大學,也是羅素集團成員之一。在 2026 年 QS 世界大學排名中,謝菲爾德大學位列第92位,其中計算機…

如何理解面向過程和面向對象,舉例說明一下?

面向過程和面向對象是兩種不同的編程思想,核心區別在于解決問題的視角不同:前者關注 “步驟和過程”,后者關注 “對象和交互”。面向過程的核心思想是把問題拆解成一系列步驟,通過函數實現每個步驟,然后按順序調用這些…

深入了解評估與微調中使用的Graders:原理、實現與最佳實踐

深入了解評估與微調中使用的Graders 在模型評估與微調(Fine-tuning)過程中,Graders(評分器)是衡量模型輸出與參考答案之間表現的重要工具。本文將系統介紹Grader的類型、技術實現及如何在實際項目中融入穩定且高質量的…

行緩存(line buffer)在圖像卷積中的工作方式

上面這張圖配合文字,展示了行緩存(line buffer)在圖像卷積中的工作方式:上半部分是一個按行掃描輸入的圖像塊(示例為 99,編號 1–81)。 藍色表示已被寫入行緩存并按隊列等待的數據,綠…

【數據分享】中國371個城市的坡度矢量數據和excel數據

今天要說明數據就是中國371個城市的坡度矢量數據和excel數據。數據介紹在城市發展的進程中,地形地貌始終是影響規劃決策的關鍵因素,而坡度作為表征地表傾斜程度的核心指標,更是貫穿于城市建設、生態保護等諸多環節。本文將全面解讀中國 371 個…

《WINDOWS 環境下32位匯編語言程序設計》第7章 圖形操作(1)

圖形設備接口GDI(Graphics Device Interface)是Win32的一個重要組成部分,其作用是允許Windows的應用程序將圖形輸出到計算機屏幕、打印機或其他輸出設備上。GDI實際上是一個函數庫,包括直線、畫圖和字體處理等數百個函數。7.1 GDI…

數據結構-HashMap

在 Java 鍵值對(Key-Value)集合中,HashMap 是使用頻率最高的實現類之一,憑借高效的查找、插入性能,成為日常開發的 “利器”。本文將從 HashMap 的底層原理、核心特點、常用方法到遍歷方式、使用注意事項,進…