BLE MESH学习1-基于沁恒CH582学习

BLE MESH学习1-基于沁恒CH582学习

一、BLE mesh说明

  1. mesh组网可以实现相比点对点模式更远的距离、更灵活的网络形式、更可靠的连接和更多的设备加入。
  2. BLE mesh在IoT中的传感器和控制具有重要意义。
  3. 我的目的也是IoT领域,实现自己的传感器读取、开关控制等类似米家智能的可自定义mesh。

二、选型

  1. 由于之前使用过CH582,对其使用的mesh框架和TMOS的较为熟悉,因此选择该芯片作为mesh学习的基础。
  2. 另外,该款芯片实现的mesh是软件定义的,自由化更高。
  3. 缺点是MESH_LIB的代码时封装的,无法深入学习mesh内部实现,只能对mesh的流程进行学习和理解。

三、mesh角色

成为蓝牙mesh 网络中一员的设备被称为节点(Node),蓝牙mesh 规格定义了节点可能拥有的特性。具有这些特性中的一个或多个,即表示节点可以在网络中扮演相应的特殊角色

  1. 朋友friend功能:朋友节点能够存储发往相关低功耗节点的消息,随后再进行转发。
  2. 低功耗low-power功能:低功耗节点功率受限,可借助朋友节点的支持,在蓝牙mesh 网络中有效地运作,借此大幅降低电量消耗
  3. 代理proxy功能:代理节点可通过承载层(广播承载层或GATT 承载层)接受信息,并通过另一个广播承载层或GATT 承载层重新发送消息。通常可用于连接处于相同网络配置中的手机,或者用于使用手机作为管理网络的配网者的场景。
  4. 中继relay功能:中继节点可通过adv(广播承载层),接收并重新发送蓝牙mesh 消息,中继特性能让蓝牙mesh 消息在设备之间实现多次跳跃,最多可进行127 跳,传送距离可超过两台设备之间直接进行无线电传输的范围,从而覆盖整个网络。

蓝牙mesh 网络采用一种称为“网络泛洪(flooding)”的方式来发布和中继消息。为了避免数据堵塞,所有数据包都包含一个称为TTL(生存次数)的字段,它可用于限制消息中继的跳数。同时每台设备都包含消息缓存,以确定自身是否已经中继过该消息。一般情况下,所有节点都即可设置中继功能,从而创建鲁棒性高的网络。

四、mesh参数配置

说明几个 比较关注的配置:

  1. 信道配置CONFIG_MESH_RF_ACCESSADDRESS:mesh使用adv方式进行通信时,需要选择三个信道,默认使用的是37-39三个通道,即普通蓝牙的广播通道,可能会存在干扰多的情况。在实际应用中可统一配置成其他信道。
  2. 低功耗节点请求间隔CONFIG_MESH_LPN_POLLINTERVAL_DEF:低功耗节点每隔多久唤醒一次并向朋友节点请求数据。

五、MESH配网者的意义

  1. 对于重置或新创建的节点,他们由于没有对应的网络密钥,无法加入到所需的MESH网络中。需要通过配网者进行配网,因此,配网者真是的作用就是对其下放网络密钥和应用密钥,并分配对应的ID,id为0x0000至0xffff。
  2. 因此,只需要能够满足上述配网过程的设备,均可以叫做配网者,例如CH582自己的例程、或NRF MESH的手机APP,抑或是自己给自己配网均可以。
  3. 配网成功之后,节点就可以通过密钥加入到网络中,之后配网者可以下线。
  4. 配网者存在比普通节点更多的信息,他们包括各个节点的4字节ID和对应的16字节UUID;而普通节点只有自己的4字节ID,想要发送给其他设备信息,如果不预先知道,只能随机发送一个ID碰碰运气,或者发送给0x0001,一般为配网者。

六、更多参考资料

  1. https://blog.csdn.net/Hongwei_1990/article/details/107030808
    完整介绍了MESH的结构、密钥说明和配网流程。

  2. https://blog.csdn.net/Hongwei_1990/article/details/90085476
    介绍了mesh的网络角色。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识改变命运 数据结构【java对象的比较】

0:前言 在基本数据类型中,我们可以直接使用号比较是否相等,还记的学堆哪里时候,插入一个数据,就会与其他数据进行比较,当时我们传入的是Integer类型,在Integer类里面已经实现了compare。 如果…

西门子S7-1200博途软件项目的下载

S7-1200的CPU本体上集成了PROFINET通信口,通过这个通信口可以实现CPU与编程设备的通信。 此外,S7-1200 可以通过连接CM1243-5扩展模块,然后电脑通过PC ADAPTER USB A2电缆、或者电脑上的CP卡(例如CP5612)通过PROFIBUS…

手写mybatis之SQL执行器的定义和实现

前言 所有系统的设计和实现,核心都在于如何解耦,如果解耦不清晰最后直接导致的就是再继续迭代功能时,会让整个系统的实现越来越臃肿,稳定性越来越差。而关于解耦的实践在各类框架的源码中都有非常不错的设计实现,所以阅…

陪伴系统,会成为女性向游戏的下一个争夺点吗?

乙游提供给女性玩家的只有恋爱感吗? 一般来说,对于乙女游戏的概括常常以为玩家提供“恋爱陪伴感”为主,恋爱很好理解,通过与多位男主角的剧情互动来模拟在真实恋爱中的情感交互,当下乙游都将重点放在了营造恋爱感上。…

55页可编辑PPT | 制造企业数字化转型顶层规划案例

