课程概述
蓝牙是由蓝牙技术联盟(SIG)管理的、应用广泛的无线通信技术标准。低功耗蓝牙(LE)协议被视作与经典蓝牙相互独立的协议,它以相对较低的数据速率传输少量数据,以此实现更低的功耗。
在本课中,我们将首先介绍低功耗蓝牙及其协议栈层级。随后简要讲解低功耗蓝牙连接的建立过程,涵盖广播与扫描等概念。接着介绍可用的网络拓扑结构以及物理层(PHY)模式。
在实操环节,我们将练习向 Nordic 设备烧录低功耗蓝牙示例工程,并通过低功耗蓝牙读取按键状态、控制 LED。
课程目标
- 研读低功耗蓝牙协议,理解各协议层的作用。
- 了解低功耗蓝牙架构概况。
- 学习可用的设备角色与通信拓扑方案。
- 理解数据表示与数据交互的基础原理。
- 通过实操练习,使用「nRF Connect for Mobile」应用,完成以下操作:
- 读取 Nordic 设备上按键的状态
- 切换 Nordic 设备上 LED 的亮灭状态
什么是Bluetooth LE?
经典蓝牙就是你大概率曾经使用过的蓝牙版本,无线耳机等常见设备中广泛采用该技术。显而易见,经典蓝牙非常适合音乐串流这类应用。它的数据吞吐量足够支撑音乐传输,不会出现连接异常或丢包问题,并且使用便捷。你可能隔一段时间就需要给智能手机和无线音箱充电,但在这类应用场景下这并不是问题。
然而对于低功耗可穿戴设备或海量物联网应用而言,频繁充电并不现实,尤其是在并不需要这么高的数据传输速率时。为此,蓝牙技术联盟(Bluetooth SIG)自蓝牙核心规范 4.0 版本起推出了蓝牙低功耗(LE),旨在使其成为低功耗物联网应用的核心支撑技术。
蓝牙低功耗特性
顾名思义,蓝牙低功耗(Bluetooth LE)通过牺牲数据速率来实现低功耗。这里所说的牺牲数据速率包含两项机制:第一,数据包尺寸更小,范围为 27 至 251 字节;第二,尽量减少数据发送频次,避免射频长时间开启,而射频开启时长是影响功耗的重要因素。这使得蓝牙低功耗更适合电池供电设备,这类设备以极低功耗运行,仅需间歇性传输少量突发数据。
蓝牙低功耗在其他方面也与经典蓝牙存在差异,例如支持的网络拓扑和节点类型。这是因为蓝牙低功耗面向的应用场景与经典蓝牙完全不同,因此需要采用不同的网络拓扑结构。
下表汇总了蓝牙低功耗的部分关键特性。
工作频段 | 2400 MHz – 2483.5 MHz ~ 2.4 GHz |
信道带宽 | 2 MHz |
射频信道数量 | 40 |
最大发射功率 | 20 dBm 0.1 W |
最大应用层数据吞吐量 | 1.4 Mbps |
低速率下的最大通信距离(125 和 500 kbps) | ~1000 m |
蓝牙低功耗规范汇总
注意:
通信距离始终取决于多项因素,包括所用设备的软硬件配置,以及设备实际工作的具体环境。因此,很难给出通用且精确的距离预估。
不过,借助本文提供的在线距离估算工具,在按照计算器指引填入对应配置参数后,就可以对蓝牙低功耗设备的预期通信距离给出一个可参考的估算值。
蓝牙低功耗的一大核心优势,是相较于其他低功耗个域网技术具备成本优势,这使其非常适合需要大规模部署的应用场景。
该技术在智能手机中也得到广泛普及(绝大多数智能手机同时支持经典蓝牙与蓝牙低功耗),因此可随时随地开展应用测试与原型开发。若要测试双向通信,除智能手机外,仅需再准备一台蓝牙低功耗设备即可。几乎人人都拥有智能手机,对比那些需要专用硬件才能测试的其他技术,蓝牙低功耗降低了测试的成本与复杂度。
借助 Nordic种类丰富的蓝牙低功耗产品,你还能获得高度的实现灵活性、开源文档以及持续的客户技术支持。可访问我们官网进一步了解Nordic半导体的蓝牙 5 相关产品。
蓝牙低功耗协议栈
想要在应用中启用并使用蓝牙低功耗,并不需要深入掌握协议栈每一层的全部细节。不过,了解各层的基础概念及其主要功能,有助于从整体上理解蓝牙低功耗协议栈底层的运行机制。这就是我们下一节将要介绍的内容。
部分层级因其重要性,会在后续课程中进一步讲解。
下图展示了协议栈架构,标注出构成蓝牙低功耗主机与蓝牙低功耗控制器的各个层级。

