Escolhendo a tecnologia sem fio para o menor atraso possível


10

Estou elaborando um projeto de questionário de pub, em que o árbitro dá um sinal e vários jogadores apertam seus botões. O primeiro a pressionar ganha o direito de dar uma resposta.

Quero que todos os botões (jogadores X + do árbitro) sejam sem fio. Como os melhores jogadores de questionário podem clicar em um botão a 10ms do sinal, é muito importante que haja uma variação muito pequena no ping entre botões diferentes. Não posso ter jogadores gritando "meu botão está atrasado!" Por outro lado, não quero usar uma tecnologia mais cara / complexa do que o necessário.

Então, qual seria a tecnologia sem fio ideal para usar? Por favor, compartilhe sua experiência de projetos semelhantes (ou apenas conhecimento teórico :) Aqui está o que eu pesquisei até agora (me corrija se estiver errado):

  1. Bluetooth 4 LE (como no RFduino) Prós: latência de 3-6ms (anunciado), baixa energia Contras: custo, não mais que 7 botões no dispositivo

  2. Prós Wi-fi: latência de 2ms (acabei de conectar meu roteador wi-fi), dezenas de botões, se necessário Contras: custo, consumo de energia

  3. Tranceiver de dados de RF Prós: não sei, o custo parece ser um pouco menor Contras: vários botões na mesma frequência provavelmente criarão muito ruído

  4. Prós "Radio remote" mais simples Prós: atraso zero, pois é tudo eletromecânico, sem dados Contras: vários botões na mesma frequência não funcionam

Então, eu perdi alguma coisa? Agradeço qualquer orientação.


Quantos botões no total?
bigjosh

11
O menor requisito possível é 4, o caso normal é 8, qualquer coisa a mais seria bem-vinda - eu gostaria que fosse muito flexível para algum entretenimento da multidão.
Sergey Snegirev

O tempo de reação humano é superior a 200ms. Veja humanbenchmark.com/tests/reactiontime/statistics ,

@ user31481 E daí? Os seres humanos podem perceber a latência abaixo de 2ms. Veja os links no apêndice: danluu.com/input-lag
Navin

Respostas:


6

Eu já usei NRF24L01+módulos sem fio de chipset de 2,4 GHz com o Arduino antes e os achei ótimos e super baratos (~ US $ 10 por 10 deles no ebay!). Eles têm 3 modos de transmissão: 250kbps, 1Mbps e 2Mbps. O intervalo diminui de acordo com a taxa de bits mais alta, mas o tempo gasto no envio de uma mensagem também. Existem várias bibliotecas do Arduino (por exemplo, RF24, Mirf, RadioHead) e tutoriais para usar os módulos (consulte http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ). Eles também têm modos de rede em malha incorporados que podem ou não ser úteis.

Versões com um conector de antena RP-SMA e um alcance anunciado de até 1000m também estão disponíveis por cerca de US $ 5 cada. Eu recomendaria usar um desses botões para o botão do árbitro, pelo menos, dependendo do alcance que você precisa.

De acordo com Charles Hallard, do hallard.me , os chips não amplificados podem ter alcance de 30m na ​​linha de visão no modo 250kbps , e eu verifiquei isso nos meus próprios testes.

De acordo com o usuário esporádico no diychristmas.org , o envio de uma carga útil de 32 bytes no modo 250kbps leva 1432µs desde o início do modo Tx no transmissor até receber a mensagem completa no receptor. Isso diminui para 444µs no modo 1Mbps e 283µs no modo 2Mbps .

Dadas essas estatísticas, elas caem bem dentro de 2ms de latência para acionamento, adequadas para o seu aplicativo, e usam muito pouca energia. Depende de você encontrar o melhor equilíbrio entre latência, alcance e despesa.


Obrigado! E se vários botões forem pressionados ao mesmo tempo? Eles vão colidir e, por exemplo, bloquear um ao outro?
Sergey Snegirev

Não, a rede desses chips é muito sofisticada por seu preço, eles podem negociar redes mesh e vários canais Rx de uma só vez com alegria e reenviar automaticamente se o destinatário não confirmar o recebimento de uma mensagem.
Cortices

11
Esta pergunta EE.SE detalha como você pode fazer com que vários nós transmitam para o mesmo endereço de recebimento, como na sua situação. Então é simplesmente uma questão de pegar o endereço do remetente para decidir quem 'ganhou'.
Cortices


11
Um pouco de atenção, os chips NRF24L01 + com antenas não são originais, isso pode causar problemas ao tentar se comunicar entre o clone e o original e se você usar cargas úteis dinâmicas ou choque. Além disso, esse artigo do wikispace está desatualizado. Deve-se usar a biblioteca TMRh20.
Avamander 5/09/15

3

Você já pensou em usar relógios em tempo real? Você pode sincronizá-los com antecedência e usar qualquer protocolo sem fio. Depois que um botão é pressionado, você procura a unidade que relata o registro de data e hora mais cedo e, depois de uma janela de alguns segundos, avisa que ganhou. Eu consideraria usar WIFI (802.11) com ESP8266s, RTCs e levar um ponto de acesso sem fio.

Essa não é uma resposta para a conexão sem fio de baixa latência, mas elimina a necessidade.


2
Boa ideia, mas você não precisa de um RTC. Você pode sincronizar o Arduinos no início, fornecendo millis() - offseto mesmo resultado (+/- alguma deriva) para todos os Arduinos envolvidos. O offsetvalor local é millis()quando um Arduino recebe o sinal de sincronização do mestre Arduino. Para um jogo que dure uma ou duas horas será suficiente.

Usar millis () para isso pode fazer com que os dispositivos percam a sincronização, pois millis () não aumenta quando as interrupções são desativadas.
bobsburner

1

Na minha humilde opinião, pode ser ainda mais barato se você usar infravermelho ou algum outro tipo de luz, supondo que você possa garantir a linha de visão. Você pode usar diferentes comprimentos de onda para garantir a separação dos sinais.


11
Receio que "linha de visão" e "pub quiz" não andem bem juntos. Mas obrigado por sugerir, analisarei a tecnologia de RI para outros projetos.
Sergey Snegirev

0

Solução de baixa tecnologia.

  1. O transmissor envia seu sinal de relógio sob comando.

  2. O receptor só precisa detectar a presença desse sinal.

A coisa toda pode ser baseada em luz ou rf - por exemplo, uma das luzes led pode ser configurada como transmissor.

Tudo deve ficar bem dentro de 1ms.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.