如何理解BLE数据的Tx和Rx

本文详细解释了BLE(蓝牙低功耗)设备中BLETx和Rx在广播阶段、连接建立后的数据交互流程,涉及AdvInterval、AdvEvent、连接间隔(ConnectionInterval)等概念,并通过抓包数据展示了具体操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://www.cnblogs.com/someone-device/p/12213507.html

本文的设计的问题:

  • 理解BLE Tx和Rx的方式​

1. 广播阶段BLE设备的交互流程

还是以Heart Rate Sensor和手机间的交互为例,如下所所示:

2. 广播阶段的Tx和Rx交互方式

蓝色线表示Adv Interval,绿色表示Adv Event。

Heart Rate Sensor以Adv interval为间隔周期性的发送广播数据:

Adv interval = sleep + adv event

因此,只有在Adv Event期间才会有数据发送,其余时间都是sleep时间,

当手机收到广播时,会发送扫描请求,Heart

``` import ubluetooth from machine import Pin class BLE: def __init__(self, name): self.name = name self.ble = ubluetooth.BLE() self.ble.active(True) self.ble.irq(self.ble_irq) self.register() self.advertiser() print("已开启蓝牙广播") def connected(self): print("蓝牙已连接") def disconnected(self): print("蓝牙已断开连接") def ble_irq(self, event, data): if event == 1: print("蓝牙已连接") self.connected() elif event == 2: print("蓝牙已断开连接") self.advertiser() self.disconnected() elif event == 3: print("蓝牙已接收到数据") buffer = self.ble.gatts_read(self.rx) message = buffer.decode('UTF-8').strip() print("接收到的IP地址:", message) def register(self): NUS_UUID = '399421fd-d5cd-4455-ae24-19b7a9655001' # 确保UUID一致 RX_UUID = '399421fd-d5cd-4455-ae24-19b7a9655002' # 确保UUID一致 TX_UUID = '399421fd-d5cd-4455-ae24-19b7a9655003' # 确保UUID一致 BLE_NUS = ubluetooth.UUID(NUS_UUID) BLE_RX = (ubluetooth.UUID(RX_UUID), ubluetooth.FLAG_WRITE) BLE_TX = (ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY) BLE_UART = (BLE_NUS, (BLE_TX, BLE_RX,)) SERVICES = (BLE_UART, ) ((self.tx, self.rx,), ) = self.ble.gatts_register_services(SERVICES) def advertiser(self): name = bytes(self.name, 'UTF-8') # 确保设备名称被编码为UTF-8字节 self.ble.gap_advertise(100, b'\x02\x01\x02' + bytearray((len(name) + 1, 0x09)) + name) # 创建蓝牙实例 ble = BLE("ESP32_BLE") # 设置蓝牙名称为"ESP32_BLE"```代码有没有问题
最新发布
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值