目录
1 Light_switch
1.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]模型用于操纵打开/关闭状态。请注意,当服务器设置了发布地址(如本例所示)时,服务器会将其状态更改的任何操作披露到其发布地址。
下图给出了将由静态供应商设置的网状网络的整体视图, 括号中的数字表示预配置程序分配给这些节点的地址。
灯开关服务器和灯开关客户端示例均具有预配方角色。它们支持通过广告承载(PB-ADV)和GATT承载(PB-GATT)进行配置,并且还支持网状代理服务器(Proxy Service),但是不支持代理客户端(Proxy Client)。
1.2 硬件说明
完成这个实验,我们最少需要两个开发板硬件用做我们的节点设备(Node):
●一个开发板用做client
●一个或者多个开发板用做server
此外,我们还需要以下之一作为我们的配置设备(Provisioner):
●如果您决定使用静态预配器示例,则多准备一个开发板
●如果您决定使用app程序进行设置,则需要安装手机app@link_nrf_mesh_app(@link_nrf_mesh_app_ios或@link_nrf_mesh_app_android)。
1.3 软件说明
1、我们使用NrfGo上位机,依次对三个开发板进行擦除及softdevice的烧写
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
3、此时我们对3个开发板分别进行固件的烧写,分别烧写client、server、provisioner(建议大家给3个开发板贴上标签,方便后续区分)
1.4 实验现象
注意:保证我们的3个设备都是刚按照软件说明部分的步骤配置完成,并且没有进行过任何硬件控制(按键操作)。目的是保证所有设备均未被我们人为配置过,没有进行过网络配置,否则可能有任意异常(不同网络配置,导致的不同现象) |
1、首先我们分别给client和provisioner供电,然后我们按下provisioner的按键S1:
●provisoner:LED灯点亮,代表正在配置查找设备,配置组网
●client:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成
我们如果打开RTT检测log打印,可以看到如下的信息,这个时候我们已经给client设备分配了Node Address为0x0100。provisioner信息(左),client信息(右)。
2、使用provisioner配置好client之后,我们给server开发板上电,这个时候provisioner将会配置server入网:
●provisoner:LED1点亮代表正在配置网络,LED2点亮代表网络配置完成
●server:首先LED3和LED4闪烁,代表正在组网;LED1-LED4四个灯一起闪烁,代表组网完成
我们打开RTT检测log打印,可以看到server已经配置入网,并且被分配了地址Node Address为0x0104。provisioner信息(左),server信息(右)。
3、此时整个网络的配置已经完成,这个时候我们可以按下client上的按键来控制server上的LED点亮或者熄灭。
由于我们的server被provisioner分配的Node Address是0x0104(偶数),所以我们通过client的S1控制server的LED1点亮,通过client的S2控制server的LED1熄灭。
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输出高低电平。
4、至此我们的mesh组网的lightswitch实验测试完成。