本文主要是介绍蓝牙mesh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2017年7月份,蓝牙宣布蓝牙Mesh标准。区别与传统印象中蓝牙通过连接、配对这种一对一的通讯方式,蓝牙Mesh是一种多对多的网状网络通讯机制,本文谈下个人理解。
首先是PHY层,蓝牙Mesh是对低功耗蓝牙的扩展,底层仍然采用自适应跳频技术,使用BLE的广播信道进行Mesh信息的发送和接收,使用GATT信道执行代理协议,将GATT数据转换为广播信道Mesh消息,用于和Mesh节点和手机的通讯中。
接下来谈一下蓝牙Mesh的节点,Mesh中的每个节点都具有收发Mesh消息的功能,同时支持四种可选的附加功能,每个节点可以支持其中一种或多种,四种功能分别为:
1.代理功能(Proxy):可启用蓝牙网状网络和GATT设备之间的讯息代理功能,例如将手机的消息转换为mesh网络的消息。
2.中继功能(Relay):可中继消息,扩展蓝牙网状网络的范围和规模,属于选项功能。
3.朋友功能(Friend):可以为低功耗功能的节点执行消息缓存的附加功能。
4.低功耗功能(LowPower):休眠和轮询朋友节点的讯息,轮询间隔时间可从毫秒到4天。
其中有一个比较特殊的节点,可以选择不使用以上任何功能,叫做边缘节点(Edge)。
读者可能会有疑问,这个是蓝牙抄袭了Zigbee吗?其实完全不是,蓝牙Mesh与zigbee不同,它不用路由协议,而是使用网络泛洪管理技术,简单说就是一个节点发出的数据,将会被所有支持中继的节点进行转发,但不会被无限转发,已经转发该数据的节点将不再进行转发,同时,蓝牙Mesh有一些特殊机制,比如数据包生存周期(Time To Live)管理,也是有效的防止了数据的无限转发。
Mesh网络最直接展示是网络拓扑图,接下来看一下蓝牙Mesh的拓扑:
图1:蓝牙Messh网络拓扑
其中,代理节点(Proxy)支持GATT,可与手机、平板或PC进行交互,并可以执行代理协议(Proxy Protocol),将GATT数据包转为Mesh消息到Mesh网络的其他节点。
中继节点收到消息后会转发消息,以使数据包覆盖到更多节点。朋友节点为低功耗节点缓存数据,待低功耗节点睡眠唤醒后获取数据。
蓝牙Mesh在消息类型上面也和其他网状网类似,主要包含:
单播:对单一点。
组播:对一组节点。
广播:对所有节点。
蓝牙Mesh在信息行为上有一些互联网的影子:
发布(Publish):发送消息即为发布。
订阅(subscribing):节点可经配置选择发送信息到指定位址进行处理。
蓝牙Mesh在安全性上面也是做了比较多的工作:
1、蓝牙网状网络使用多层及安全措施。
2、网络,应用和设备管理各有各的安全层级的功能。
3、供应规定:设备须使用P-256曲线的EllipticCurveDiffieHellman。
4、认证:所有信息都通过128位的AES-CCM认证。网络和应用层皆使用独立的密钥和MIC。
5、隐私:所有信息都加密,除了前8位之外的所有PDU都进行混淆加密。
6、针对所有已知的安全威胁问题提供蓝牙网状网络安全保护措施。
现在相信你已经对蓝牙有一些了解,作为新的技术,目前提供方案的厂家还不是很多,其中包括Silicon Labs的EFR32BG、EFR32MG系列SoC,目前已发布低功耗蓝牙Mesh 方案,包括开发工具Simplicity Studio、Bluetooth Mesh SDK Ver 1.1.0.0、Android移动端应用。
这篇关于蓝牙mesh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!