基于集团的战略和运营特点,数字化转型应如何考虑? 在集团的战略和运营特点基础上进行数字化转型,需要实现业务多元化,整合资源和流程,推动国际化拓展,实施差异化战略,并通过数据驱动决策&#…

Vue工程化结构环境安装及搭建教程 : 之nvm

vue需要的环境: node.js : Node.js和Vue.js通常会一起使用。Node.js作为后端服务器,处理服务器端的逻辑和数据访问,而Vue.js则负责前端用户界面的构建和交互。通过Ajax通信,Vue.js应用程序向Node.js服务器发送请求,并…

【Ubuntu】git

文章目录 1.配置SSH key2. 基础知识操作命令1分支branch 如果对git命令使用不熟悉,推荐一个非常棒的git在线练习工具 Learn Git Branching。 https://m.runoob.com/git/git-basic-operations.html 1.配置SSH key ssh-keygen -t rsa -C "YOUR EMAIL"完成…

PDF无法导出中文

font/SIMSUN.TTC with Identity-H is not recognized. 查看BaseFont源码发现".ttc," 改为"SIMSUN.TTC,a"提示数字转换异常 改为"SIMSUN.TTC,11"提示数字索引必须介于0和1之间 改为0或1结果正常 BaseFont baseFont BaseFont.createFont("/U…

迎接国庆旅游热潮,火山引擎数据飞轮助力景区数智化升级

随着人们生活水平的提高和旅游消费观念的转变,国庆假期成为人们出行旅游的黄金时段。同程旅行发布的报告显示,北京、杭州、重庆、上海、南京、成都等城市仍是 “十一” 假期国内热门的目的地,而一些新兴的宝藏旅游目的地如新疆阿勒泰、云南迪…

四.python核心语法

目录 1.序列 1.1. 索引 1.2. 切片 1.3. 总结 2.加法和乘法 2.1. 加法 2.2. 乘法 3.常用函数 3.1.sum()函数 3.2.max()函数和min()函数 3.3.len()函数 4. list 列表 [ ] 基本操作 4.1. 列表的定义 4.2. 列表的创建(list()函数) 4.3. 列表的…

RabbitMQ概述

什么是MQ MQ (message queue)消息队列 MQ从字⾯意思上看,本质是个队列,FIFO先⼊先出,只不过队列中存放的内容是消息(message).消息可以⾮常简单,⽐如只包含⽂本字符串,JSON等,也可以很复杂,⽐如内嵌对象 RabbitMQ是MQ的一种实现,是Rabbit 企业下的⼀个消息队列产…

Python 如何使用 scikit-learn 进行模型训练

如何使用 scikit-learn 进行模型训练 一、简介 在现代的数据科学和机器学习领域,Python 已经成为最流行的编程语言之一。而其中最流行的机器学习库之一就是 scikit-learn。scikit-learn 提供了许多方便的工具和函数来实现常见的机器学习任务,包括数据预…

数据分析:宏基因组群落TOPOSCORE拓扑结构打分

文章目录 介绍数据TOPOSCORE算法SCORE计算TOPOSCORE实操tp_helper.R导入数据生存分析Fisher精确检验聚类分析SIG定义Toposcoring 分数计算Akkermansia muciniphila的考虑TOPOSCORE的验证总结系统信息介绍 研究背景:肠道微生物群对癌症患者对免疫检查点抑制剂(ICIs)的临床反…

笔记整理—linux进程部分(9)互斥锁

互斥锁也叫互斥量,可以看作一种特殊的信号量。信号量可以>0,大家可以排队使用信号量,互斥锁只有0、1,主要实现关键段保护,只能在某一时间给某一任务去调用这段资源,这段内容用之前上锁,用完时…

【stm32】寄存器(stm32技术手册下载链接)

1、资料下载 RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机参考手册 | STMCU中文官网 2、代码 设置PB7 //设置PB7 #define SDA_IN() {GPIOB->CRL&0X0FFFFFFF;GPIOB->CRL|(u32)8<<28;} #define SDA_OUT() {GPIOB->…

STM32编码器接口

一、概述 1、Encoder Interface 编码器接口概念 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用…

基于VUE+uniapp小程序的物业管理系统社区小区物业报修收费投诉管理系统

&#xff01;&#xff01;&#xff01;页面底部,文章结尾,加我好友,获取计算机毕设开发资料 目录 一、引言 二、相关技术介绍 三、系统需求分析 四、系统设计 五、关键技术实现 六、测试与优化 七、总结与展望 一、引言 当前物业管理存在诸多问题&#xff0c;如报修响应…

【设计模式】设计模式介绍和常见设计模式代码示例

文章目录 设计模式分类创建型模式结构型模式行为型模式 设计模式详解单例模式&#xff08;Singleton Pattern&#xff09;懒汉模式饿汉模式 工厂模式&#xff08;Factory Pattern&#xff09;简单工厂模式工厂方法模式抽象工厂模式 装饰模式&#xff08;Decorator Pattern&…

C#多线程基本使用和探讨

线程是并发编程的基础概念之一。在现代应用程序中&#xff0c;我们通常需要执行多个任务并行处理&#xff0c;以提高性能。C# 提供了多种并发编程工具&#xff0c;如Thread、Task、异步编程和Parallel等。 Thread 类 Thread 类是最基本的线程实现方法。使用Thread类&#xff0…

论文阅读笔记-XLNet: Generalized Autoregressive Pretraining for Language Understanding

前言 Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT,XLNet提出一个框架来连接语言建模方法和预训练方法。我们所熟悉的BERT是denoising autoencoding模型,最大的亮点就是能够获取上下文相关的双向特征表示,所以相对于标准语言模型(自回归)的预…