Problema Ethernet Shield

Opá tudo bem? Sou novo aqui, estou com uma baita problema ao tentar utilizar o Ethenet Shield.

Há algumas semanas atrás adquire a placa, e utilizei o exemplo WeberServer para fazer as leituras das portas analógicas no browser, até ai, certinho, funciono normal. Mas quando fui testa novamente no segundo dia já não estava conseguindo mais, a pagina não carregava no browser. Já tentei pingar no DOS como também já configurei o endereço de ip, tudo certinho.

Pelo o que estou percebendo é como se o meu Shield não conseguisse se conectar a Ethernet e atribui um endereço de ip, quando entro nas configurações do roteador vejo que o endereço de ip que atribui não está lá, aparece apenas o do meu pc e celular.

Já tentei usar outros tipos de portas tbm, mas nada =\

Se alguém poder me ajudar fico mito grato, já estou até achando que o Shield está com problema e também não entendi o porque funcionou certinho na primeira vez que testei.

Valeu!

@Felipe_Ferreira mande detalhes de seu Arduino, seu Shield e também o seu programa.

Ahh… E também detalhes de sua rede.

Aí ficará mais fácil, mas me parece que seu Shield não conseguiu obter um endereço IP via DHCP. Mas sem ver seu código e saber de sua rede é bem difícil ajudá-lo.

Abraços,

Manoel

@mlemos opá me desculpe,

Estou usando o modelo Uno R3, Ethernet modelo do Shield w5100, estou utilizando o próprio exemplo weberserver dá biblioteca Ethernet do arduino. Meu roteador é de endereço 192.168.1.1

Aqui segue o código

/*
  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
 
 */

#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,1,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 Leonardo 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 disonnected");
  }
}

@Felipe_Ferreira, utilize a tag <code> no seu código para não ser interpretado como text normal pelo fórum.

Sobre o problema, não conheço a Ethernet Shield mas só pelo o que você descreveu minhas duas hipóteses são a shield ter algum problema ou a sua rede (por parte do roteador ou da shield) não estar configurada corretamente ou pra DHCP ou pra IP estático, dependendo do que você estiver tentando fazer.

Não vejo problemas no código, mas o que acontece quando você roda ele?

Me diga:

  1. O que aparece na serial (mensagens enviadas pelo Arduino)?

  2. O que aparece no browser quando você tentar acessar http://192.168.1.177/

  3. Tente fazer um ping 192.168.1.177 do terminal de seu computador e mande a respostas também.

[]s

Olá @mlemos então:

Na serial, as vezes aparecia somente números 0 ou 255 em vez de aparecer o ip.

No browser, dizia que a pagina não esta disponível.

E sempre quando eu tentava pingar, ele não respondia aos pings.

Cheguei a achar,que é o shield que está com problema, providenciei outro, deve chegar até á outra semana. E vejo se realmente é o shield. Muito obg abrços.

1 curtida

Olá, também tentei comunicar com este modelo de shield sem sucesso. Parece que ele não consegue se comunicar com alguns roteadores, porque ao conectar o cabo de rede diretamente no PC ele responde ao PING. Através de uma pesquisa na internet, parece que existe uma opção melhor lançada recentemente o shield ESP8266, que faz comunicação nativa com wireless B/G por um preço razoável. Alguém já utilizou este shield?

Olá, tive problemas de conexão e não consegui fazer funcionar o shield W5100 no Arduino, recentemente comprei um outro shield para ethernet o ENC28J60, e com este shield consegui dar o ping no IP beleza, e comuniquei com ele através do roteador, o único porém é que o IP dele não aparece na lista do roteador, mas funciona sem problemas.
Se alguém estiver tendo problemas com o W5100, esta pode ser uma solução. O ENC28J60 é um shield barato, o único problema é que ele não tem o leitor de cartão, precisa comprar separado.

Boa noite @diego, então eu acabei testando com outro shield, realmente era problema no shield. Consegui me comunicar com o arduino normalmente utilizando o exemplo de servidor web.

@Felipe_Ferreira esses shields da China as vezes não funcionam como o esperado. O modelo que você conseguiu fazer funcionar era o W5100?

Ola, também estou com esse problema, não consigo habilitar web server, meu Arduíno é o uno r3, já testei ele com led para ver se ele estava com problemas, e não está, meu enthernet shield é o w5100 wiznet, minha faixa de ip é 192.168.25.1 mascara 255.255.255.0 eu coloquei ele com varios ips exemplo 192.168.25.3 ,mesmo assim sem sucesso, quando pingo o resultado é destino inacessível, e via browser da como a pagina não pode ser exibida, ja resetei ambos equipamentos (enthernet shield e Arduíno), e o resultado é o mesmo, por gentileza me ajudem se possivel, abraço.

Cara, da uma olhada em um componente que normalmente fica atrás do conector RJ45. É uma rede de resistores, normalmente o valor deveria ser 49,9R ou 51R (~50 Ohms, no componente vem escrito 510). Tem lotes que os chineses erraram o valor dessa peça e mandaram com um resistor de 510 Ohms, (no componente vem escrito 511). No meu caso foi isso que aconteceu, troquei o resistor e começou a funcionar.

Caro amigo Fernando, comprei um Shield com esse problema, reclamei para o fornecedor e ele me mandou outro igual, então, quero perguntar a você se estou certo, o componente é uma ponte de resistor, porque ele tem 8 pernas é isso mesmo? Posso colocar resistor normal ou tem que ser essa ponte?

Boa tarde Carlos,

Sim, essas 8 pernas formam um conjunto de 4 resistores, cada um deveria ter
50 Ohms no shield correto. Eu consegui consertar o meu soldando 4
resistores SMD de lado no lugar desse componente, o difícil é conseguir
fazer essa solda, tem que cuidar pra nenhum terminal ficar em curto.

Então, Fernando, o fornecedor me mandou mais uma shield ethernet, agora ja somam 3 unidades e a mesma coisa, o valor da rede é 511, e não 510 , achei a rede na net na resistencia de 51 ohms, ja tenho que troca, acho que vou arriscar, pra ver, o que você acha?

Pode trocar, o problema é esse mesmo.
O circuito original é com 49R9, (49,9 Ohms) como na foto:

No meu caso como não tinha achado esse componente, soldei 4 resistores SMD
no lugar:

Grato,
Fernando Trentin

1 curtida

Valeu amigo, realmente tinha razão, o problema foi resolvido trocando a rede, está funcionando perfeitamente, obrigado pela ajuda.

Estou com outro problema, meu arduino uno R3, não faz uploads de sketch, parou de fazer, mas se eu trocar o atmega e inserir um com gravação pronta ele funciona, será que tem conserto?

Nesse caso teria ver qual modelo que você tem. Existe o modelo que faz a
comunicação com o PC através do CI CH340G e outro com um um CI Atmega.

Se você utilizar um sketch que leia e escreva na porta Serial, consegue
comunicar com o PC normalmente?

Grato,
Fernando Trentin

A sim, o meu é o modelo original do Arduino uno R3, como saber se ele usa o Ci ch340g ou o atmega, ele é aquele que usa o Ci grande, não é SMD.