遅延を最小限に抑えるためのワイヤレス技術の選択


10

私はレフリーが合図を出し、複数のプレーヤーがボタンを押すという、パブクイズプロジェクトを起草しています。最初にプッシュした人が答えを出す権利を獲得します。

すべてのボタン(審判の+ Xプレーヤー)をワイヤレスにしたい。最高のクイズプレーヤーは信号から10ミリ秒以内にボタンをクリックできるため、異なるボタン間のpingの変動が非常に小さいことが非常に重要です。「ボタンが遅れる!」と叫ぶことはできません。一方、私は必要以上に高価で複雑な技術を使いたくありません。

SO、使用するのに最適なワイヤレス技術は何でしょうか?同様のプロジェクトからのあなたの経験を共有してください(または理論的な知識:)これが私がこれまでに調査したものです(私が間違っている場合は修正してください):

  1. Bluetooth 4 LE(RFduinoと同様)長所:3〜6ミリ秒のレイテンシ(広告)、低エネルギー短所:コスト、デバイスへのボタンは7つ以下

  2. Wi-fiの長所:2ミリ秒のレイテンシ(Wi-Fiルーターにpingを送信しただけ)、必要に応じて数十個のボタン短所:コスト、電力消費

  3. RFデータトランシーバー長所:知らない、コストは少し小さいようです短所:同じ周波数の複数のボタンは、おそらく多くのノイズを作成します

  4. 最も単純な「無線リモート」長所:すべて電気機械式であるため遅延がなく、データがない短所:同じ周波数の複数のボタンが機能しない

それで、私は何かを逃しましたか?どんな指導にも感謝します。


合計でいくつのボタンですか?
bigjosh 2015

1
最小要件は4で、通常のケースは8です。これ以上のことは歓迎されます-いくつかの群集エンターテインメントに非常に柔軟であって欲しいです。
Sergey Snegirev、2015

人間の反応時間は200ms以上です。参照humanbenchmark.com/tests/reactiontime/statistics

@ user31481だから何?人間は2ミリ秒未満の遅延を知覚できます。付録のリンクを参照してください:danluu.com/input-lag
Navin

回答:


6

私はNRF24L01+以前にArduinoでチップセット2.4GHzワイヤレスモジュールを使用したことがありますが、それらは素晴らしく、非常に安価であることがわかりました(ebayの10個で約10ドル!)。それらには、250kbps、1Mbps、および2Mbpsの3つの伝送モードがあります。ビットレートが高くなると、範囲はそれに応じて減少しますが、メッセージの送信に費やされる時間も減少します。複数のArduinoライブラリ(RF24、Mirf、RadioHeadなど)と、モジュールを使用するためのチュートリアルがあります(http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01を参照)。また、メッシュネットワーキングモードが組み込まれており、使用できる場合とそうでない場合があります。

RP-SMAアンテナコネクタと最大1000mのアドバタイズ範囲を備えたバージョンも、それぞれ約5ドルで入手できます。必要な範囲に応じて、少なくともこれらの1つをレフェリーのボタンに使用することをお勧めします。

hallard.meのCharles Hallardによれば、非増幅チップは250kbpsモード30mの見通し範囲を得ることができ、私自身のテストでこれを確認しました。

diychristmas.orgにユーザ散発によれば最大250kbpsモードでは32バイトのペイロードを送信すること1432μsをとる受信機に完全なメッセージを受信する送信機のTXモードの開始から。これは、1Mbpsモードでは444µs、2Mbpsモードでは283µsに減少します

これらの統計を考えると、トリガーに2ミリ秒のレイテンシ以内に収まり、アプリケーションに適しており、消費電力はほとんどありません。レイテンシ、範囲、費用の最適なバランスを決めるのはあなた次第です。


ありがとうございました!複数のボタンが同時に押された場合はどうなりますか?それらは衝突して、例えば互いにブロックしますか?
Sergey Snegirev、2015

いいえ、これらのチップのネットワーキングは価格の面で非常に洗練されており、メッシュネットワークと複数のRxパイプを喜んで一度にネゴシエートでき、受信者がメッセージの受信を確認しない場合は自動的に再送信します。
2015

1
このEE.SEの質問では、状況に応じて、複数のノードを同じ受信アドレスに送信する方法を詳しく説明しています。次に、送信者のアドレスを取得して誰が「勝つ」かを決定するだけです。
2015


1
少し注意してください。アンテナを備えたこれらのNRF24L01 +チップはオリジナルではありません。クローンとオリジナルの間で通信しようとした場合、およびダイナミックペイロードまたはショックバーストを使用しようとした場合に問題が発生する可能性があります。また、そのウィキスペースの記事は古くなっています。代わりにTMRh20ライブラリを使用する必要があります。
Avamander 2015

3

リアルタイムクロックの使用を検討しましたか?それらをすべて事前に同期化してから、任意のワイヤレスプロトコルを使用できます。ボタンを押すと、最も早いタイムスタンプを報告するユニットを探し、数秒のウィンドウが経過したら、勝ったことを通知します。ESP8266、RTCでWIFI(802.11)を使用し、ワイヤレスアクセスポイントを使用することを検討します。

これは低遅延ワイヤレスへの答えではありませんが、必要はありません。


2
いい考えですが、RTCは必要ありません。開始時にArduinoを同期できるためmillis() - offset、関係するすべてのArduinoに対して同じ結果(+/-ドリフト)が得られます。これoffsetは、millis()ArduinoがマスターArduinoから同期信号を受信するときのローカルの値です。1〜2時間続くゲームの場合は十分です。

割り込みが無効になっている場合、millis()は増加しないため、これにmillis()を使用すると、デバイスの同期が失われる可能性があります。
ボブスバーナー

1

私の控えめな意見では、視線を確保できれば、IRや他のタイプのライトを使用する方が安くなるかもしれません。異なる波長を使用して、信号を確実に分離できます。


1
「視線」と「パブクイズ」がうまく合わないと思います。しかし、それを提案してくれてありがとう、私は他のプロジェクトのためにIR技術を調べます。
Sergey Snegirev、2015

0

ローローテックソリューション。

  1. トランスミッタは、コマンドでクロック信号を送信します。

  2. 受信機はその信号の存在を検出する必要があるだけです。

全体は、RFまたはライトベースにすることができます。たとえば、LEDライトの1つを送信機として構成できます。

すべてが1ミリ秒以内に収まる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.