Seguinte, ja comentei em algumas discussões anteriores o problema que venho enfrentando com minha ethernet w5100 da china.. Eu cheguei utiliza-la sem problemas por pouquissimo tempo.. Ela ficou um tempo parada e agora não consigo mais utiliza-la.
Ela começou a esquentar muito.. não consigo ficar 1 segundo com o dedo sobre o chipset.
Como não sabia se isso tinha danificado ou não a placa resolvi começar os testes.
Rodei 2 codigos:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
IPAddress ip(192,168,0,100); //Define o endereço IP
IPAddress gateway(192,168,0,1); //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede
void setup()
{
Ethernet.begin(mac, ip);
}
void loop() {}
Fiz o teste de ping e tive sucesso, 0% de perdas..
Tentei então o WebServer (codigo de exemplo da biblioteca Ethernet) - Não tive resposta no navegador.
Mudei o MAC da placa para o { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED } mas tambem não funcionou.
Tentei rodar outro codigo simples de leds com botões:
//Programa : Webserver com aviso de acionamento de botoes
//Autor : Arduino e Cia
//Baseado no programa exemplo Webserver, de David Mellis e Tom Igoe
#include <SPI.h>
#include <Ethernet.h>
//A linha abaixo permite que voce defina o endereço fisico (MAC ADDRESS) da placa de rede
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
//Os valores abaixo definem o endereço IP, gateway e máscara. Configure de acordo com a sua rede.
IPAddress ip(192,168,0,100); //Define o endereço IP
IPAddress gateway(192,168,0,1); //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede
//Inicializa a biblioteca da placa ethernet com as configurações de IP fornecidas
EthernetServer server(80);
int botao1 = 6; //Botao que aciona o led vermelho
int botao2 = 7; //Botao que aciona o led verde
int pinoled=4; //Pino ligado ao led vermelho
int pinoled2=5; //Pino ligado ao led verde
int leitura = 0; //Armazena o valor de leitura do botao1
int leitura2 = 0; //Armazena o valor de leitura do botao2
char mensagem[20]; //Mensagem a ser apresentada para o botao1
char mensagem2[20]; //Mensagem a ser apresentada para o botao2
void setup()
{
pinMode(pinoled, OUTPUT); //Led
pinMode(pinoled2, OUTPUT); //Led
pinMode(botao1, INPUT);
digitalWrite(botao1, HIGH);
pinMode(botao2, INPUT);
digitalWrite(botao2, HIGH);
//Inicializa a conexao ethernet e o servidor web na porta 80
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
leitura=digitalRead(botao1); //Verifica o status do Botao1 e imprime mensagem no browser
if (leitura == 0)
{
digitalWrite(pinoled,1);
char mensagem[] = "Botao 1 acionado !!!";
char mensagem2[] = "Aguardando...";
apresentadados(mensagem,mensagem2);
delay(5000); //Mantem o led aceso por 5 segundos
apresentadados("Aguardando...", "Aguardando..."); //Imprime mensagem padrao, aguardando novo acionamento
digitalWrite(pinoled,0);
}
leitura2=digitalRead(botao2); //Verifica o status do Botao2 e imprime mensagem no browser
if (leitura2 == 0)
{
digitalWrite(pinoled2,1);
char mensagem[] = "Aguardando...";
char mensagem2[] = "Botao 2 acionado !!!";
apresentadados(mensagem,mensagem2);
delay(5000); //Mantem o led aceso por 5 segundos
apresentadados("Aguardando...", "Aguardando..."); //Imprime mensagem padrao, aguardando novo acionamento
digitalWrite(pinoled2,0);
}
}
//Rotina que recebe os valores de Mensagem e Mensagem2, imprimindo o resultado no browser
void apresentadados(char msg[], char msg2[])
{
// 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: 0"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
client.print("Estado Botao 1 : ");
client.print(msg);
client.println("<br />");
client.print("Estado Botao 2 : ");
client.print(msg2);
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");
}
}
Não tive sucesso tambme..
Não sei se isso tem alguma coisa a ver com o problema, e não lembro se ela acendia antes.. Mais no conector RJ45, somente o led da direita esta acendendo..
Ajuda??
Tags:
Sugiro ler algum registrador de configuração do chip para ver se ele esta vivo....
Estude a library Ethernet e veja se tem algum registrador que possa ser lido...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por