返回
探索BLE低功耗蓝牙通讯的Python奥秘:Windows系统下的BLE设备连接与通讯
后端
2023-06-20 05:40:42
通过 Python 和 Bleak 解密 BLE 低功耗蓝牙通信
引言
踏入物联网 (IoT) 世界的激动人心之旅时,了解低功耗蓝牙 (BLE) 技术至关重要。凭借其低功耗、低成本和广泛兼容性,BLE 已成为连接设备和实现无线通信的行业领先解决方案。对于 Windows 系统下的开发人员,Python 和 Bleak 模块为您开启了一条捷径,轻松解锁与 BLE 设备的通信奥秘。
做好准备:安装和准备
-
Python 和 Pip: 确保您的计算机已安装 Python 和 Pip。如果没有,请访问官方网站下载并安装。
-
安装 Bleak: 在命令提示符中,使用 Pip 安装 Bleak 模块:
python -m pip install --upgrade pip
pip install bleak
- 准备 BLE 设备: 准备好兼容的 BLE 设备,并确保将其与您的计算机配对。
与 BLE 设备建立连接
- 扫描 BLE 设备: 使用 Bleak 的
discover()
函数扫描附近可用的 BLE 设备:
import asyncio
async def main():
devices = await bleak.discover()
for d in devices:
print(d)
asyncio.run(main())
- 连接 BLE 设备: 找到目标设备后,使用
connect()
函数建立连接:
async def main():
address = "00:11:22:33:44:55"
client = bleak.BleakClient(address)
await client.connect()
asyncio.run(main())
与 BLE 设备通信
- 读取数据: 使用
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())
- 写入数据: 使用
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 的探索之旅,连接设备、自动化流程并享受低功耗蓝牙技术带来的便利。
常见问题解答
-
Python 的哪个版本与 Bleak 兼容?
- Bleak 支持 Python 3.6 或更高版本。
-
如何检查 Bleak 是否已正确安装?
- 在命令提示符中运行
pip show bleak
,如果列出了模块信息,则安装成功。
- 在命令提示符中运行
-
如何获取 BLE 设备的特征和服务?
- 使用
get_services()
和get_characteristics()
函数获取设备的特征和服务信息。
- 使用
-
我可以使用 Bleak 与多个 BLE 设备同时通信吗?
- 是的,您可以通过创建多个 BleakClient 实例实现这一点。
-
Bleak 支持哪些 BLE 安全协议?
- Bleak 目前支持 SM1、SM2 和 SM4 安全协议。