A fork of the NimBLE library structured for compilation with Arduino, for use with ESP32, nRF5x. NimBLE-Arduino

ESP32 ⭐☆☆☆☆ (1/5) 已发布
h2zero 1071 Stars Apache-2.0 BOM 完整度: /5 教程完整度: /5

项目简介

NimBLE库的Arduino编译分支,支持ESP32、nRF5x。


NimBLE-Arduino 是一个基于 Apache NimBLE 协议栈深度重构的开源蓝牙低功耗(BLE)库,专为 Arduino IDE 环境优化,旨在替代 ESP32 官方默认的 Bluedroid 协议栈。项目由开发者 h2zero 维护,目前已经发布 2.x 版本,并提供了详细的迁移指南。

标签

项目特点

**内存占用极低**:基于 NimBLE 协议栈,相比传统 Bluedroid 方案节省大量 RAM,适合资源受限的嵌入式设备。
**支持双角色模式**:可同时作为 BLE 中心设备和外围设备,实现设备间直接通信。
**完整的 GATT 支持**:内置 GATT 服务器和客户端 API,轻松定义服务和特征值。
**安全特性完善**:支持配对、绑定、加密、MITM 保护等蓝牙安全机制。
**多平台兼容**:原生支持 ESP32、nRF51、nRF52 系列,且代码结构清晰,易于移植到其他 Arduino 兼容板。
**异步事件驱动**:采用回调机制处理连接、断开、数据接收等事件,编程模型简洁高效。

技术规格

支持芯片
协议栈
蓝牙版本
最大连接数
GATT 服务数
安全模式
数据速率
开发环境
许可证

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
ESP32 开发板(如 ESP32-DevKitC) 1 推荐 4MB Flash 版本
nRF52 开发板(如 nRF52840 DK) 1 可选,与 ESP32 二选一
BLE 天线 1 通常集成在开发板上
LED / 按键 若干 用于示例演示
USB 数据线 1 供电与程序烧录
跳线 / 面包板 若干 搭建原型电路

所需工具

工具用途是否必需
Arduino IDE 编写、编译、上传代码 ✅ 是
PlatformIO 替代 IDE,支持更复杂的项目管理 ▢ 推荐
ESP-IDF 在 ESP32 上使用 NimBLE 原生组件 ▢ 推荐
串口监视器 查看调试输出和 BLE 日志 ✅ 是
手机 BLE 调试 App(如 nRF Connect) 扫描、连接、测试 BLE 设备 ▢ 推荐
Git 版本管理与代码同步 ▢ 推荐

能力画像

**记忆与知识检索**:2/5 — 需要查阅 BLE 协议和 NimBLE 文档,但库本身 API 设计清晰,文档齐全。
**动手与操作**:3/5 — 涉及硬件接线、烧录固件、使用调试工具,但整体难度中等。
**编程与算法**:4/5 — 需要编写 C++ 代码,理解回调、事件驱动、GATT 服务结构,算法复杂度不高。
**设计与建模**:2/5 — 主要关注 BLE 服务/特征值的设计,无需复杂系统建模。
**实验与调试**:4/5 — 蓝牙调试依赖日志和外部工具(如 nRF Connect),需要反复测试连接稳定性。
**协作与分享**:3/5 — 可通过 GitHub 提交 Issue/PR,社区活跃,但协作门槛略高于纯软件项目。
**学习与研究**:4/5 — 深入理解 BLE 协议栈、低功耗设计、安全机制,学习价值高。
**系统集成**:3/5 — 可与其他传感器、执行器集成,但需注意 BLE 实时性和功耗平衡。

所需技能

基础 C/C++ 编程能力 了解 Arduino 开发流程(安装库、编译、上传) 熟悉 BLE 基本概念(服务、特征值、UUID、广播) 会使用串口调试工具 能阅读英文技术文档 具备基本硬件调试能力(接线、测量电压)

适用场景

智能家居传感器数据上报(温湿度、门磁、光照)
可穿戴设备与手机通信(心率、步数、通知推送)
工业物联网设备状态监控与远程控制
蓝牙信标(Beacon)应用(室内定位、广告推送)
多设备组网(如 ESP32 作为网关收集多个传感器数据)
教育实验与 BLE 协议栈学习
低功耗电池供电设备(如纽扣电池驱动的传感器节点)