最上层为应用层。这是用户通过 API 进行交互、调用蓝牙低功耗协议的层级。应用层的重要组成部分包括配置文件、服务以及特征值,这些内容会在后续课程中详细讲解。接下来的多个层级共同构成主机,其核心作用是定义蓝牙低功耗设备之间存储与交换数据的方式。最底层由控制器相关层级组成,其中最核心的是物理射频模块,它负责生成无线电波,并将待发送数据编码到信号当中。
主机
蓝牙低功耗主机包含以下各层:
- 逻辑链路控制与适配协议(L2CAP):为上层提供数据封装服务。
- 安全管理器协议(SMP):定义并提供安全通信的实现方法。
- 属性协议(ATT):允许一台设备向另一台设备公开特定数据。
- 通用属性配置文件(GATT):定义使用 ATT 层所需的子流程。
- 通用访问配置文件(GAP):直接与应用层交互,处理设备发现以及连接相关服务。
Zephyr 蓝牙主机实现了上述所有协议层,并为应用程序提供 API。
控制器
蓝牙低功耗控制器包含以下层级:
- 物理层(PHY):规定如何将实际数据调制到无线电波,以及数据的发送与接收方式。
- 链路层(LL):管理射频状态,包含以下几种状态:待机、广播、扫描、发起连接、已连接。
本课程所使用的蓝牙低功耗控制器实现为 SoftDevice Controller,位于 nRF Connect SDK 中。SoftDevice Controller与 Zephyr 蓝牙主机共同构成 nRF Connect SDK 内置完整的蓝牙低功耗协议栈。
重要提示:
nRF Connect SDK 还提供另一款控制器实现方案:Zephyr Bluetooth LE Controller。但我们强烈推荐使用 SoftDevice Controller,它是专门针对 nRF52、nRF53 和 nRF54 系列器件设计的。
GAP:设备角色与网络拓扑
蓝牙低功耗协议支持两种不同的通信方式:面向连接通信与广播通信。
定义:
面向连接通信:设备之间建立专用连接,实现双向通信。
广播通信:设备无需预先建立连接,直接广播数据包,通信范围内的设备接收该数据包。
设备角色
GAP 层为蓝牙低功耗网络中的节点定义了特定的设备角色。这些角色决定多项关键特性,例如设备如何广播自身存在,或是如何扫描并连接其他节点。
广播与扫描指蓝牙低功耗设备互相感知对方存在、判断连接可能性的过程。两台蓝牙低功耗设备若要建立连接,其中一台需要广播自身信息以及连接意向,另一台则负责扫描这类设备。
定义:
广播:发送广播数据包的过程,可仅用于广播数据,也可用于让其他设备发现自身。
扫描:监听广播数据包的过程。
中心设备与外设设备
在上例中,广播自身存在并表明连接意向的设备作为外设设备,而扫描广播包的设备则是中心设备。如果中心设备扫描到外设设备的广播数据包,中心设备可以向外设设备发送连接请求来发起连接。此时中心设备和外设设备即建立连接。
定义:
中心设备:该设备角色负责扫描外设设备并发起连接。
外设设备:该设备角色负责广播,并接受来自中心设备的连接。
中心设备可同时向多个外设设备发送连接请求,并在这些连接中充当主机角色。外设设备在建立一条连接后,可重新开启广播流程,以此接受来自其他中心设备的连接请求。
由于中心设备承担主机角色,它需要履行主机的常规职责,例如连接管理以及大部分数据处理工作。这也意味着外设设备的功耗通常低于中心设备。
资源受限且需要低功耗的物联网设备,在蓝牙低功耗连接中一般作为外设设备;而中心设备通常是手机这类供电能力更强的设备。
注意:
由于我们器件最常见的应用场景是作为外设设备,因此本课程的实操练习将围绕该连接拓扑展开。
广播发送端与扫描观察端
部分设备仅希望广播信息,而不与其他设备建立连接。在这种场景下,有一种特殊的外设设备称为广播发送端,它可以发送广播数据包,但不会接收任何数据包,也不接受连接请求。待广播的信息承载在广播数据包内。信标设备就是广播发送端的典型例子,这类设备只发送信息,无需和特定设备建立连接。与之对应,有一种特殊的中心设备称为扫描观察端,它监听广播数据包,但不会发送连接请求来发起连接。
定义:
广播发送端:一类特殊的外设设备,用于广播广播数据包,不接受任何连接请求。
扫描观察端:一类特殊的中心设备,用于监听广播数据包,不会发起连接。
为简化学习,除非另有说明,本课程将始终围绕外设设备 / 中心设备这两种设备角色展开讲解。
网络拓扑
我们已经了解蓝牙低功耗设备的各类角色,接下来看一看,在蓝牙低功耗支持的不同网络拓扑中,这些设备角色如何应用。
广播拓扑
在广播拓扑中,设备之间传输数据无需建立连接。设备借助广播数据包,将数据广播给通信范围内所有能够接收数据包的设备。外设设备(更准确地说是广播发送端)广播数据,中心设备(更准确地说是扫描观察端)扫描并读取广播数据包内的数据。

