跳到主要内容

Wio Terminal 蓝牙教程

本文主要介绍蓝牙(Bluetooth)的基本知识,并演示如何在 Wio Terminal 上使用蓝牙功能。

Wio Terminal 配备的无线网卡是 Realtek RTL8720,它支持 Wi-Fi(802.11 b/g/n,2.4GHz)和蓝牙(BLE4.2)功能。在开始本次学习之前,请确保你已经阅读 Wio Terminal 网卡固件更新,并完成固件更新和 Arduino 依赖库的安装。

安装依赖库

Wio Terminal 蓝牙连接需要依赖一些 Arduino 库。SeeedStudio 已经在 Arduino 库管理器中包含了 Wio Terminal 的所有无线相关库。因此,你只需在 Arduino IDE 中打开 Arduino 库管理器,输入下面的关键字就可以找到它们。

关键字Arduino 库
seeed rpcbleSeeed_Arduino_rpcBLE
seeed rpcunifiedSeeed_Arduino_rpcUnified

蓝牙基本概念

客户端与服务器

  • 客户端(Client)向服务器(Server)发出数据通信请求,允许设备与其他蓝牙设备无线交换数据。
  • 服务端(Server)向客户端(Client)提供数据服务,通过特征(Characteristic)封装数据,多个特征形成一个服务(Service),因此服务(Service)是一个基本的 BLE 应用程序。
  • 客户端(Client)和服务器(Server)是通信关系,它们既可以作为 master 也可以作为 slave。

UUID 标识

  • UUID 通常用于标识需要在系统或其网络中唯一的信息。
  • 所有 BLE 设备都有服务 UUID、特征 UUID 和描述符 UUID,所有产品的 UUID 都应该是唯一的,并且重复的概率低,这使得它们可用作数据库中的关联键和组织内物理硬件的标识符。

Wio Terminal 的 BLE

带有低功耗蓝牙(BLE)的 Wio Terminal 可以充当服务器和客户端。BLE 服务器会向周围发射信号以通告其存在,可以被其他设备扫描发现,并且它包含客户端可以读取的数据。BLE 支持广播模式和 Mesh 网络两种模式。在广播模式下,服务器将数据传输到许多连接的客户端,在网状网络模式下,所有设备都连接在一起。

服务器和客户端都有一个“SERVICE UUID”来在服务器和客户端之间建立连接。在这个服务中,可以有几个由特征 UUID 定义的“特征”。我们使用两个特性 TX 和 RX 来向客户端发送数据和从客户端接收数据。Wio Terminal(充当服务器)通过 TX 特征 UUID “通知” 客户端,数据被发送到 Wio Terminal 并通过 RX 特征 UUID 接收。既然有发送和接收,那么 Wio Terminal 上的 TX 其实就是手机 App 上的 RX。

nRF Connect 应用程序

在刚开始使用时,我们可能并不知道蓝牙设备的 UUID 和 MAC 地址。这时候可以使用 nRF connect(手机 App)来搜索附件的 BLE 设备,并显示 UUID 和 MAC 地址,当然它也可以与 BLE 设备进行通信。

  • 首先下载 nRF Connect APP,并安装到你的手机;
  • 然后扫描 BLE 设备;
  • 找出 BLE 设备并连接它,然后就会看到 UUID 和 MAC 地址;
  • 接着可以发送或接收特性(Characteristic)上的数据。

左边的截图展示了 nRF Connect App 扫描的 BLE 设备。右边的截图展示 BLE 设备连接成功后看到的 UUID 和 MAC 地址,在特性(Characteristic)的条目上有一些箭头,向上箭头表示将数据发送到服务器,向下箭头表示从服务器接收数据。

接口选项是根据设备的功能来选择的,比如我连接了一个功能简单的 Wio Terminal(服务器),所以只有一个 Service UUID。不同的 BLE 设备功能特性也不同,这取决于设备的复杂程度。

示例