BLE MESH 学习[1] - ESP32 篇
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 准备
三片
ESP32开发板nRF Mesh手机应用程序
2.2 烧入程序
将程序烧入后,初始化未连接,LED 灯呈现绿色。

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

依次按下 IDENTIFY、PROVISION 。

按下 PROVISION 后,应用程序尝试配置该设备。
断开与节点的连接
尝试与节点重新连接
成功连接并发现ESP-BLE-MESH GATT服务
获取节点的成分数据并向其添加AppKey
如果成功,会发现右侧图片已经解码成功,

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

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

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

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

三、程序代码分析
TODO
参考
BLE MESH 学习[1] - ESP32 篇的更多相关文章
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Python3学习(3)-高级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- ASP.NET MVC学习之过滤器篇(2)
下面我们继续之前的ASP.NET MVC学习之过滤器篇(1)进行学习. 3.动作过滤器 顾名思义,这个过滤器就是在动作方法调用前与调用后响应的.我们可以在调用前更改实际调用的动作,也可以在动作调用完成 ...
- JMeter学习-016-思路篇之-山重水复柳暗花明
首先,此文非技术类博文,为思路类的博文,敬请参阅,欢迎共同探讨! 今天在编写 JMeter 接口监控脚本时,遇到了一个问题,在解决问题的时候,思路出现了偏差,导致了自己在解决问题时,绕了弯,浪费了些时 ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
随机推荐
- echarts爬坑 : 怎么Line折线图设置symbol:none后Label不见了?
用 echarts 时遇到了一个奇奇怪怪的问题. 这是一张折线图. 本来这个图是有数字显示的. series : [ { name:'搜索引擎', type:'line', stack: '总量', ...
- Jenkins链接Kubernetes集群
Jenkins CI/CD介绍 持续构建与发布是我们工作中必不可少的一个步骤,目前大多公司都采用Jenkins集群来搭建符合需求的CI/CD流程,然而传统的Jenkins Slave一主多从方式会存在 ...
- 题解 洛谷 P5443 【[APIO2019]桥梁】
考虑若只有查询操作,那么就可以构造\(Kruskal\)重构树,然后在线询问了,也可以更简单的把询问离线,把询问和边都按权值从大到小排序,然后双指针依次加入对于当前询问合法的边,用并查集维护每个点的答 ...
- websphere8.5配置db2数据源
websphere8.5配置db2数据源 1. 打开websphere控制台 2.进入websphere变量页面 3. 进入DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH变 ...
- Git 撤销更改
一.未使用 git add 缓存代码时 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ...
- 2020年最新.NET面试题
.net 面试题最新版 2020-2-26 每日几道面试题1. .NET和C#有什么区别答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术.C#是一种编程语言,可以基于. ...
- Spring Security 实战干货:从零手写一个验证码登录
1. 前言 前面关于Spring Security写了两篇文章,一篇是介绍UsernamePasswordAuthenticationFilter,另一篇是介绍 AuthenticationManag ...
- Eureka服务发现Discovery
功能: 对于注册进Eureka里面的微服务,可以通过服务发现来获得该服务的信息 修改controller 主启动类加@EnableDiscoveryClient注解
- HTML <hr> 标签
高佣联盟 www.cgewang.com HTML <hr> 标签 实例 当内容的主题发生变化时,使用 <hr> 标签进行分隔: <h1>HTML</h1&g ...
- QDC DAY1
暴毙了,比较自闭的心理,有点崩溃.. LINK:幸福 一道曾经的我肯定能写出来的 但是我心态崩了 所以没有推出来. 当然 还是 我比较垃圾 但同时也不垃圾 ... 求 $T_n =\displayst ...