“NRF52832DK-Mesh组网实验”的版本间的差异

来自谷雨文档中心
跳转至: 导航搜索
蓝牙Mesh SDK
第8行: 第8行:
 
SDK位置:<code>归档资料/2-协议栈SDK/nRF5_SDK_Mesh_v310.zip</code>,注意文件名中的Mesh字样。
 
SDK位置:<code>归档资料/2-协议栈SDK/nRF5_SDK_Mesh_v310.zip</code>,注意文件名中的Mesh字样。
  
和BLE协议栈一样,将该压缩包直接解压到BLE协议栈同级目录即可使用,解压后的SDK路径如下:
+
和BLE协议栈一样,将该压缩包直接解压到BLE协议栈同级目录即可使用,解压后的SDK路径如下:<code>E:\project-nordic\nRF5_SDK_Mesh_v310</code>
 
+
[[文件:NRF52832DK-MESH-SDK-INSTALL.gif|居中|无框|750x750像素]]
(待更新)
 
  
 
=== 集成开发软件SES ===
 
=== 集成开发软件SES ===

2019年10月8日 (二) 19:24的版本

蓝牙Mesh和BLE是并行发展的一个独立分支,虽然底层共用Physical Layer和Link Layer,但是上层协议并不相同。因此,nRF52832的Mesh例程,并不在BLE协议栈sdk中,而是安装一个扩展包。

本文介绍蓝牙Mesh相关的环境搭建和实验介绍。

1 Mesh开发环境

1.1 蓝牙Mesh SDK

SDK位置:归档资料/2-协议栈SDK/nRF5_SDK_Mesh_v310.zip,注意文件名中的Mesh字样。

和BLE协议栈一样,将该压缩包直接解压到BLE协议栈同级目录即可使用,解压后的SDK路径如下:E:\project-nordic\nRF5_SDK_Mesh_v310

NRF52832DK-MESH-SDK-INSTALL.gif

1.2 集成开发软件SES

SES时是Segger Embedded Studio编译器的缩写,用来编译蓝牙Mesh代码,SES功能与IAR或Keil类似。

备注:Nordic为何使用SES而不是IAR,原因不得而知。

1.2.1 SES安装

SES软件位置:归档资料/7-编译器SES/Setup_EmbeddedStudio_ARM_v410_win_x64.exe

我们双击打开安装界面,按照如下动图所示方式进行安装(可以全部默认安装)。

Ses install.gif

1.2.2 SES许可证激活

我们双击打开安装好的SES,选择编译自带测试例程,此时弹出需要激活的界面。

Licensed1.jpg

由于我们准备使用SES编译nordic的NRF52832的SDK,所以这里我们选择Activate Your Free License。这里因为nordic公司已经帮客户想SEGGER公司买下了使用的版权,所以是免费的许可证。

Licensed2.jpg

我们按照要求填写好信息,主要是邮箱地址(用于接收SEGGER公司发给我们的许可证),填写完成之后点击Request License。下面是我们接收的邮件信息,我们将红色框内的内容复制下来。

Ses install3.png

打开SES,选择Tools\License Manager...,我们选择Activate Embedded Studio,打开如下界面,并将我们的许可证粘贴进去,然后点击Install License。

Licensed4.png

安装好许可证之后,跳转到如下的界面。

Licensed5.png

此时我们的许可证激活完毕(有时候需要等待一段时间,才会显示激活成功)。

Licensed6.png

2 Light_switch

2.1 实验简介

此示例演示了包含充当两个角色的设备的网状生态系统:配置角色(Provisioner role)和节点角色(Node role、provisionee role)。 它还通过在应用程序中使用[Generic OnOff model]来演示了如何使用Mesh模型。

该示例由三个较小的示例组成:

Light switch server:一个实现了[Generic OnOff server model]的简约服务器,用于接收状态数据并控制板上LED 1的状态。

Light switch client:一个实现了[Generic OnOff client model]的简约客户端。当用户按下任意按钮时,OnOff Set消息将发送到配置的目标地址。

Mesh Provisioner:一个简单的静态配置设备应用,用于建立演示网络,该配置设备在一个网状网络中配置所有节点。 此外,配置设备还可以在这些节点上配置网格模型[Generic OnOff model]实例的绑定以及发布和订阅设置,以使它们能够相互通信。

