跳转到内容

ESP32 低功耗蓝牙信标

esp32_ble_beacon 组件使用 ESP32 设备创建一个 Bluetooth Low Energy 信标。 信标是 BLE 设备,会重复地发送预定义的数据包。此数据包 随后可以被智能手机等设备接收,并可用于追踪手机的位置。

WARNING

ESP32 上的 BLE 软件协议栈会占用设备大量的 RAM。

如果在设备的 配置中加入了过多的组件,很可能会发生崩溃。语音助手等 消耗大量内存的组件和其它音频组件最可能导致问题。

# Example configuration entry
esp32_ble_beacon:
type: iBeacon
uuid: 'c29ce823-e67a-4e71-bff2-abaa32e77a98'
  • type (必选):要创建的信标类型,目前仅支持 iBeacon。

  • uuid (必选):用于识别信标的通用唯一标识符。

  • id (可选, ID):手动指定用于代码生成的 ID。

高级选项:

  • major (可选, int):此信标的 iBeacon major 标识符。通常用于 分组信标,例如将同一建筑内的所有信标分组,但如果 BLE 接收端不使用它,则没有效果。默认为 10167。

  • minor (可选, int):此信标的 iBeacon minor 标识符。通常用于 识别 iBeacon 组内的信标。默认为 61958。

  • min_interval (可选, Time):iBeacon 的最小发送间隔,单位为毫秒,范围从 20 到 10240。 将此值设置为小于 max_interval,可以让 BLE 硬件有更好的机会避免 与其他 BLE 传输发生冲突。默认为 iBeacon 规范中定义的间隔:100ms。

  • max_interval (可选, Time):iBeacon 的最大发送间隔,单位为毫秒,范围从 20 到 10240。 将此值设置为大于 min_interval,可以让 BLE 硬件有更好的机会避免 与其他 BLE 传输发生冲突。默认为 iBeacon 规范中定义的间隔:100ms。

  • measured_power (可选, int):在距设备 1 米处测量到的 iBeacon RSSI。 此值用于在 iOS 中校准测距计算。设置此值的方法可在 Apple 的iBeacon 入门 PDF 中的 Calibrating iBeacon 标题下找到。范围为 -128 到 0。默认为 -59。

  • tx_power (可选, int):iBeacon 的发送功率,单位为 dBm。 取值为 -12、-9、-6、-3、0、3、6、9 之一。默认为 3dBm。ESP-Hosted 平台(如 ESP32-P4)不可用。

首先,您需要为 ESPHome 设置配置。只需复制上面的配置并 将 UUID 更改为唯一的值。例如,您可以复制这个随机生成的 UUID:

然后,只需编译并烧录 ESP32。

当一切设置正确时,您应该能够在您选择的 iBeacon 扫描器中看到它。在 iPhone 上, 这应该已经在蓝牙界面中可用(未测试),在 Android 上,您需要使用像 “nRF Connect for Mobile”这样的应用。

如果要使用这些信标来追踪手机的位置,您需要使用另一个应用。例如,我使用了 owntracks 的指南让家庭自动化系统 知道我在家里还是外出。另一个不错的 Android 应用是 Beacon MQTT。 它可以同时与多个信标配合使用。