Go Down

Topic: Problema com W5100 Ethernet (Read 5799 times) previous topic - next topic

giova014

Quote
Tem que ser 100ohms ? Se usar 120ohms nao funciona ? Pq tenho de 120ohms, senao vou comprar de 100ohms amanha.
Use 100 Ohms.

Quote
Eu vou desoldar esses resistores que vieram e colocar esses, seguindo a pinagem que voce me passou
Se você está falando em dessoldar a rede resistiva 511, não o faça. Apenas acrescente os de 100 Ohms.

Quote
E outra coisa, como funciona o negocio do "keep alive" ??  Eh ele que resolve o problema de quando eu reinicio a energia ele reconecta automaticamente o arduino ?  Porque eh foda toda vez quando desligo e ligo a energia, eu tenho que ficar espetando o cabo em cada porta LAN do router ate ele ligar.

Tem alguma solucao isso ?
Não vou conseguir elaborar agora pois não estou em casa, mas assim que der lhe mostro.
Arduino!!

lcorbi

Maravilha!!

Muito obrigado por enquanto!!  :)

giova014

Para implementar o "Keep alive", deve alterar a biblioteca do W5100, que normalmente fica na pasta:

"C:\Program Files (x86)\Arduino\libraries\Ethernet\src"

No arquivo "EthernetServer.h" adicione na classe EthernetServer o protótipo do método:
Code: [Select]
static void keepAlive(uint32_t interval = 5000);

E no arquivo "EthernetServer.cpp", adicione a definição:
Code: [Select]
void EthernetServer::keepAlive(uint32_t interval){

static uint32_t lastKeepAlive = 0;

if (millis() - lastKeepAlive > interval) {
lastKeepAlive = millis();

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {
EthernetClient client(sock);

if (client.status() == SnSR::ESTABLISHED) {
W5100.execCmdSn(sock, Sock_SEND_KEEP);
}
}
}
}


No arquivo "Ethernet.cpp", dentro no método:
Code: [Select]
int EthernetClass::begin(uint8_t *mac_address, unsigned long timeout, unsigned long responseTimeout)
acrescente:
Code: [Select]
// Configurate timeout = 3,22 seconds
  W5100.setRetransmissionTime(512); //miliseconds * 10
  W5100.setRetransmissionCount(5);


Os três arquivos alterados estão em anexo para facilitar.

No seu código, normalmente no loop(), adicione antes de:
Code: [Select]
EthernetClient client = server.available();
A chamada do método:
Code: [Select]
server.keepAlive();

Em meus testes, o W5100 fecha as conexões travadas em dois momentos: quando falha ao enviar algum dado e usando o keep alive.
O problema do keep alive é que se você transmitir algo para os clientes logo após o invocar, o keep alive é "anulado", então são necessário testes.
Arduino!!

lcorbi

Muito obrigado! Tentarei isso e lhe informo.  :)

lcorbi

Opa giova014!!

Tudo bem ?

Comprei ontem os resistores de 100ohms e acabei de soldar. Funcionou perfeitamente!!!  \ :) /

Fiz do jeito que vc disse, foi perfeitamente!! E o legal eh que quando desligo a energia e volto novamente, ele reconecta automatico, sem precisar desplugar e plugar novamente.

Muito obrigado viu!! Vlw mesmo por essa dica!!!

Grande abssss!!!

jamaljamil

Funcionou. Instalei os dois resistores de 100r conforme mencionado acima. :)

leomuniz

Para corroborar: também funcionou comigo soldar os dois resistores de 100ohms.
Muito obrigado pela dica!

Em outros lugares da internet vi algumas pessoas sugerindo dessoldar o resistor de 510ohms - que é minúsculo - e soldar outros resistores no lugar. Se já tive dificuldade em soldar esses de 100ohms porque achei o espaço pequeno, imagina substituir o outro... sem chance.

