Icono del sitio AranaCorp

Usando un escudo WiFi con Arduino

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

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:

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.

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

//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

Fuentes

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

Salir de la versión móvil