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):
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
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
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
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.
Respostas:
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.
fonte
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.
fonte
millis() - offset
o mesmo resultado (+/- alguma deriva) para todos os Arduinos envolvidos. Ooffset
valor 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.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.
fonte
Solução de baixa tecnologia.
O transmissor envia seu sinal de relógio sob comando.
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.
fonte