Importante: esse shield chinês com resistor errado funciona corretamente no meu modem antigo da GVT (de 2011, eu acho). Quando troquei a internet de casa por NET, com um modem bem mais novo, ele parou de funcionar. Ou seja: se o resistor veio errado, vale soldar os resistores mesmo que esteja funcionando atualmente.



Ademilton

#22
Aug 22, 2017, 01:20 am Last Edit: Aug 22, 2017, 02:56 pm by Ademilton
Pra mim não funcionou, coloquei os resistores de 100 ohms e nada.....quando tendo logar o webserver com o IP da minha rede 192.168.0.121 ele antes logava mostravam as entradas analógicas flutuando, depois de 2 minutos aparecia na tela " Esta página Expirou ".
Agora não entra mais só aparece que Expirou.

Com a colocação dos resistores ficou pior ainda os LEDs nem acendem mais como antes......

Há aquele LED amarelo perto do AREF/GND fica aceso direto, na rede do meu vizinho ele só pisca de vez em quando mas não loga .......aparece também " Esta página expirou "


Vejam abaixo o meu relato detalhado da falha...

Ademilton

#23
Aug 22, 2017, 02:45 pm Last Edit: Aug 22, 2017, 03:47 pm by Ademilton
Estou com problemas no meu Shield W5100 + Arduino UNO R3

Carreguei o exemplo de webserver do Arduino, alterando somente o IP, inicialmente funcionou as portas Analógicas flutuando os valores, e após algum tempo ( 2min) as portas analógicas pararam de flutuar.
Consultei um amigo, ele me pediu para filmar os estados da placa e da tela do browser para ver.
Segundo ele há um problema, o LED amarelo próximo ao AREF/GND fica aceso direto, mesmo sem nenhum Sketch gravado nele.
Com um Sketch webserver gravado neles eu não estou conseguindo mais ver no browser da internet as portas Analógicas flutuarem, a mensagem agora é " A página Expirou ".
Comecei a procurar na internet algo para resolver ou que me desse uma luz, e num forum dizia : " se estiver acontecendo isto verifique a ponte resistiva próximo ao RJ45 de 49R9 ohms, se tiver em seu lugar uma ponte de 511 ao invés de 49R9 ou 510 faça o seguinte ( coloque 2 resistores de 100 ohms soldados entre os pinos 1 e 2 e 3 e 6 do conector RJ45 que o problema desaparece……eu fiz…mas não mudou nada piorou…..então retirei tudo novamente…
Em contato com o amigo que identificou a falha, eu mencionei à ele " Como posso saber se o problema está na Shield ou no Arduino" , ele falou: " Teste as portas Analógicas individualmente com um trimpot e veja seu funcionamento" eu testei com um Sketch de teste para portas analógicas e o resultado foi positivo a" as portas Analógicas estão funcionando perfeitamente no Arduino UNO.

Tentei na rede do meu vizinho com modem router da DLink o comportamento dos LEDs na Shield foi diferente mas também expirou a página.....

Os arquivos são:   os resistores de 100 Ohms e o ping no router do meu vizinho

Minha dúvida agora é: " Posso condenar a placa Shield W5100, estaria ela com defeito mesmo ou não?"


Façam contato comigo via Whatsapp (34) 993405248

Por favor me ajudem!!!

Apocalipse

giova014, parabéns pela dica. Salvou meu projeto. Estava já arrancando meus cabelos e sua dica foi matadora.    Funcionando perfeitamente!!!

Obrigado!!!!!

marquesvp

Ola.
Estava com um problema parecido com o relatado pelo CristianoRipi ao utilizar uma placa W5100.
Conectava normalmente no roteador principal porem nao conectava num outro usado como repetidor.
Verifiquei a rede resistiva conforme indicado. Está errada (511).
Soldei os dois resistores de 100 ohms conforme indicado pelo hugo007 e funcionou normalmente, com o exemplo webserver do arduino.
Obrigado hugo007.

Go Up