fbpixel
Etiquetas: ,
0
(0)

El WiFi Shield permite a la tarjeta Arduino conectarse a Internet a través de una red inalámbrica. Integra un lector de tarjetas SD para almacenar datos o una página web para manejar el Arduino.
La forma básica de crear objetos conectados es conectarlos a una red como WiFi.

Hardware

  • Computadora
  • Arduino UNO
  • Cable USB A macho a B macho
  • Arduino WiFi Shield

Principio de funcionamiento de un Escudo Wifi

La red WiFi es una red de radio que funciona en las frecuencias de 2,45 GHz y 5 GHz. El Escudo Wifi tiene un chip que permite gestionar la comunicación wifi con una red, como en un ordenador. El microcontrolador puede comunicarse con este chip para conectarse a una red o transmitir información a través de esta red.

Esquema

El escudo Wifi se monta directamente en la tarjeta Arduino y utiliza el bus SPI para comunicarse con el WiFI y la tarjeta SD. El pin 10 se utiliza para seleccionar el controlador de WiFi, el pin 7 como apretón de manos entre el Arduino y el WiFi; y el pin 4 para seleccionar el módulo de la tarjeta SD.
En resumen, los pines utilizados son:

  • 4 para la selección de la tarjeta SD (SD_CS)
  • 7 por el apretón de manos con WiFi
  • 10 para la selección del microchip W5100 (W5100_CS)
  • el autobús SPI: los pines 11,12,13 en una tarjeta de Arduino UNO/Duelmilanove. Los alfileres 50, 51 y 52 para el Mega

Código de gestión de un Escudo Wi-Fi

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

  • Tienes que conectar el módulo WiFi a la red
  • definir un servidor server
  • definir un cliente client

Para interactuar con el Escudo Wifi, utilizamos la biblioteca WiFi.h cuyas funciones a conocer son las siguientes:

  • WiFi.begin() para inicializar una conexión de red
  • server.begin() para inicializar un servidor
  • WiFiClient client = server.disponible() para inicializar un cliente
  • client.read() para leer los datos del cliente
  • client.print() para enviar los datos al cliente
//Libraries
#include <WiFi.h>//https://www.arduino.cc/en/Reference/WiFi

//Parameters
String request ;
unsigned long refreshCounter  = 0;
int status  = WL_IDLE_STATUS;
char ssid[]  = "****************";
char password[]  = "****************";

//Objects
WiFiServer server(80);
WiFiClient client;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init WifiShield

  // Connect to Wifi network.
  while (status != WL_CONNECTED)
  {
    Serial.print("Connecting to Network named: "); Serial.println(ssid);
    status = WiFi.begin(ssid, password);
    delay(1000);
  }
  server.begin();
  Serial.println();
  Serial.println(F("WifiShield initialized"));
  Serial.print(F("IP Address: "));
  Serial.println(WiFi.localIP());
}

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

void clientRequest( ) { /* function clientRequest */
  ////Get client request
  if (!client) {
    return;
  }
  request = "";
  // 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("/dig2on") > 0) {
    digitalWrite(2, HIGH);
  }
  if (request.indexOf("/dig2off") > 0) {
    digitalWrite(2, LOW);
  }
  if (request.indexOf("GET") >= 0) {
    webpage(client);
    client.stop();
  }

}

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

  //output HTML data header
  client.println(F("HTTP/1.1 200 OK\nContent-Type: text/html\nConnection: close\nRefresh: 5
\n"));
  //header
  client.println(F("<!DOCTYPE HTML><html><head><title>AranaCorp</title></head><body bgcolor='black' style='color:white;'>"));
  client.println(F("<h1 style='color:green;'>AranaCorp - Arduino Web Controller</h1>"));
  client.println("<p style='color:white;'>Page refresh number: " + String(refreshCounter) + "</p>");
  client.println(F("<h2 style='color:limegreen;'>Arduino Inputs</h2>"));
  //output analog input pin
  for (int i = 0; i < 6; i++) {
    client.println("<b>Input A" + String(i) + " : </b>" + String(analogRead(14 + i)) + "<br>");
  }
  //digital output
  client.println("<h2 style='color:limegreen;'>Arduino Outputs</h2>");
  client.println("<b>Digital output Pin 2 : </b><input value=" + String(digitalRead(2)) + " readonly></input>");
  client.println(F("<a href='/dig2on'><button>Turn On </button></a><a href='/dig2off'><button>Turn Off </button></a>"));

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

Resultado

Cuando el código se descargue en el microcontrolador, abra el monitor en serie para averiguar la dirección IP.

Puede entonces introducir esta dirección IP en su navegador de Internet para mostrar la página web.

Aplicaciones

  • Usar una interfaz web para manejar su microcontrolador

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

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

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

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?