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. 010.Nginx正反代理

    一 Nginx代理 1.1 Nginx代理概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器.同时也是一个IMAP.POP3.SMTP代理服务器.nginx可以作为一个HTT ...

  2. 使用数据泵(expdp、impdp)迁移数据库流程

    转载原文地址为:http://blog.itpub.net/26736162/viewspace-2652256/ 使用数据泵迁移数据库流程 How To Move Or Copy A Databas ...

  3. p72_电子邮件

    一.电子邮件格式 信封 abcd@xx.com 内容 2.1 首部(To, Subject)-> (From,To,Subject,Date) 2.2 主体 二.电子邮件组成结构 三.SMTP ...

  4. CentOS 7配置网卡信息,并设置yum为阿里云的镜像源

    一.问题场景 使用virtualbox创建的centos 7版本的linux虚拟机,使用ping mirrors.aliyun.com有返回,但是wget -O /etc/yum.repos.d/ep ...

  5. 面试时谈得很好,为什么就是拿不到offer?

    招聘行业有个共识,那就是如果没有给通知一般就是没有通过, 有的学员会问,为什么不打电话通知一下呢? 我猜测,有一方面的原因是怕尴尬,虽然你不觉得尴尬,但是难保有的应聘者会情绪激动,问东问西. 比如你告 ...

  6. 05 . ELK Stack+Redis日志收集平台

    环境清单 IP hostname 软件 配置要求 网络 备注 192.168.43.176 ES/数据存储 elasticsearch-7.2 内存2GB/硬盘40GB Nat,内网 192.168. ...

  7. Win10系统报错问题集锦

    收集记录win10的坑 错误1 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户 NT AUTHORITY\SYS ...

  8. break statement not within loop or switch报错

    break statement not within loop or switch. 注意你的循环,可能多加了个分号.for语句后面?

  9. 老男孩Django笔记(非原创)

    .WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 ############## ...

  10. Numpy访问数组元素

    import numpy as np n = np.array(([1,2,3],[4,5,6],[7,8,9])) ''' array([[1, 2, 3], [4, 5, 6], [7, 8, 9 ...