Go Down

Topic: Shield Ethernet, perdendo conexão (Read 1 time) previous topic - next topic

itape_alan

Boa tarde.

Estou com um problema com o Shield Ethernet, estou rodando o exemplo "webserver", hora sim hora não ele me responde ping, apos reiniciar o arduino algumas vezes, ele responde ping na rede, e acessa via navegar.

Mas desligo o cabo usb e ligo novamente, e tento acessar pela rede, ele para de responder, ai fico desligando e ligando ele , e uma hora funciona.

Alguem ja possou por isto ? ou pode sugerir oque devo pesquisar para sanar este problema?

Obs: chip ethrernet W5100

Obrigado.

hugo007

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

itape_alan

/*
  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");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          // 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");
  }
}

bubulindo


Boa tarde.

Estou com um problema com o Shield Ethernet, estou rodando o exemplo "webserver", hora sim hora não ele me responde ping, apos reiniciar o arduino algumas vezes, ele responde ping na rede, e acessa via navegar.

Mas desligo o cabo usb e ligo novamente, e tento acessar pela rede, ele para de responder, ai fico desligando e ligando ele , e uma hora funciona.


O código é do mais genérico que existe, logo o problema pode não estar aí...

No entanto, a tua explicação do que fazes deixa imenso a desejar.
Quando dizes hora sim, hora não a que te referes? Estás de hora a hora a fazer ping aquele endereço?

Quando reinicias o Arduino, como o fazes? Desligas a alimentação, esperas uns 15 segundos e voltas a ligar? Ou carregas no reset?

Para de responder em que sentido? Não abre a página web?

Estás a monitorizar o que aparece no Serial Port do Arduino?

Tenta explicar o que se passa com uma sequência ou mais, de eventos. Assim é mais simples do que dizeres que ligas desliga e funciona de vez em quando.


This... is a hobby.

itape_alan

Bom, eu estou apenas testando o equipamento antes de começar a integrar ele ao meu projeto.

Fiz diversos testes, desde os mais simples, que é só adicionar mac, ip, e chamar a função begin para iniciar a placa...

Ela funciona, deixo fazendo um ping no meu pc, e ele liga, e começa a responder .... ai eu aperto o reset do shield, ele reinicia a placa... e já nao responde mais....
Eu desligo ela do usb do pc, espero de 5 a 10 segundos, religo, ele volta responder normal....
Se eu apenas tirar do usb, e colocar novamente, ele já não responde o ping mais.... parece algo com sincronismo sei lá...

Ademilton

#5
Sep 02, 2017, 09:43 pm Last Edit: Sep 02, 2017, 09:49 pm by Ademilton
Estou com problema semelhante.

Uso Arduino UNo R3 + Shield W5100, carrego qualquer código de webserver nele, funciona a primeira vez, direitinho, se eu desligar  o sistema, ou o router e religar não funciona mais.
Porém se eu levar na casa de algum amigo funciona direitinho.
Já mexi em tudo e nada, desliguei DHCP no router, botei IP fixo, reservei IP com MAC, usei fonte de 12V alimentação via USB....nada dá certo.

Meu sistema de internet é VDSL  usa Modem + Router separado (Comtrend + TPLink 641G).

Não sei mais o que fazer estou quase desistindo, hora funciona hora não, quando penso que normalizou, volta as mensagens de "página Expirou" quando dou ping não encontra o dispositivo.

Porém como já disse, se eu levar em outro sistema funciona tudo certo.

O código usei também o padrão do Arduino.

Se alguém puder me ajudar: pu4asl@gmail.com

leandro1301

Primeiro, tenha em mente: se reiniciar o arduino na rede deve-se dar um tempo para que o  modem/roteador dê a numeração da ip/porta novamente, casos de reinicio continuo em curto espaço de tempo faz com que o modem/roteador acabe "bugando" e definindo o uso daquele endereço como conectado.

Sugestão:

Deixe o arduino rodando com o codigo generico por 24 horas(sem reinicia-lo), se nada acontecer o problema era o que foi descrito acima, caso contrario dê uma limpada nos circuitos do shield, se não resolver, só outro.

CheLL

Engraçado que eu estava passando por algo semelhante. Tambem uso o w5100 e do nada começou a dar esses problemas, hora respondia hora nao, as vezes conectava na rede as  vezes nao. resetei o roteador, refiz toda configuração e o problema persistia. De tanto fuçar acabei percebendo que a shield não estava muito bem encaixada. Após desmontar e montar cuidadosamente percebi que apesar de diminuir os problemas continuavam. Daí, parti para outros conjuntos para saber se o problema era realmente o arduino + shield ou alguma configuração do modem. Testei em mais 2 TPs Links e em ambos funcionaram certinho, testei no meu pc e funcionou certinho, daí acabei optando por montar uma rede a parte e isolar o problema provisoriamente até ter mais tempo de estudar o que esta acontecendo, pois esse modem nao posso reseta-lo.

Resumindo:
1 - Desencaixe e encaixe cuidadosamente o arduino e o shield.

2 - Teste o Servidor diretamente no seu pc (O certo seria cabo crossover mas aqui testei com cabo normal e funcionou dos 2 jeitos, minha placa de rede deve ter feito a conversão automatica ou algo similar)

3 - Teste outros roteadoes.

Go Up