Auswahl der drahtlosen Technologie für eine möglichst geringe Verzögerung

10

Ich entwerfe ein Pub-Quiz-Projekt, bei dem der Schiedsrichter ein Signal gibt und mehrere Spieler ihre Knöpfe drücken. Der erste, der pusht, gewinnt das Recht, eine Antwort zu geben.

Ich möchte, dass alle Tasten (Schiedsrichter + X-Spieler) drahtlos sind. Da die besten Quizspieler innerhalb von 10 ms um das Signal auf eine Schaltfläche klicken können, ist es sehr wichtig, dass der Ping zwischen verschiedenen Schaltflächen sehr, sehr wenig variiert. Ich kann keine Spieler haben, die rufen "Mein Knopf ist verzögert!" Andererseits möchte ich keine teurere / komplexere Technologie als nötig einsetzen.

Also, was wäre die optimale drahtlose Technologie? Bitte teilen Sie Ihre Erfahrungen aus ähnlichen Projekten (oder nur theoretischen Kenntnissen :) mit. Folgendes habe ich bisher recherchiert (korrigieren Sie mich, wenn ich falsch liege):

  1. Bluetooth 4 LE (wie in RFduino) Vorteile: 3-6 ms Latenz (angekündigt), niedrige Energie Nachteile: Kosten, nicht mehr als 7 Tasten am Gerät

  2. Wi-Fi-Vorteile: 2 ms Latenz (ich habe gerade meinen Wi-Fi-Router gepingt), Dutzende von Tasten, wenn nötig Nachteile: Kosten, Stromhunger

  3. RF-Datentranceiver Vorteile: Keine Ahnung, die Kosten scheinen etwas geringer zu sein. Nachteile: Mehrere Tasten mit derselben Frequenz verursachen wahrscheinlich viel Rauschen

  4. Einfachste "Funkfernbedienung" Vorteile: Keine Verzögerung, da alles elektromechanisch ist, keine Daten Nachteile: Mehrere Tasten mit derselben Frequenz funktionieren nicht

Habe ich etwas verpasst? Ich freue mich über jede Anleitung.

Sergey Snegirev
quelle
Wie viele Tasten insgesamt?
Bigjosh
1
Die kleinstmögliche Anforderung ist 4, der Normalfall ist 8, alles andere wäre willkommen - ich möchte, dass es für einige Crowd-Unterhaltungsveranstaltungen sehr flexibel ist.
Sergey Snegirev
Die menschliche Reaktionszeit beträgt über 200 ms. Siehe humanbenchmark.com/tests/reactiontime/statistics ,
@ user31481 Na und? Menschen können eine Latenz unter 2 ms wahrnehmen. Siehe Links im Anhang: danluu.com/input-lag
Navin

Antworten:

6

Ich habe zuvor NRF24L01+mit Arduino drahtlose 2,4-GHz-Chipsatzmodule mit Arduino verwendet und fand sie großartig und supergünstig (~ 10 US-Dollar für 10 davon bei ebay!). Sie haben 3 Übertragungsmodi: 250 kbps, 1 Mbit / s und 2 Mbit / s. Der Bereich verringert sich entsprechend mit höherer Bitrate, aber auch die Zeit, die für das Senden einer Nachricht aufgewendet wird. Es gibt mehrere Arduino-Bibliotheken (z. B. RF24, Mirf, RadioHead) und Tutorials zur Verwendung der Module (siehe http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ). Sie verfügen außerdem über integrierte Mesh-Netzwerkmodi, die möglicherweise von Nutzen sind oder nicht.

Versionen mit einem RP-SMA-Antennenanschluss und einer angegebenen Reichweite von bis zu 1000 m sind ebenfalls für jeweils etwa 5 USD erhältlich. Ich würde empfehlen, mindestens eine davon für die Schaltfläche des Schiedsrichters zu verwenden, abhängig von der Reichweite, die Sie benötigen.

Laut Charles Hallard von hallard.me können die nicht verstärkten Chips im 250-kbit / s-Modus eine Sichtweite von 30 m erreichen , und ich habe dies in meinen eigenen Tests überprüft.

Nach Benutzer auf sporadischen diychristmas.org , nimmt 1432μs eine 32 - Byte - Nutzlast in 250 kbps - Modus das Senden von dem Beginn der Tx - Modus auf dem Sender zum Empfangen der vollständigen Nachricht auf Empfänger. Dies verringert sich im 1- Mbit / s-Modus auf 444 µs und im 2- Mbit / s-Modus auf 283 µs .

