蓝牙mesh组网实践(节点功能介绍)
未配网设备在配好网,被纳入网络后,可称之为节点。
蓝牙mesh网络中,节点可以有选择地支持四大功能——朋友、低功耗、转发、代理功能,可以复用多个功能(由于单片机硬件限制,ch582除了复用转发功能外不建议复用其他功能),或者作为边缘节点或者说普通节点——不启用任何一个功能,做好用户自定义的工作即可。
朋友节点和低功耗节点可以说是蓝牙mesh组网中的Feature了。
低功耗节点的低功耗,一部分要归功于朋友节点,朋友节点可以说是包揽了低功耗节点的消息“接收”功能。就像“菜鸟驿站”和“收件人”,在消息传递给与朋友节点相连的低功耗节点时,朋友节点会先代收(菜鸟驿站收到包裹),再由低功耗节点定时询问朋友节点是否有消息,有则接收(收件人去取件),没有就下次再说。这就给低功耗节点节省了功耗,不用时刻去抓取广播层中的数据,查看是否是发给自己的(收件人有自己的学习工作,不用不停地查询是否有包裹)。
沁恒的mesh协议栈中规定,低功耗节点上电并配网或是恢复网络信息后,会主动向外广播建立朋友关系的消息,自动与朋友节点相连,之后才能进行消息的接收。在往外发送消息时,低功耗节点就不用考虑对方是否有能力收到消息,配网成功后直接广播发出去就好了(甚至可以砍掉收数据功能,不用连接朋友节点就可以发数据,但是如肉夹馍不要馍一样奇怪且丢包率无保障,不推荐这么用)。
582做朋友节点默认支持4个低功耗节点(可以支持更多,在低功耗节点2sPOLL一次数据的情况下,至少可以支持10个),默认开启转发功能。理论上只要ram够用,朋友节点就能支持更多低功耗节点。如果需要一个朋友节点支持多个低功耗节点,比如说50+个低功耗节点,每个低功耗节点10sPOLL一次,那582做朋友节点ram不够用,可以考虑用208。
朋友节点↓

低功耗节点↓

转发节点一般是网络内部的节点,边缘节点可以不用启用转发功能,或者在开启/复用转发功能的节点较密集的地方减少转发功能的启用,以减少广播层的压力。
转发功能已由协议栈处理好,在app_mesh_config.h中使能一下就能实现自动转发,除了低功耗节点考虑到功耗要求外,其他节点都默认开启/复用了转发功能。转发过程由底层代码完成,不会告知用户层。转发功能可由下面的宏定义打开↓

代理节点可以实现通过手机APP对其配网,只不过代理节点proxy例程中运用的是BLE上层的mesh协议来实现连接手机,而自配网包含外设(即手机配网)例程中是走BLE传输配网信息后,芯片拿着配网信息进行自配网。由于proxy例程对手机APP有支持mesh功能的要求,需要APP开发人员储备有mesh协议栈相关知识,故不太推荐。如果需要测试,除了proxy例程外,也可以用天猫精灵例程在下图位置启用代理功能与GATT层配网功能,用nRF Mesh这个APP测试。

