Escudo Arduino Ethernet: ¡simplemente no funcionará!

3

Tengo un Arduino Ethernet escudo encima de un Arduino Mega2560 y conecté el Mega2560 a través de serie a mi computadora portátil y a través de puerto UTP en el escudo Ethernet a mi enrutador.

Probé el ejemplo de "buscar Arduino en Google" (donde corregí la dirección IP de Google, el ejemplo era antiguo), y no funciona (no parece conectarse a Internet. En la serie , Me sale: "se conectó ... / se falló la conexión / se desconectó").

Mi cable UTP funciona bien ... lo he probado en mi computadora portátil.

El Mega2560 está conectado a mi enrutador (que tiene todo deshabilitado, así que ese no es el problema) y cuando hago ping desde la computadora portátil a la dirección IP que le di al ensamblaje de Arduino, no me devuelve el ping.

¿Por qué? Tal vez hay algo que me falta? Aquí está mi código:

Código:

#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 };
byte ip[] = { 192,168,1,177 };
byte server[] = { 209,85,148,147 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
  // Start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // Start the serial library:
  Serial.begin(9600);
  // Give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // If you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  }
  else {
    // If you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // If there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // If the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // Do nothing forevermore:
    for(;;)
      ;
  }
}
    
pregunta Alex

4 respuestas

2

El Arduino utiliza SPI para comunicarse entre los dispositivos. Dado que el diseño del Arduino Mega cambió y el pinout más antiguo se relaciona con los escudos más antiguos, para usarlo con escudos más nuevos hay que piratearlo un poco, para solucionar el problema.

Muchas personas tenían esta pregunta antes, y aún puedes encontrar la respuesta aquí: enlace

    
respondido por el 1amtoo1337
2

Verifique el conector Ethernet en la carretera de atrás de la fila de resistencia, el valor normal será 510 (51Ω)

Si es 511 (510Ω) es un error de hardware, reemplace el funcionamiento normal de la resistencia correcta

    
respondido por el yulie
1

Para conectarse a un servidor fuera de su red, debe incluir la puerta de enlace en Ethernet.begin :

byte dns[] = {8,8,8,8};
byte gateway[] = {192,168,1,1};
Ethernet.begin(mac,ip,dns,gateway);
    
respondido por el Flipsen
0

Bueno, en mi caso, el arduino no se comunicará porque hay un problema con la negociación automática de 10/100 mb.

Entonces, lo puse a 10mb. Y, ellos se comunican.

Intento usar un cable cat3 y funciona en los mismos casos. Así que decidí usar un enrutador donde puedo configurarlo a 10 mb.

Saludos cordiales.

    
respondido por el Antonio Sergio

Lea otras preguntas en las etiquetas