我完成了一个机器人蓝牙应用程序的实现。服务器端我使用 Windows 7 作为操作系统和 MS-BT-Stack,以及 C# 作为语言和“在手”-蓝牙库。
目标是在机器人处于范围内时通过蓝牙连接机器人。
就像扩展一样,我尝试读取信号强度以确定机器人的距离(估计值)。好吧,在谷歌搜索时(也在 stackoverflow 上搜索 ^^),我发现你不能用我用过的 BT-stack 做到这一点。从那以后,我试图找出一种解决方法来计算或估计信号强度(或距离)。
比如通过蓝牙发送一个字节,看看应答时间有多长。虽然由于时间不够我还没有实现,但有人认为这是个好主意吗?或者对这个问题有其他想法?
我非常感谢任何意见。
谢谢!
最佳答案
不,我认为这不是个好主意。您将无法根据响应时间获得有意义的距离估计值。 MAC 层和软件堆栈中有许多因素会引入可变性。
即使使用 RSSI 也不能很好地工作,因为
1) 室内 2.4GHz 的 RSSI 存在严重的多径问题,这意味着您可以离开并看到信号变强
2) 蓝牙具有功率控制反馈,两侧不断调整 Tx 功率以位于固定的黄金范围内。所以你离开,RSSI 瞬间下降,然后功率控制回路提高 Tx 功率以将 RSSI 保持在固定水平。
3) 蓝牙硬件通常具有低精度 RSSI 测量值,这意味着您只能获得粗略的测量值,而不是您可以准确依赖的测量值来获得良好的距离指标。
关于c# - Microsoft 蓝牙堆栈 RSSI 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10381503/