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
- https://www.w3schools.com/html/html_editors.asp
- https://www.arduino.cc/en/Guide/ArduinoWiFiShield
- https://www.techworked.com/arduino-wifi-shield-upgrade/
- https://www.arduino.cc/en/Reference/WiFi
- Tutoriales HTML Mozilla
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código