Comunicação entre 2 Arduinos ambos com Ethernet

Bom dia, já a algum tempo que frequento o fórum mas apenas como leitor. Venho colocar algumas questões e pedir ajuda para um projecto que eu tenho em mente, vou descrever o que pretendo fazer:

Quero fazer um cronometro para usar em corridas de ponto a ponto, “inicio longe do fim” e registar os tempos de cada descida com melhor tempo etc… agora pergunto, qual será a melhor opção para fazer isso visto que a comunicação via RF não dá devido a distância, eu pensei num arduino no inicio com ethernet ligado a um router 3g e ligado a uma foto célula, no fim outro arduino com ethernet e com a respectiva foto célula , o arduino do inicio enviava para o arduino do fim através da web a informação para ele começar a contar na chegada ele parava de contar e apresentava o tempo numa página html.

É possível fazer assim? Agradeço a vossa ajuda

Obrigado

Não.

Estás a assumir que a internet funciona à velocidade da luz quando na realidade é bastante mais lenta. Basta fazeres um traceroute a um site que julgas estar no mesmo país que tu e muitas vezes o teu pedido vai passar pelos Estados Unidos ou China, etc, etc... Logo a opção de usar a internet para algo em tempo real é irrealista uma vez que não garantes o mesmo tempo de comunicação de cada vez que envias os dados pela internet. Tens também o problema (que a mim me parece bastante grande), de garantir que o sistema fica a funcionar durante o tempo da corrida. Quanto tempo estamos a falar?

Uma opção... que não é necessariamente correcta ou perfeita seria sincronizares os relógios dos Arduinos pela internet e o que seria enviado era o tempo em que uma corrida iniciou. No entanto, isto tem o problema de provares que os relógios estão sincronizados quando ligados em duas localizações diferentes. Aliado a isso tens o tempo de processamento do Arduino que também introduz distorcões no tempo que as coisas realmente demoram. No entanto, esta opção tem o benefício de ser independente da comunicação. Ou seja, o tempo que é registado como início da corrida pode ser comunicado para a meta e comparado com o tempo que está do outro lado. É apenas vital que os relógios (terias de arranjar um RTC tipo o DS3231) no início e fim estão sincronizados.

Isto também depende da prova e orçamento em questão... A prova é oficial e conta para alguma coisa ou é apenas para entreter num sábado à tarde ou manhã de Domingo?

Desde já agradeço a sua ajuda, o tempo da corrida podem ser alguma horas mas aí eu acho que não tem problema pois tenho acesso a baterias bastante grandes que dão alguma autonomia, como 2ª opção um carro no início e outro no fim a servir de apoio a instalação e da mesma forma fornecer energia.

O delay que fala tem razão podem existir diferenças de tempo devido a comunicação, os tempos não têm mesmo que ser a milésima de segundo com um grau de exactidão perfeito desde que o erro seja admissível serve bem, como disse e bem não é nada oficial, é para facilitar as coisas e tornar um pouco mais profissional a cronometragem.

o orçamento visto que é para um grupo usar e divido por todos caso fique a funcionar como previsto não tem grande problema.(dentro do amadorismo)

a corrida é feito um de cada vez, do tipo: arranca o primeiro começa a contar, chega ao fim contou o tempo e apresentou, de seguida arranca o nº dois e assim por diante.

Deu para perceber?

a corrida é feito um de cada vez, do tipo: arranca o primeiro começa a contar, chega ao fim contou o tempo e apresentou, de seguuida arranca o nº dois e assim por diante.

fiz me entender?

Ou seja, a cada momento, apenas existe um corredor em pista.

Eu não sei qual será um erro admissível para os concorrentes, isso terás de ser tu a decidir. A vantagem do método dos relógios sincronizados é a de que ambos estarão mais ou menos independentes um do outro e o erro de medida poderá ser menor.

O custo pode ainda ser jeitoso... dois arduinos, uma ligação à internet, dois RTCs... o problema está mesmo na ligação à internet. Quando eu referi que algo podia falhar referia-me mesmo à ligação/velocidade do que propriamente à alimentação já que a alimentação será o mais fácil de conseguir.

Outra sugestão que poderá resultar, se bem que será talvez mais carota seria fazer a ligação com shields GSM. Ou seja, quando a corrida estivesse para começar, um arduino "ligava" para o outro e isso seria o começo da prova. Estudando como funciona o shield GSM, poderá até ser interessante criar uma luzinha para o Arduino que regista o inicio da prova dar também o sinal de partida (um beep ou luzinha).

Mandar uma SMS não é solução porque, como certamente já experimentaste, as SMSs não são garantidas que cheguem o mais rápido possível, mesmo em alturas normais como um sábado ou domingo de manhã.

Sim a cada momento só existe 1 em pista, vou ver a solução GSM parece-me melhor que a internet pois não tenho que ter assinatura de banda larga, e neste caso tinha que ter duas internet uma na partida e outra na chegada.

Já me foram dadas algumas ideias bastante úteis, vou preparar o que necessito para começar a desenvolver o projecto e depois vou postando os resultados,

bubulindo obrigado pelas dicas.

No entanto estou aberto a novas opiniões se for para melhorar não hesitem

Assim de repente não vejo mais soluções a não ser com um rádio dedicado que segundo dizes não é passível de ser utilizado.

Pode ser que haja mais opiniões aqui.

Consegues ligar ambos os arduinos(o que marca o inicio e o que marca o de fim) por rede? Isto é a distancia entre eles é de quanto? Se conseguires uma forma poderia ser os arduinos apenas fariam um get a uma pagina em PHP no qual o servidor do PHP marcava a hora a que foi feito.Desta forma nao precisavas de ter relogios locais em cada arduino, mas claro esta que a precisao do tempo medido tem variantes(tempo de propagaçao, processamento do arduino...) mas mesmo assim axo que isto seria o mais proximo do que podes alcançar. Tambem nao sei ate onde em termos de exactidao o PHP pode marcar o tempo ...

Boas Hugo, eu conseguiria ligar ambos tinha que ter 2 pontos de rede um no início outro no fim, pelo menos era a minha ideia, eu em páginas web é servidores etc não tenho muita experiência daí não perceber o que é um Get nem php, a distância pode variar 800 metros, 2 kms depende da prova. Tem que ser sempre uma comunicação a usar as redes móveis.

Secalhar o melhor método ainda é o que o bubulindo disse... mais prático e mais simples, o arduino do inico envia a hora que partiu para o arduino da chegada esse quando chega subtrai a hora de chegada a hora de partida é ficamos com o tempo percorrido. Comunica de seguida para o arduino da partida que pode arrancar mais um. Parece me bem, que achas?