You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CircuitPython中修改Circuit Playground Bluefruit的蓝牙广播名称

解决Circuit Playground Bluefruit蓝牙自定义名称不生效的问题

核心原因

ProvideServicesAdvertisement默认不会主动将设备名称纳入广播数据,直接设置complete_name或short_name无法触发名称字段的广播,导致设备搜索时仍显示默认名称。

可行解决方案

方法一:显式添加名称字段到广播

通过手动添加CompleteName元素,强制让广播包含自定义名称:

from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement, CompleteName
from adafruit_ble.services.nordic import UARTService

ble = BLERadio()
uart = UARTService()
advertisement = ProvideServicesAdvertisement(uart)

# 设置自定义名称,建议添加编号区分多设备
advertisement.complete_name = "CPB-001"
# 禁用短名称避免冲突(可选)
advertisement.short_name = None
# 关键步骤:将名称元素加入广播数据列表
advertisement.data.append(CompleteName())

ble.start_advertising(advertisement)
while True:
    # 后续可添加连接后的UART数据处理逻辑
    pass

方法二:使用基础广播类结合服务UUID

如果方法一仍有问题,可改用基础Advertisement类,同时指定UART服务UUID确保设备能被识别:

from adafruit_ble import BLERadio
from adafruit_ble.advertising import Advertisement
from adafruit_ble.advertising.standard import CompleteName
from adafruit_ble.services.nordic import UARTService

ble = BLERadio()
uart = UARTService()

advertisement = Advertisement()
# 设置自定义名称
advertisement.complete_name = "CPB-002"
advertisement.data.append(CompleteName())
# 添加UART服务UUID,让设备被识别为UART蓝牙设备
advertisement.service_uuids.append(uart.uuid)

ble.start_advertising(advertisement)
while True:
    if ble.connected:
        # 连接后的业务逻辑
        pass

额外优化建议

  • 自动生成唯一名称:利用设备内置UUID生成唯一标识,避免手动编号出错:
    import board
    # 提取UUID后4位作为设备唯一编号
    device_suffix = str(board.UUID)[-4:]
    custom_name = f"CPB-{device_suffix}"
    
  • 名称长度限制:完整名称最多31字符,短名称最多10字符,超出会被自动截断。
  • 清除蓝牙缓存:部分设备会缓存旧蓝牙名称,修改后需清除缓存再重新搜索测试。

内容的提问来源于stack exchange,提问作者erik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:22:46