Elegir tecnología inalámbrica para el retraso más bajo posible

10

Estoy redactando un proyecto de concurso de pub, donde el Árbitro da una señal y varios jugadores presionan sus botones. El primero en empujar gana el derecho de dar una respuesta.

Quiero que todos los botones (árbitros + jugadores X) sean inalámbricos. Dado que los mejores jugadores pueden hacer clic en un botón dentro de los 10 ms de la señal, es muy importante que haya una muy, muy poca variación en el ping entre los diferentes botones. No puedo tener jugadores gritando "¡mi botón está retrasado!" Por otro lado, no quiero usar tecnología más costosa / compleja de la necesaria.

Entonces, ¿cuál sería la tecnología inalámbrica óptima para usar? Comparta su experiencia de proyectos similares (o solo conocimiento teórico :) Esto es lo que investigué hasta ahora (corríjame si me equivoco):

  1. Bluetooth 4 LE (como en RFduino) Pros: latencia de 3-6 ms (anunciada), bajo consumo de energía: costo, no más de 7 botones para el dispositivo

  2. Wi-fi Pros: 2 ms de latencia (acabo de pinchar mi enrutador wi-fi), docenas de botones si es necesario Contras: costo, consumo de energía

  3. Transceptor de datos RF Pros: no sé, el costo parece ser un poco menor Contras: múltiples botones a la misma frecuencia probablemente crearán mucho ruido

  4. El "control remoto por radio" más simple Pros: cero retraso ya que todo es electromecánico, sin datos Contras: varios botones a la misma frecuencia no funcionarán

Entonces, ¿extrañé algo? Agradezco cualquier orientación.

Sergey Snegirev
fuente
¿Cuántos botones en total?
bigjosh
1
El requisito más pequeño posible es 4, el caso normal es 8, cualquier otra cosa sería bienvenida. Me gustaría que fuera muy flexible para el entretenimiento de la multitud.
Sergey Snegirev
El tiempo de reacción humano supera los 200 ms. Ver humanbenchmark.com/tests/reactiontime/statistics ,
@ user31481 ¿Y qué? Los humanos pueden percibir latencia por debajo de 2 ms. Ver enlaces en el apéndice: danluu.com/input-lag
Navin

Respuestas:

6

He usado NRF24L01+módulos inalámbricos de 2.4GHz con chipset Arduino anteriormente, y me pareció que eran geniales y súper baratos (¡$ 10 por 10 de ellos en eBay!). Tienen 3 modos de transmisión: 250 kbps, 1 Mbps y 2 Mbps. El rango disminuye en consecuencia con una tasa de bits más alta, pero el tiempo dedicado a enviar un mensaje también lo hace. Hay varias bibliotecas Arduino (por ejemplo, RF24, Mirf, RadioHead) y tutoriales para usar los módulos (consulte http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ). También tienen modos de red de malla incorporados que pueden o no ser de utilidad.

Las versiones con un conector de antena RP-SMA y un alcance anunciado de hasta 1000m también están disponibles por alrededor de $ 5 cada una. Recomendaría usar uno de estos para el botón del árbitro al menos, dependiendo del rango que necesite.

Según Charles Hallard de hallard.me , los chips no amplificados pueden obtener un rango de línea de visión de 30 m en modo de 250 kbps , y lo he verificado en mis propias pruebas.

Según el usuario esporádico en diychristmas.org , enviar una carga útil de 32 bytes en modo de 250 kbps toma 1432 µs desde el inicio del modo Tx en el transmisor hasta recibir el mensaje completo en el receptor. Esto disminuye a 444 µs en modo 1Mbps y 283 µs en modo 2Mbps .

Dadas estas estadísticas, se encuentran dentro de una latencia de 2 ms para la activación, adecuadas para su aplicación, y usan muy poca energía. Depende de usted encontrar el mejor equilibrio de latencia, rango y gasto.

cortezas
fuente
¡Gracias! ¿Qué pasa si se presionan varios botones al mismo tiempo? ¿Chocarán y, por ejemplo, se bloquearán?
Sergey Snegirev
No, la conexión en red de estos chips es muy sofisticada por su precio, pueden negociar redes de malla y múltiples tuberías Rx a la vez, y reenviarlas automáticamente si el receptor no acusa recibo de un mensaje.
cortezas
1
Esta pregunta de EESE detalla cómo puede hacer que varios nodos transmitan a la misma dirección de recepción, como en su situación. Entonces se trata simplemente de tomar la dirección del remitente para decidir quién 'ganó'.
cortezas
1
Ejemplos más votos: arduino-info.wikispaces.com/nRF24L01-RF24-Examples
cortezas
1
Solo un poco de atención, esos chips NRF24L01 + con antenas no son originales, puede causar problemas cuando intenta comunicarse entre el clon y el original y si intenta usar cargas dinámicas o explosión. Además, ese artículo de wikispace está desactualizado. Uno debería usar la biblioteca TMRh20 en su lugar.
Avamander
3

¿Has considerado usar relojes en tiempo real? Puede sincronizarlos todos con anticipación y luego usar cualquier protocolo inalámbrico. Una vez que se presiona un botón, buscará la unidad que informa la marca de tiempo más temprana y luego, una vez que haya transcurrido una ventana de unos segundos, infórmele que ganó. Consideraría usar WIFI (802.11) con ESP8266, RTC y llevar un punto de acceso inalámbrico.

Esta no es una respuesta a la tecnología inalámbrica de bajo retardo, pero elimina la necesidad de usarla.

Sentadillas
fuente
2
Buena idea, pero no necesitas un RTC. Puede sincronizar Arduinos al inicio, por lo que millis() - offsetda el mismo resultado (+/- alguna deriva) para todos los Arduinos involucrados. El offsetes el valor de local millis()cuando un Arduino recibe la señal de sincronización del maestro Arduino. Para un juego que dura una o dos horas será suficiente.
El uso de millis () para esto puede hacer que los dispositivos pierdan la sincronización, ya que millis () no se incrementa cuando las interrupciones están desactivadas.
Bobsburner
1

En mi humilde opinión, podría ser incluso más barato si usa IR u otro tipo de luz, suponiendo que pueda garantizar la línea de visión. Puede usar diferentes longitudes de onda para garantizar la separación de las señales.

Igor Stoppa
fuente
1
Me temo que la "línea de visión" y la "prueba de pub" no van bien juntas. Pero gracias por sugerirlo, buscaré tecnología IR para otros proyectos.
Sergey Snegirev
0

Solución de baja tecnología baja.

  1. El transmisor envía su señal de reloj a la orden.

  2. El receptor solo necesita detectar detectar la presencia de esa señal.

Todo puede ser rf o basado en luz, por ejemplo, una de las luces led puede configurarse como transmisor.

Todo debería estar bien dentro de 1ms.

dannyf
fuente