Ajuda com Ethernet Shield - status não atualiza depois de 1 hora (Contador de pessoas)

Olá pessoal, sou novo aqui e estou precisando de uma ajuda.

Fiz um contador de pessoal (entrada e saída) utilizando um Arduino Mega, uma Ethernet shield e dois sensores de distância ultrassónicos. Ele está funcionando certinho só que depois de mais ou menos 1 hora ligado ele para de contar, mas se dermos um Ping no IP da ethernet ela está respondendo. Seria algum problema no código ou será que o defeito está nos sensores? Alguém poderia me ajudar? Alguém já teve esse problema? Segue código anexo...Contador_pessoas_com_rede_FINAL.ino

Desde já obrigado.

Exibições: 2021

Anexos

Responder esta

Respostas a este tópico

Francesco você sabe alguma coisa sobre uma função chamada destructor? Me parece que ele encerra algumas variáveis e restaura a memória toda vez que roda o loop evitando assim um overflow.

Fabricio, tive um problema com travando do arduino a cada dois dias e consegui resolver trocando pelo mega.

Se tiver um mega para testes.

Existe um tópico falando de Snubber, mas acredito não ser o seu caso.

http://labdegaragem.com/forum/topics/filtro-snubber

Olá Paulo, eu estou usando o Arduíno mega 2560 desde o começo e é o único modelo que eu tenho. Comprei 6 mega e 6 Ethernet shield e fiz os teste em dois e deu a mesma coisa, depois de uma hora ele para de funcionar e só volta quando quer. Mesmo assim valeu pela dica.

Pessoal tentei fazer o watchdog que o marco comentou e agora meu Arduíno está em loop infinito, só pica o LED do pino 13 e não deixa eu gravar mais nada nele. Como faço pra resolver isso e como que uso esse tal de watchdog? Será que perdi meu Arduíno Mega?

Fabricio.. não tenho como testar pois não possuo nenhum MEGA, mas olhando seu código notei que você utiliza varias vezes delay() que foram 7 e 4 vezes o delayMicroseconds(), lembro quando li sobre os timers de microcontrolador e o cara que escreveu livro falava que atrasos devem ser implementados com muita cautela pois no mesmo instante que ajuda ele pode acabar com o projeto.

E eu não entendi esta linha:

68  unsigned long duracao1 = pulseIn(echoPin1, HIGH);
69  int distancia1 = duracao1 / 58.2;

Se o pulseIn() é o tempo para o pino atingir o tal nível porque você divide logo abaixo por 58.2(de onde saiu este valor?) e atribui o valor desta conta de divisão a uma variável distancia1 que é comparada com a distancia estabelecida logo abaixo? E esta correto esta divisão ir para um int e não um float ou fazer um cast não sei!

Não acho que seja a solução correta o watchdog neste caso, visto que watchdog seria legal em caso de falha do hardware ou algo que comprometesse o firmware, porém no seu caso você sabe que esta tendo este problema, então você esta remediando e não resolvendo.

Tem que debugar e correr atras, se não tem conhecimento e ferramentas beleza, faz um #define DEBUG 1 e seta em alguns lugares um if ( DEBUG == 1) e coloca algumas coisas para escrever na serial principalmente perto dos delays, deixa ele funcionando e liga o Serial Monitor e vai acompanhando, se colocar nos lugares crucial você vai achar o problema.

Obrigado pelas dicas Cleiton, vou dar uma pesquisada de como fazer isso que você falou pois não sou um cara experiente em Arduíno, esse na verdade é meu primeiro contato e primeiro projeto. Quanto ao valor questionado sobre a divisão por 58.2 é para poder obter a distancia em metros, tel algo a ver com a velosidade do som.

Ontem eu removi a shield de rede e estou testando apenas na serial, mesmo assim ele travou mas não fez o auto reset do watchdog, é como se os sensores parassem de ler e não entram nos if (ex IF sensor=1, então faça isso) mas o loop continuasse na condição dos sensores serem igual a zero. Nessa condição ele não faz nada e confere tudo novamente. Algo esta fazendo os sensores pararem de medir a distancia depois de um certo tempo, mais ou menos 1 hora depois de ligado.

Quanto a usar float ou cast eu vou dar uma pesquisada pra saber qual é a condição de cada uma pra saber se esta certo usar ou não int.

Obrigado

Fabricio 

Como ficou seu projeto? Dê noticias.

Conforme tinha informado deixo meu relato da experimentação com uma configuração de Arduino Uno+Ethernet Shield+sensor DTH11 em comunicação com a plataforma ThingSpeak. Disponibilizo também o código fonte completo que pode ser base para outros projetos.

Vejam o relato aqui:

http://drbitblog.wordpress.com/2014/05/02/thingspeak-com-arduino-e-...

Saudações a todos

 

Alguém tem a biblioteca do whatchdog time ou o link para baixar ?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço