Vous êtes sur la page 1sur 15

TRABAJO DE LABORATORIO

Desarrollar un código para el NODE MCU que permita controlar un LED conectado al pin
GPIO5 mediante una página web instalada en una computadora conectada a una red WiFi.
Cada vez que se elija encender un LED, el LED se encenderá por 0.5 segundos y se apagara
por otros 0.5 segundos, repitiendo el ciclo10 veces.
Node MCU Cliente
Crea una conexión en modo cliente con un servidor y permite mostrar el código de una
página WEB
El servidor utilizado (host) es www.vermiip.es
Este código de ejemplo es de público dominio.
#include <ESP8266WiFi.h> //Incluye la librería ESP8266WiFi
const char* ssid = "renly"; //Indicamos el nombre de la red WiFi (SSID) a la que
queremos conectarnos.
const char* password = "77773748a"; //Indicamos la contraseña de red WiFi
const char* host = "www.vermiip.es"; //Declaramos el servidor de conexión
void setup()
{
Serial.begin(115200); //Inicializamos el Puerto Serie
Serial.println();
Serial.printf("Connecting to %s ", ssid); //Inicializamos la conexión Wi-Fi en modo Station
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
}
void loop()
{
WiFiClient client; //Inicializamos el cliente (client)
Serial.printf("\n[Conectando a %s ... ", host); //Establecemos la conexión con el servidor
if (client.connect(host, 80))
{
Serial.println("conectado]");
Serial.println("[Enviando peticion]"); //Enviamos la petición de datos
client.print(String("GET /") + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n" +
"\r\n"
);
Serial.println("[Respuesta:]"); //Leemos la respuesta del servidor
while (client.connected())
{
if (client.available())
{
String line = client.readStringUntil('\n');
Serial.println(line);
}
}
client.stop(); //Finalizamos la conexión con el servidor
Serial.println("\n[Desconectado]");
}
else
{
Serial.println("conexion con el servidor no lograda!]");
client.stop();
}
delay(10000);
}
Código HTML de la página Web insertada en el sketch, que hace de interfaz gráfico, para
interactuar con el LED (encenderlo y apagarlo):
<!DOCTYPE HTML>
<meta charset='UTF-8'>
<html>
<!--Se envía el estado del LED en función del estado del puerto GPIO-->
<h1>El LED está ahora: APAGADO/ENCENDIDO</h1>

<!--Se crean enlaces para modificar el estado del LED-->


<p>Presiona <a href='/LED=ON'>AQUÍ</a> para encender el LED</p>
<p>Presiona <a href='/LED=OFF'>AQUÍ</a> para apagar el LED</p>
<br>
<!--Se crean cajas de comprobación (checkbox) para modificar el estado del LED-->
<input type='checkbox' onClick=location.href='/LED=ON'> ENCENDER </input>
<br>
<input type='checkbox' onClick=location.href='/LED=OFF'> APAGAR </input>
<br><br>
<!--Se crean botones para modificar el estado del LED-->
<button type='button' onClick=location.href='/LED=ON'> ENCENDER </button>
<button type='button' onClick=location.href='/LED=OFF'> APAGAR </button>
<br><br>
<!--Se crean botones con estilos para modificar el estado del LED-->
<button type='button' onClick=location.href='/LED=ON' style='margin:auto; background-
color:green; color:#A9F5A9; padding:5px; border:2px solid black; width:200;'><h2>
ENCENDER</h2> </button>
<button type='button' onClick=location.href='/LED=OFF' style='margin:auto; background-
color:red; color:#F6D8CE; padding:5px; border:2px solid black; width:200;'><h2>
APAGAR</h2> </button>
<br><br>
<!--Se crea un único botón para modificar el estado del LED-->
<!--Se hace la pregunta en función del estado del puerto GPIO-->
<button type='button' onClick=location.href='/LED=ON/OFF'> ENCENDER/APAGAR
</button>
</html>

Para poder conectar con la red WiFi realizaremos los siguientes pasos:
Desde el dispositivo cliente -con el que se requiere conectar (PC, Smart Phone, Tablet…) se
buscara las redes WiFi visibles.
Conectar con la red "renly" con la clave "77773748a".
Abrir el navegador Web e iremos a la dirección http://192.168.4.1

