fbpixel
Etiquetas: ,
4.3
(3)

La conexión de un microcontrolador a internet es posible gracias al uso de un W5100 Ethernet Shield. La base de la creación de objetos conectados es hacer que se comuniquen con su entorno a través de una red como la red WiFi. La comunicación a través de la red Ethernet es muy práctica cuando desea conectar un dispositivo a la red Wifi por cable.

 Para una conexión inalámbrica, debes usar un escudo Wifi u otra placa con un chip Wifi incorporado.

Hardware

  • Computadora
  • ArduinoUNO
  • Cable USB A macho / B macho
  • Ethernet cable RJ45
  • Ethernet Shield W5100

 

Principio de funcionamiento de un Shield Ethernet W5100

La comunicación utiliza la red ethernet que se puede conectar a la red Wifi. Para poder acceder a la placa Arduino sin tener que conectarla al enrutador de Internet, es necesario crear un puente entre la conexión wifi y la conexión Ethernet en su computadora. Para hacer esto, debes:

  • Vaya al Centro de redes y recursos compartidos
  • Vaya a «Cambiar la configuración de la tarjeta»
  • Seleccione Ethernet y Wifi / (fuente de internet) y haga clic derecho
  • Haga clic en «Crear puente»

En Windows, en la terminal de comandos, escriba «arp -a» para ver las direcciones IP utilizadas en la red.

El W5100 Ethernet Shield usa el Microchip W5100 como un controlador Ethernet.

 

Diagrama

El W5100 Ethernet Shield es compatible con los microcontroladores Arduino UNO y Mega. El chip W5100 y la tarjeta SD usan el bus SPI para comunicarse con la tarjeta Arduino. El pin 10 se usa para seleccionar el controlador de ethernet W5100, el pin 9 como RESET para el W5100 y el pin 4 para seleccionar el módulo de la tarjeta SD.

En resumen, los pines utilizados son:

  • 4 para selección de tarjeta SD (SD_CS)
  • 9 para restablecer el microchip W5100 (W5100_RST)
  • 10 para la selección de microchips W5100 (W5100_CS)
  • el bus SPI: pines 11,12,13 en una placa Arduino UNO / Duelmilanove. Pines 50, 51 y 52 para el Mega.

 

Código para usar un Shield Ethernet W5100

Para comunicarnos en la red, necesitamos usar un protocolo especial. Este protocolo está integrado en todas las bibliotecas relacionadas con la comunicación WiFi:

  • El módulo WiFi o Ethernet debe estar conectado a la red
  • definir un servidor server
  • definir un cliente client
//Libraries
#include <Ethernet.h>//https://github.com/CisecoPlc/Arduino-W5100-W5200/tree/master/Ethernet

//Parameters
String request ;
unsigned long refreshCounter  = 0;
byte mac [6] = {0x54, 0x34, 0x41, 0x30, 0x30, 0x31};

//Objects
EthernetServer server(80);
IPAddress ip(192, 168, 1, 179);
EthernetClient client;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init W5100
  Ethernet.begin(mac, ip);
  while (!Ethernet.begin(mac)) {
    Serial.println(F("failed. Retrying in 5 seconds."));
    delay(5000);
    Serial.print(F("Starting W5100..."));
  }
  pinMode(2, OUTPUT);
  server.begin();
  Serial.println(F("W5100 initialized"));
  Serial.print(F("IP Address: "));
  Serial.println(Ethernet.localIP());
}

void loop() {
  client = server.available();
  clientRequest();
  handleRequest();
}

void clientRequest( ) { /* function clientRequest */
  ////Get client request
  if (!client) {
    return;
  }
  // Wait until the client sends some data
  while (!client.available()) {
    delay(1);
  }

  request = client.readStringUntil('\r'); // Read the first line of the request
  Serial.println(request);
  client.flush();
}

void handleRequest( ) { /* function handleRequest */
  ////Handle web client request
  if (request.indexOf('GET') >= 0) {
    {
      webpage(client);
      client.stop();
    }
  }
  if (request.indexOf("/dig2on") > 0) {
    {
      digitalWrite(2, HIGH);
    }
  }
  if (request.indexOf("/dig2off") > 0) {
    {
      digitalWrite(2, LOW);
    }
  }
}

void webpage(EthernetClient client) { /* function webpage */
  ////Send webpage to client

  //output HTML data header
  client.println(F("HTTP/1.1 200 OK"));
  client.println(F("Content-Type: text/html"));
  client.println();
  //header
  client.print(F("<!DOCTYPE HTML><html><head><title>AranaCorp</title>"));
  client.print(F("<meta http-equiv='content-type' content='text/html; charset=UTF-8'>"));
  //meta-refresh page every x seconds
  client.print(F("<meta http-equiv='refresh' content='2'>"));
  client.print(F("</head><body bgcolor='black'><br>"));
  client.print(F("<hr/><hr>"));
  client.print(F("<h1 style='color : #3AAA35;'><center> AranaCorp - Arduino Web Controller </center></h1>"));
  client.print(F("<hr/><hr>"));
  client.print("<center><p style='color:white;'>");
  client.print(F("Page refresh number : "));
  client.print(refreshCounter); //current refresh count
  client.print("</p></center><br>");
  client.print(F("<h2 style='color:green;'>Arduino Inputs</h2>"));
  client.print("<p style='color:white;'>");
  client.print("<br><br>");

  //output analog input pin
  for (int i = 0; i < 6; i++) {
    client.print("<b>Input A");
    client.print(i);
    client.print(" : </b>");
    client.print(analogRead(14 + i)); //A0=14, A1=15 ,etc.
    client.print(F("<br>"));
  }
  client.print(F("</p><br>"));

  //digital output
  client.print(F("<h2 style='color:green;'>Arduino Outputs</h2>"));
  client.print(F("<p style='color:white;'>"));
  client.print(F("<br><br>"));
  client.print(F("<b>Digital output Pin 2 : </b>"));
  client.print("<input value=" + String(digitalRead(2)) + " readonly></input>");
  client.print(F("<a href='/dig2on'><button>Turn On </button></a>"));
  client.print(F("<a href='/dig2off'><button>Turn Off </button></a><br />"));

  client.print(F("</p><br>"));

  //file end
  client.print(F("<br></body></html>"));
  refreshCounter += 1;
}

 

Resultado

Podemos ver que el W5100 Ethernet Shield se inicializa correctamente. Cuando ingresa la dirección IP en la barra de direcciones de su navegador, se muestra la página web descrita en la función de página web.

Una vez que se carga la página, los valores de las entradas analógicas varían con cada actualización y el estado del pin 2 se puede cambiar presionando los botones correspondientes.

 

Aplicaciones

  • Use una interfaz web para controlar su Arduino

 

Fuentes

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 4.3 / 5. Recuento de votos: 3

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?