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?
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("");
client.println("");
// 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("
");
}
client.println("");
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");
}
}
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.
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á...
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.
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.
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)