正十七 发表于 2019-3-2 17:33:15

Apache开源蓝牙5.0协议栈-NimBLE

本帖最后由 正十七 于 2019-3-2 17:32 编辑

描述

NimBLE 是 Apache 基金会下一个开源的蓝牙5.0协议栈,具备完整的Host及Controller层。资源占用少,支持蓝牙5.0特性,也支持Mesh等功能。
目前已经在RT-Thread上移植该协议栈,并在nrf52832上添加了一系列的profile及应用实例,下面是相关的资源链接介绍:

nimble 软件包介绍:https://github.com/RT-Thread-packages/nimble
52832 工程: https://github.com/EvalZero/nrf52832-nimble
Apache NimBLE 蓝牙 5.0 协议栈介绍:http://mynewt.apache.org/latest/network/docs/index.html

后续会以nrf52832会平台,持续更新一些相关的Profile及应用示例的文章,Mesh等玩法,感兴趣的也可以一起加入进来。

下面还是介绍一下NimBLE协议栈的功能特性。

特性


[*] 扩展广播(LE Advertising Extensions)
[*] 2Mbit/s比特率的物理层
[*] 长距离编码(Coded PHY for LE Long Range)
[*] 高速不可连接广播(High Duty Cycle Non-Connectable Advertising)
[*] 高速不可连接广播(High Duty Cycle Non-Connectable Advertising)
[*] 新的跳频算法(Channel Selection Algorithm #2)
[*] 隐私1.2(LE Privacy 1.2)
[*] 安全管理(SM),支持传统配对(LE Legacy Pairing),安全连接(LE Secure Connections),特定秘钥分发(Transport Specific Key Distribution)
[*] 链路层PDU数据长度扩展(LE Data Length Extension)
[*] 多角色并发(主机(central)/从机(peripheral), server/client)
[*] 同时广播和扫描
[*] 低速定向广播(Low Duty Cycle Directed Advertising)
[*] 连接参数请求(Connection parameters request procedure)
[*] LE Ping
[*] 完整的GATT客户端,服务端,以及子功能
[*] 抽象的HCI接口层


Profile和Service支持


[*] 警报通知服务(ANS)
[*] 即时报警服务(IAS)
[*] 链路丢失服务(LLS)
[*] 电池服务(BAS)
[*] 设备信息服务(DIS)
[*] 心率服务(HRS)
[*] 自行车速度及步调(CSC)
[*] 射频功率(TPS)


Mesh特性


[*] 广播和GATT承载(Advertising and GATT bearers)
[*] PB-GATT 和 PB-ADV provisioning
[*] 模型层(Foundation Models (server role))
[*] 支持中继(Relay support)
[*] 支持GATT(GATT Proxy)


资源占用

开启外设、中心设备角色以及传统配对等功能,最小**仅占用4.5KB RAM,69KB Flash**。

角色配置

NimBLE提供极大的灵活性,以满足不同设备和应用场景的需求。

[*] 作为中心设备(Central)时,最多支持32个并发连接
[*] 作为外围设备(Peripheral)时,最多支持32个并发连接
[*] 中心和外围设备任意组合时,支持最多32个并发连接,且能同时运行Observer和Broadcaster角色
[*] 外围设备能够连接到多个中心设备
[*] 心和外围设备任意组合时,支持最多32个并发连接,且能同时运行Observer和Broadcaster角色
[*] 灵活配置调度程序,以便在连接到大量外围设备时允许更大的数据突发


系统配置

NimBLE允许应用程序开发人员配置系统以提取最合适的性能。
无论是追求最大数量的并发连接还是获得高吞吐量,或确保数据传输的低延迟,NimBLE提供了大量选项。
当然,对默认配置的任何更改都会对代码大小,运行时RAM使用率等产生影响

wmm20031015 发表于 2019-3-2 17:35:21

这个不错,支持

Jacky.Qiu 发表于 2019-3-2 19:34:43

非常好,非常好,非常好

liyang121316 发表于 2019-3-4 05:52:06

所谓的开源是所有源代码开放吗?没有任何封装库或者obj文件?

astankvai 发表于 2019-3-4 08:00:12

支持啊,不知道资源占用情况怎么样。

sup888 发表于 2019-3-4 08:42:13

关注一下,谢谢分享

dreambox 发表于 2019-3-4 11:11:05

NimBLE make

zwjiang8212 发表于 2019-3-4 15:09:06


NimBLE make

正十七 发表于 2019-3-4 19:12:19

astankvai 发表于 2019-3-4 08:00
支持啊,不知道资源占用情况怎么样。

资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置裁剪的。

kinsno 发表于 2019-3-4 21:34:31

正十七 发表于 2019-3-4 19:12
资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置 ...

请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。

sunnydragon 发表于 2019-3-4 22:07:55

厉害~~
这个开源协议栈是啥许可的

正十七 发表于 2019-3-5 09:36:08

kinsno 发表于 2019-3-4 21:34
请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。 ...

以前的经典蓝牙是1对1的方式,现在BLE支持一对多,一个中心设备(central)连接多个外围设备(peripheral),但也无法连接100个。
根据你的描述,感觉你需要的BLE Mesh功能吧,Mesh组网,实现多跳。

正十七 发表于 2019-3-5 09:41:26

sunnydragon 发表于 2019-3-4 22:07
厉害~~
这个开源协议栈是啥许可的

Apache 2.0 开源协议,可免费用于商用,仅需保留License即可。
另外,移植的OS平台--RT-Thread, 也是 Apache 2.0的协议,组件和功能强大,开发便捷。

cnshibo 发表于 2019-3-5 10:51:18

不错,这个协议栈的背景是否可以介绍一下?使用的产品是否规模出货过?貌似apache网站上的about页面没有介绍这方面的内容。

cnshibo 发表于 2019-3-5 10:52:42

kinsno 发表于 2019-3-4 21:34
请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。 ...

是否需要双向通讯? 如果只要单向通讯,只要把内容加载到广播报文里面即可。

cnshibo 发表于 2019-3-5 10:53:46

正十七 发表于 2019-3-4 19:12
资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置 ...

这个资源使用量比 esp32里面使用的协议栈省多了:)