广播拓扑示例
这类通信方式普遍应用于近距离信标、室内导航,以及其他需要低功耗设备同时向多个设备传输少量数据的场景。
广播拓扑的优势在于,广播的接收设备数量没有限制。任何处于广播数据包覆盖范围内的设备都可以接收信息。相较于面向连接的通信,这种方式功耗效率更高。但受广播数据包可承载的数据量限制,其吞吐量有限,并且接收设备不会返回确认应答。
连接型拓扑
连接型网络拓扑需要先建立连接,再进行数据传输。与广播拓扑不同,该拓扑下的通信是双向的。
注意:
尽管蓝牙低功耗规范在技术层面并未限制可建立的连接数量,但小型嵌入式设备会存在带宽与硬件方面的约束。
下图为连接型拓扑示例:一个中心设备已与三台外设设备建立通信,并且其中一台外设设备同时还连接了另外两台中心设备。

连接型拓扑示例
连接型拓扑的优势在于,通信前建立直接链路可以提升吞吐量。此外,该通信为双向通信,即中心设备与外设设备可以互相通信;而广播模式下,外设设备仅向中心设备发送广播,无法接收返回的数据。
拓展知识:
蓝牙 5.4 引入带响应周期性广播(PAwR)之后,无连接模式下也可以实现双向通信。不过该内容超出本课程的讲解范围。
多角色拓扑
单台设备也可以同时以多种不同角色运行。例如,同一台设备在一种场景下作为外设设备,在另一种场景下作为中心设备。

多角色拓扑示例
这种多角色功能常用于以下系统:有一台设备(我们称之为网关),它从多个传感器接收数据,同时还需要将这些数据转发至手机。在该场景中,网关可以作为中心设备连接多个传感器(外设设备),同时也能作为外设设备,将传感器数据发送给一台或多台智能手机(中心设备)。

