3

rf24 ラジオのパイプ アドレスを効率的に調べる方法があるかどうかを調べています。2 つの無線が通信するには、それらが同じチャネル上にあり、同じ読み取りパイプ アドレスと書き込みパイプ アドレスを持っている必要があります。

今考えられる唯一の方法は、ブルート フォースを使用することです。検索回数を減らす最も簡単な方法は、少なくともラジオ チャンネルを知ることです。これは簡単な部分だと思います。理論的には (推測では)、「検索」ラジオを正しいチャンネルに設定し、「聞く」だけに設定してから、次から次へとアドレスを試すことができました。しかし、アドレスは任意の 40 ビット 16 進数値になる可能性があるため、これは非効率的です。したがって、2^40 個のキーが考えられます。「リッスン」アドレスを見つけるために、一度に 2 週間も費やしたくありません。

より良い方法はありますか?シグナルをチャネルに送信し、そのチャネルで使用可能なすべてのパイプ アドレスを取得する方法はありますか? 基本的に私の方法以外は何でも。

編集1:

次のようなスキャナーを変更する方法があるのではないかと思います:特定のチャネルを見つけてから、アドレスを見つけます。nRF24L01(+) 仕様によると、「パケットには、プリアンブル、アドレス、パケット制御、ペイロード、および CRC フィールドが含まれています」。これにより、可能なアドレスの数が非常に少なくなります。

4

3 に答える 3

4

または、次の操作を実行できます。

device/node-address は 5 バイト eq として指定されていますが、40ビット、最初のバイトだけ指定できます。この場合、残りの 4 バイトがペイロードの一部になります。

次に、2^40 ではなく 256 キー (2^8) だけをリッスンする必要があります。

于 2016-11-03T22:12:53.190 に答える
0

私は自分の答えを見つけたと思います。

  • さまざまなソースからチャネル内のすべてのアドレスを表示するために、(私の質問の編集で述べたように) ペイロード パケットにはパイプ アドレスが含まれているため、利用可能なすべてのパケットを受信しました。そのためには、受信機を「無差別モード」にする必要があります。問題は、nRF24L01 がそれ​​をサポートしていないことです。

  • ここで説明されているnRF24L01で「エラーが発生しやすい」パケットスニッフィングを行う方法があります:http://yveaux.blogspot.nl/2014/07/nrf24l01-sniffer-part-1.html

  • 「プロミスキャス モード」をサポートし、パケット スニッフィングを可能にする受信機 (この場合はトランシーバー) は esp8266 http://wp.dejvino.com/2015/02/how-to-use-an-esp8266-a-です。 jumpstart-tutorial/

于 2016-07-09T18:20:32.137 に答える
0

大きな注意点として、私は nRF24L01 を使用したことがなく、データシートをざっと読んだだけなので、私が言っていることはナンセンスかもしれません.


プロジェクトに「任意の」パイプアドレスを使用できるようにしたいが、デバイスをネットワークに簡単に「委託」できるようにしたいようです。あなたが一度に取り組もうとしている分野は 3 つあります。

  1. パイプ アドレス解決 (および場合によっては選択)
  2. チャネルの選択
  3. ネットワークの検索と参加。

私が仮定しようとしているもの:

  • パイプ アドレスの実際の値を選択することは範囲外です。

推奨事項

私はあなたをお勧めします:

  • ネットワーク情報のアドバタイズに使用する特別な (または特別なセットの) パイプ アドレスを選択します (たとえば、0xCAFEF00D など)。
  • 読み取り専用の方法で、単一のチャネルに接続するために必要な情報を定期的にアドバタイズ (つまりビーコン) します。たとえば、これはビーコン ノードが読み取っているパイプ アドレスをアドバタイズします。
  • 「参加している」ノードにこの情報をリッスンさせて、書き込み先のアドレスを見つけます。
  • ノードが参加すると、ノードに書き戻すために必要な情報が含まれている必要があります。おそらく、ビーコンと参加ノードが使用する代替パイプ アドレスのセットをネゴシエートする別のネゴシエーションがここにあるはずです。
  • 複数のチャネルを利用するように実装を拡張します (おそらくデータのみ、またはデータとネットワークの両方の管理)。

複数のチャネル

主にマルチパス干渉を避けるために、複数のチャネルを使用することが賢明です。ただし、通常、ネットワーク管理を複数回実行する必要があるというトレードオフが伴います (つまり、上記の「ネットワークの検索、接続のネゴシエーションなど」のプロセス全体)。最初に 1 つのチャネルで何かを動作させることをお勧めしますが、複数のチャネルの問題を念頭に置いてください。複数のチャネル機能を開始したら、ネットワーク管理用のチャネルのサブセット (または 1 つだけ) をもう一度用意して、検索プロセスを簡素化することをお勧めします。

于 2016-07-05T14:26:23.910 に答える