0

私は Bluetooth プロトコルを研究しており、いくつかのデバイスから dBm で RSSI を読み取る位置システムを実装しています。システムは、既知の緯度と経度を持つ 3 つの固定局と移動局で実装されます。ポジショニングは、各フィックス ステーションから dBm で受信した電力と通常のポジショニング アルゴリズムを使用して、モバイル ステーションで実行されます。

システムの効率を上げるために、Bluetooth デバイスのいくつかのパラメータを変更する必要があります。このパラメーターは次のようになります。

  • 問い合わせへの応答時間を短縮するために、修正ステーションの時間をスキャンします。

  • 選択したデバイス (3 つの固定ステーション) からのみ問い合わせに応答するためのアクセス コードを問い合わせます。

  • 他の何人か。

使用されているテクノロジに応じて、これを行うために使用できるシナリオがいくつかあります (一部は制限されています)。

  • Linux OS のステーション (パラメーターを変更しても問題ありません)、Android のモバイル ステーション (通常は Bluetooth ライブラリに機能があるようですが、Bluetooth 設定の変更は困難または不可能です) を修正します。参照: http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html

  • Linux OS を実行しているすべてのステーション、およびモバイル ステーションで C++ を実行しています (ステーションを修正するためのシェル スクリプト hcitool から実行して設定を変更するのは簡単なようですが、リンクの dBm で必要な値で RSSI を取得するために C++ でソース コードを実装するのは難しいようですステーションをモバイル ステーションに固定します)。

  • 厄介な方法。Linux OS とシェル スクリプトを実行しているすべてのステーション、シェル スクリプトの下で実行しているモバイル ステーションは、問い合わせ後に hcidump の出力リダイレクトから RSSI の値を解析します。

このシナリオに関連する有益な情報を見つけるのは非常に難しいようです。おそらく、あなたの誰かが最良のシナリオを選択し、どのように実装すべきかを説明するのを手伝ってくれるでしょう.

(何かがより良い方法で説明されていない場合は申し訳ありません..私の英語はひどいです..)

ありがとう。

4

1 に答える 1

0

申し訳ありませんが、あなたが書いたすべてに従わなかったのですが、最初のステップは、固定ステーションのHCI層にたどり着くことだと思います。これは非常に簡単に実行でき、かなりの制御が可能です。

おっしゃるように、hcitoolは非常に便利ですが、使用するツールや言語は関係ありません。どの言語からでもHCIコマンドにアクセスできます。

たとえば、ALIXボックスのVoyageLinuxでこのようなことをしました。VoyageはDebianベースなので、BlueZ、PyBluez、Pythonのロードに問題があります。Pythonを使用すると、必要に応じて後でC++に変換できるソリューションのプロトタイプを簡単に作成できます。(詳細はこちら。)

ただし、これは単なる例です。HCIレイヤーで取得できる限り、使い慣れたスタックを使用してください。(HCIレイヤーを通過するには、特定のチップセットを操作し、Bluetoothチップセットにコードを直接ロードする必要があります。)

モバイルデバイスでは、実際の実装の可能性を考えている場合、厳しく制限される可能性があります。これがラボ専用の場合は、標準のBluezスタックを使用するルート化されたAndroidデバイスを入手する必要があります。その後、固定デバイスと同様に、HCIインターフェイスで入手できます。結局のところ、Androidは単なるLinuxなので、rootがあればやりたいことができます。

于 2012-04-15T19:47:46.160 に答える