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):
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
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
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
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.
Respuestas:
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.
fuente
¿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.
fuente
millis() - offset
da el mismo resultado (+/- alguna deriva) para todos los Arduinos involucrados. Eloffset
es el valor de localmillis()
cuando un Arduino recibe la señal de sincronización del maestro Arduino. Para un juego que dura una o dos horas será suficiente.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.
fuente
Solución de baja tecnología baja.
El transmisor envía su señal de reloj a la orden.
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.
fuente