Answers:
BLE非常不适合甚至中等带宽的流(音频或视频),因为它被设计用于传输少量数据包和小型数据包,并且它们之间有很多睡眠时间。这就是为什么它被称为“低能耗”而不是“低能耗”的原因-与竞争标准相比,它减少了小数据包每比特的皮焦耳数量。其他标准大多使用更多的功率,不是因为它们的无线电效率较低,而是因为即使无线电通信量有相对较大的停顿,至少接收机也会不断加电,并且所传输的比特中的很大一部分不是有效载荷,而是开销-协议标头,校验和,甚至只是空白空间。BLE消除了大多数不必要的功耗。但是请注意,事实并非如此 当收发器处于活动状态时,可以神奇地提高其功耗。在进行视频传输时,收发器会不断通电。您将失去BLE的最大优势。
这种设计选择可以将开销减少到您想要的最低程度,而且还可以确保它本身没有内置的任何流传输功能,例如数据包重组,延迟确认和异步传输。实际上,您实际上没有任何内置功能,而BLE可以说是无与伦比的无线接口,除非nRF24和TI CC2x00。因此,您将需要在软件中(在微控制器或用户设备上)执行此操作,与使用专门用于硬件的协议(如Bluetooth 3.0 EDR或无线上网。
这导致有些反常理的想法,一旦您开始使用音频类型的数据速率或更高的数据速率,根据您的实现,低功耗蓝牙将比蓝牙3.0的效率低约2倍,而进入兆位范围时,它实际上是效率不如WiFi。这就是为什么存在WiFi的原因-可以说是无线范围,尽管如今两种标准的收发器非常相似。WiFi只是具有可选的MIMO和多样性。
因此,即使不考虑(至少对于视频而言)蓝牙施加的非常严格的带宽和范围限制,使用此方法也可能无法实现低功耗视频传输的目标。
我所有的测试最终都低于2000个八位位组/秒
先决条件:
我在Android <-> Linux&Bunget,Android <-> Linux&Bleno,Android <-> ST-Micro Nucleus + blueNRG之间进行了所有测试。运行GATT服务器的Linux和NUCLEO。Android主要运行GATT客户端。
Android-> GATT服务器通知/写入无响应的发送时间通常不能超过13毫秒。然后,超过13ms的数据包丢失。
Server-> Android NOTIFICATION / WRITE NO RESPONSE的发送时间不能超过15毫秒
这导致高达1000ms / 13ms-> 77次/秒(20个字节)= 1500个八位字节/秒。