cnshibo 发表于 2019-3-5 10:57:46

cnshibo 发表于 2019-3-5 10:53
这个资源使用量比 esp32里面使用的协议栈省多了:)

刚刚google了一下,发现esp32正在移植 NimBLE,据说很快就会放出来。

kinsno 发表于 2019-3-5 11:37:50

cnshibo 发表于 2019-3-5 10:52
是否需要双向通讯? 如果只要单向通讯,只要把内容加载到广播报文里面即可。 ...

是双向的,会有数据交互的。

picobox 发表于 2019-3-5 11:42:56

NimBLE 厉害

sunnydragon 发表于 2019-3-5 12:03:48

赞,期待楼主持续更新,再跟大家分享分享如何使用。

蛋定 发表于 2019-3-5 14:21:46

收藏了!谢谢

正十七 发表于 2019-3-5 19:12:15

liyang121316 发表于 2019-3-4 05:52
所谓的开源是所有源代码开放吗?没有任何封装库或者obj文件?

所有源代码开源,从应用到PHY、Radio,全部开源,没有库或者obj文件。

xxc007 发表于 2019-3-5 22:42:21


关注一下,谢谢分享

liyang121316 发表于 2019-3-6 07:33:13

正十七 发表于 2019-3-5 19:12
所有源代码开源,从应用到PHY、Radio,全部开源,没有库或者obj文件。

牛逼!!!

cnshibo 发表于 2019-3-6 09:25:48

kinsno 发表于 2019-3-5 11:37
是双向的,会有数据交互的。

说不定改改协议栈,能满足你的需要。NimBLE貌似最大支持32个外设。

xczxwy 发表于 2019-3-6 09:53:31

不知道和Slicon Labs 的协议栈有多大区别,目前使用Slicon Labs官方的遇到点瓶颈了,有空再来看,记号一下!

s1j2h3 发表于 2019-3-6 10:21:14

非常好,非常好,非常好,支持

eric112 发表于 2019-3-6 11:22:21

非常好,先收藏下!

bluetears 发表于 2019-3-6 13:09:14

非常好,非常好,非常好,支持下

zhongsandaoren 发表于 2019-3-6 13:12:52

NimBLE 蓝牙5.0 mark

carryonli 发表于 2019-3-6 13:36:45

好像只支持nRF芯片,能否移植到STM32芯片呢?或者cc芯片呢?

正十七 发表于 2019-3-7 09:33:59

carryonli 发表于 2019-3-6 13:36
好像只支持nRF芯片,能否移植到STM32芯片呢?或者cc芯片呢?

可以移植,NimBLE有清晰的HCI抽象层,从HCI层移植,比较容易。
另外就是直接从Phy这层开始移植,这块就有些难度了,估计需要原厂的支持或者对BLE的链路层比较熟悉。

lizuqing 发表于 2019-3-7 09:54:46



关注一下,谢谢分享

carryonli 发表于 2019-3-7 10:42:24

正十七 发表于 2019-3-7 09:33
可以移植,NimBLE有清晰的HCI抽象层,从HCI层移植,比较容易。
另外就是直接从Phy这层开始移植,这块就有 ...

哦,楼主理解很透彻啊,我还不很了解。

gyd0317 发表于 2019-3-7 10:46:34

RTT现在支持这个低功耗处理?

Vmao 发表于 2019-3-7 12:18:03

有原厂协议栈没必要用这个,除非为了折腾

Vmao 发表于 2019-3-7 12:18:25

我不信这个协议栈会比原厂的好

正十七 发表于 2019-3-8 09:18:26

