【问题标题】:Bluetooth protocol and implementing a position system with four devices蓝牙协议和实现一个有四个设备的定位系统
【发布时间】:2012-04-15 15:28:51
【问题描述】:

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

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

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

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

  • 其他一些。

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

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

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

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

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

(对不起,如果没有以更好的方式解释。我的英语很糟糕..)

谢谢。

【问题讨论】:

    标签: android c++ linux bluetooth core-bluetooth


    【解决方案1】:

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

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

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

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

    在移动设备上,您可能会受到严重限制:如果您正在尝试潜在的现实世界实施。如果这只是为了实验室,您应该获得使用标准 Bluez 堆栈的根植 Android 设备,然后,就像在固定设备上一样,您可以访问 HCI 界面。毕竟,Android 只是 Linux,所以如果你有 root 权限,你就可以做你想做的事。

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多