多角色拓扑应用示例
ATT 和 GATT:数据表示与交换
上一章节我们介绍了 GAP 层的作用:它规定蓝牙低功耗设备在广播阶段与连接阶段的相互通信方式。广播阶段的通信仅用于设备发现或者数据广播,由 GAP 层本身处理。但建立连接之后,设备需要进行双向数据交换,这就需要专门为此设计的数据结构与协议。
属性协议(ATT)层,以及位于其上层的通用属性配置文件(GATT)层,定义了蓝牙低功耗设备之间的数据表示形式与数据交换方式。ATT 和 GATT 层负责处理连接建立之后的通信;与之相对,GAP 层负责连接建立之前的广播流程。
属性协议
ATT 层是蓝牙低功耗设备在连接阶段进行数据传输、接收与处理的基础。它采用客户端 - 服务器架构:服务器存储数据,既可以直接将数据发送给客户端,也可由客户端向服务器轮询获取数据。
该层定义的客户端与服务器角色,和 GAP 层定义的外设设备、中心设备角色相互独立分配。因此,中心设备既可以作为客户端,也可以作为服务器;外设设备同理。具体角色取决于应用场景以及所传输数据的特性。
大多数情况下,外设设备充当服务器,因为外设设备负责采集并保存数据。与之类似,中心设备通常作为客户端,从服务器接收上述数据。
GATT 层会使用这些角色,因此二者常被称为 GATT 服务器与 GATT 客户端。
定义:
GATT 服务器:存储数据,并为 GATT 客户端提供数据访问方式的设备。
GATT 客户端:通过特定 GATT 操作访问 GATT 服务器上数据的设备,相关操作将在第 4 课讲解。
ATT 层定义了一种名为属性的数据结构,GATT 服务器使用该结构存储数据。服务器可以同时保存多个不同的属性。
定义:
属性:由 ATT 协议定义的标准化数据表示格式。
通用属性配置文件
通用属性配置文件(GATT)层直接位于 ATT 层之上,在 ATT 的基础上将属性按层级划分为配置文件、服务和特征值。GATT 层借助这些概念管控蓝牙低功耗设备之间的数据传输。

包含服务与特征值的通用配置文件示例
配置文件、服务与特征值
我们以一台用于测量心率的传感器设备为例。心率数值会保存为一个属性,称为特征值属性。还存在另一个属性,用来存放该特征值属性内所存储数据的元数据,叫做特征声明属性。这两个属性共同构成特征值。在本例中,就是心率测量特征值。
所有特征值都封装在服务当中,一个服务通常包含多个特征值。本例里,心率测量特征值隶属于心率服务。该服务还包含其他特征值,例如体传感器位置特征值。
再往上一层,配置文件由一项或多项面向同一应用场景的服务组成。心率服务与设备信息服务同属于心率配置文件。设备信息服务包含制造商名称特征值、固件版本特征值等。

