A fork of the NimBLE library structured for compilation with Arduino, for use with ESP32, nRF5x.
NimBLE-Arduino
ESP32
⭐☆☆☆☆ (1/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 协议栈学习
低功耗电池供电设备(如纽扣电池驱动的传感器节点)