转载自:蓝牙mesh组网实践(配网基础篇) - JayWell - 博客园 (cnblogs.com)

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

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

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

自配网:不用配网器分配网络信息,设备使用用户在程序中写好的配网信息,自己给自己配网。

CH583官方EVT中的例程↓(CH582单片机通用)

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

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

1.在节点数量方面对配网器RAM容量有要求。目前例程中默认配网器支持的节点数量为40个,实际上只要RAM够用,就可以支持更多节点。程序中其他变量占用RAM较少的情况下,582作配网器,适合节点数量少于200个的蓝牙mesh网络;573的RAM更小,用它作为配网器,支持的节点数量少于100个。

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

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

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

配网器给其他节点配网↓

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

自配网方式的使用注意点

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

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

3.自配网不可连外设的例程中,设备自动根据程序中用户设置的配网信息进行自配网,万一信息有错,需要重新烧录程序,维护起来比较麻烦。自配网可连外设(手机)的例程中默认没有使用本地数据自配网,需要根据手机发来的数据进行自配网。也可以不用手机配网,用程序中的数据配网,用手机作为收发其他数据或指令的工具,那就需要加上下图的一句话,并在selt_prov_net_key[16]中添加NetKey(可连外设例程中这个参数默认为16字节的0)。

自配网手机配网↓

注:最新EVT中的手机配网例程,更新为适配WCH MESH的app的版本,用WCH MESH这个app配网才行。该app后续将在官网更新,需要的话也可以去论坛索要。

小贴士:①默认例程中是开启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,一则消息最多可以经过254跳,在TTL值为1时不再转发,若最后一个收包的节点不是目标节点,直接丢弃数据。若对网络节点很熟悉,可以自定义最优TTL值来减小广播承载层压力。除了低功耗节点外,例程中的转发功能是打开的,将边缘节点的转发功能关闭,也可减轻一定的承载层压力。

蓝牙mesh组网实践(配网基础篇)相关推荐

  1. android ble mesh,Android 蓝牙Mesh组网代码详解

    文章目录前言Mesh组网基本理解扫描设备组网meshAddress添加与重连UUID连接登录修改信息控制与接收设备数据总结 前言 上面的几篇文章都是在说Android网络编程方面的内容,我本来就有打算 ...

  2. Android 蓝牙Mesh组网代码详解

    文章目录 前言 Mesh组网基本理解 扫描设备 组网 meshAddress 添加与重连 UUID 连接 登录 修改信息 控制与接收设备数据 总结 2020年2月23日补充 前言   上面的几篇文章都 ...

  3. 项目版本管理的最佳实践:gitflow基础篇

    对于项目版本管理,你是否存在这样的痛点:项目分支多而杂不好管理,git log界面commit信息错乱复杂无规范,版本回退不知道选择什么版本合适--. 项目版本管理的最佳实践系列,笔者将以两篇文章的形 ...

  4. android 5. 蓝牙 mesh,蓝牙mesh组网

    智能照明是智能家居的一个重要入口,传统照明方案存在布线复杂,控制单一等问题.搭配飞易通MESH组网模组替换传统方案,无需额外的布线.提供更智能的控制,更极致的用户体验. 一.MESH应用领域: 蓝牙5 ...

  5. 版本管理之gitlab实践教程:基础篇(3)

    comment是版本管理中非常重要的内容,尤其是在经年累月的大型项目中,铁打的项目,流水的SE,哪怕只言片语的留下,对后来者问题的对应很多时候都能起到重要作用,这篇文章用来讲解git中如何进行comm ...

  6. 版本管理之SVN实践教程:基础篇(5):提交/解决冲突/回退/确认

    这篇文章介绍一下团队开发时经常会碰到的svn的冲突产生的原因以及回退或者解决冲突的方式. 冲突产生的原因 多个团队开发成员对同一文件进行了互斥性的修改经常是冲突产生的原因,比如两个开发成员对同一个文件 ...

  7. BLE Mesh(六)配网流程

    配网流程 概述 配网协议 配网承载层(Provisioning Bearer) 配网协议(Provisioning Protocol) 流程详解 发送Beacon信号 邀请 交换公共密钥 认证 输出带 ...

  8. 智能硬件蓝牙配网方案概要

    智能硬件开发系列 Google Protobuf 实践使用开发 智能硬件蓝牙配网方案概要 JNI开发必学C++基础 JNI开发必学C++使用实践 Android Studio 4.0.+NDK项目开发 ...

  9. 【微信小程序控制硬件15 】 重认识无线物联网的配网协议,了解腾讯物联蓝牙协议LLSync SDK,腾讯连连小程序也可以蓝牙配网了。

    文章目录 一.配网的认识 1.1 各类Wi-Fi配网方式对比 1.2 设备热点配网 1.3 零配配网 1.4 蓝牙辅助配网 1.5 一键配网 1.6 手机热点配网 1.6 摄像头扫码配网 二.LLSy ...

最新文章

  1. 深度揭秘垃圾回收底层,这次让你彻底弄懂她
  2. linux /dev/snd,linux – / dev / tcp去了哪里?
  3. 限制部分Postfix用户只能内部收发的例子(完整版)
  4. 反查BOM, 找出它的上阶
  5. VMware vSphere中三种磁盘:精简置备/厚置备置零/厚置备延迟置零
  6. 关于宽字符(C++将中文文本文件的内容输出到控制台
  7. Check failed: error == cudaSuccess (74 vs. 0) misaligned address
  8. javaWeb开发总结 ---- 前端数据插入到后台
  9. 浅谈vue $mount()
  10. 解构领域驱动设计(三):领域驱动设计
  11. 计算机应用技术课程本科,《计算机应用技术I》课程教学大纲(共本科29级用)().doc...
  12. html页面div高度相减,关于html:两个div底部div到高度调整与浏览器窗口
  13. 你所不知道的JavaScript数组
  14. 【学习笔记】powell法的python实现
  15. HTML5+CSS大作业——清新春暖花开个人博客网站(6页)
  16. 手把手教你破解软件,每一步都有图示,你若再不会就太XX
  17. 如何用Intel主板集成的RAID控制器(Intel RST)实现硬盘提速与硬盘数据恢复
  18. 用Vue-cli从头搭建项目
  19. 时间都哪去了--电视连续剧《老牛家的战争》插曲【视频】
  20. python爬取当当图片和信息

热门文章

  1. 定长记录与不定长记录
  2. 超详细——接口测试总结与分享 (51Testing软件测试网采编)
  3. php 序列化 反序列化 __sleep __wakeup
  4. 免杀方法(三)msf加载器免杀
  5. sublime3的使用经验与技巧【持续更新】
  6. 洪强宁:宜信PaaS平台基于Calico的容器网络实践
  7. Neural Body
  8. van-image怎么使用本地图片
  9. PascalTriangel II
  10. 2012-11-06