市场资讯
都挺好:STM32WB+蓝牙 Mesh(上)
发布日期:2019-04-15    

大家对蓝牙应该不会感到陌生,利用经典蓝牙技术的蓝牙耳机/音箱,借助BLE(低功耗蓝牙)技术的运动手环/手表在我们的生活中随处可见。而ZigBee在工业物联网上则是应用广泛。THREAD作为谷歌亲兄弟(Nest Labs)推出的物联网通讯协议,日子自然也不会难过。

在下图中(左下角格子)可以看到,BLE(低功耗蓝牙),THREAD及ZigBee这三项无线传输协议同属于短中距离(10m-100m)和低中传输数据量(bps to Kbps)的定位。这三项协议可比三国的“魏蜀吴”,家家互不相让,都想称霸中原(智能家居、智慧楼宇)。
                                
                                                                              常见无线传输技术

限于篇幅,我们先来聊聊“三国”中的“魏”—— 蓝牙。

为什么把蓝牙称为“魏”? 一来蓝牙技术联盟(SIG) 旗下成员众多(截止2017年底,33000家会员,好比魏国数不胜数的文将武将),二来蓝牙“挟天子以令诸侯”。这个“天子”就是跟我们形影不离的手机。有了出厂就配备蓝牙的手机这个“天子”,什么智能冰箱、智能手环,不都得向它汇报数据。自然蓝牙也成为了我们生活中最常用的协议。

“三国”最终谁能称霸还是各自偏安一隅,我们尚不得知。但是 “三国”之间相互借鉴的趋势变得越发明显。比如蓝牙Mesh就是蓝牙技术联盟(SIG)在2017年新加入的拓展BLE(低功耗蓝牙)应用场景的一项网络技术,而Mesh的应用场景又恰好是Zigbee的传统擅长领域。

Mesh简单的说就是让我们建立无线节点之间 “多对多”连接的一项技术,目的是为了让信息传递跨越非常大的物理距离。
 
                                                        
                                        制造工厂、办公楼、商业园区等的节点(摘自蓝牙技术联盟公众号)

下表是“三国”Mesh的异同。

BLE   Mesh

Thread

Zigbee

频段

2.4G

2.4G

2.4G

PHY

BLE PHY

802.15.4

802.15.4

MAC

BLE MAC

802.15.4

802.15.4

网关

N

Y (Coordinator)

Y (Board Router)

IPv6支持

N

6LowPan

N


不难发现,“三国”的Mesh同属一个RF频段(2.4G),从物理层(PHY)开始有了差异。

BLE Mesh作为一项应用协议,使用并且依赖于BLE(低功耗蓝牙)作为底层协议栈(下图红框内)。

在最开始设计Mesh技术的时候,蓝牙的标准还是4.0,所以考虑到向下兼容性,到目前为止Mesh还是采用BLE 4.0来实现上层的协议栈。只要MCU基于BLE 4.0及以上,满足一定的运算能力来完成加密机制,并且有足够的RAM或Flash来运行协议,就有可能加入Mesh功能。

当然如果像STM32WB这样支持BLE 5.0,会给未来Mesh协议的扩展升级提供更多的可能性。

像其他很多协议一样,Mesh协议栈各层级各司其职。而对于初学者来说,我们只需要关注最高层的model layer(下图黑框内)。在之后文章的代码例程讲解中,我们会重点介绍这一层。
 
                                
                                                   蓝牙Mesh网络协议栈(摘自蓝牙技术联盟公众号)

那在BLE Mesh网络里的“Node”(节点)会有哪些“Feature”(特性)呢?

还记得我们的“天子”——手机吗?
• 要跟“天子”递奏折传递信息自然需要“太监”作为媒介,只有“太监”才能读懂“天子”的心情。我们把能够实现GATT和蓝牙mesh节点之间消息发送与接收的节点特性称为 “Proxy” (代理)。
• 那如果“天子”要下发政令到各个州府呢?古代的“驿卒”就担负了在各个政府机关传递情报的工作。我们把这种能够接收和转发消息,通过消息在节点之间中继实现更大规模网络的节点特性称为“Relay”(中继)。
• 州府最终要把政令实施下去吧?但又要休养生息,不能每天都把百姓叫过来训话吧。只能选个好日子,趁百姓都在场才能宣布政令。州府在这里起到的角色就是暂存信息的功能。我们把能够存储发往低功耗节点的消息和安全更新的节点特性称为“Friend”(好友)。
• 那些经不起折腾,只能定期出门去接收消息的老百姓就是供电受限的“Low-Power”(低功耗特性)。

但与现实不同的是,BLE Mesh中不受功耗限制的节点能够扮演一个或者多个“角色”——既能当官,又能兼职做“太监”和“驿卒”。而“老百姓”因为功耗受限,一般只能做“老百姓”。

                                     
                                                      蓝牙Mesh网络示例(https://www.fanstel.com/bt832-1-1

另外一个重要的概念叫做“Provision”(启动配置),简单的说就是通过在手机或者电脑上的应用程序,把原本不属于Mesh网络的“Device”(设备)配置成为网络中的一个“Node”。
同时不同的“Node”还可以被分配到不同的“Group”(组群),“Node ”只能与同一个“Group”中的其他“Node”通信,而忽略其他“Group”的信息。
为了完成下面的演示,需要先从“豌豆荚”(安卓)或者“Apple Store”(苹果)搜索安装“ST BLE Mesh”App来完成“Provision”的操作。

 
                                                    

之前关注STM32WB的朋友肯定熟悉下面这张图,STM32WB同时支持蓝牙5.0、ZigBee、THREAD及其他私有的2.4GHz协议栈。

     
       

那支持蓝牙Mesh自然不在话下。可能有些细心的老铁已经在我们的st.com官网找到了一些端倪。在st.com上搜索STM32CubeWB。 

                        

下载解压后,我们打开IAR的工程。STM32Cube_FW_WB_V1.0.0\Projects\NUCLEO-
WB55.Nucleo\Applications\BLE\BLE_MeshLightingDemo\EWARM

同时还是在st.com搜索AN5292找到该例程的应用手册AN5292: How to build a Bluetooth® Low Energy mesh application for STM32WBx5 microcontrollers

硬件上,我们还需要拿到P-NUCLEO-WB55套装(有2块板子)中的白色主板(下图左侧)。

STM32官方旗舰店已经有售,淘宝搜索关键字:ST WB开发板。

                                           
                                                                    P-NUCLEO-WB55 套装

等下面的材料都齐全了,我们就可以开始Mesh的演示了

• 手机端:“ST BLE Mesh”App。
• 硬件:P-NUCLEO-WB55中的白色主板
• 固件:“STM32CubeWB”
• 应用手册:AN5292

下篇,我们将重点介绍如何配置Mesh的演示和Mesh代码的讲解。大家敬请期待!

另外想现场参观我们的Mesh演示,4月26号和27号,深圳蛇口南海希尔顿,我们不见不散!