更改

跳转至: 导航搜索

NRF52832DK-Mesh组网实验

添加505字节2020年3月23日 (一) 14:00
mesh工程文件简介
=== 源码详解 ===
 
== ***************************************正式整理章节************************************** ==
 
== mesh实验学习流程概论 ==
1、首先大家一定要先查看一下我们资料中的手册“BLE-Mesh技术揭秘”,这个是很重要的一个mesh基本概念的介绍,只有看完这个文档,我们才能明白mesh组网是什么,是怎么完成的,后续的我们实验内容,也会在这个文档中查到相应的对照。
 
2、按照Light_switch测试实验的实验说明,跑通测试流程(可以固件清零重新烧写多测试几遍,有助于增强我们的流程熟练度,利于后面的开发)。light_switch实验是现在nordic提供给我们的唯一的真正意义上的mesh组网通信例程。
 
3、根据我们下面拆分的组网流程,对照依次的实验说明,进行mesh组网流程的分步学习。前期实验部分我们主要讲解节点设备,配置者设备功能我们使用手机app完成,目的是减少大家的学习难度,配置者设备我们会放在最后一个实验给大家做介绍。
 
①了解节点设备的广播功能,分为两个部分:PB-ADV以及Unprov Beacon。
 
②了解节点设备接入网络的验证过程,实验中使用的是PB-GATT去配置的,包含了:交换公共密钥,完成验证(是否有带外OOB)。
 
③启动配置数据分配,给节点分配如下数据:网络key(Netkey)、应用key(Appkey)以及节点设备地址(nodeAddr)。
 
④了解节点设备的元素以及模型获取以及index的分配。
 
⑤了解模型的订阅subscription和发布publish功能。
 
⑥了解模型的功能和创建方法。
 
== Light_switch测试实验 ==
=== 实验简介 ===
此示例演示了包含充当两个角色的设备的网状生态系统:配置角色(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|边框|居中|无框|727x727像素]]
灯开关服务器和灯开关客户端示例均具有预配方角色。它们支持通过广告承载(PB-ADV)和GATT承载(PB-GATT)进行配置,并且还支持网状代理服务器(Proxy Service),但是不支持代理客户端(Proxy Client)。
 
=== 硬件说明 ===
完成这个实验,我们最少需要两个开发板硬件用做我们的节点设备(Node):
* 一个开发板用做client
* 一个或者多个开发板用做server
此外,我们还需要以下之一作为我们的配置设备(Provisioner):
* 如果您决定使用静态预配器示例,则多准备一个开发板
* 如果您决定使用app程序进行设置,则需要安装手机app@link_nrf_mesh_app(@link_nrf_mesh_app_ios或@link_nrf_mesh_app_android)。
{{Note|text=默认我们使用3个开发板完成我们的实验,3个开发板分别对应client、server以及provisioner三个类型。|type=warning}}
 
=== 软件说明 ===
1、我们使用NrfGo上位机,依次对三个开发板进行擦除及softdevice的烧写
[[文件:Lightswitch nrfgo.png|边框|居中|无框|1013x1013像素]]
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|边框|居中|无框|1013x1013像素]]
3、此时我们对3个开发板分别进行固件的烧写,分别烧写client、server、provisioner(建议大家给3个开发板贴上标签,方便后续区分)
[[文件:Lightswitch SES download.png.gif|边框|居中|无框|1009x1009像素]]
 
=== 实验现象 ===
{{Note|text=注意:保证我们的3个设备都是刚按照软件说明部分的步骤配置完成,并且没有进行过任何硬件控制(按键操作)。目的是保证所有设备均未被我们人为配置过,没有进行过网络配置,否则可能有任意异常(不同网络配置,导致的不同现象)|type=danger}}
1、首先我们分别给client和provisioner供电,然后我们按下provisioner的按键S1:
 
●provisoner:LED灯点亮,代表正在配置查找设备,配置组网
 
●client:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成
 
我们如果打开RTT检测log打印,可以看到如下的信息,这个时候我们已经给client设备分配了Node Address为0x0100。provisioner信息(上),client信息(下)。
[[文件:Lightswitch rtt provisoner1.png|边框|无框|1080x1080像素|居中]]
[[文件:Lightswitch_rtt_node_client.png|边框|居中|无框|656x656像素]]
 
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|边框|无框|710x710像素|居中]]
[[文件:Lightswitch rtt node server.png|边框|无框|656x656像素|居中]]
 
3、此时整个网络的配置已经完成,这个时候我们可以按下client上的按键来控制server上的LED点亮或者熄灭。
 
由于我们的server被provisioner分配的Node Address是0x0104(偶数),所以我们通过client的S3控制server的LED1点亮,通过client的S4控制server的LED1熄灭。
{{Note|text=client设备对于server设备的控制,通过Node Address的奇偶位不同,分成了两个组。
client的S1和S2分别控制Node Address为奇数的server设备的LED1点亮和熄灭。
 
client的S3和S4分别控制Node Address为偶数的server设备的LED1点亮和熄灭。|type=warning}}
我们打开RTT检测log打印,可以看到client分别按下button2(S3)以及button3(S4),分别会设置server的GPIO输出高低电平。client信息(上),server信息(下)。
[[文件:Lightswitch rtt node client2.png|边框|无框|656x656像素|居中]]
[[文件:Lightswitch rtt node server2.png|边框|无框|656x656像素|居中]]
 
4、至此我们的mesh组网的lightswitch实验测试完成。
== mesh工程文件简介 ==
|
|}
 
== ***************************************正式整理章节************************************** ==
 
== mesh实验学习流程概论 ==
1、首先大家一定要先查看一下我们资料中的手册“BLE-Mesh技术揭秘”,这个是很重要的一个mesh基本概念的介绍,只有看完这个文档,我们才能明白mesh组网是什么,是怎么完成的,后续的我们实验内容,也会在这个文档中查到相应的对照。
 