心率配置文件示例
在客户端开始与服务器交互之前,客户端并不知道该服务器上存储属性的具体信息。因此,客户端首先会执行服务发现操作,向服务器查询属性相关内容。
注意:
蓝牙技术联盟(Bluetooth SIG)定义的全部 GATT 配置文件可在此处查阅。蓝牙规范同时允许厂商,针对蓝牙技术联盟标准配置文件未覆盖的应用场景自定义配置文件。
物理层:无线电模式
蓝牙低功耗协议栈的底层是物理层(PHY)。PHY 指用于管控蓝牙低功耗射频运行的物理层射频规范。该层定义了蓝牙低功耗射频发射机所采用的各类调制与编码方案,这些方案会影响射频的吞吐量等指标,进而改变设备的功耗或是连接通信距离。
1M PHY
1M PHY,即 1 兆比特物理层,是所有蓝牙低功耗设备都支持的经典物理层。顾名思义,1M PHY 的速率为 1 兆比特每秒。
两台蓝牙低功耗设备发起连接时,初始就会采用该模式。之后如果两端设备均支持其他模式,通信双方可请求切换至别的模式。
2M PHY
2 兆比特物理层是蓝牙 5.0 版本引入的新模式。顾名思义,它将数据速率提升一倍,达到 2 兆比特每秒(2 Mbps)。由于数据以更高速率(更快)传输,射频开启的时间更短,从而降低功耗。缺点是接收灵敏度下降,对应的通信距离会变短。
编码物理层(Coded PHY)
2M 物理层适用于愿意牺牲通信距离来换取更高数据速率的场景,而编码物理层的推出,则是为了满足另一类应用需求:牺牲数据速率,换取更远的通信距离。编码物理层采用编码方案,可以更有效地纠正数据包错误,这也意味着单个比特需要用多个符号来表示。
编码物理层包含两种模式:S=2 和 S=8。在 S=2 模式下,用 2 个符号表示 1 个比特,对应数据速率为 500 kbps;而在 S=8 模式下,用 8 个符号表示 1 个比特,数据速率为 125 kbps。
练习 1 — 测试蓝牙低功耗连接
本练习将使用蓝牙示例工程:外设 LED 按键服务(Peripheral LBS),在 Nordic 开发板上运行,以此建立开发板与智能手机之间的蓝牙低功耗连接。Peripheral LBS 示例工程会让 Nordic 开发板作为蓝牙低功耗外设设备,向充当中心设备的智能手机广播自身存在。
建立连接后,Nordic 开发板作为 GATT 服务器,向作为 GATT 客户端的智能手机开放 LED 按键服务(LBS)。LBS 包含两个特征值:按键(Button)与 LED。GATT 客户端(本例为智能手机)可对这两个特征值执行读写操作,以此控制开发板上的 LED 灯,并读取板载按键状态。本场景中 Nordic 开发板承担 GATT 服务器角色。
本课程所有练习在编译示例应用时,均可选用课程页面硬件要求栏目下列出的任意开发板,以及其对应的编译目标。
注意:
本课程以《nRF Connect SDK 基础》课程为基础,聚焦蓝牙低功耗。你需要阅读《nRF Connect SDK 基础》的第 1 课,学习如何在电脑上安装 nRF Connect SDK 并编译应用程序。此外,强烈建议完成《nRF Connect SDK 基础》课程,它可以帮助你全面理解 nRF Connect SDK。
本课程的实操练习默认学习者已经掌握 nRF Connect SDK 的基础知识。
练习步骤
1.编译并烧录外设 LED 按键服务(Peripheral LBS)示例工程。
1.1 在 Visual Studio Code 的欢迎面板中,选择 “浏览示例工程”,选定你的 SDK 版本,然后搜索 “Bluetooth LE LED Button service”。

选中该示例工程,它将会显示在 应用程序(APPLICATIONS) 面板下。
1.2 添加编译配置,并选择你正在使用的开发板。
1.3 将应用程序编译并烧录到设备。
如果操作成功,你会看到设备上的 LED1(在 nRF54 系列开发板上为 LED0)闪烁。
2.使用智能手机测试应用程序
2.1 在应用商店下载 nRF Connect for Mobile,并在手机上启动该软件。
2.2 开启手机的蓝牙和位置服务。
3.(可选)打开终端查看应用程序的日志输出
UART 外设经由 SEGGER 调试 / 烧录芯片(即接口系统级芯片)接入 USB-CDC 虚拟串口,你可以直接将其连接至电脑。
在 VS Code 中,展开已连接设备(Connected Devices),选中开发板对应的 COM 端口,连接该端口。不同电脑上的 COM 端口号可能不一样。

