viernes, 16 de marzo de 2018

Módulo Ethernet shield W5100 Arduino



El módulo W5100 es un shield para el Arduino UNO o Leonardo, que  te permitirá conectar tu aplicación con una red ethernet. El módulo incluye un sócalo para  conector RJ45, lo cual te permitirá realizar la conexión por medio de un cable común a tu router o switch, está basado en el chip Wiznet W5100 que provee una pila de red IP capaz de soportar protocolos TCP y UDP. 

Una de las mayores facilidades que te provee este módulo es que para utilizarlo con Arduino UNO o Leonardo, no tienes que realizar ninguna conexión particular, sólo debes montarlo encima de tu placa Arduino, conectarlo a la red y subir tu programa al microcontrolador, todo esto con la ventaja que el módulo permite que los pines de la placa Arduino pasen a través de él dejándolos disponibles para su uso encima. Sin embargo, algo muy importante a tener en cuenta es que el módulo se comunica con el microcontrolador por comunicación SPI por medio de los pines 10, 11, 12 y 13; por lo tanto esos pines no podrán ser utilizados para otros propósitos.

El módulo cuenta con los siguientes leds para indicación:


  • ON: Indica que hay alimentación
  • LINK: Indicador de enlace de red
  • 100M: Conexión de 100 Mb/s
  • RX: Indicación de recepción de datos
  • TX: Indicación de emisión de datos
A continuación te mostramos un ejemplo sencillo de un proyecto utilizando este módulo para conectar tu proyecto Arduino a tu red ethernet. En esta aplicación se verifica el estado del digital 7 y el voltaje presente en el pin digital A0. Este proyecto está basado en el análogo de "el Profe Garcia".

Estema de conexión con Arduino UNO
Modulo Ethernet Shield W5100 Arduino
Sólo monta el shield sobre tu placa!  
Y conecta el cable utp con conector RJ45 desde tu router o switch.


Código Arduino:



#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

IPAddress ip(192, 168, 0, 52); // SÓLO EL ÚLTIMO NÚMERO DEBES CAMBIAR

EthernetServer server(80);

void setup() {
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop() {
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 5");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<HEAD>");
          client.println("<TITLE>Ethernet Monitor</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");
          client.println("<hr />");
          client.println("<H1>Ejemplo de uso W5100</H1>");
          client.println("<br />");
          client.println("<H2>Monitoreo de pin digital</H2>");
          client.println("<br />");
          client.println("");
          client.println("<br />");
          client.println("<br />");
          int lecturaSensor = digitalRead(7); 
          float lecturanaloga = analogRead(A0);
          client.print("Estado de Pin digital D7: ");
          client.print((lecturaSensor)?"ALTO":"BAJO");
          client.println("<br />");
          client.println(" ");
          client.println("<br />");
          client.print("Voltaje en el Pin A0: ");
          client.print(lecturanaloga*5/1023);
          client.print(" V");
          client.println("<br />");
          client.println(" ");
          client.println("<br />");
          client.println("Ma's tutoriales en nuestro blog Arca electro'nica");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(15);           // Da tiempo al Servidor para que reciba los datos 15ms
    client.stop();     // cierra la conexion
  }
}


Una vez subido el código, pon en la barra de direcciones de tu navegador la siguiente dirección: 192.168.0.52, presiona "Enter" y verás en tu pantalla el estado de estos dos pines, lo cuales puedes cconectar a GND, 3.3V o 5V de tu Arduino, para que compruebes su funcionamiento. 


NOTA: En caso de que haya algún error, prueba cambiando el último número de la dirección en tu navegador y en la línea señalada en el código (debe ser el mismo número).





FIN DEL POST

0 comentarios:

Publicar un comentario

Display matricial 8x8 con Arduino SPI y MAX7219

La matrices led de 8x8 son elementos extremadamente útiles para desplegar mensajes que puedan ser visibles desde la distancia. ...