Desarrollar una aplicación que permita al NODE MCU conectarse como cliente de un
servidor WEB dentro de una red WiFi.
Se sugiere visitar la página web: http://www.esploradores.com
Los pasos para establecer una conexión como cliente son los siguientes:
Conexión WiFi
En primer lugar se debe establecer la conexión con el punto de acceso la red Wi-Fi (router),
para acceder a Internet. El modo de conexión es Station y está explicado detenidamente en
la siguiente práctica.
Selección del servidor
Una vez establecida la conexión a la red, el cliente se debe conectar con el servidor
específico. La dirección WEB del servidor se declara en la variable host: const char * host =
" www.vermiip.es”;
El servidor elegido es www.vermiip.es, que es una página de Internet que permite visualizar
nuestra IP pública. Esta elección se ha hecho para extraer en el segundo ejemplo el dato
concreto de nuestra IP pública del contenido de la página WEB.
Node MCU Usuario
#include <ESP8266WiFi.h> //Incluye la librería ESP8266WiFi
const char ssid[] = "nasus"; //Definimos la SSDI de nuestro servidor WiFi -nombre de red-
const char password[] = "nasus123"; //Definimos la contraseña de nuestro servidor
WiFiServer server(80); //Definimos el puerto de comunicaciones
int PinLED = 2; //Definimos el pin de salida - GPIO2 / D4
int estado = LOW; //Definimos la variable que va a recoger el estado del LED
void setup() {
Serial.begin(115200);
pinMode(PinLED, OUTPUT); //Inicializamos el GPIO2 como salida
digitalWrite(PinLED, LOW); //Dejamos inicialmente el GPIO2 apagado
server.begin(); //inicializamos el servidor
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password); //Red con clave, en el canal 1 y visible
//WiFi.softAP(ssid, password,3,1); //Red con clave, en el canal 3 y visible
//WiFi.softAP(ssid); //Red abierta
Serial.println();
Serial.print("Direccion IP Access Point - por defecto: "); //Imprime la dirección IP
Serial.println(WiFi.softAPIP());
Serial.print("Direccion MAC Access Point: "); //Imprime la dirección MAC
Serial.println(WiFi.softAPmacAddress());
//IPAddress local_ip(192, 168, 1, 1); //Modifica la dirección IP
//IPAddress gateway(192, 168, 1, 1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.softAPConfig(local_ip, gateway, subnet);
//Serial.println();
//Serial.print("Access Point - Nueva direccion IP: ");
//Serial.println(WiFi.softAPIP());
}
void loop()
{
// Comprueba si el cliente ha conectado
WiFiClient client = server.available();
if (!client) {
return;
}
// Espera hasta que el cliente envía alguna petición
Serial.println("nuevo cliente");
while(!client.available()){
delay(1);
}
// Imprime el número de clientes conectados
Serial.printf("Clientes conectados al Access Point: %dn", WiFi.softAPgetStationNum());
// Lee la petición
String peticion = client.readStringUntil('r');
Serial.println(peticion);
client.flush();
// Comprueba la petición
if (peticion.indexOf('/LED=ON') != -1) {
estado = HIGH;
for(int i=0;i<=11;i++){
digitalWrite(PinLED,HIGH);
delay(500);
digitalWrite(PinLED,LOW);
delay(500);
}
}
if (peticion.indexOf('/LED=OFF') != -1){
estado = LOW;
}
//Enciende o apaga el LED en función de la petición
//digitalWrite(PinLED, estado);
// Envía la página HTML de respuesta al cliente
client.println("HTTP/1.1 200 OK");
client.println(""); //No olvidar esta línea de separación
client.println("<!DOCTYPE HTML>");
client.println("<meta charset='UTF-8'>");
client.println("<html>");
//Imprime el estado del led
client.print("<h1>El LED está ahora: ");
if(estado == HIGH) {
client.print("ENCENDIDO</h1>");
} else {
client.print("APAGADO</h1>");
}
//Se crean enlaces para modificar el estado del LED
client.println("Presiona <a href='/LED=ON'>AQUÍ</a> para encender el LED<br>");
client.println("Presiona <a href='/LED=OFF'>AQUÍ</a> para apagar el LED<br><br>");
//Se crean cajas de comprobación (checkbox) para modificar el estado del LED
client.println("<input type='checkbox' onClick=location.href='/LED=ON'> ENCENDER
</input><br>");
client.println("<input type='checkbox' onClick=location.href='/LED=OFF'> APAGAR
</input><br><br>");
//Se crean botones para modificar el estado del LED
client.println("<button type='button' onClick=location.href='/LED=ON'> ENCENDER
</button>");
client.println("<button type='button' onClick=location.href='/LED=OFF'> APAGAR
</button><br><br>");
//Se crean botones con estilos para modificar el estado del LED
client.println("<button type='button' onClick=location.href='/LED=ON'
style='margin:auto; background-color:green; color:#A9F5A9; padding:5px; border:2px solid
black; width:200;'><h2> ENCENDER</h2> </button>");
client.println("<button type='button' onClick=location.href='/LED=OFF'
style='margin:auto; background-color:red; color:#F6D8CE; padding:5px; border:2px solid
black; width:200;'><h2> APAGAR</h2> </button><br><br>");
//Se crea un único botón para modificar el estado del LED
if(estado == HIGH) {
client.print("<button type='button' onClick=location.href='/LED=OFF'> APAGAR
</button><br><br>");
} else {
client.print("<button type='button' onClick=location.href='/LED=ON'> ENCENDER
</button><br><br>");
}
client.println("</html>");
delay(1);
Serial.println("Petición finalizada"); // Se finaliza la petición al cliente. Se inicaliza la
espera de una nueva petición.
Conclusiones.
En el laboratorio se probó que el NODE MCU ESP 8266 puede ser configurado como servidor
de WiFi para el control de un LED, pero además del control de un LED desde una pagina
web, las aplicaciones de esta configuración son muchas pues se podría controlar diversas
herramientas mediante WiFi.
En la parte de la aplicación del uso del NODE MCU ESP 8266 como cliente de un servidor
web nos permite enlazar la placa de desarrollo con una pagina web, pudiendo ver en el
monitor serie del IDE Arduino la pagina a la que se direcciono la placa.
Bibliografía.
ESPloradores,Varios,http://redestelematicas.com/modos-de-funcionamiento-de-las-
redes-wi-fi/ , recuperado el 22 de noviembre de 2018.
ESPloradores,Varios,http://www.esploradores.com/conexion-del-procesador-esp8266-
como-cliente-de-un-servidor-web/ , recuperado el 22 de noviembre de 2018.
Introducción: cómo se establece una red Wi-Fi
Técnicamente Wi-Fi es una tecnología que permite constituir una red local inalámbrica, es
decir, conectar varios dispositivos cercanos entre sí de forma inalámbrica, es decir, sin
cables.

Para constituir una red Wi-Fi se utiliza un dispositivo de interconexión conocido como Punto
de acceso inalámbrico (Wireless Access Point), también nombrado por sus siglas en inglés
WAP, o simplemente AP. Este dispositivo es el que establece los parámetros de
funcionamiento de la red Wi-Fi, centraliza y gestiona todas las comunicaciones
inalámbricas.

Una red
Wi-Fi constituida por un AP se dice que es una red Wi-Fi funcionando en modo
Infraestructura. Muchos fabricantes lo han denominado modo AP. En dicho modo, el AP
establece la red Wi-Fi, básicamente permitiendo configurar el nombre de la red (parámetro
conocido como SSID), el tipo de seguridad (WPA, WPA2) y la clave de acceso a la red en caso
de ser necesaria.
Como se observa en la figura anterior un AP constituye una red Wi-Fi pero por si solo no
proporciona acceso a Internet. El AP, además de establecer una red Wi-Fi, permite conectar
los dispositivos inalámbricos a una red cableada. Para ello, todos los APs disponen de un
puerto Ethernet. Si el AP está conectado a una red cableada con conexión a Internet (o
directamente a un router), los dispositivos Wi-Fi tendrán acceso a Internet.

En la figura anterior se puede observar la parte trasera de un AP donde se incluye un puerto


Ethernet y en la parte derecha se representa la conexión de un AP directamente a un router
para proporcionar conexión a Internet a los dispositivos inalámbricos.

En esta figura se observa la conexión de un AP al switch de una red cableada que tiene
acceso a Internet.

Habitualmente, el nombre de la red Wi-Fi (el SSID) es “público”, es decir, que cualquier
dispositivo Wi-Fi que esté dentro del área de cobertura del AP, puede detectar la presencia
de la red Wi-Fi y solicitar la conexión a la misma. Habitualmente, el software de
configuración detecta automáticamente el tipo de seguridad y solicita la clave de conexión
a la red.

Modos de funcionamiento Wi-Fi


Ya conocemos las dos opciones más habituales de establecer una red Wi-Fi. O bien
utilizando un Punto de acceso Wi-Fi (AP) o bien utilizando el llamado router Wi-Fi, que
además de proporcionar una conexión con Internet, incluye las funciones de un AP.

La ventaja de utilizar el router Wi-Fi es la simplificación de dispositivos de red. Con un router


Wi-Fi tenemos un “todo-en-uno”: router y AP. Además, la mayoría incluye cuatro puertos
Ethernet para conectar hasta cuatro dispositivos por cable al router.
El inconveniente de los routers Wi-Fi es que ofrecen ciertas limitaciones en las posibilidades
de conectividad Wi-Fi. Estas limitaciones están perfectamente justificadas en los entornos
residenciales donde se utilizan estos routers. Sin embargo, en ciertas ocasiones y sobre
todo, en entornos más profesionales pueden ser necesarias características adicionales.

Una de las posibilidades que ofrecen los AP es el uso de diferentes modos de configuración.
A continuación hacemos un repaso a los modos de funcionamiento más habituales que un
AP puede soportar:

 Modo AP o infraestructura. Ya hemos hablado de este modo. Es el más habitual y el


que está implementado en los routers Wi-Fi. Permite establecer un red Wi-Fi en la
zona de cobertura del dispositivo. Más adelante veremos que este modo también se
utiliza para ampliar la capacidad de una red Wi-Fi, ampliando el número de APs.
 Modo WDS (Wireless Distribution System). Este modo de funcionamiento permite
establecer una conexión directa inalámbrica entre dos APs. Es un modo utilizado para
establecer puentes inalámbricos que permitirán conectar dos redes separadas. El
problema de este modo es que no está incluido en el estándar Wi-Fi por lo que puede
dar problemas si se utiliza con APs de distinto fabricante.
 Modo WDS con AP. Este modo es una mezcla de los dos anteriores. Permite a un AP
establecer un puente inalámbrico con otro AP y al mismo tiempo establecer una red
Wi-Fi. No es un modo muy utilizado por cuestiones de rendimiento.
 Modo Repeater (también denominado modo Range Extender). Este modo de
funcionamiento se ha popularizado en los entornos residenciales ya que permite
ampliar la cobertura de la red Wi-Fi proporcionada por el router Wi-Fi del ISP de forma
fácil. De hecho, se han comercializado dispositivos Wi-Fi específicos que funcionan en
este modo, conocidos como Repetidores Wi-Fi.
 Modo Wireless Client. Este modo permite que un AP se comporte como un cliente
Wi-Fi. Se utiliza en ciertos casos para establecer un puente inalámbrico con APs de
diferente fabricante.
Tanto los modos WDS como Wireless Client, técnicamente no constituyen redes Wi-Fi, ya
que no permiten la conexión de dispositivos Wi-Fi. Su función es la de establecer puentes
inalámbricos. Sin embargo, están incuidos en este artículo porque, los puentes
inalámbricos, en determinados casos pueden ser una buena solución de conectividad
inalámbrica.

En los próximos apartados veremos ejemplos de los principales usos de los modos
anteriores.

Modo infraestructura con varios APs


Esta es una configuración muy común en entornos profesionales donde es necesario
proporcionar acceso Wi-Fi en áreas extensas o donde exista un número alto de dispositivos.
La clave de este modo es tener la infraestructura de cableado necesaria ya que todos los
APs deben ir conectados a la red cableada donde se encuentre el router que proporcione
salida a Internet.

Este modo de funcionamiento es totalmente interoperable, es decir, funciona utilizando


APs de diferentes fabricantes. Lo importante es que todos los APs utilicen el mismo
estándar Wi-Fi y los mismos parámetros (SSID, tipo de seguridad y clave).

Vous aimerez peut-être aussi