返回

探索BLE低功耗蓝牙通讯的Python奥秘:Windows系统下的BLE设备连接与通讯

后端

通过 Python 和 Bleak 解密 BLE 低功耗蓝牙通信

引言

踏入物联网 (IoT) 世界的激动人心之旅时,了解低功耗蓝牙 (BLE) 技术至关重要。凭借其低功耗、低成本和广泛兼容性,BLE 已成为连接设备和实现无线通信的行业领先解决方案。对于 Windows 系统下的开发人员,Python 和 Bleak 模块为您开启了一条捷径,轻松解锁与 BLE 设备的通信奥秘。

做好准备:安装和准备

  1. Python 和 Pip: 确保您的计算机已安装 Python 和 Pip。如果没有,请访问官方网站下载并安装。

  2. 安装 Bleak: 在命令提示符中,使用 Pip 安装 Bleak 模块:

python -m pip install --upgrade pip
pip install bleak
  1. 准备 BLE 设备: 准备好兼容的 BLE 设备,并确保将其与您的计算机配对。

与 BLE 设备建立连接

  1. 扫描 BLE 设备: 使用 Bleak 的 discover() 函数扫描附近可用的 BLE 设备:
import asyncio

async def main():
    devices = await bleak.discover()
    for d in devices:
        print(d)

asyncio.run(main())
  1. 连接 BLE 设备: 找到目标设备后,使用 connect() 函数建立连接:
async def main():
    address = "00:11:22:33:44:55"
    client = bleak.BleakClient(address)
    await client.connect()

asyncio.run(main())

与 BLE 设备通信

  1. 读取数据: 使用 read_gatt_char() 函数读取 BLE 设备中的数据:
async def main():
    address = "00:11:22:33:44:55"
    char_uuid = "12345678-9abc-def0-1234-56789abcdef0"

    client = bleak.BleakClient(address)
    await client.connect()

    data = await client.read_gatt_char(char_uuid)
    print(data)

asyncio.run(main())
  1. 写入数据: 使用 write_gatt_char() 函数将数据写入 BLE 设备:
async def main():
    address = "00:11:22:33:44:55"
    char_uuid = "12345678-9abc-def0-1234-56789abcdef0"

    client = bleak.BleakClient(address)
    await client.connect()

    data = b"Hello, BLE!"
    await client.write_gatt_char(char_uuid, data)

asyncio.run(main())

断开 BLE 设备连接

当不再需要与设备通信时,使用 disconnect() 函数断开连接:

async def main():
    address = "00:11:22:33:44:55"

    client = bleak.BleakClient(address)
    await client.connect()

    await client.disconnect()

asyncio.run(main())

结论

通过掌握 Python 和 Bleak 的强大功能,您已解锁了与 BLE 设备通信的无限可能性。踏上 IoT 的探索之旅,连接设备、自动化流程并享受低功耗蓝牙技术带来的便利。

常见问题解答

  1. Python 的哪个版本与 Bleak 兼容?

    • Bleak 支持 Python 3.6 或更高版本。
  2. 如何检查 Bleak 是否已正确安装?

    • 在命令提示符中运行 pip show bleak,如果列出了模块信息,则安装成功。
  3. 如何获取 BLE 设备的特征和服务?

    • 使用 get_services()get_characteristics() 函数获取设备的特征和服务信息。
  4. 我可以使用 Bleak 与多个 BLE 设备同时通信吗?

    • 是的,您可以通过创建多个 BleakClient 实例实现这一点。
  5. Bleak 支持哪些 BLE 安全协议?

    • Bleak 目前支持 SM1、SM2 和 SM4 安全协议。