【沁恒蓝牙mesh】组网方式选择与分析

news2025/2/21 21:07:22

本文主要介绍了【沁恒蓝牙mesh】组网方式选择与分析

1.开发环境搭建与程序烧录

参考博文:【经验】如何搭建沁恒蓝牙SoC CH58x开发环境

2. 组网方式

蓝牙mesh组网实践(配网方式的选择)

  • 自配网:自己给自己配网,当节点的各种key一致的时候,运行mesh协议栈,就都在一个网络里,就可以互通

    • 写死在固件:设备上电可以自动组网,但是不方便管理,维护需要重新烧录固件,也比较麻烦
    • 通过手机app直连配网:通过手机app将设备信息传给设备(ble),设备收到配置信息后,执行自配网流程(每次只能配置一个设备,比较麻烦)
  • 配网器配网

    • 中心节点作为管理者,给普通节点设备配网
    • 支持自动配网,但是需要配网和和节点靠近,在通信范围内的节点才可以通过配网器配网
  • 手机app配网

  • 在这里插入图片描述

2.1 自配网方式参数解析

使用自配网方式

  • self_prov_net_key:网络密钥,一个mesh网络一个单独的网络密钥

  • self_prov_dev_key:设备密钥,是节点与配网器通信的密钥,自配网方式中西参数无作用

  • self_prov_app_key:应用密钥,不同模型之间的应用密钥不同则无法通信

  • self_prov_net_idx:自配网NetKey的索引, 这个变量只在自配网时用到。4字节,共16个bit,与网络密钥 net_key一一对应。(划分子网时用到,值为0时,指向 self_prov_net_key)

  • self_prov_app_idx:同上,添加更多应用密钥后这个索引值会有指向其他应用密钥的作用。

  • self_prov_iv_index:IV值在使用自配网方式时需要与现有网络中的IV值保持一致。最好现有网络中能留个反馈途径,比如说过按下按键通过串口打印一下IV值,反馈一下当前网络中的IV值,接下来的节点按该值配网。

节点广播模式等待配网 vs 节点上电自配网

/*广播模式,等待配网*/
void blemesh_on_sync();
  -> void prov_enable();
     -> bt_mesh_scan_enable();  /*自己能被扫描到*/
	 ->  bt_mesh_beacon_enable();/*使能广播beacon*/


/*自配网模式*/
void blemesh_on_sync(void);
  -> bt_mesh_provision(a,b,c,d,e,f);  // 直接根据信息自配网

2.2 组网测试步骤

  1. 【测试一,网关自动搜索周围设备,并将其加入到网络中】

网关烧录 self_provisioner_vendor 工程,节点烧录 adv_vendor 工程。

网关上电首先自配网,将自己加入到网络中地址为0x0001号;具体自配网以及自配网完毕绑定模型等过程参考手册;

节点上电检查是否已经入网,若已入网则自动在原来的网络中,若还未入网则广播状态

网关收到未配网广播,发起配网,调用 unprov_recv 函数,进行配网流程

  1. 【测试二:将配网信息直接写死到固件中,测试节点的自动组网】

烧录 adv_vendor_self_provision 工程,测试节点间是否可以自动组网并收发数据

  1. 【测试三:通过手机app直连单节点,进行 proxy 的 pb_gatt 配网】
    参考另一篇博文:【沁恒蓝牙mesh】手机配网+自组网联合调试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/794565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Labview串口通信MSComm实现串口收发

文章目录 前言一、什么是 MSComm二、MSComm 控件下载三、MSComm 控件的注册四、使用 MSComm 控件1、前面板放置控件2、MSComm 的常用属性3、MSComm 控件的事件 五、实现串口收发1、搭建虚拟串口2、发送测试3、接收测试4、后面板核心程序框图 六、程序自取 前言 本文介绍使用 A…

study 第三方库

import osprint(os.listdir()) #列出当前目录下的文件 print(os.getcwd()) #获取绝对路径if not os.path.exists("b"):os.mkdir("b") if not os.path.exists("b/test.ext"):f open("b/text.txt","w")f.write("hello,f…

sql学习笔记

sql语句优先级 FROM → WHERE → GROUP BY → SELECT → HAVING → ORDER BY sql case用法 例题: 按照销售单价( sale_price )对练习 3.6 中的 product(商品)表中的商品进行如下分类。 低档商品:销售单价在1000日元以下&#x…

MATLAB | 产生阿尔法稳定分布噪声并作出概率密度函数

一、问题描述 想产生不同特征参数的α稳定随机变量,并且作出其概率密度函数进行对比。 二、解决思路 运行了MATLAB的官方实例代码: openExample(‘stats/ComparePDFsOfStableDistributionsExample’) (1)使用makedist()函数生成…

低代码未来的发展方向

