Problema Ethernet Shield


#1

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!


#2

@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


#3

@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");
  }
}

#4

@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.


#5

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


#6

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.


#7

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?


#8

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.


#9

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.


#10

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


#11

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.


#12

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.


#13

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?


#14

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.


#15

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?


#16

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


#17

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


#18

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?


#19

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


#20

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.