目录

本测试基于CH582m单片机,尝试进行简单的组网。

沁恒官方EVT中提供了两种配网方式——配网器配网和自配网。

配网器配网:用一个设备(一块582开发板)作为配网器,也就是沁恒蓝牙mesh软件开发参考手册中的“中心节点”。配网器可以管理网络,进行配网、设置订阅地址、删除节点等操作。

自配网:不用配网器分配网络信息,设备使用用户在程序中写好的配网信息,自己给自己配网。CH582最新EVT中的手机配网例程,实际上是走BLE传输配网信息给节点,然后节点根据该配网信息执行自配网。

CH583官方EVT中的例程↓(CH582芯片也使用该EVT,最新EVT中增加了手机配网及OTA支持)

配网器配网方式的优点:支持自动配网。配网器收到未配网设备发送的配网信标广播,会自动保存相关信息到配网信息结构体数组中,配网完成后自动绑定App_Key、模型、订阅地址等信息。

配网器配网方式的使用注意点

1.在节点数量方面对配网器RAM容量有要求。目前例程中默认配网器支持的节点数量为40个,实际上只要RAM够用,就可以支持更多节点。由于不知道用户程序中占用了多少RAM,以用户实际应用为准。一般来讲,582作配网器,适合节点数量最大在200个左右的蓝牙mesh网络;573的RAM相对小些,用它作为配网器,支持的节点数量最大在100个左右。但不建议用573作为配网器,ram资源太紧张。mesh协议栈是互通的,至少用582作为配网器,573/571可作为普通mesh节点。

2.配网器在给其他未配网设备配网前,先会根据程序中的自配网数据创建一个网络(一开始网络中只有它自己),流程与自配网方式相同。有了这个网络之后才好将其他未配网设备纳入网络。

3.需要未配网节点与配网器相靠近(能够在广播范围内直连),配网器能直接收到配网信标后才能进入配网流程。配网完成后可以将节点拿走布置到网络范围内相应的地点。

4.配网器可以选择给哪些未配网设备配网,但未配网设备无法指定被哪个配网器配网。

配网器给其他节点配网↓

自配网方式的优点:支持网络中节点的数量相对更多。

自配网方式的使用注意点

1.需要用户对蓝牙mesh的配网信息有所了解,比如说一个网络中需要共用同一个Net_Key。

2.自配网方式可以支持多个设备使用同一个网络地址,但不可以使用带有应答的数据传输,不可以分包,且对设备的区分需要在更上层去处理。

3.自配网不含外设功能的例程中,设备自动根据程序中用户设置的配网信息进行自配网,万一信息有错,需要重新烧录程序,维护起来比较麻烦。自配网含外设功能(可连手机)的例程中默认没有使用本地数据自配网,需要根据手机发来的数据进行自配网。只要做好数据解析,走BLE发指令给芯片完成重置节点等操作也是可行的。

自配网手机配网↓

注:上图使用BLE调试助手配网的情况只适用于1.3版本之前的EVT。最新EVT中的手机配网例程,更新为适配WCH MESH专用app的版本,app链接在下方。

WCH_Mesh_Android.ZIP - 南京沁恒微电子股份有限公司

WCH MESH配合手机配网例程的使用方法在最新EVT包的BLE-MESH文件夹下的《沁恒MESH APP管理配网应用手册》文档中有介绍,在以下博客中也有介绍。

蓝牙mesh组网实践(手机配网例程配合wch mesh手机app的使用) - JayWell - 博客园 (cnblogs.com)

小贴士:①默认例程中是开启FLASH存储功能的,配网信息会保存在FLASH中,掉电也会保存。设备上电复位时会检查FLASH中是否已经存储了配网信息。比如说节点检测到FLASH中已有配网信息,就不会再广播配网信标,也就无法进入配网流程。若要调试配网过程,可以在app_mesh_config.h中修改相关的宏定义关闭FLASH存储功能,并用烧录工具清空单片机中的DataFlash。

②非自配网程序中,配网信标广播包中包含16个字节的UUID。例程中只占用了前6个字节——将芯片MAC地址的前6位复制过去,以区分设备。用户可以自定义其他字节来包含一些设备信息。比如说用户自定义将节点的类别和编号设置在UUID[6]这个字节中。MAC地址可以由用户指定,需要将宏定义中的BLE_MAC置1。

③关于BLE的程序,官方EVT包中大量使用了公用文件,一些宏比如说BLE_MAC,建议通过添加工程的Properties中的Symbol来只对本工程生效。而蓝牙mesh网络由于各节点功能不同,可以视作BLE的上层,故各工程中有关mesh的头文件都是独立文件,可以直接在.h文件中修改。想要确认一个文件是否为公用文件,修改完是否会影响其他工程,可以在EVT工程文件夹的APP文件夹中寻找是否有.c或.h文件,有的话则为独立文件,可直接修改。

④当网络支持的节点比较多或是发包频率比较高或是恰好在同一时刻发包时,注意一个网络中同一时刻不能共存超过十则广播消息,否则丢包率会很高;预计网络中同一时刻共存的广播消息越多,重发次数和重发间隔需要相应增加。默认例程中的TTL值为255(不是最大值,是指使用系统默认TTL值),用户指定TTL则最大值为127。一则消息最多可以经过126跳,在TTL值为1时不再转发,若最后一个收包的节点不是目标节点,直接丢弃数据。若对网络节点很熟悉,可以自定义最优TTL值来减小广播承载层压力。除了低功耗节点外,例程中的转发功能是打开的,将边缘节点的转发功能关闭,也可减轻一定的承载层压力。

