蓝牙 Mesh 网络及 SDK 概述 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第一章

简介: 本节重点介绍蓝牙 Mesh 网络及 SDK 概述

下一篇:蓝牙 Mesh SDK 快速上手 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第二章

点击免费下载
《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>>

test

蓝牙 Mesh SDK用户开发指南

1. 概述

蓝牙 Mesh SDK是基于低功耗蓝牙芯片CH6121提供的软件开发套件。该开发套件以YoC平台为基础,对蓝牙MESH协议栈做了深度优化和整合,为开发者提供了通用的MESH组件,涵盖了SIG MESH Model和私有Model以及丰富的芯片外设驱动。

1.1. Mesh网络介绍

image.png

上图是一个Mesh灯控网络的拓扑,以此为例,介绍一下Mesh网络的构成。
按照功能来划分,Mesh设备可以分为两类,一种是Provisioner,一种是Node节点。
Provisioner负责组建Mesh网络,主要功能有发现未入网设备,将未入网的设备加入Mesh网络,配置入网设备的特性,比如Relay 特性,Friend特性,Proxy特性等。在上图中,Provisioner可以是蓝牙开发板,也可以是一个手机,但是当前不支持两个Mesh网络中同时存在手机Provisioner和蓝牙开发板Provisioner的情况。
当一个设备加入特定的Mesh网络后,该设备成为Mesh网络的Node节点。在上图中,节点有Light灯控节点和Switch开关节点两种。这两种节点默认都支持Relay特性和Proxy特性。Relay特性打开的情况下,节点会转发来自别的节点的Mesh消息。Proxy特性打开的情况下,节点会支持手机接入Mesh网络。
在上图中,存在Group1和Group2两个分组,这个也是Mesh网络的一个重要特性,Mesh网络支持将不同的节点分配到相同的组中,同一个节点也可以同时存在于两个组中。上图Light Node1,Light Node2,Light Node4,Swtich Node1位于Group1,3个Light Node可以被Switch Node1控制。Light Node2,Light Node3,Light Node5,Swtich Node2位于Group2,3个Light Node可以被Switch Node2控制。而Light Node2同时位于Group1和Group2,它可以被Switch Node1和Swicth Node2控制。
在蓝牙 Mesh SDK中,以上的特性均已实现,开发者可以以下的介绍了解到如何实现一个这样的Mesh网络。

2. SDK介绍

2.1. 架构介绍

BLE MESH SDK总体分为四个层次,自下而上分别为SoC蓝牙芯片层,Kernel 内核层,Service服务层和BT Applications 蓝牙应用层。

image.png

• Kernel

 内核层,包含标准的BLE(5.0)/MESH(1.0)协议栈,Ali OS操作系统,芯片驱动。

• Service

 蓝牙服务层,
 Mesh Model组件,其中支持的Sig Models有Generic Level Model,Generic Onoff Model,,Light Level Model,Light CTL Model等,此外还有一个Vendor Model,支持数据透传。
 Mesh Node组件,提供Mesh 节点入网和配置功能,开发者可以基于该组件开发Mesh节点应用
 Mesh Provisioner组件,支持MESH节点管理,包括新增Mesh节点,删除Mesh节点,获取节点信息等功能。
 Genie APP组件,天猫精灵Mesh组件,支持天猫精灵网络协议。

• BT Applications

 蓝牙应用层,包含灯控节点,开关节点,Provisioner AT模组和天猫精灵灯控节点。

2.2. 目录介绍

下面是BLE MESH SDK的目录结构,表格中介绍了各个目录的功能。
image.png

2.3 Mesh协议栈特性介绍

Mesh Profile v1.0特性支持
• Provisioner role(Advertising bearer and GATT bearer)
• Node role(Advertising bearer and GATT bearer)
• Relay feature
• Proxy feature (proxy server)
• Foundation Models

 Config server and client 
 Health server and client

Mesh Models支持
image.png

3. Mesh组件

本章节介绍SDK中包含的几个关键Mesh组件的功能和使用方法。
• Mesh Node组件
• Mesh Models组件
• Genie APP组件

3.1. Mesh Node

Mesh Node 支持 Mesh 节点配置和 Model 消息的接收功能。
组件的主要 API 如下表:

image.png

3.1.1 示例代码

● 初始化

 初始化Node节点,主要配置节点的设备名称,UUID,事件的回调。

image.png

● 回调处理

 Node节点在配网或者复位过程中会产生如下事件,开发者应当在userprovcb回调中处理

