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使用率等产生影响 这个不错,支持 非常好,非常好,非常好 所谓的开源是所有源代码开放吗?没有任何封装库或者obj文件? 支持啊,不知道资源占用情况怎么样。 关注一下,谢谢分享 NimBLE make
NimBLE make astankvai 发表于 2019-3-4 08:00
支持啊,不知道资源占用情况怎么样。
资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置裁剪的。 正十七 发表于 2019-3-4 19:12
资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置 ...
请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。 厉害~~
这个开源协议栈是啥许可的
kinsno 发表于 2019-3-4 21:34
请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。 ...
以前的经典蓝牙是1对1的方式,现在BLE支持一对多,一个中心设备(central)连接多个外围设备(peripheral),但也无法连接100个。
根据你的描述,感觉你需要的BLE Mesh功能吧,Mesh组网,实现多跳。
sunnydragon 发表于 2019-3-4 22:07
厉害~~
这个开源协议栈是啥许可的
Apache 2.0 开源协议,可免费用于商用,仅需保留License即可。
另外,移植的OS平台--RT-Thread, 也是 Apache 2.0的协议,组件和功能强大,开发便捷。 不错,这个协议栈的背景是否可以介绍一下?使用的产品是否规模出货过?貌似apache网站上的about页面没有介绍这方面的内容。 kinsno 发表于 2019-3-4 21:34
请教,蓝牙有没有可能做一个AP挂100个从机?最近有需求1000个点,用户要求不超过10个AP布置。。。 ...
是否需要双向通讯? 如果只要单向通讯,只要把内容加载到广播报文里面即可。 正十七 发表于 2019-3-4 19:12
资源占用很小,官方宣传RAM4.5K,Fllash 69K,实际用下来感觉比这大一些。
不过很多功能和参数都是可配置 ...
这个资源使用量比 esp32里面使用的协议栈省多了:) cnshibo 发表于 2019-3-5 10:53
这个资源使用量比 esp32里面使用的协议栈省多了:)
刚刚google了一下,发现esp32正在移植 NimBLE,据说很快就会放出来。 cnshibo 发表于 2019-3-5 10:52
是否需要双向通讯? 如果只要单向通讯,只要把内容加载到广播报文里面即可。 ...
是双向的,会有数据交互的。
NimBLE 厉害 赞,期待楼主持续更新,再跟大家分享分享如何使用。 收藏了!谢谢 liyang121316 发表于 2019-3-4 05:52
所谓的开源是所有源代码开放吗?没有任何封装库或者obj文件?
所有源代码开源,从应用到PHY、Radio,全部开源,没有库或者obj文件。
关注一下,谢谢分享 正十七 发表于 2019-3-5 19:12
所有源代码开源,从应用到PHY、Radio,全部开源,没有库或者obj文件。
牛逼!!! kinsno 发表于 2019-3-5 11:37
是双向的,会有数据交互的。
说不定改改协议栈,能满足你的需要。NimBLE貌似最大支持32个外设。 不知道和Slicon Labs 的协议栈有多大区别,目前使用Slicon Labs官方的遇到点瓶颈了,有空再来看,记号一下! 非常好,非常好,非常好,支持 非常好,先收藏下! 非常好,非常好,非常好,支持下 NimBLE 蓝牙5.0 mark 好像只支持nRF芯片,能否移植到STM32芯片呢?或者cc芯片呢? carryonli 发表于 2019-3-6 13:36
好像只支持nRF芯片,能否移植到STM32芯片呢?或者cc芯片呢?
可以移植,NimBLE有清晰的HCI抽象层,从HCI层移植,比较容易。
另外就是直接从Phy这层开始移植,这块就有些难度了,估计需要原厂的支持或者对BLE的链路层比较熟悉。
关注一下,谢谢分享 正十七 发表于 2019-3-7 09:33
可以移植,NimBLE有清晰的HCI抽象层,从HCI层移植,比较容易。
另外就是直接从Phy这层开始移植,这块就有 ...
哦,楼主理解很透彻啊,我还不很了解。 RTT现在支持这个低功耗处理? 有原厂协议栈没必要用这个,除非为了折腾 我不信这个协议栈会比原厂的好 gyd0317 发表于 2019-3-7 10:46
RTT现在支持这个低功耗处理?
一般的低功耗处理是在IDLE线程里睡眠CPU,有事件或者中断时唤醒,补偿Tick后继续执行,RT-Thread有PM电源管理组件,可以直接对接。
但是BLE的低功耗处理,我还不太了解,应当是需要开发者根据实际情况进行优化吧。 Vmao 发表于 2019-3-7 12:18
我不信这个协议栈会比原厂的好
各有优劣,看各自的需求。原厂的支持完善,专业的团对,功能稳定,但几乎都是以二进制提供,源码不开发,另外更新也会稍微慢一点。
开源的代码透明,更新快修复问题及时,但是稳定性这些就欠缺了。 Vmao 发表于 2019-3-7 12:18
我不信这个协议栈会比原厂的好
不一定。 610570143 发表于 2019-3-8 10:08
不一定。
你用过?开源的东西除非是玩的人很多会完善一点,否则还不是BUG多多,这个协议栈除了开源,感觉不会比原厂好 Vmao 发表于 2019-3-8 13:54
你用过?开源的东西除非是玩的人很多会完善一点,否则还不是BUG多多,这个协议栈除了开源,感觉不会比原厂好 ...
在用,Bluetooth Mesh部分比官方的要完善。
如果一开始就打上开源的不好,原厂好的标签,那就没法子展开了。
现在主流的开源BLE协议栈有家,Zephyr和NimBLE,团队背景中都有一大部分是Nodic原厂的人。
原厂的方案是以二进制文件提供的,存在诸多限制,所以开源的方案应运而生,原厂的人也在后面支持。
以前的蓝牙协议栈是不开源的,也是在近年物联网概念火爆之后,开始开源,一些新的特性和功能,不开放是没有办法推广的。 不错,支持一下 感谢楼主分享 感谢楼主分享 这个利害了,抽空要玩一下。 怎么不支持5.1 支持一下 ericdai 发表于 2019-3-15 10:52
怎么不支持5.1
5.1的规范SIG刚发布,定位方面能到厘米级。支持是大势所趋,时间问题 希望早日支持5.1,要跟上主流节奏啊。 顶楼主一个 看起来很NB,有人运行过了吗 这个用起来的门槛还是太高了,只能坐等高手研究了 关注一下,谢谢分享! 感谢分享! 了解一下. 厉害了,期待更多分享 NimBLE 蓝牙5.0 mark cqsrmxxzyx 发表于 2019-6-5 23:47
看起来很NB,有人运行过了吗
esp32 官方已经移植了一个版本到他们的平台上。 ble的协议栈还是很难做的,这个要支持 cnshibo 发表于 2019-6-19 15:40
esp32 官方已经移植了一个版本到他们的平台上。
是的,我也注意到了,你用上了没有 了解一下,多谢分享{:lol:} gamethink 发表于 2019-6-19 20:11
是否可以直接在普通的2.4G芯片跑藍牙?
不可以,虽然同样是 2.4G 协议,但是硬件不一样 只有开源才能更好的发展壮大 学习了 感谢分享 支持开源,学习一下,谢谢分享 学习深入学习 学习,开源ble
页:
[1]