Angesichts dieser Statistiken liegen sie innerhalb einer Latenzzeit von 2 ms für das Auslösen, die für Ihre Anwendung geeignet ist, und sie verbrauchen sehr wenig Strom. Es liegt an Ihnen, das beste Gleichgewicht zwischen Latenz, Reichweite und Kosten zu finden.

Cortices
quelle
Danke! Was ist, wenn mehrere Tasten gleichzeitig gedrückt werden? Werden sie kollidieren und sich zB gegenseitig blockieren?
Sergey Snegirev
Nein, die Vernetzung dieser Chips ist für ihren Preis sehr ausgefeilt. Sie können Mesh-Netzwerke und mehrere Rx-Pipes gleichzeitig problemlos aushandeln und automatisch erneut senden, wenn der Empfänger den Empfang einer Nachricht nicht bestätigt.
Cortices
1
Diese EE.SE-Frage beschreibt, wie Sie mehrere Knoten wie in Ihrer Situation an dieselbe Empfangsadresse senden lassen können. Dann geht es einfach darum, anhand der Absenderadresse zu entscheiden, wer „gewonnen“ hat.
Cortices
1
Weitere hilfreiche Beispiele: arduino-info.wikispaces.com/nRF24L01-RF24-Examples
Rinden
1
Nur ein kleines Stück weiter oben, diese NRF24L01 + -Chips mit Antennen sind nicht original. Dies kann zu Problemen führen, wenn Sie versuchen, zwischen Klon und Original zu kommunizieren, und wenn Sie versuchen, dynamische Nutzlasten oder Shockburst zu verwenden. Außerdem ist dieser Wikispace-Artikel veraltet. Man sollte stattdessen die TMRh20-Bibliothek verwenden.
Avamander
3

Haben Sie darüber nachgedacht, Echtzeituhren zu verwenden? Sie können sie alle im Voraus synchronisieren und dann ein beliebiges drahtloses Protokoll verwenden. Sobald eine Taste gedrückt wird, suchen Sie nach dem Gerät, das den frühesten Zeitstempel meldet, und lassen nach Ablauf eines Fensters von einigen Sekunden wissen, dass es gewonnen hat. Ich würde in Betracht ziehen, WIFI (802.11) mit ESP8266s, RTCs zu verwenden und einen drahtlosen Zugangspunkt mitzunehmen.

Dies ist keine Antwort auf drahtlose Verbindungen mit geringer Verzögerung, macht sie jedoch überflüssig.

Kniebeugen
quelle
2
Gute Idee, aber Sie brauchen keine RTC. Sie können Arduinos zu Beginn synchronisieren, sodass millis() - offsetfür alle beteiligten Arduinos das gleiche Ergebnis (+/- etwas Drift) erzielt wird. Dies offsetist der Wert von local, millis()wenn ein Arduino das Sync-Signal vom Master-Arduino empfängt. Für ein Spiel, das ein oder zwei Stunden dauert, reicht es aus.
Die Verwendung von millis () kann dazu führen, dass die Geräte die Synchronisierung verlieren, da millis () nicht erhöht wird, wenn Interrupts deaktiviert sind.
Bobburner
1

Meiner bescheidenen Meinung nach ist es möglicherweise sogar billiger, wenn Sie IR oder eine andere Art von Licht verwenden, vorausgesetzt, Sie können die Sichtlinie sicherstellen. Sie können verschiedene Wellenlängen verwenden, um die Trennung der Signale sicherzustellen.

Igor Stoppa
quelle
1
Ich befürchte, dass "Sichtlinie" und "Pub-Quiz" nicht gut zusammenpassen. Aber danke, dass Sie es vorgeschlagen haben, ich werde mich mit IR-Technologie für andere Projekte befassen.
Sergey Snegirev
0

Low-Low-Tech-Lösung.

  1. Der Sender sendet auf Befehl sein Taktsignal aus.

  2. Der Empfänger muss nur erkennen, ob dieses Signal vorhanden ist.

Das Ganze kann auf HF oder Licht basieren - zum Beispiel kann eine der LED-Leuchten als Sender konfiguriert werden.

Alles sollte innerhalb von 1 ms gut sein.

dannyf
quelle