Caros amigos estou com um problema sinistro e acho que este post pode ser útil para muitos. Estou usando webserver com o Arduino UNO + Ethernet W5100. Inseri 3 termômetros DS18 Onewire e tudo funcionou perfeitamente. Conseguia acessar externamente meus termômetros, incluisive no celular.

Certo dia tudo parou de funcionar. Depois de alguns meses ralando descobri o problema por acaso!

Quando uso o conjunto Arduino UNO+W5100 conectado diretamente no meu modem da NET tudo funciona. Mas quando conecto através de um SWITCH TPLINK SF1008D ligado ao modem não funciona! Alguém sabe me explicar o motivo disso?? Preciso do Arduino funcionando num lugar bem distante do modem e o SWITCH é necessário. Desde já agradeço aos amigos desse FORUM

Exibições: 108

Responder esta

Respostas a este tópico

Tava tudo funcionando e vc ligou o roteador e parou ou estava tudo funcionado com o roteador e parou do nada ?

Tente trocar o cabo e trocar o switch.

Mais o cabo que o switch.

Só um palpite, mas do tempo do "cabo cross" que não existe mais, alguns aparelhos eram "auto detect" e com isso conseguiam se comunicar melhor com cabos ruins. Eles alternam as funções dos cabos (escolhem pares melhores).

A grande verdade é que o cabo de rede tem 8 pares mas pode funcionar com muito menos. Se vc desliga um inutil nada acontece. Se vc desliga um util... Ele não para!!! Por incrivel que pareça. Faça o teste (fizemos em sala de aula). A comunicação é feita em pares. Na falta de um deles o sinal fica totalmente desequilibrado, horrível, mas o TCP insiste em repetir os dados até que cheguem. A velocidade cai a 1 milésimo até da anterior mas funciona..

Enfim, rede lenta ou rede esquisita, caindo, pode ser sinal de cabo/conector ruim.

Ref:

https://en.wikipedia.org/wiki/Medium-dependent_interface

https://www.sparkfun.com/datasheets/DevTools/WIZnet/W5100_Datasheet...

Onde se lê:

"Support Auto MDI/MDIX"

Mas é só um palpite, não dá pra saber. A principio não existe essa do switch "rejeitar" o negócio. Teste com o ping para garantir.

Caro Eduardo, muito obrigado pela sua rápida resposta e ajuda! Pois é,mas infelizmente não é o cabo o problema. Acredite uso o mesmo cabo e quando ligo diretamente no modem da NET a placa de rede do arduíno é reconhecida e é possivel pingar e acessar normalmente. Quando conecto o mesmo cabo de rede num switch TPLink SF1008D ligado ao mesmo modem não é possível encontrar a placa de rede e nem pingar obviamente. Inclusive os leds da placa não modulam da mesma forma. Vou tentar usar um outro switch mas é muito estranho pois tenho mais 7 PCs ligados nesse mesmo switch e todos estão visíveis na rede,posso pingar qualquer um e todos acessam a internet normalmente através desse switch. Porisso falei que é um caso muito sinistro.
Assim que testar com outro switch retorno aqui o resultado. Você tem alguma ideia mais?

Realmente pode não ser o cabo, mas recomendo tentar trocar.

Como o link que mandei mostra, os pares usados na comunicação podem ser outros quando vc liga direto no modem e quando vc liga via switch. Coisa impossivel de acontecer numa visão superficial da coisa, mas real e acontece quando vc envolve modens por retro compatibilidade com o tempo do "cabo cross", como citado no anexo.