蓝牙mesh组网实践(配网方式的选择)的更多相关文章

  1. IoT时代:Wi-Fi“配网”技术剖析总结

    导读 近年来,物联网市场竞争激烈,从物联网平台厂商,设备生产商,到服务提供商,都在涌入这片红海.预计到2020年,全球联网设备数量将达到260亿个,年复合增长率达到20%:全球联网设备带来的数据将达到 ...

  2. 常见无线组网分析(NB-IOT组网和Mesh组网)

      NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 基于现有蜂窝组网 基于LoRa网关 基于Zigbee网关 基于无线路由器 居于蓝牙Mesh的网关 网络部署方式 节点 节点 + 网关 ...

  3. WIFI智能配网 - SmartConfig

    要开始IoT项目的第一步是什么?当然不是硬件,而是硬件与硬件的连接!即使有各种各样的通信协议没有好的连接方式绝对不行.那外设上没有的屏幕,没有键盘怎末输入密码怎末选择网络?对,这就是WIFI模块最重要 ...

  4. ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  5. ESP8266开发之旅 网络篇⑭ web配网

    1. 前言     目前,市面上流行多种配网方式: WIFI模块的智能配网(SmartConfig以及微信AirKiss配网) SmartConfig 配网方式 请参考博主之前的博文 ESP8266开 ...

  6. 5-(微信小程序篇)关于WiFi模块配网以后利用小程序绑定设备,绑定方式说明

    https://www.cnblogs.com/yangfengwu/p/11625189.html 众所周知:使用微信Airkiss 只能给设备配网,并不能够获取设备的MAC地址信息,但是我在 ht ...

  7. SIG蓝牙mesh笔记2_mesh组成

    目录 SIG 蓝牙 mesh 组成 mesh网络概述 网络和子网 设备和节点 devices & nodes 入网 mesh中的几个概念 智能插座例子 SIG 蓝牙 mesh 组成 mesh网 ...

  8. [蓝牙前沿应用] 照明即平台 —— 通过蓝牙增强服务提高照明投资回报率(蓝牙MESH、定位AoA、AoD)

      1.照明即平台(LAAP) 随着照明设施向LED转型,他们也在利用类似于蓝牙MESH的技术,创建一个可连接的照明平台,作为他们建筑的中枢神经系统.这些系统除了提供先进的照明控制,还建立了一个增强版 ...

  9. 【转载】wifi一键配网smartconfig原理及应用

    物联网给我们又提供了一种窃取WiFi密码的好方式:让智能设备主动断线. 同时也提供一种让智能设备连接到恶意WiFi的方式:设备一键配置功能时疯狂广播恶意WiFi的信息. 转自:http://blog. ...

  10. SIG蓝牙mesh笔记5_Provisionging

    目录 Bluetooth Mesh Provisioning Provisioning bearer layer Generic Provisioning PDU Bluetooth Mesh Pro ...

随机推荐

  1. DRF安装与使用

    目录 DRF安装与使用 一.web应用模式(前后端不分离&前后端分离) 二.API接口 1.API接口概念讲解 2.IPA接口测试工具postman 3.RESTful API规范 4.幂等性 ...

  2. Pulsar负载均衡原理及优化

    前言 前段时间我们在升级 Pulsar 版本的时候发现升级后最后一个节点始终没有流量. 虽然对业务使用没有任何影响,但负载不均会导致资源的浪费. 和同事沟通后得知之前的升级也会出现这样的情况,最终还是 ...

  3. 【Redis场景4】单机环境下秒杀问题

    单机环境下的秒杀问题 全局唯一ID 为什么要使用全局唯一ID: 当用户抢购时,就会生成订单并保存到订单表中,而订单表如果使用数据库自增ID就存在一些问题: 受单表数据量的限制 id的规律性太明显 场景 ...

  4. 尊重 respect

    尊重他人,这里面的门道. 明面上尊重他人要在自身有地位有身份的前提下,你身边的其他人 才能高效接收到你传递的信号,这叫礼贤下士. 暂时没地位的人更是应该无时无刻释放出尊重他人的信号,来向外界传达你是一 ...

  5. Eureka、Consul、Zookeeper注册中心总结

    组件名 编写语言 CAP 服务健康检查 对外暴露接口 Springcloud集成 Eureka Java AP 可配支持(安全机制) Http √ Consul Go CP 支持 Http/DNS √ ...

  6. 使用springboot cache + redis缓存时使用gzip压缩以提升性能

    背景 在高并发的场景中,我们通常会使用缓存提升性能.在使用springboot cache时,我们通常会使用基于JSON的序列化与反序列化. JSON具有可读性强,结构简单的特点,使用灵活. 但是JS ...

  7. C语言排序 冒泡 选择 快排

    冒泡排序 冒泡排序是一种简单的排序算法,其基本思想是重复地交换相邻两个元素,将较大的元素向右"冒泡",较小的元素向左"沉淀",从而将序列中的最大元素逐渐移到最后 ...

  8. LOJ 数列分块入门 8

    \(\text{Solution}\) 一看有区间赋值直接上 \(ODT\) \(\text{Code}\) #include <cstdio> #include <iostream ...

  9. 代码随想录算法训练营day17 | leetcode ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

    LeetCode 110.平衡二叉树 分析1.0 求左子树高度和右子树高度,若高度差>1,则返回false,所以我递归了两遍 class Solution { public boolean is ...

  10. log 函数

    什么是对数 对数用 log 符号来表示.根据底数的不同,log 可以变换成 lg.ln.lg 是以 10 为底的对数,ln 是以 e 为底的对数. logax=y,是一个以 a 为底,x 为真数的对数 ...