我有一个小型BLE信标,配置为每1000毫秒发送一次iBeacon数据包。
在我的用例中,我想在每次发送时检测多个接收器上的信号。然而,无论我使用哪种接收设备和软件(电话,计算机,覆盆子),检测都不可靠。有时在2秒后,另一个时间5,6或其他时间检测到信号。似乎背后没有模式。
似乎有时候信号是在一个接收器上接收而不是在其他接收器上接收而信号在范围内!我正在测试的区域也没有问题"。
可能是什么问题?
答案 0 :(得分:0)
不会收到100%的传输信标包。造成这种情况的原因有很多,包括无线电噪声,数据包冲突和信道跳频。也就是说,安静的无线电环境中的典型检测率约为90%。
如果您在多个接收器上看到比这个低得多的速率,我会检查发射器。首先,使用你的一个设备来传输软件信标(Android和iOS有像Locate Beacon这样的免费应用程序。)如果你使用不同的设备传输获得更高的检测率,问题可能就是你的发射器。
一些可能的问题:
天线发出非常微弱的信号。 (当您获得检测并测试其接收的RSSI超过-60 dBm时测量接收到的RSSI)
发射机功率设置较弱。看看你是否可以配置更高。
在错误的渠道投放广告
在数据包发出之前广告已停止。尽量让广告客户保持至少2倍的传输速率,以确保至少有数据包丢失。
答案 1 :(得分:0)
I assume you use a large enough scan window for your scan interval so your receiver radio is actually turned on most of the time.
You could try to send advertising packets of the type ADV_NONCONN_IND (non-connectable and no scan response packet). That way if the receiver radio scans with 100% duty it should see the packet.
Otherwise if you use normal ADV_IND packets, then at least Android always waits for the SCAN_RSP packet before it sends anything to the scanning app. But if the are multiple scanners nearby, your peripheral can only respond to a single scanner's SCAN_REQ for each advertising packet. To avoid collisions of SCAN_REQ packets in the air, Bluetooth controllers also back off if they don't get a SCAN_RSP in return. If you use a BLE sniffer you can see all three kinds of packets and what happens when you have multiple scanners nearby.
Read the BLE Link Layer part of the Bluetooth Core specification for more details.