注意:
使用 nRF5340 DK 或 nRF54L 系列开发套件时,会出现两个 COM 串口,一个用于应用核,另一个用于网络核(nRF54L 则为 RISC-V 协处理器)。我们需要查看应用核的输出日志。
使用默认参数:115200,8n1,关闭硬件流控(rtscrs:off)。然后复位设备,即可查看完整日志信息。
如果广播成功,你的日志输出内容应如下所示。
*** Booting nRF Connect SDK ***
Starting Bluetooth Peripheral LBS sample
I: 2 Sectors of 4096 bytes
I: alloc wra: 0, f70
I: data wra: 0, 10
I: SoftDevice Controller build revision:
I: 9b 8f ac c3 1d 42 ae 44 |.....B.D
I: fa cd 1f c3 48 a0 b4 2f |....H../
I: cf 29 ee 3d |.).=
I: HW Platform: Nordic Semiconductor (0x0002)
I: HW Variant: nRF54Lx (0x0005)
I: Firmware: Standard Bluetooth controller (0x00) Version 155.44175 Build 2923568579
I: No ID address. App must call settings_load()
Bluetooth initialized
I: HCI transport: SDC
I: Identity: E9:9A:17:A6:23:B1 (random)
I: HCI: version 6.2 (0x10) revision 0x3020, manufacturer 0x0059
I: LMP: version 6.2 (0x10) subver 0x3020
Advertising successfully started
LED1(在 nRF54 系列开发套件上为 LED0)同样会闪烁,代表设备正在发送蓝牙广播。
注意:
在 nRF54 系列开发套件(例如 nRF54L15 DK)上,板载 LED 与按键的 PCB 丝印标号从 0 开始(LED0~LED3、BUTTON0~BUTTON3)。而上一代开发套件的编号则从 1 开始(LED1~LED4、BUTTON1~BUTTON4)。
4.与你的 Nordic 开发板建立连接。
安卓:
4.1 在 nRF Connect for Mobile 应用中,点击 扫描(SCAN) 按钮。此时你的智能手机将作为中心设备,扫描附近所有正在广播的蓝牙低功耗设备。

4.2 附近多个支持蓝牙的设备将会陆续显示出来。
选择名称为 Nordic_LBS 的设备,点击 连接(CONNECT)。

4.3 如果弹出该界面,请再次点击连接。

少数安卓手机会出现特殊情况:你可能需要先点击右上角的三点图标,再点击 “绑定(Bond)”,之后才能连接 NORDIC_LBS 设备。
4.4 当开发板上的 LED2(nRF54 系列开发套件上为 LED1)常亮时,代表连接已成功建立。
5.查看应用程序上的界面。

- 你可以确认已连接至正确设备。
- 页面会展示该设备提供的服务。这里能看到 Nordic LED Button Service,因为这就是我们烧录到设备里的示例工程。
- 在该服务下,有一个名为 “Button”(或叫 “Blinky Button State”)的特征值,它反映 Nordic 开发板上按键 1 的状态,因此属性为 “Read(可读)” 和 “Notify(通知)”。“Notify” 指外设主动向中心设备推送数据的机制,后续课程会详细讲解通知功能。
- 同一服务下还有另一个特征值,名为 “LED”(也叫 “Blinky LED State”),可用来切换 Nordic 开发板上 LED3 的亮灭(nRF54 系列开发套件对应 LED2),所以它的属性为 “WRITE(可写)”。
6.通过 “Button” 特征值读取按键 1 的状态。

- 若要接收并查看按键 1(nRF54 系列开发套件上为按键 0)的状态,需要打开 “Button” 特征值下的**Value(数值)**标签页,点击单个向下箭头图标即可。
- 如需开启该特征值的通知,让设备向应用推送数据,请点击带有多个向下箭头的图标。
现在你会看到按键 1(nRF54 系列开发套件上为按键 0)的状态为未按下。

7.查看按键 1(nRF54 系列开发套件上为按键 0)的状态。
7.1 按下 Nordic 开发板上的按键 1
7.2 观察下方显示的值变为 “Button pressed(按键已按下)”。

8. 切换 LED3 的亮灭(nRF54 系列开发套件上为 LED2)。
8.1 点击 LED 特征值旁边的向上箭头图标。

8.2 向 LED 特征值写入数值,点亮 LED
选择 ON,然后点击 SEND,即可点亮 LED。

8.3 观察到 LED3 点亮。
8.4 选择 OFF,关闭该 LED。
iOS:
4.1 在 nRF Connect for Mobile 应用中,点击右上角的播放图标。此时你的手机将作为主机设备,扫描周边正在广播的所有低功耗蓝牙设备。

iOS
4.2 附近多个支持蓝牙的设备将会陆续显示出来。
选择名称为 Nordic_LBS 的设备,并点击 Connect。

4.3 当开发板上的 LED2(nRF54 DK 开发板上为 LED1)点亮时,即代表连接已建立。
5.观察应用上的界面。
切换到第二个窗口,名为客户端(Client)。在该应用的较新版本中,客户端窗口由这个图标代表。


- 你可以确认已连接至正确设备。
- 查看该设备上可用的服务。这里我们能看到 Nordic LED Button Service,因为这正是我们烧录到设备中的示例工程。
- 在该服务下,存在一个名为 “Button”(或 “Blinky Button State”)的特征值。它反映 Nordic 开发板上按键 1 的状态,因此属性为 “Read(可读)” 和 “Notify(通知)”。“Notify” 指从机主动向主机推送数据的机制,后续课程会详细讲解通知功能。
- 同一服务内还有另一个特征值,名为 “LED”(或 “Blinky LED State”),可用于切换 Nordic 开发板上 LED3 的亮灭状态(nRF54 系列设备上对应 LED2),所以它的属性为 “WRITE(可写)”。
6.使用 “Button” 特征值读取按键 1 的状态。

- 若要接收并查看按键 1(nRF54 DK 开发板上为按键 0)的状态,需要打开 “Button” 特征值下的 Value(数值) 标签页,点击向下箭头图标即可进入。
- 如需开启该特征值的通知功能,让设备主动推送数据至应用,请点击带下划线箭头的图标。
此时你将看到按键 1(nRF54 DK 开发板上为按键 0)的状态为已松开。

7.查看按键 1 的状态。
7.1 按下 Nordic 开发板上的按键 1(nRF54 DK 开发板上为按键 0)
7.2 观察下方显示的值变为 “Button pressed(按键已按下)”。

8.切换 LED3 的亮灭状态(nRF54 系列设备上为 LED2)。
8.1 点击 LED 特征值旁的向上箭头图标。

8.2 向 LED 特征值写入数值,点亮 LED
选择布尔类型(Bool),将数值切换为 True,然后点击 Write 发送该数值。

8.3 观察到 LED3 点亮(nRF54 系列设备上为 LED2)。
8.4 选择 OFF,关闭 LED。
测验
请确保在参加测验前已学完所有小节内容。测验是完成本课学习的最后一步。如果未按既定顺序完成本课内容,请务必重新作答测验,才能将本课标记为已完成。
点击开始测验 (英文)
系列课程概览
课程介绍
低功耗蓝牙基础课程为线上自定进度课程,依托 Nordic Semiconductor 器件(nRF54、nRF53 以及 nRF52 系列),讲授低功耗蓝牙的基础知识。学员将通过实操学习,快速搭建低功耗蓝牙原型,并在两台低功耗蓝牙设备之间建立单向、双向无线数据通道。
完成本课程后,学员将深入理解低功耗蓝牙协议及其协议层,掌握基于 Zephyr RTOS 的 nRF Connect SDK 所提供的各类应用程序接口。此外,学员可获得配置低功耗蓝牙广播与连接的实操经验,学习低功耗蓝牙连接的安全防护方法,并学会使用 nRF Sniffer 抓取空中数据包。
你将学到的内容
• 深入理解最新的低功耗蓝牙应用架构。
• 掌握低功耗蓝牙广播及其各项功能。
• 了解低功耗蓝牙连接,以及如何通过低功耗蓝牙传输数据。
• 学习低功耗蓝牙连接的安全防护相关知识。
• 熟悉 nRF Connect SDK 中的低功耗蓝牙应用程序接口。
• 学习用于调试低功耗蓝牙应用的工具(nRF Connect for Mobile、nRF Sniffer)。
• 通过实操练习学以致用,在两台支持低功耗蓝牙的设备之间建立单向与双向数据通道。
课程适合人群
如果你想要学习低功耗蓝牙协议,并希望使用 Nordic Semiconductor 的产品搭建低功耗蓝牙原型,那么适合报名本课程。本课程面向嵌入式软件工程师、固件开发人员,以及所有对微控制器和嵌入式系统感兴趣的学习者。
预计时长
完成本课程总共大约需要 8 至 10 小时。实际所需完成时间很大程度上取决于你的技术背景与相关经验。
学习目标
研究低功耗蓝牙协议,并理解各协议层的作用
- 了解低功耗蓝牙应用架构概况
- 学习蓝牙通用访问配置文件(GAP)所定义的设备角色与通信拓扑方案
- 实操练习:使用 nRF Connect for Mobile 应用建立低功耗蓝牙连接,通过手机读取 Nordic 设备上按键的状态
- 实操练习:使用 nRF Connect for Mobile 应用建立低功耗蓝牙连接,通过手机控制 Nordic 设备上 LED 的亮灭
掌握低功耗蓝牙广播
- 理解传统广播流程的基础知识以及相关的各类广播参数(广播间隔、发射功率、信道、所用物理层)
- 学习广播类型(可连接型与非连接型、可扫描型与非扫描型等)
- 研究低功耗蓝牙地址类型(公共地址、随机地址、静态地址、可解析地址等)
- 学习如何使用 nRF Connect SDK 应用程序接口,对低功耗蓝牙传统广播的各项参数进行配置
- 通过实操练习创建低功耗蓝牙信标
- 通过实操练习,在设备发现阶段配置从机设备的广播数据包
学习低功耗蓝牙连接相关知识
- 理解低功耗蓝牙的连接流程
- 了解各类连接参数及其作用
- 学习修改连接参数的方法
- 通过实操练习建立连接,并修改各类连接参数
研究低功耗蓝牙中的各类数据交互方式
- 理解通用属性协议(GATT)与属性协议(ATT)的作用
- 了解如何在低功耗蓝牙连接中通过 GATT 表征、交换数据
- 查看低功耗蓝牙外设设备的属性表
- 掌握创建 GATT 服务与特征值的方法
- 学习 nRF Connect SDK 中内置的标准低功耗蓝牙服务
- 通过实操练习创建并添加自定义以及标准低功耗蓝牙服务和特征值
- 通过实操练习使用 GATT 应用程序接口(读、写、无响应写入、通知、指示)
学习如何保护低功耗蓝牙连接
- 理解低功耗蓝牙的安全模型
- 研究低功耗蓝牙的认证与加密流程
- 研究绑定流程以及数据在闪存中的存储方式
- 了解 nRF Connect SDK 中与安全相关的 Kconfig 配置项
- 通过实操练习,调用 nRF Connect SDK 的应用程序接口来对低功耗蓝牙连接进行安全防护
研究低功耗蓝牙空中数据包
- 学习使用蓝牙抓包工具捕获广播数据包
- 学习安装并运行 Nordic 蓝牙抓包工具 nRF Sniffer,捕获并分析低功耗蓝牙数据包
- 学习使用 nRF Sniffer 跟踪连接、检查通信内容
- 观察并解密安全连接下的低功耗蓝牙通信数据
课程设置
- 第一课 — 低功耗蓝牙介绍
- 第二课 — 低功耗蓝牙广播
- 第三课 — 低功耗蓝牙连接
- 第四课 — 低功耗蓝牙的数据交换
- 第五课 — 低功耗蓝牙通信安全
- 第六课 — 低功耗蓝牙抓包工具
- 获取课程证书!
课程细节
- 基础级别
- 共6节课
- 预计8-10小时完成
- 结业证书
前置要求
- C 编程语言基础知识。
- 具备一定嵌入式系统软件开发经验。
- nRF Connect SDK 基础课程
- (必修)第 1 课
- (推荐学习)第 2 课~第 8 课
硬件要求
系统要求
- 搭载 Windows、macOS 或 Linux 系统的电脑
- 最新版网页浏览器
软件要求
支持的 SDK 版本
- nRF Connect SDK v3.4.0 – v2.3.0
- nRF54LS05 DK 需要 nRF Connect SDK v3.3.0 或更高版本
- nRF54LM20 DK 需要 nRF Connect SDK v3.1.1 或更高版本
- nRF54L15 DK 需要 nRF Connect SDK v2.8.0 或更高版本