Icono del sitio AranaCorp

Conecte Arduino a internet con Ethernet Shield VMA04

La connexion del Arduino al WiFi es posible con el uso del Ethernet Shield VM04.  La base para la creación de objetos conectados, está conectarlos sobre el mismo red como la red WiFi.
Comunicación a través de la red Ethernet es muy conveniente cuando se desea conectar un dispositivo a Wi-Fi.

Requisitos previos: Conocimiento de HTML/CSS

Hardware

Principio de funcionamiento

La comunicación passa por la red Ethernet que puede conectarse a Wi-Fi. Para acceder a la placa Arduino sin tener que conectar con el router de Internet, es necesario crear un puente entre Wi-Fi y conexión de Ethernet a su computadora. Para ello, debemos:

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

El Ethernet Escudo VMA04 utiliza el Microchip ENC28J60 como controlador Ethernet.
Nota: Una página web puede tener una gran cantidad de espacio de memoria para una placa Arduino. Utilizamos una tarjeta Ethernet VMA04 Escudo y Arduino UNO, pero si usted piensa que su página será actualización intensivo de la memoria a un W5100 escudo.
(Advertencia: Escudo VMA04 existe versión KA04 Kit de soldadura de uno mismo Compruebe el que usted quiere comprar.)

El Ethernet Shield VMA04 es compatible con los microcontroladores Arduino UNO y Mega y se coloca directamente sobre. En el caso de un escudo, las conexiones están predefinidos. Asegúrese, en la documentación técnica del componente, cómo utilizarlo (VMA04 ficha técnica).
El Ethernet Shield VMA04 utiliza:

Código

Para interactuar con el Ethernet Shield VMA04 usamos la biblioteca UIPEthernet.h :

//Libraries
#include <UIPEthernet.h>//https://github.com/UIPEthernet/UIPEthernet

//Parameters
String request ;
unsigned long refreshCounter  = 0;
IPAddress ip(192, 168, 1, 179) ;
byte mac [6] = {0x54, 0x34, 0x41, 0x30, 0x30, 0x31};

//Objects
EthernetServer server(80);
EthernetClient client;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init VMA04
  Ethernet.begin(mac, ip);
  while (!Ethernet.begin(mac)) {
    Serial.println(F("failed. Retrying in 1 seconds."));
    delay(1000);
    Serial.print(F("Starting VMA04..."));
  }
  pinMode(4, OUTPUT);
  server.begin();
  Serial.println(F("VMA04 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("/dig4on") > 0) {
    digitalWrite(4, HIGH);
  }
  if (request.indexOf("/dig4off") > 0) {
    digitalWrite(4, LOW);
  }
  if (request.indexOf("GET") >= 0) {
    webpage(client);
    client.stop();
  }

}

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.println("<center><p style='color:white;'>");
  client.print(F("Page refresh number: "));
  client.print(refreshCounter);//current refresh count
  client.println("</p></center><br>");
  client.print(F("<h2 style='color:green;'>Arduino Inputs</h2>"));
  client.println("<p style='color:white;'>");

  client.print(F("<br><br>"));
  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>"));

  client.print(F("<h2 style='color:green;'>Arduino Outputs</h2>"));
  client.print(F("<p style='color:white;'>"));

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

  client.print(F("<b>Digital output Pin 4 : </b>"));
  client.print("<input value=" + String(digitalRead(4)) + " readonly></input>");
  client.print(F("<a href='/dig4on'><button>Turn On </button></a>"));
  client.print(F("<a href='/dig4off'><button>Turn Off </button></a><br/>"));

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

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

Resultados

Podemos ver que el Ethernet Shield VMA04 inicializa correctamente. Cuando se introduce la dirección IP en la barra de direcciones del navegador, la página web se describe en las que aparezca Funcion página web.
Una vez que se carga la página, los valores de entrada analógica varían con cada actualización y el estado del pin 2 se puede cambiar pulsando los botones correspondientes.

Aplicaciones

Fuentes

Salir de la versión móvil