BLE MESH 学习

BLE MESH 是一种蓝牙(n:m)组网的技术。

本篇先介绍 BLE MESH 到使用 ESP32 的官方示例对其进行学习讲解。

后面会进一步学习 SIG 的 BLE MESH 协议和架构,以及 RTL8762C 使用。

一、 BLE 和 经典蓝牙简介

1.1 SIG 简介

蓝牙技术现如今由蓝牙技术联盟(Bluetooth special interest group,简称Bluetooth SIG)制定,后面称 SIG。SIG 负责发布维护蓝牙的通信规格和标准。

1.2 BLE 的诞生

SIG 在 2010 年发布了蓝牙4.0,第一次引入的 LE(Low Energy)模式,到后来 2014年发布蓝牙4.2 ,2016 年发布蓝牙5.0。其中 LE 模式常被称为 BLE (Bluetooth Low Energy,蓝牙低功耗)。

在蓝牙4.0 规格中,SIG 定义了四种蓝牙 controller 技术:BR,EDR,AMP 和LE,也就是说,蓝牙只有一种蓝牙,那就是 SIG 的蓝牙,而蓝牙技术本身包含四种类型:BR,EDR,AM 和 LE。

其中 LE 技术就是面向更低成本和功率消耗应用的,在物联网有更好的应用。相反地其他 BR、EDR、AM 等经典技术也就合称为经典蓝牙(BT)。

1.3 BLE 和经典蓝牙应用

下面引用参考的一张图片很好介绍了蓝牙的应用差异。

注意 :经典蓝牙和蓝牙低功耗物理层调制是不同的,所以两者无法进行通信。市面上的蓝牙也分经典蓝牙和低功耗蓝牙以及双模蓝牙,双模即是可以在两种模式中任意切换。

1.4 BLE MESH

BLE EMSH 就是使用 BLE技术进行组网,使得我们能够通过一个网关控制多个节点,节点间互为中继自发连成一个网络,使我们即可以控制其中任一一个节点,也可以控制多个节点协同运作。

二、乐鑫 ESP-BLE-MESH

相对而言,目前 BLE-MESH 的教程比较稀少,且硬件设备类型繁杂。个人比较熟悉 ESP-IDF 以及 ESP32 ,且乐鑫教程文档比较完善清晰,于是使用 ESP32 进行起步对其进行学习。

下面引用其图片、视频进行简单介绍,旨在快速介绍程序以及相关使用流程。详细可以参考 乐鑫 ESP-BLE-MESH API 导向

2.1 准备

2.2 烧入程序

将程序烧入后,初始化未连接,LED 灯呈现绿色。

2.3 连接配置

  1. 启动 nRF Mesh Android 程序,扫描发现三个未配置的设备,点击任意一个对其配置。

  1. 依次按下 IDENTIFYPROVISION

  2. 按下 PROVISION 后,应用程序尝试配置该设备。

    • 断开与节点的连接

    • 尝试与节点重新连接

    • 成功连接并发现ESP-BLE-MESH GATT服务

    • 获取节点的成分数据并向其添加AppKey

    如果成功,会发现右侧图片已经解码成功,

    如果失败,那么只能尝试重新连接,

  3. 然后初始化配置完三个设备,然后设备的绿灯应该都会熄灭

  4. 配置初始化完成后,将主元素中的 AppKey 与通用的 OnOff 服务器模型绑定。

  5. 绑定完成后,可以使用 APP 控制 RED 颜色开关。

三、程序代码分析

TODO

参考

BLE MESH 学习[1] - ESP32 篇的更多相关文章

  1. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  2. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  3. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

  4. Python3学习(2)-中级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...

  5. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  6. ASP.NET MVC学习之过滤器篇(2)

    下面我们继续之前的ASP.NET MVC学习之过滤器篇(1)进行学习. 3.动作过滤器 顾名思义,这个过滤器就是在动作方法调用前与调用后响应的.我们可以在调用前更改实际调用的动作,也可以在动作调用完成 ...

  7. JMeter学习-016-思路篇之-山重水复柳暗花明

    首先,此文非技术类博文,为思路类的博文,敬请参阅,欢迎共同探讨! 今天在编写 JMeter 接口监控脚本时,遇到了一个问题,在解决问题的时候,思路出现了偏差,导致了自己在解决问题时,绕了弯,浪费了些时 ...

  8. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  9. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

随机推荐

  1. ATX 学习 (二)-Atx Weditor

    1.Atx的安装 安装adb使用以下命令安装atx最新版pip install --pre -U uiautomator2 手机接到电脑上之后,需要先运行一下命令:python -m uiautoma ...

  2. day10:函数的实参&形参

    函数的参数 (参数:配合函数运算的值)参数:      (1)形参:形式参数,在函数的定义处      (2)实参:实际参数,在函数的调用处 形参: 普通形参(位置) , 默认形参 , 普通收集形参 ...

  3. NIO入门之多路复用选择器Selector

    简介 Selector 是 java.nio.channels 包下的重要组件,阅读本文可以带你了解常用的 API.本文中把 Channel 翻译成信道,按照个人习惯也可以称作是通道.管道. Sele ...

  4. JMS资源文件下载列表

    网关程序(Gateway) https://files.cnblogs.com/files/IWings/Gateway.zip 网关裁判程序(GatewayReferee) https://file ...

  5. spring学习(六)注解方式实现AOP

    一.导包(导入maven的依赖) <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  6. Lun4R-CyBRICSCTF wp

    WEB Hunt (Web, Baby, 50 pts) 打断点,然后就一个一个被抓住了... 接着F12就出现了.(这个flag是白色的,藏在下面....)... RE Baby Rev 题目给了个 ...

  7. cli框架 获取 命令行 参数

    package main import ( "fmt" "log" "os" "github.com/urfave/cli&quo ...

  8. 想学Python不知道从哪里开始学?|百度网盘免费下载| 这本入门书了解下

    百度网盘免费下载:编程小白的第一本 Python 入门书 提取码:s0pc Python是什么 Python是一种计算机程序设计语言,由吉多·范罗苏姆创造,第一版发布于1991年,可以视之为一种改良的 ...

  9. Numpy创建数组

    # 导入numpy 并赋予别名 np import numpy as np # 创建数组的常用的几种方式(列表,元组,range,arange,linspace(创建的是等差数组),zeros(全为 ...

  10. PHP array_replace_recursive() 函数

    实例 递归地使用第二个数组($a2)的值替换第一个数组($a1)的值: <?php$a1=array("a"=>array("red")," ...