打开主菜单

谷雨文档中心 β

更改

NRF52832DK-Mesh组网实验

添加3,685字节2020年3月31日 (二) 14:21
Node Address
首先我们来看一下我们使用nRF Mesh成功配置我们的节点之后,打印出来的消息,开始的紫色字体显示了我们给当前节点设备分配的Node Address。
后面紧接着还有四段黄色字体的内容(这个部分大家的工程是不会打印的,是我们修改例程打印出来给大家展示一下),这四个部分就是我们配置节点的时候,给节点设备的四个主要指令,这些指令的具体功能,大家可以查看mesh的协议手册。后面紧接着还有四段黄色字体的内容(这个部分大家的工程是不会打印的,是我们修改例程打印出来给大家展示一下),这四个部分就是我们配置节点的时候,配置者设备(nRF Mesh)给节点设备的四个主要指令,这些指令的具体功能,大家可以查看mesh的协议手册。[[文件:Config-13.png|边框|居中|无框|1080x1080像素]]在代码中,我们会在mian文件的provisioning_complete_cb()回调函数中获取并打印我们的Node Address,这个回调触发的含义就是我们的节点配置已经完成了。[[文件:Config-20.png|边框|居中|无框|1200x1200像素]]在节点配置的过程中,包括后面的一些信息配置,我们开发者用来监视指令配置的流程[[文件:Config-22.png|边框|居中|无框|1200x1200像素]][[文件:Config-23.png|边框|居中|无框|1200x1200像素]]具体这个回调在代码中的回调及触发流程,大家看可以查看“③入网验证”的说明。[[文件:Config-2120.png|边框|居中|无框|1200x1200像素]]我们使用nRF Mesh配置好节点设备之后,app界面显示内容如下,包含了节点的信息(地址、名称、配置时间等等),元素和模型,以及Netkey和Appkey等几个重要的设备信息。[[文件:Config-01.jpg|边框|居中|无框]]
[[文件:Config-04.jpg|边框|居中|无框]]
=== Netkey ===
我们点击查看一下Network key,可以看到里面有一个Network Key 1,这是一个16字节的网络密钥。我们可以在nRF Mesh的Settings界面去增加或者删除一个network key,用户可以自定义此密钥。[[文件:Config-02.jpg|边框|居中|无框]]在我们的代码中,我们是在pro_evt_handler回调的NRF_MESH_PROV_EVT_COMPLETE事件中获取这个netkey,这个回调函数的触发流程同样是在“③入网验证”已经有说明。[[文件:Prov-11.png|边框|居中|无框|1200x1200像素]]我们直接看下NRF_MESH_PROV_EVT_COMPLETE事件下的mesh_stack_provisioning_data_store()函数,在这个函数中我们主要的任务,就是将配置者分配给我们的node address、netkey、devkey等等信息,分别做一些存储以及功能绑定。[[文件:Netkey-01.png|边框|居中|无框|1200x1200像素]]
=== Appkey ===
同样的我们打开Application Key,可以看到其中包含的3个密钥,这里我们只选用了Application Key 1作为我们的密钥。大家同样可以在nRF Mesh的Settings界面去增加或者删除一个App key,用户可以自定义此密钥。[[文件:Config-03.jpg|边框|居中|无框]]appkey这里和netkey不同,netkey是我们网络中的节点设备以及我们配置者设备共有的一个密钥,只有拥有这个密钥,我们才能在当前网络中通信,所以当我们的节点设备配置入网后,会立刻得到netkey(必须要分配给我的节点设备才行)。 而appkey只是我们的某个模型用于通信的密钥,所以我们称它为应用密钥,这个appkey的分配,是在我们的config server下。这个config_server_init的初始化流程,是在我们的mesh_stack_init()函数下,就去初始化配置好的。最终当我们有信息配置的时候,会触发opcode_handlers,我们可以从这个操作码列表中查找相应的信息处理。[[文件:Config-22.png|边框|居中|无框|1200x1200像素]][[文件:Config-23.png|边框|居中|无框|1200x1200像素]]我们来看下config server的opcode_handlers[]操作码处理程序列表,使用黄色标记给大家圈了几个操作码指令,这几个是我们配置一个最简单的server节点设备,都需要使用到的,包含了: 1、appkey的添加,CONFIG_OPCODE_APPKEY_ADD 2、publish发布地址,CONFIG_OPCODE_MODEL_PUBLICATION_VIRTUAL_ADDRESS_SET 3、subscription订阅地址,CONFIG_OPCODE_MODEL_SUBSCRIPTION_ADD 4、模型appkey的绑定,CONFIG_OPCODE_MODEL_APP_BIND 5、netkey的更新,CONFIG_OPCODE_NETKEY_ADD[[文件:Config-21.png|边框|居中|无框|1200x1200像素]][[文件:Appkey-01.png|边框|居中|无框|1200x1200像素]]
=== Element ===
元素简单的说就是定义了节点的功能,一些具有复杂功能的节点设备,会包含多个元素。一个节点设备最少需要包含一个元素,我们称之为主元素。 从主元素开始(如果有多个元素,则第一个元素就是主元素),我们会给它分配相应的元素地址。主元素的地址就是节点的地址,第二个元素的地址就是主元素的地址基础上加上1,依次类推。 可以看到在我们的主元素Element:0x0002中包含了3个不同的服务,这3个服务就是我们的模型Model,其中Configuration Server与Health Server这两个服务,是每一个节点都必须携带的模型。Configuration Server(配置服务)是用于配置节点设备信息,Health Server(健康服务)是用于节点进行网络内的心跳联系。 剩下的Generic On Off Server服务,这个就是我们用于控制一个开关量的模型(在例程中我们通过控制LED的IO口高低电平来展示)。[[文件:Config-05.jpg|边框|居中|无框]]
=== model ===
 我们来看下Generic On Off Server的[[文件:Config-14.png|边框|居中|无框|1040x1040像素]]
[[文件:Config-06.jpg|边框|居中|无框]]
[[文件:Config-12.jpg|边框|居中|无框]]
510
个编辑