大的未来都是AI ,AI , AI …,理论上不可能有别的。 拿iVX来说吧,已经做了一整套完整的 可视化编程范式,基本可以生成所有系统的前端后台和数据库代码。也就是说,其组件系统和逻辑表达(非代码&a…

整天用 Calendar 日历组件,不如自己手写一个吧!

目录 Date 的 api 实现日历组件 静态的布局 再来写逻辑 增加两个参数 提供 ref 来暴露 api 总结 日历组件想必大家都用过,在各个组件库里都有。比如 antd 的 Calendar 组件(或者 DatePicker 组件): 那这种日历组件是怎么实…

【论文阅读】A Comprehensive Survey

论文来源:Li M , Liu Y , Liu X ,et al.The Deep Learning Compiler: A Comprehensive Survey[J]. 2020.DOI:10.1109/TPDS.2020.3030548. 这是一篇关于深度学习编译器的综述类文章。 什么是深度学习编译器 深度学习(Deep Learning)编译器将…

STM32H5开发(4)----开发板介绍

STM32H5开发----4.开发板介绍 套件概述样品申请特征系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图 套件概述 STM32H503RBTx_LQFP64是STM32H5系列微控制器的一款出色评估套件,它采用了先进的40nm工艺制造,为开发者提供了卓越的性能和能…

MyBatis基础模块-类型转换模块

文章目录 1. 为什么需要类型转换模块2. TypeHandler 1. 为什么需要类型转换模块 执行sql,在PreparedStatement设置参数时,需要把java类型转换成jdbc类型,而从结果集中获取数据时,需要把jdbc类型转换为java类型。 2. TypeHandle…

软件测试未来的发展趋势以及软件测试进阶路线

全球各地的企业每天都在发展变化着,以应对市场挑战,满足日益成熟的客户需求。即使是正在进行的技术进步也会使软件测试专家在实践的过程中更加专注和精确。 2021年给软件测试领域带来了新的技术解决方案,以及质量保证和软件测试的实现。与此同…

【数据结构和算法14】堆结构(基于数组实现)

目录 1、有关二叉树和堆的介绍 2、大根堆的代码实现 3、小根堆的代码实现 1、有关二叉树和堆的介绍 计算机科学中,堆是一种基于树的数据结构,通常用完全二叉树实现。堆的特性如下 在大顶堆(大根堆)中,任意节点 C 与…

开源视频监控管理平台国标GB28181视频EasyCVR电子地图功能展示优化

视频监控综合管理平台EasyCVR可提供的视频能力包括:视频监控直播、云端录像、云存储、录像检索与回看、告警上报、平台级联、云台控制、语音对讲、电子地图、H.265自动转码等,也具备接入AI智能分析的能力。 视频汇聚平台EasyCVR可拓展性强、视频能力灵活…

centos7中用shell脚本实现mysql分库分表备份

环境: 脚本: #!/bash/bin back_path/backup/db databases_file/backup/databases.list [ -f $databases_file ] || touch /backup/databases.list if [[ ! -s ${databases_file} ]] thenecho "$databases_file为空,请在该文件中写上需要备份的数据…

C# Modbus TCP上位机测试

前面说了三菱和西门子PLC的上位机通信,实际在生产应用中,设备会有很多不同的厂家生产的PLC,那么,我们就需要一种通用的语言,进行设备之间的通信,工业上较为广泛使用的语言之一就是Modbus。 Modbus有多种连…

filscan api 获取错误扇区个数

获取错误扇区个数 POST 请求 curl -s -X POST -H "Content-Type: application/json" -d {"account_id": "f01889512"} https://api-v2.filscan.io/api/v1/AccountInfoByID | jq -r .result.account_info.account_miner.account_indicator.fault…

JMM内存模型深入详解,探索volatile、synchronized与VarHandle深层次的奥秘

文章目录 一、JMM内存模型1、什么是JMM(1)参考资料 2、竞态条件(Race Condition)(1)实例 3、同步动作(Synchronization Order)(1)实例(2&#xff…

fSGAT批量候选基因关联分析丨快速单基因关联分析

候选基因如何分析? 通常情况下关联分析会得到一大堆候选基因,总不可能每个都有用,因此需要对候选基因进行深一步分析,本篇笔记分享一下群体遗传学研究中GWAS候选位点与候选基因的筛选思路。主要的方式包括单基因关联分析、连锁程度…

Appium+python自动化(二十三)- Monkeyrunner与Monkey傻傻的分不清楚(超详解)

monkeyrunner简介 1.monkeyrunner工具使用Jython,这是一种使用Java编程语言的Python实现。Jython允许monkeyrunner API与Android框架轻松交互。使用Jython,您可以使用Python语法来访问API的常量,类和方法。MonkeyRunner工具是使用Jython(使用…

【VCS】(7)Fast Gate-level Verification

Fast Gate-level Verification VCS中SDF反标(Back-Annotation)Lab 门级网表的后仿真DC综合RTL级仿真波形后仿真 网表级的仿真可以验证综合后得到的门级网表和RTL代码是否一致。也可以验证,在加速时序信息(SDF)之后,设计的功能是否…

基于POX、JBX交叉的遗传算法求解车间调度

对于流水车间调度问题,n个工件在m台设备上加工,已知每个工件每个工序使用的机器和每个工件每个工序所用时间,通过决策每个机器上工件的加工顺序和每个工序的开始时间,使完成所有工序所用时间(makespan)最小。具有下列约束&#xf…