更改

跳转至: 导航搜索

NRF52832DK-Mesh组网实验

添加5,778字节2019年9月24日 (二) 12:13
实验简介
=== 实验简介 ===
此示例演示了包含充当两个角色的设备的网状生态系统:配置角色(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的S1控制server的LED1点亮,通过client的S2控制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输出高低电平。
[[文件:Lightswitch rtt node client2.png|边框|左|无框|656x656像素]]
[[文件:Lightswitch rtt node server2.png|边框|右|无框|656x656像素]]
 
4、至此我们的mesh组网的lightswitch实验测试完成。
=== 源码详解 ===
510
个编辑

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

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

导航菜单