Problemas com Ethernet Shield

Bom dia!
Estou fazendo um projeto pra escola que utiliza de Arduino e Ethernet Shield. Quando testamos o Arduino ele deu certo, sua programação carregou e os leds acenderam. Mas quando conectamos o Ethernet Shield, a programação não carrega e ele acende apenas o LED PWR mesmo com o cabo de rede conectado a ele. Alguém poderia me ajudar, por favor?

Se você está tendo problema pra subir o sketch com o shield conectado, apenas remova-o do Arduino, suba o sketch e volte a encaixá-lo.

1 curtida

Isabella, estou com o mesmo problema, o meu projeto é um controlador de temperatura, que possui um visor lcd 16x2 com o sensor, dth11, quando esta tudo ligado direto no arduino, funciona perfeito, porem quando encaixo a shield ethernet, só a leitura do sensor funciona, pois acompanho no monitor serial e ele não imprime no display. Acredito que estamos com o mesmo problema, pelo que verifiquei é necessário iniciar a shield, abaixo removi a minha parte do codigo e deixei só a parte que envolve a shield, se possivel inclua no seu projeto e verifique se funciona.

// include the library code:
#include <Ethernet.h> //inclui a biblioteca

// 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(10,15,1,99); //Define o endereço IP
IPAddress gateway(10,15,0,1); //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede

void setup()
{

Ethernet.begin(mac, ip, gateway, subnet); //Inicializa o Ethernet Shield

}

Estou com um problema semelhante, eu já fiz o codigo teste mais ele funciona por um tempo e log em seguida cai da rede e só volta a funcionar quando eu tiro ele da energia e reconecto novamente, mais mesmo asim pouco tempo depois ele volta a perder a conecção gostaria de saber se teria algem ue poderia me ajudar?

EStarei enviando o codigo para analise tambem.

#include <SPI.h>
#include <Ethernet.h>
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#define pin 9 // Ligar Cor Azul
#define pulso 7 // SAÍDA DE CLOCK PARA CONTADOR 4017
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Definição do MAC Address da Ethernet Shield
IPAddress ip(192, 168, 1, 40); // Definição do endereço IP que a Ethernet Shield terá na rede onde estiver conectada. Verifique a Máscara-de-subrede e todos os equipamentos conectados na rede para achar um IP compatível e livre.
byte gateway = { 192, 168, 1, 1 }; // internet access via router
byte subnet = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); // Porta em que a Ethernet Shield irá receber as requisições das páginas (o padrão WEB é a porta 80)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
String HTTP_req;
String URLValue;
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void processaPorta(byte porta, byte posicao, EthernetClient cl);
String getURLRequest(String *requisicao);
bool mainPageRequest(String *requisicao);
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const byte qtdePinosDigitais = 7;
byte pinosDigitais[qtdePinosDigitais] = {2 , 3 , 5 , 6 , 7 ,8 ,9 }; // SAÍDA 8 ( ACIONAMENTO DO LED VERMELHO ), SAÍDA 2,3,5,6 - AUDIOS A SER ENVIADOS
byte modoPinos[qtdePinosDigitais] = {OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT};
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);

pinMode(pin, 1);    // DEFINE PINO 9 CMO SAIDA ACIONAMENTO DIRETO COR AZUL
pinMode (pulso, 1); // DEFINE SAÍDA PULSO CLOCK, Como do programa base 

for (int nL=0; nL < qtdePinosDigitais; nL++) {
    pinMode(pinosDigitais[nL], modoPinos[nL]);
}

}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{

digitalWrite(pulso, HIGH);   
delay(100);                       
digitalWrite(pulso, LOW);    
delay(100);

digitalWrite(pin, HIGH);

EthernetClient client = server.available();

if (client) { 
    boolean currentLineIsBlank = true;
    while (client.connected()) {
        if (client.available()) { 
            char c = client.read(); 
            HTTP_req += c;  
            
            if (c == '\n' && currentLineIsBlank ) { 

                if (mainPageRequest(&HTTP_req)) {
                    URLValue = getURLRequest(&HTTP_req);
                                             
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println();
                    
                     //Conteudo da Página HTML
                    client.println("<!DOCTYPE html>");
                    client.println("<html>");
                    client.println("<head>");
                    client.println("<title>Bolkeflex - Emergincia e Audio</title>");
                    client.println("</head>");
                    client.println("<body>");
                    client.println("<h1>Emergincia e Audio</h1>");
                    client.println("<br/>");
                    client.println("<h2>Acionamento Bulkeflex - Emergincia e Audios </h2>");
                    
                    client.println("<br/>");                        
                    client.println("<h1>Emergincia e Audio</h1>");
                    client.println("<form method=\"get\">");

                    for (int nL=0; nL < qtdePinosDigitais; nL++) {
                        processaPorta(pinosDigitais[nL], nL, client);
                        client.println("<br/>");
                    }
                    
                    client.println("<br/>");
                    client.println("<button type=\"submit\" name=\"botao\">Envia Comando</button>");
                    client.println("</form>");                            
                    
                    client.println("</body>");
                    client.println("</html>");
                    
                } else {
                    client.println("HTTP/1.1 200 OK");
                }
                HTTP_req = "";    
                break;
            }
            
            if (c == '\n') {
                currentLineIsBlank = true;
            } 
            else if (c != '\r') {
                currentLineIsBlank = false;
            }
        }
    } 
    delay(1);     
    client.stop(); 
} 

}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void processaPorta(byte porta, byte posicao, EthernetClient cl)
{
static boolean LED_status = 0;
String cHTML;

cHTML = "P";
cHTML += porta;
cHTML += "=";
cHTML += porta;

if (modoPinos[posicao] == OUTPUT) { 
    
    if (URLValue.indexOf(cHTML) > -1) { 
       LED_status = HIGH;
    } else {
       LED_status = LOW;
    }
    digitalWrite(porta, LED_status);
} else {

    LED_status = digitalRead(porta);
}
    
cHTML = "<input type=\"checkbox\" name=\"P";
cHTML += porta;
cHTML += "\" value=\"";
cHTML += porta;

cHTML += "\"";
//cHTML += "\" onclick=\"submit();\"";

if (LED_status) { 
    cHTML += " checked ";
}

if (modoPinos[posicao] != OUTPUT) { 
    cHTML += " disabled ";
}

cHTML += ">Porta ";

if (porta <= 13) {
   cHTML += porta;
} else {
   cHTML += "A";
   cHTML += porta - 14;
}
cl.println(cHTML);

}

String getURLRequest(String *requisicao) {
int inicio, fim;
String retorno;

inicio = requisicao->indexOf(“GET”) + 3;
fim = requisicao->indexOf(“HTTP/”) - 1;
retorno = requisicao->substring(inicio, fim);
retorno.trim();

return retorno;
}

bool mainPageRequest(String *requisicao) {
String valor;
bool retorno = false;

valor = getURLRequest(requisicao);
valor.toLowerCase();

if (valor == “/”) {
retorno = true;
}

if (valor.substring(0,2) == “/?”) {
retorno = true;
}

if (valor.substring(0,10) == “/index.htm”) {
retorno = true;
}

return retorno;
}