Diria mais: Existem 2 visões de mundo diferentes. Aquela do "informata" que visualiza o sistema pelo monitor e teclado e a do "eletrônico", aquele que põe um osciloscópio no fio e tenta entender o funcionamento das coisas. Adianto que quando vc tem uma visão do tipo 2 acredita apenas em cabos CAT6 e nunca faz um cabo sem passar o testador depois. Cabos falham e provocam erros aleatórios, não existe "cabo com falha" na lista de erros possíveis do sistema operacional. Justamente pq quem cria eles é do tipo 1. O TCP é implementado dentro do hardware da placa de rede. Ele possui um contador de erros e um contador de pacotes. Com esses dados é perfeitamente possível detectar cabos ruins, mas as informações são ignoradas, deixando a questão em descoberto. Enfim, só para entender o meu ponto e deixar um relato que pode ser útil para outras pessoas que estejam lendo e realmente tenham problema com cabo, entendendo que não é seu caso.

Se não for... Não sei mais o q pode ser. Teria que ir trocando uma coisa de cada vez para ver o que resolve..

Muito obrigado Eduardo pela ajuda e esclarecimentos. Já troquei os cabos e também já testei todos Ainda não consegui um hub-switch de outra marca ou modelo para testar pois os 4 que tenho são o TPLink 1008D exatamente iguais. Tenho apenas este shield de rede conectado ao roteador. Já tentei inclusive trocando o MAC do meu W5100. O switch é ligado apenas ao modem roteador e quando conecto o conjunto Arduino Uno R3 + Ethernet W5100 no Switch a placa de rede arduino não aparece na rede, não pinga, não existe. Quando conecto diretamente ao Modem-Roteador tudo funciona normalmente. Estou ulitizando o exemplo de webserver que vem na biblioteca de exemplos do Arduino. Como meu Modem Roteador só tem duas saídas e já as utilizo precisaria de um switch para adicionar o conjunto arduíno diretamente ao roteador. Estou pensando em trocar por um Shield wifi. Se alguém do FORUM puder fazer este teste com um Switch entre o roteador e o Arduíno talvez encontre o mesmo problema. Agradeço a atenção e a rápida ajuda. Estarei sempre por aqui e espero também poder colaborar com vocês.

/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 02 Sept 2015
by Arturo Guadalupi

*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}


// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}


void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
} else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}

MIster, vc fez o teste com o sketch LinkStatus? Caso afirmativo, qual o resultado?

Helder não encontrei esse sketch nos Exemplos/ Ethernet do meu IDE Arduino porisso ainda não fiz. Você pode me enviar aqui ? Desde já muito obrigado!

Tá na mão:

LinkStatus.ino

Uso a ide 1.8.5 (não sei dizer a partir de qual ele vem incluso)

Helder baixei e instalei a versão atual 1.8.7 realmente nessa versão nova já tem o LinkStatus. Como meu Ethernet Shield é o W5100 ele não é compatível com o LinkStatus, a resposta que tive foi "Unknown" Continuo com o problema da rede não funcionar quando conectada por um switch...quando conecto diretamente ao modem roteador funciona. Parece que não tem solução essa questão, Vou comprar um shield wifi.

Obrigado pelas rápidas respostas e colaboração.

Amauri, o seu shield W5100 é compatível com essa biblioteca, mas tem um detalhe que não tinha prestado atenção.

No cabeçalho do sketch tem uma informação importante:
NOTE: Only WizNet W5200 and W5500 are capable of reporting
the link status. W5100 will report "Unknown".
Já tentou com o módulo enc28j60?

Obs, vc precisará instalar a biblioteca UIPEthernet para utilizar com este shield.

Você tem mais de um shield ethernet plugado neste switch?

Caso afirmativo, verifique se cada uma tem um MAC diferente.

Caso negativo, na lista de exemplos da lib Ethernet, tem um exemplo chamado LinkStatus, faça um teste com este exemplo e verifique o resultado.

É uma dica para o começo do diagnóstico a partir destes resultados poderemos ter mais idéias.

Olá,

Pelo o que você descreve, o problema é na configuração do seu TPLINK, trate de descrever se puder anexe fotos de como esta conectando o seu TPLINK e como esta configurando o mesmo.

Meu canal: AQUI LINK

Abs.

CK

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço