0

我正在研究蓝牙协议并实现从某些设备读取以 dBm 为单位的 RSSI 的定位系统。系统将使用 3 个具有已知纬度和经度的固定站和一个移动站来实施。定位将在移动站上完成,从每个固定站接收到的功率(以 dBm 为单位)和典型的定位算法。

为了提高系统的效率,需要更改蓝牙设备的一些参数。这个参数可以是:

  • 修复站上的扫描时间,以减少响应查询的时间。

  • 查询访问代码以获得仅来自选定设备(我们的 3 个固定站)的查询的回答

  • 其他一些。

根据使用的技术,可以使用一些场景来做到这一点(其中一些是有限的):

  • 修复Linux操作系统的站(修改参数没问题),Android的移动站(似乎在它的蓝牙库上只有典型的功能,但蓝牙设置很难或不可能修改)。请参阅:http: //developer.android.com/reference/android/bluetooth/BluetoothAdapter.html

  • 所有在移动站上运行 Linux 操作系统和 C++ 的站(似乎很容易从 shell 脚本运行 hcitool 用于修复站修改我们的设置,但似乎很难在 C++ 上实现源代码来获得我们需要的链路 dBm 值的 RSSI将电台固定在移动台上)。

  • 恶心的方式。所有运行 Linux 操作系统和 shell 脚本的站,在运行在 shell 脚本下的移动站上,在午餐查询后从 hcidump 的输出重定向解析 RSSI 值。

似乎很难找到与此场景相关的有用信息。也许你们中的一些人可以帮助选择最佳方案并描述应该如何实施。

(抱歉,如果没有以更好的方式解释某些事情......我的英语很糟糕......)

谢谢。

4

1 回答 1

0

抱歉,我没有按照您写的所有内容进行操作,但我认为第一步是深入到固定站上的 HCI 层。这是相当简单的完成并给你相当多的控制。

正如您所提到的,hcitool 非常有用,但您使用什么工具或语言并不重要。您可以使用任何语言访问 HCI 命令。

例如,我在 ALIX 机器上使用Voyage Linux做了类似的事情。Voyage 是基于 debian 的,所以现在加载 BlueZ、PyBluez 和 Python 的问题。Python 让您可以轻松快速地制作解决方案原型,如果需要,您可以稍后将其转换为 C++。(更多在这里。)

但这只是一个例子——只要你能到达 HCI 层,就可以使用你喜欢的任何堆栈。(通过 HCI 层需要您使用特定的芯片组并将代码直接加载到蓝牙芯片组中。)

On the mobile device you might be severely limited: if you are trying for potential real world implementation. If this is just for the lab, you should get rooted Android devices that use the standard Bluez stack and then, like on the fixed devices, you can get at the HCI interface. Android is, after all, just Linux so you can do what you want if you have root.

于 2012-04-15T19:47:46.160 回答