如何将树莓派设置为 Eddystone 蓝牙信标。

在此树莓派 Eddystone 信标教程中,我们将向您展示如何将 Pi 设置为 Eddystone 蓝牙信标。

对于不知道 Eddystone 是什么的用户,这是 Google 的协议规范,定义了可用于以下目的的蓝牙低功耗 (BLE) 消息格式。基于接近度的信标消息。

您可以使用 Eddystone 消息从蓝牙设备广播数据,例如 URL 。

运行能够理解 Eddystone 协议的扫描仪的设备将能够拾取信标。在我们的教程中,它将允许用户打开您正在广播的 URL 。除此之外,信标还显示距离数据。

最初将 Eddystone 信标用于 Google 的” Physical Web “项目,并由 Android 的” Nearby Notifications “使用,但自那以后,它们都放弃了对 Eddystone 的支持。

另一个值得一看的信标是 iBeacon,您也可以在树莓派上进行设置。

设备清单

以下是本教程中用于设置树莓派充当 Eddystone 信标的所有点点滴滴。

推荐的

  • 树莓派 2、 3 或 4

  • Micro SD 卡

  • 电源

  • 支持广告模式的蓝牙适配器

可选的

  • 树莓派外壳

  • 以太网网络连接或 * Wifi 加密狗 (Pi 3 和 4 内置 WiFi)

在树莓派上设置 Eddystone 信标

1 现在,在开始设置树莓派的蓝牙作为 Eddystone 信标之前,我们必须确保所有内容都是最新的。

我们可以通过在树莓派终端上运行以下两个命令来实现此目的。

sudo apt-get update
sudo apt-get upgrade

2 更新完成后,我们需要继续并首先打开我们的蓝牙设备。关闭它执行任何操作将非常棘手。

要打开树莓派的蓝牙设备,您可以使用以下命令。

sudo hciconfig hci0向上

3 开启了树莓派的蓝牙功能后,我们需要继续操作并打开” 低能耗广告” 模式,并将其设置为” 不可连接的无向广告模式”。

我们可以通过运行以下命令来做到这一点。 Leadv 参数打开 LE 广告模式,并指定我们要使用的模式后的数字。

sudo hciconfig hci0 leadv 3

4 现在,我们已经将树莓派设置为正确的模式,我们需要使用它来发布一些数据。

这次我们将使用 hcitool ,此工具将允许我们向蓝牙设备发送命令以广播指定的 URL 。

对于我们的示例命令,我们将广播 URL https://pimylifeup.com。

在下一步中,我们将轻松地生成一个命令,该命令将以 Eddystone 信标的形式广播您的 URL 。

要开始测试一切是否按预期进行,请在树莓派的终端中输入以下命令。该命令很长,应该在一行中输入。

sudo hcitool -i hci0 cmd 0x08 0x0008 19 02 01 06 03 03 aa fe 11 16 aa fe 10 00 03 70 69 6d 79 6c 69 66 65 75 70 07 00 00 00 00 00 00 00

5 当然,您不必使用我们的网站。相反,您可以使用 Github 用户 Yencarnacion 创建的特殊脚本来生成一些新的 Eddystone 有效载荷数据。

您可以通过转到 Yencarnacion 的 Eddystone 计算器,然后在文本框中输入 URL 并按 Enter ,来利用此脚本。

该脚本将为您生成需要输入的三个命令。

但是,由于我们已经运行了前两个命令,因此您只需注意” 第三条命令”,因为这将设置有效载荷数据。

6 现在,我们已经为树莓派的蓝牙设置了 Eddystone 有效载荷数据以进行广播,现在我们可以快速查看我们正在发送的内容以及这些位的用途。

此有效负载数据中的大多数应按 Eddystone 有效负载所需的原样保留。我们突出显示了可以修改的数据位。

另外,要注意的一个限制是 URL 只能具有 17 位的最大长度。不再需要,您将需要依赖于链接缩短服务,例如 bit .ly。

字节值描述
0x08将 OGF 定义为 Bluetooth 命令组 0x08
02下一节的数据长度,2 个字节
01数据类型,定义此部分为标志数据
06定义低能耗广告模式所需的标志
03下一部分的数据长度,3 个字节
03数据类型,定义 16 位服务 UUID 的完整列表
AA16 位 Eddystone UUID
FE16 位 Eddystone UUID
11定义以下服务数据的长度。 17 个字节。
16定义以下数据为 eddystone
AA16 位 Eddystone UUID
FE16 位 Eddystone UUID
10定义帧类型,在这种情况下为 URL
00TX Power,用于计算到涡流信标的距离
03URL 方案,必须设置为 0x03 ,即 https ://
70“p” 以十六进制 (ASCII)
69“i” 为十六进制 (ASCII)
6D“m”,十六进制 (ASCII)
79“y” 以十六进制 (ASCII)
6C“l” 以十六进制 (ASCII)
69“i” 以十六进制 (ASCII)
66“f” 以十六进制 (ASCII)
65“e” 以十六进制 (ASCII)
75“u” 以十六进制 (ASCII)
70“p” 以十六进制 (ASCII)
07。 com (.com = 0x07)
00
00
00
00
00
00

测试 Eddystone 信标

7 要测试树莓派的蓝牙现在正在广播我们的 Eddystone 信标,我们需要使用 Android 手机或 iPhone 等设备。

在 Android 上,我们使用了 Nicolas Bridoux 的 Beacon Scanner app。使用此应用程序,您应该能够使用设备上的蓝牙运行扫描。

通过点击从我们的信标发送的 URL ,它应该在您的收藏的 Web 浏览器中打开它。

8 现在,您应该已经成功设置了树莓派,使其可以作为 Eddystone 信标,广播您选择的 URL 。

此示例不是设置 Eddystone 信标的唯一方法。您还可以让它广播 UUID 。

如果您有兴趣进一步研究 Eddystone 协议,则可以转到 Eddystone Github 页面来检出该项目。

我希望这个树莓派 Eddystone 能够向您展示启动和运行它所需的一切。

分享到