gyd0317 发表于 2019-3-7 10:46
RTT现在支持这个低功耗处理?

一般的低功耗处理是在IDLE线程里睡眠CPU,有事件或者中断时唤醒,补偿Tick后继续执行,RT-Thread有PM电源管理组件,可以直接对接。
但是BLE的低功耗处理,我还不太了解,应当是需要开发者根据实际情况进行优化吧。

正十七 发表于 2019-3-8 09:22:47

Vmao 发表于 2019-3-7 12:18
我不信这个协议栈会比原厂的好

各有优劣,看各自的需求。原厂的支持完善,专业的团对,功能稳定,但几乎都是以二进制提供,源码不开发,另外更新也会稍微慢一点。
开源的代码透明,更新快修复问题及时,但是稳定性这些就欠缺了。

610570143 发表于 2019-3-8 10:08:04

Vmao 发表于 2019-3-7 12:18
我不信这个协议栈会比原厂的好

不一定。

Vmao 发表于 2019-3-8 13:54:52

610570143 发表于 2019-3-8 10:08
不一定。

你用过?开源的东西除非是玩的人很多会完善一点,否则还不是BUG多多,这个协议栈除了开源,感觉不会比原厂好

正十七 发表于 2019-3-14 14:03:32

Vmao 发表于 2019-3-8 13:54
你用过?开源的东西除非是玩的人很多会完善一点,否则还不是BUG多多,这个协议栈除了开源,感觉不会比原厂好 ...

在用,Bluetooth Mesh部分比官方的要完善。
如果一开始就打上开源的不好,原厂好的标签,那就没法子展开了。
现在主流的开源BLE协议栈有家,Zephyr和NimBLE,团队背景中都有一大部分是Nodic原厂的人。
原厂的方案是以二进制文件提供的,存在诸多限制,所以开源的方案应运而生,原厂的人也在后面支持。
以前的蓝牙协议栈是不开源的,也是在近年物联网概念火爆之后,开始开源,一些新的特性和功能,不开放是没有办法推广的。

luweiqi1995 发表于 2019-3-15 09:33:50

不错,支持一下

eliterxzgxu 发表于 2019-3-15 09:39:27

感谢楼主分享

文艺小青年 发表于 2019-3-15 09:59:54

感谢楼主分享

aozima 发表于 2019-3-15 10:24:55

这个利害了,抽空要玩一下。

ericdai 发表于 2019-3-15 10:52:44

怎么不支持5.1

LY新手上路 发表于 2019-3-18 11:16:52

支持一下

正十七 发表于 2019-3-20 13:45:12

ericdai 发表于 2019-3-15 10:52
怎么不支持5.1

5.1的规范SIG刚发布,定位方面能到厘米级。支持是大势所趋,时间问题

Princha 发表于 2019-6-5 16:00:11

希望早日支持5.1,要跟上主流节奏啊。

308594151 发表于 2019-6-5 22:51:03

顶楼主一个

cqsrmxxzyx 发表于 2019-6-5 23:47:51

看起来很NB,有人运行过了吗

TCMCU 发表于 2019-6-7 15:29:16

这个用起来的门槛还是太高了,只能坐等高手研究了

qmsolo2004 发表于 2019-6-7 16:22:32

关注一下,谢谢分享!

jackman 发表于 2019-6-7 16:30:18

感谢分享! 了解一下.

MurphyZhao 发表于 2019-6-19 13:55:40

厉害了,期待更多分享

guoj 发表于 2019-6-19 14:50:45

NimBLE 蓝牙5.0 mark

cnshibo 发表于 2019-6-19 15:40:00

cqsrmxxzyx 发表于 2019-6-5 23:47
看起来很NB,有人运行过了吗

esp32 官方已经移植了一个版本到他们的平台上。

taboo 发表于 2019-6-19 15:58:56

ble的协议栈还是很难做的,这个要支持

sunnydragon 发表于 2019-6-19 16:21:03

cnshibo 发表于 2019-6-19 15:40
esp32 官方已经移植了一个版本到他们的平台上。

是的,我也注意到了,你用上了没有

zzj2009a1 发表于 2019-6-19 18:51:52

了解一下,多谢分享{:lol:}

正十七 发表于 2019-6-20 15:46:01

gamethink 发表于 2019-6-19 20:11
是否可以直接在普通的2.4G芯片跑藍牙?

不可以,虽然同样是 2.4G 协议,但是硬件不一样

lzchuo 发表于 2019-6-20 17:03:15

只有开源才能更好的发展壮大

thorn 发表于 2019-6-20 21:40:40

学习了 感谢分享

半片饼干 发表于 2019-12-10 20:05:36

支持开源,学习一下,谢谢分享

Samzzt 发表于 2020-10-27 09:21:40

学习深入学习

fengyunyu 发表于 2020-10-27 12:36:23

学习,开源ble
页: [1]
查看完整版本: Apache开源蓝牙5.0协议栈-NimBLE