image.png
image.png

3.2. Mesh Models

Mesh Models组件提供Generic Onoff,Generic Level,Light Lightness,Light CTL的Server/Client Models,此外还有一个Vendor Model。

Mesh Model的API较多,下表列出几个主要的,其他的请参考《蓝牙 Mesh SDK API说明》
image.png

3.2.1 示例代码

● 初始化
初始化 Mesh Model 组件,主要配置需要使用的 Models。

image.png

● 回调处理
Mesh Model 组件根据使用的 Models 不同会产生不同的事件回调,下面是一个
灯控的设置的事件。
image.png

3.3 Genie APP

天猫精灵组件,支持天猫 Mesh Models,天猫精灵的接入,三要素写入 / 存储 / 获
取功能。
组件的主要 API 如下表:
image.png

3.3.1 示例代码

● 初始化
初始化天猫精灵组件

/* 初始化 */ genie_init();
 

●处理函数
以下内容需要在应用层定义和实现,可以参考 applicationsbluetoothgenie_
lightsrclight.c 中实现。

image.png
image.png
image.png
image.png
image.png
image.png

● 三要素写入
Genie APP 组件需要用到三要素才能接入天猫精灵,三要素的获取请参考天猫精
灵开发者网站。
在 Genie APP 内部有一个调试三要素,位于 modulesgenieappbasetritu
ple_default.h。
Genie APP 组件支持通过 CLI 命令写入和读取三要素。
命令如下:

/* 设置三要素 */ set_tt <product id> <key> <mac address> /* 获取三要素 */ get_tt

4. 应用开发

4.1 开发环境

环境搭建和烧录方法,请参考《CB6121 快速上手手册》 。

4.2 Mesh 灯控

Mesh 灯控示例请参考《MESH 灯控开发指南》。

4.3 Mesh 开关

Mesh 开关示例请参考《MESH 开关开发指南》。

5. AT Provisioner

Mesh SDK 中提供一个了 AT Provisoner 模组解决方案,开发者可以使用该方案对
其他 Mesh 节点进行配网和控制。
相关的 AT 命令和使用方法,请参考《MESH 配网模块用户手册》。

6. API 说明

SDK API 请参考《蓝牙 Mesh SDK API 说明》 。

添加班级群

阅读完今日份的文章分享后,别忘了打开钉钉APP,扫描下方训练营班群二维码👇,参与今日课程直播或观看直播回放,群内不定时配备讲师答疑~
学习完课程视频后,我们今天的学习才算正式结束哦~
test

相关文章
|
15天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
58 6
|
9天前
|
监控 安全
公司上网监控:Mercury 在网络监控高级逻辑编程中的应用
在数字化办公环境中,公司对员工上网行为的监控至关重要。Mercury 作为一种强大的编程工具,展示了在公司上网监控领域的独特优势。本文介绍了使用 Mercury 实现网络连接监听、数据解析和日志记录的功能,帮助公司确保信息安全和工作效率。
78 51
|
5天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
6天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
6天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
29 5
|
6天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
21 3
|
6天前
|
数据可视化 算法 安全
员工上网行为管理软件:S - PLUS 在网络统计分析中的应用
在数字化办公环境中,S-PLUS 员工上网行为管理软件通过精准的数据收集、深入的流量分析和直观的可视化呈现,有效帮助企业管理员工上网行为,保障网络安全和提高运营效率。
15 1
|
14天前
|
数据采集 监控 数据可视化
Fortran 在单位网络监控软件数据处理中的应用
在数字化办公环境中,Fortran 语言凭借其高效性和强大的数值计算能力,在单位网络监控软件的数据处理中展现出独特优势。本文介绍了 Fortran 在数据采集、预处理和分析可视化三个阶段的应用,展示了其在保障网络安全稳定运行和有效管理方面的价值。
45 10
|
9天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务中的信息安全挑战与解决方案
【10月更文挑战第33天】在数字化时代的浪潮中,云计算以其灵活性、可扩展性和成本效益成为企业数字化转型的核心动力。然而,随之而来的网络安全问题也日益突出,成为制约云计算发展的关键因素。本文将深入探讨云计算环境中的网络安全挑战,分析云服务的脆弱性,并提出相应的信息安全策略和最佳实践。通过案例分析和代码示例,我们将展示如何在云计算架构中实现数据保护、访问控制和威胁检测,以确保企业在享受云计算带来的便利的同时,也能够维护其信息系统的安全和完整。