如何通过 BLE 传输数据?
How to stream data via BLE?
我目前正在评估Maxim Integrated的电路板MAXREFDES100#。作为我论文的一部分,我想研究是否有可能使用 BLE 进行数据流。
supplied software功能齐全,已经可以传输数据了。当然,只有较长时间段内的较小数据包,例如温度或预先计算的心率值。我知道 BLE 不适合并且没有被设计为连续传输数据。尽管如此,我还是想尝试通过 BLE 接口传输 ECG 原始数据。为了检查我的数据是否及时完整正确地到达(心电图数据的先决条件),我开发了以下测试设置:
目前,我将一个正弦波的数据存储到一个大的FIFO中,并将20字节的正弦数据包传输到一个特性中。到目前为止,一切都很好。我使用 Android 设备和 BLE 嗅探器捕获数据包并检查正弦波是否有任何中断。下图取自更长时间的测量:(我已经测试了我的 FIFO,正弦数据是完整的,没有任何中断):这是我的 Android 和我的 BLE Sniffer 的捕获:数据包丢失。
正弦和频谱图图像
进一步的测量表明错误不是按顺序发生的,它们总是可以在不同的时间发现。 (Fifo 实现必须正确)
正弦和频谱图图像 2
由于我的 phone 和我的 Adafruit BLE 嗅探器在同一个地方有相同的错误,板端的数据包一定是损坏的。我怀疑它们在某些协议级别丢失(可能是 GAP?)。有趣的是,错误影响至少 200 个后续字节(256 字节数据是一个完整的正弦)。这意味着每 20 字节至少需要 10 个数据包才能获得这样的图形。
- 通过BLE接口连续发送数据有哪些选择?
- 是否可以不用GATT/ATT直接通过L2CAP发送数据?
- 是否还有更多允许数据流传输的无线低功耗协议? (所以为了完整性和时间顺序的正确性,需要像TCP这样的确认)
最好的问候,Emin
- What options are there for continuously sending data via the BLE interface?
- Is it possible to send the data directly via L2CAP without GATT/ATT?
BLE v4.1 引入了 LE Connection-Oriented Channels,这是一种无需 GATT/ATT 即可通过 L2CAP 直接发送数据的方式(想想网络套接字)。另见蓝牙核心规范卷。 3 A 部分第 3.4 节
您使用的开发板有一个似乎支持 BLE v4.1 的 EM9301 BLE 芯片。但是,您使用的 mbed 库不允许您使用它们。请参阅 here,您有一个用于 connect/disconnect 回调和 GATT 特征的接口 read/write/notification。与 LE 面向连接的通道无关。
我目前正在评估Maxim Integrated的电路板MAXREFDES100#。作为我论文的一部分,我想研究是否有可能使用 BLE 进行数据流。
supplied software功能齐全,已经可以传输数据了。当然,只有较长时间段内的较小数据包,例如温度或预先计算的心率值。我知道 BLE 不适合并且没有被设计为连续传输数据。尽管如此,我还是想尝试通过 BLE 接口传输 ECG 原始数据。为了检查我的数据是否及时完整正确地到达(心电图数据的先决条件),我开发了以下测试设置:
目前,我将一个正弦波的数据存储到一个大的FIFO中,并将20字节的正弦数据包传输到一个特性中。到目前为止,一切都很好。我使用 Android 设备和 BLE 嗅探器捕获数据包并检查正弦波是否有任何中断。下图取自更长时间的测量:(我已经测试了我的 FIFO,正弦数据是完整的,没有任何中断):这是我的 Android 和我的 BLE Sniffer 的捕获:数据包丢失。
正弦和频谱图图像
进一步的测量表明错误不是按顺序发生的,它们总是可以在不同的时间发现。 (Fifo 实现必须正确)
正弦和频谱图图像 2
由于我的 phone 和我的 Adafruit BLE 嗅探器在同一个地方有相同的错误,板端的数据包一定是损坏的。我怀疑它们在某些协议级别丢失(可能是 GAP?)。有趣的是,错误影响至少 200 个后续字节(256 字节数据是一个完整的正弦)。这意味着每 20 字节至少需要 10 个数据包才能获得这样的图形。
- 通过BLE接口连续发送数据有哪些选择?
- 是否可以不用GATT/ATT直接通过L2CAP发送数据?
- 是否还有更多允许数据流传输的无线低功耗协议? (所以为了完整性和时间顺序的正确性,需要像TCP这样的确认)
最好的问候,Emin
- What options are there for continuously sending data via the BLE interface?
- Is it possible to send the data directly via L2CAP without GATT/ATT?
BLE v4.1 引入了 LE Connection-Oriented Channels,这是一种无需 GATT/ATT 即可通过 L2CAP 直接发送数据的方式(想想网络套接字)。另见蓝牙核心规范卷。 3 A 部分第 3.4 节
您使用的开发板有一个似乎支持 BLE v4.1 的 EM9301 BLE 芯片。但是,您使用的 mbed 库不允许您使用它们。请参阅 here,您有一个用于 connect/disconnect 回调和 GATT 特征的接口 read/write/notification。与 LE 面向连接的通道无关。