2、按照Light_switch测试实验的实验说明,跑通测试流程(可以固件清零重新烧写多测试几遍,有助于增强我们的流程熟练度,利于后面的开发)。light_switch实验是现在nordic提供给我们的唯一的真正意义上的mesh组网通信例程。
 
3、根据我们下面拆分的组网流程,对照依次的实验说明,进行mesh组网流程的分步学习。前期实验部分我们主要讲解节点设备,配置者设备功能我们使用手机app完成,目的是减少大家的学习难度,配置者设备我们会放在最后一个实验给大家做介绍。
 
①广播——了解节点设备的广播功能,分为两个部分:PB-ADV以及Unprov Beacon,也用于后面的数据通信的TX发送。
 
②扫描——了解节点设备的扫描功能,用于数据通信的RX接收。
 
③入网验证——了解节点设备接入网络的验证过程,实验中使用的是PB-GATT去配置的,包含了:交换公共密钥,完成验证(是否有带外OOB)。
 
④设备信息分配——启动配置数据分配,给节点分配如下数据:网络key(Netkey)、应用key(Appkey)以及节点设备地址(nodeAddr)。
 
⑤元素——了解节点设备的元素以及模型获取以及index的分配。
 
⑥模型通信——了解模型的订阅subscription和发布publish功能。
 
⑦模块创建——了解模型的功能和创建方法。
 
== Light_switch测试实验 ==
=== 实验简介 ===
此示例演示了包含充当两个角色的设备的网状生态系统:配置角色(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|边框|居中|无框|727x727像素]]
灯开关服务器和灯开关客户端示例均具有预配方角色。它们支持通过广告承载(PB-ADV)和GATT承载(PB-GATT)进行配置,并且还支持网状代理服务器(Proxy Service),但是不支持代理客户端(Proxy Client)。
 
=== 硬件说明 ===
完成这个实验,我们最少需要两个开发板硬件用做我们的节点设备(Node):
* 一个开发板用做client
* 一个或者多个开发板用做server
此外,我们还需要以下之一作为我们的配置设备(Provisioner):
* 如果您决定使用静态预配器示例,则多准备一个开发板
* 如果您决定使用app程序进行设置,则需要安装手机app@link_nrf_mesh_app(@link_nrf_mesh_app_ios或@link_nrf_mesh_app_android)。
{{Note|text=默认我们使用3个开发板完成我们的实验,3个开发板分别对应client、server以及provisioner三个类型。|type=warning}}
 
=== 软件说明 ===
1、我们使用NrfGo上位机,依次对三个开发板进行擦除及softdevice的烧写
[[文件:Lightswitch nrfgo.png|边框|居中|无框|1013x1013像素]]
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|边框|居中|无框|1013x1013像素]]
3、此时我们对3个开发板分别进行固件的烧写,分别烧写client、server、provisioner(建议大家给3个开发板贴上标签,方便后续区分)
[[文件:Lightswitch SES download.png.gif|边框|居中|无框|1009x1009像素]]
 
=== 实验现象 ===
{{Note|text=注意:保证我们的3个设备都是刚按照软件说明部分的步骤配置完成,并且没有进行过任何硬件控制(按键操作)。目的是保证所有设备均未被我们人为配置过,没有进行过网络配置,否则可能有任意异常(不同网络配置,导致的不同现象)|type=danger}}
1、首先我们分别给client和provisioner供电,然后我们按下provisioner的按键S1:
 
●provisoner:LED灯点亮,代表正在配置查找设备,配置组网
 
●client:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成
 
我们如果打开RTT检测log打印,可以看到如下的信息,这个时候我们已经给client设备分配了Node Address为0x0100。provisioner信息(上),client信息(下)。
[[文件:Lightswitch rtt provisoner1.png|边框|无框|1080x1080像素|居中]]
[[文件:Lightswitch_rtt_node_client.png|边框|居中|无框|656x656像素]]
 
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|边框|无框|710x710像素|居中]]
[[文件:Lightswitch rtt node server.png|边框|无框|656x656像素|居中]]
 
3、此时整个网络的配置已经完成,这个时候我们可以按下client上的按键来控制server上的LED点亮或者熄灭。
 
由于我们的server被provisioner分配的Node Address是0x0104(偶数),所以我们通过client的S3控制server的LED1点亮,通过client的S4控制server的LED1熄灭。
{{Note|text=client设备对于server设备的控制,通过Node Address的奇偶位不同,分成了两个组。
client的S1和S2分别控制Node Address为奇数的server设备的LED1点亮和熄灭。
 
client的S3和S4分别控制Node Address为偶数的server设备的LED1点亮和熄灭。|type=warning}}
我们打开RTT检测log打印,可以看到client分别按下button2(S3)以及button3(S4),分别会设置server的GPIO输出高低电平。client信息(上),server信息(下)。
[[文件:Lightswitch rtt node client2.png|边框|无框|656x656像素|居中]]
[[文件:Lightswitch rtt node server2.png|边框|无框|656x656像素|居中]]
 
4、至此我们的mesh组网的lightswitch实验测试完成。
 
== ①广播 ==
 
=== PB-ADV ===
PB-ADV说明请查看“BLE-Mesh技术揭秘”第8.1章节。
[[文件:PB-ADV-01.png|边框|居中|无框|750x750像素]]
 
=== Unprov Beacon ===
Unprov Beacon说明请查看“BLE-Mesh技术揭秘”第5.5及5.5.1章节。
 
== ②扫描 ==
[[分类:NRF52832DK]]
[[分类:实验手册]]
510
个编辑

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

取自“http://doc.iotxx.com/特殊:移动版差异/2670

导航菜单