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 完整度: 0/5 教程完整度: 0/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 兼容板。
**异步事件驱动**:采用回调机制处理连接、断开、数据接收等事件,编程模型简洁高效。

技术规格

支持芯片 ESP32、ESP32-S2、ESP32-S3、ESP32-C3、nRF51、nRF52
协议栈 Apache NimBLE(纯 C 实现)
蓝牙版本 Bluetooth 5.0(支持 LE 扩展)
最大连接数 同时支持多个连接(具体取决于芯片 RAM)
GATT 服务数 无硬性限制(受内存约束)
安全模式 LE Secure Connections、Just Works、Passkey Entry、OOB
数据速率 最高约 1 Mbps(BLE 4.2)/ 2 Mbps(BLE 5.0)
开发环境 Arduino IDE、PlatformIO、ESP-IDF(通过组件方式)
许可证 Apache-2.0

项目资源

物料清单 (BOM)

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

能力画像

**记忆与知识检索**: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 协议栈学习
低功耗电池供电设备(如纽扣电池驱动的传感器节点)