[Generic OnOff Client/Server]模型用于操纵打开/关闭状态。请注意,当服务器设置了发布地址(如本例所示)时,服务器会将其状态更改的任何操作披露到其发布地址。

下图给出了将由静态供应商设置的网状网络的整体视图, 括号中的数字表示预配置程序分配给这些节点的地址。

Mesh network.png

灯开关服务器和灯开关客户端示例均具有预配方角色。它们支持通过广告承载(PB-ADV)和GATT承载(PB-GATT)进行配置,并且还支持网状代理服务器(Proxy Service),但是不支持代理客户端(Proxy Client)。

2.2 硬件说明

完成这个实验,我们最少需要两个开发板硬件用做我们的节点设备(Node):

●一个开发板用做client

●一个或者多个开发板用做server

此外,我们还需要以下之一作为我们的配置设备(Provisioner):

●如果您决定使用静态预配器示例,则多准备一个开发板

●如果您决定使用app程序进行设置,则需要安装手机app@link_nrf_mesh_app(@link_nrf_mesh_app_ios或@link_nrf_mesh_app_android)。

Icon-info.png
默认我们使用3个开发板完成我们的实验,3个开发板分别对应client、server以及provisioner三个类型。

2.3 软件说明

1、我们使用NrfGo上位机,依次对三个开发板进行擦除及softdevice的烧写

Lightswitch nrfgo.png

2、使用SEGGER Embedded Studio for ARM编译器分别打开我们`<InstallFolder>/examples/light_switch`路径下的3个实验,并完成编译

●\client\light_switch_client_nrf52832_xxAA_s132_6_1_0.emProject

●\server\light_switch_server_nrf52832_xxAA_s132_6_1_0.emProject

●\provisioner\light_switch_provisioner_nrf52832_xxAA_s132_6_1_0.emProject

Lightswitch SES build.png

3、此时我们对3个开发板分别进行固件的烧写,分别烧写client、server、provisioner(建议大家给3个开发板贴上标签,方便后续区分)

Lightswitch SES download.png.gif

2.4 实验现象

Icon-info.png
注意:保证我们的3个设备都是刚按照软件说明部分的步骤配置完成,并且没有进行过任何硬件控制(按键操作)。目的是保证所有设备均未被我们人为配置过,没有进行过网络配置,否则可能有任意异常(不同网络配置,导致的不同现象)

1、首先我们分别给client和provisioner供电,然后我们按下provisioner的按键S1:

●provisoner:LED灯点亮,代表正在配置查找设备,配置组网

●client:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成

我们如果打开RTT检测log打印,可以看到如下的信息,这个时候我们已经给client设备分配了Node Address为0x0100。provisioner信息(上),client信息(下)。

Lightswitch rtt provisoner1.png
Lightswitch rtt node client.png

2、使用provisioner配置好client之后,我们给server开发板上电,这个时候provisioner将会配置server入网:

●provisoner:LED1点亮代表正在配置网络,LED2点亮代表网络配置完成

●server:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成

我们打开RTT检测log打印,可以看到server已经配置入网,并且被分配了地址Node Address为0x0104。provisioner信息(上),server信息(下)。

Lightswitch rtt provisoner2.png
Lightswitch rtt node server.png

3、此时整个网络的配置已经完成,这个时候我们可以按下client上的按键来控制server上的LED点亮或者熄灭。

由于我们的server被provisioner分配的Node Address是0x0104(偶数),所以我们通过client的S3控制server的LED1点亮,通过client的S4控制server的LED1熄灭。

Icon-info.png
client设备对于server设备的控制,通过Node Address的奇偶位不同,分成了两个组。

client的S1和S2分别控制Node Address为奇数的server设备的LED1点亮和熄灭。

client的S3和S4分别控制Node Address为偶数的server设备的LED1点亮和熄灭。

我们打开RTT检测log打印,可以看到client分别按下button2(S3)以及button3(S4),分别会设置server的GPIO输出高低电平。client信息(上),server信息(下)。

Lightswitch rtt node client2.png
Lightswitch rtt node server2.png

4、至此我们的mesh组网的lightswitch实验测试完成。

2.5 源码详解

本PDF由谷雨文档中心自动生成,点击下方链接阅读最新内容。

取自“http://doc.iotxx.com/index.php?title=NRF52832DK-Mesh组网实验&oldid=2230