小贴士:①配网流程和工作流程是分开的,所有节点都需要先配网再实现节点功能,因为消息都在广播层传输,没有点对点的连接。配网后即各个节点分配到了网络地址后,消息才有落脚点,各节点才能各司其职。对于低功耗节点来说,比如说采集环境温度是它的工作;对于朋友节点来说,支持低功耗节点的接收数据是它的本职工作,转发数据是例程中默认开启的“转发”功能的兼职工作(保证附近有转发节点的情况下,可以在app_mesh_config.h中开启或关闭相关功能)。
②蓝牙mesh网络中所有的消息最终都通过BLE广播承载层传输,故低功耗节点在配网后发消息能够不依赖朋友节点,直接发出去——反正是广播,谁抓到包了谁就往外转发至目标节点。
③在582官方例程中,不启用代理功能也能实现与手机通信,不过是走BLE而不是mesh,也就是说芯片可以同时跑mesh与BLE的从机代码,手机作为BLE主机与芯片作为BLE从机连接通信。在后缀有_with_peripheral的工程中都是如此工作的。
蓝牙mesh组网实践(节点功能介绍)的更多相关文章
- 蓝牙mesh介绍
了解一下关于蓝牙Mesh的知识. 蓝牙mesh网络使用,并且依赖于低功耗蓝牙(BLE).低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈. 蓝牙BR / EDR能够实现一台设备到另一台设备的连接和通信 ...
- 升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会( 完整开源于 Github)
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- [蓝牙前沿应用] 照明即平台 —— 通过蓝牙增强服务提高照明投资回报率(蓝牙MESH、定位AoA、AoD)
1.照明即平台(LAAP) 随着照明设施向LED转型,他们也在利用类似于蓝牙MESH的技术,创建一个可连接的照明平台,作为他们建筑的中枢神经系统.这些系统除了提供先进的照明控制,还建立了一个增强版 ...
- 蓝牙协议分析(3)_BLE协议栈介绍
1. 前言 通过“蓝牙协议分析(2)_协议架构”的介绍,大家对蓝牙协议栈应该有了简单的了解,但是,肯定还有“似懂非懂.欲说还休”的感觉.有这种感觉太正常了,毕竟蓝牙协议是一个历史悠久又比较庞大的协议, ...
- SIG蓝牙mesh笔记2_mesh组成
目录 SIG 蓝牙 mesh 组成 mesh网络概述 网络和子网 设备和节点 devices & nodes 入网 mesh中的几个概念 智能插座例子 SIG 蓝牙 mesh 组成 mesh网 ...
- 关于蓝牙Mesh您必须知道的七件事
蓝牙技术联盟于7月19日正式宣布,蓝牙(Bluetooth)技术开始全面支持Mesh网状网络.全新的Mesh功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化.无线传感 ...
- 常见无线组网分析(NB-IOT组网和Mesh组网)
NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 基于现有蜂窝组网 基于LoRa网关 基于Zigbee网关 基于无线路由器 居于蓝牙Mesh的网关 网络部署方式 节点 节点 + 网关 ...
- 什么,kafka能够从follower副本读数据了 —kafka新功能介绍
最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西.倒是kafka connect和kafk ...
- VUE+Element 前端应用开发框架功能介绍
前面介绍了很多ABP系列的文章<ABP框架使用>,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机 ...
- 蓝牙mesh网络技术的亮点
蓝牙mesh网络技术的亮点 The highlights of Bluetooth mesh networking technology 导言 蓝牙是当今最主要的低功耗无线技术之一,对无线设备用户和开 ...
随机推荐
- SOFAJRaft模块启动过程
本篇文章旨在分析SOFAJRaft中jraft-example模块的启动过程,由于SOFAJRaft在持续开源的过程中,所以无法保证示例代码永远是最新的,要是源代码有较大的变动,亦或出现纰漏.错误的地 ...
- flutter 设置Appbar上面的电池显示的状态栏的背景与颜色
写代码,修改了一下Appbar后,发现这个顶部颜色不对劲 找到这个文件lib\main.dart import 'dart:io'; import 'package:flutter/services. ...
- 商城网站商品sku选择的js简易实现
商城网站商品sku选择的js简易实现 <!DOCTYPE HTML> <html lang="en-US"> <head> <meta c ...
- Unity模块嵌入到Android中
嗨,大家好,小黑在沉寂了6个月之后,终于要继续写一篇博客了. 先吐槽一波上家公司PHD&&OMS,不吐不快.上家公司的小黑,每天不是在弄UIWidgets,就是再弄UIWidgets, ...
- VMware虚拟软件使用方法、网络配置与远程连接排错方法
一.虚拟软件使用方法 1. 软件启动方法 系统当中有些软件是可以多次启动,多实例 vmware不具有多实例功能 2. 软件关闭注意事项 尽量选择挂起虚拟主机关闭软件 3. 虚拟主机拍快照(后悔药 月光 ...
- 读Java8函数式编程笔记03_高级集合类和收集器
1. 方法引用 1.1. 一种引用方法的轻量级语法 1.1.1. 提供了一种简短的语法 1.1.2. 标准语法为Classname::methodName 1.2. 凡是使用Lambda表达式的地方, ...
- 【MRTK】HoloLens开发基础项目设置
前言 好记性不如烂笔头,之前做项目的时候很熟练很顺手就没有写笔记.因为排期问题项目中断几个月之后需要重新拾起来,结果发现自己现在忘记得差不多了,于是还是决定写点东西记录一下.即便是简单的项目设置,忘记 ...
- JSP第十次作业
1.实现 删除 回复邮件2.实现阅读邮件功能:在main.jsp中点击任意邮件的标题,进入到detail.jsp显示邮件详情,包括发件人,主题,内容,时间.同时需要把邮件状态修改为已读. com.gd ...
- Python学习常见问题及其解决方案(1)
1.ModuleNotFoundError: No module named 'urllib2' 解决方案: 1)https://blog.csdn.net/weixin_45598506/artic ...
- STM32F1库函数初始化系列:DMA—ADC采集
1 void ADC_Configure(void) 2 { 3 ADC_InitTypeDef ADC_InitStructure; 4 GPIO_InitTypeDef GPIO_InitStru ...