100% encontró este documento útil (1 voto)
294 vistas

ESP8266 Como Servidor Web para Manejar Un LED - Tutoriales Arduino

Tutorial ESP8266 empleado como servidor WEB

Cargado por

Marcos Correas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
294 vistas

ESP8266 Como Servidor Web para Manejar Un LED - Tutoriales Arduino

Tutorial ESP8266 empleado como servidor WEB

Cargado por

Marcos Correas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

ESP8266 COMO SERVIDOR WEB PARA MANEJAR UN LED


programando el procesador interno del ESP8266

Hom e

ESP8266 Com o Servidor Web Para Manejar Un LED

OBJETIVOS

Ms sobre el mdulo ESP8266 y WIFI.


Presentar la librera WIFI ESP8266 para IDE Arduino.
Mostrar ejemplos de tareas comunes con WIFI.
Activar un LED desde un navegador, mediante un servidor web en ESP8266

MATERIAL REQUERIDO.

Una Protoboard .

Algunos cables de protoboard, preferiblemente Dupont macho/hembra.

Un mdulo WIFI ESP8266

Un adaptador FTDI a USB.

http://www.prometec.net/esp8266-con-arduino-ide/

1/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

Una fuente de alimentacin externa de 3.3V si fuera necesario

EMPEZANDO DE NUEVO CON ESP8266

Vale, hemos ido pasando de considerar a este pequeo modulo, como un simple y barato shield WIFI para Arduino, a enterarnos de que dispone
de un pequeo y competente procesador propio interno.
Por si fuera poco, resulta que hay unos seores que han desarrollado un pluggin para que podamos programarlo directamente desde el IDE
Arduino como si fuera un Arduino normal, con el mismo modelo y las mismas instrucciones.
En las ltimas sesiones hemos visto como instalar este pluggin y hasta hemos hecho un pequeo programa, el sencillo blinking LED, para que
viramos como acceder a ese procesador desde el IDE normal de Arduino.
Pero sabis que? An hay ms. Porque naturalmente este modulito contiene todo el hardware y firmware necesarios para manejar el WIFI y
para poder acceder al TCPIP interno, necesitamos una librera adecuada.
Y naturalmente, la gente que ha desarrollado el pluggin se han molestado en desarrollar esa librera y adems de usar como base la librera WIFI de
Arduino, de modo que se maneja prcticamente igual que la librera oficial y los ejemplos oficiales corren con un mnimo de modificacin.
Qu os parece? Por el precio de una entrada de cine, tenemos procesador propio, stack TCPIP y acceso a todo ello mediante una librera igual a
la oficial, que todo ello costara 20 de un Arduino y 65 de un shield WIFI oficial, o sea ms de 80. Quin da ms?
Es un buen momento para que cerris la boca, para que no os entren moscas y poder entender porque este modulito est causando furor en los
foros IOT.
Y ahora que ya hemos puesto las bases necesarias para trabajar con el ESP8266 desde el IDE Arduino, vamos a empezar a meternos en serio con
l, viendo como accedemos a la WIFI directamente con su procesador interno.

ACCEDIENDO A LA WIFI DESDE ESP8266

Vamos a ir viendo los procedimientos bsicos para gestionar la conexin WIFI con la nica y exclusiva ayuda de nuestro flamante modulito
ESP8666.
Para ello, es imprescindible que tengis disponible el pluggin para el IDE Arduino. Si no lo habis instalado aun, podis ver el procedimiento en la
sesin previa, porque sin l no podris programar los ejemplos que veremos en esta sesin.

INICIO

TIENDA

TUTORIALES

FORO

Todos los programas que vamos a ver en esta sesin estn basados en los ejemplos que acompaan elpluggin Arduinoynuestro nico mrito,ha
sido limpiar un poco, eliminando lo superfluo, y procurar presentarlos de un modo un poco ms didctico, siguiendo la tradicin de ejemplos
minimalistas para facilitar el arranque.
Y dicho esto, vamos a empezar viendo cmo hacemos para ver que WIFIshay disponibles en tu zona
http://www.prometec.net/esp8266-con-arduino-ide/

2/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

LISTANDO LAS WIFI DISPONIBLES

El programa necesario, Prog_122_1empieza incluyendo la librera imprescindible:

#include "ESP8266WiFi.h"

Ahora podemos empezar ya con el setup de nuestro programa:

void setup()
{

Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Configuracion completa");

Empezamos por establecer 115.200 como velocidad serie porque puede haber un flujo de datos importante.

No os preocupis por esas historias de miedo de que es una velocidad alta. Va como una seda y funciona
perfecto.

Las siguientes dos lneas establecen el modo de conexin como estacin (Station) y desconectan de cualquier conexin previa. La ltima lnea
enva un mensaje a la consola Arduino con toda normalidad.
Vamos a ver como escaneamos las redes. Empecemos encontrando el nmero de Redes disponibles:

int n = WiFi.scanNetworks();
if (n == 0)
Serial.println("No encuentro redes disponibles");

En caso de haber encontrado redes, sacamos un mensajito indicando el numero de redes disponibles:

Serial.print(n);
Serial.println(" networks found");

Y pasmos directamente a enumerarlas:

for (int i = 0; i < n; ++i)


{ // Print SSID y RSSI para cada una
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
delay(10);
}

http://www.prometec.net/esp8266-con-arduino-ide/

3/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

La librera ya ha generado unos arrays con las caractersticas de cada una de las redes que ha encontrado y podemos imprimir los datos con un
sencillo for.
Esta es la elegancia que nos gusta, si seor y adems es la librera la que trabaja, no nosotros. EL resultado en mi zona es este:

CONECTANDO A LA WIFI

Ya sabemos cmo listar las Wifi. Ahora conectarnos a una es igual de sencillo mediante la librera. Empezamos incluyendo la librera y definiendo
cosas: Prog_122_2

#include <ESP8266WiFi.h>

const char* ssid = "charly";

// Aqui van vuestros datos

const char* password = "contrase";

Necesitamos el nombre y la contrasea de acceso como es habitual, y para conectar podemos usar este cdigo:

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{

delay(500);
Serial.print(".");

}
Serial.println(WiFi.localIP());

El programa completo incluye algunas lneas que impriman los resultados y poco ms:

http://www.prometec.net/esp8266-con-arduino-ide/

4/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

MONTANDO UN PEQUEO SERVIDOR WEB

Con la librera, vienen varios ejemplos que os recomiendo que revisis, porque incluyen ejemplos prcticos de cmo hacer cosas y siempre vienen
bien para daros ideas y ver cmo hacer cosas concretas.
Un ejemplo que seguro que os va a gustar es el de un pequeo servidor web en el ESP8266 que nos permite encender y apagar un diodo LED
conectado a su pin GPIO2.Prog_122_3
Empezamos cargando las libreras y claves de conexin

#include <ESP8266WiFi.h>

const char* ssid = "charly";


const char* password = "contrase";

Y ahora definimos una instancia del servidor:

WiFiServer server(80);

Pasamos ahora al setup, en el que definimos el GPIO02 como salida y nos conectamos a la WIFI como en los ejemplos anteriores:

void setup()
{ Serial.begin(115200);
delay(1500);

pinMode(2, OUTPUT);

// GPIO2

digitalWrite(2, LOW);

Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)


{

delay(500);

http://www.prometec.net/esp8266-con-arduino-ide/

5/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino


{

delay(500);
Serial.print(".");

}
Serial.println("WiFi connected");

server.begin();

// Iniciamos el servidor

Serial.println("Server started");
Serial.println(WiFi.localIP());

// Imprimimos la IP

La nica novedad es la instruccin que inicia el servidor. En el loop creamos el cliente y comprobamos si hay algo disponible:

WiFiClient client = server.available();


if (!client)
return;

Serial.println("new client");
while(!client.available())
delay(1);

Ahora vamos a leer el mensaje del cliente a un String y vaciamos el cliente:

String req = client.readStringUntil('\r');


Serial.println(req);
client.flush();

EL programa busca el texto /gpio/1 para encender el LED y lo apaga si encuentra /gpio/0 y si no es nada de esto enva un mensaje de error.

int val;
if ( req.indexOf("/gpio/0") != -1)
val = 0;
else if (req.indexOf("/gpio/1") != -1)
val = 1;
else
{ Serial.println("invalid request");
client.stop();
return;
}

El resto del ejemplo simplemente escribe en el pin GPIO2, el valor correspondiente a val

digitalWrite(2, val);

Y el resto del programa enva la respuesta HTTP al navegador para indicar si el valor actual es HIGH o LOW:

String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";


s += (val)?"high":"low";
s += "</html>\n";

client.print(s);

// Enviar el resultado de val al cliente

delay(1);
Serial.println("Client disonnected");

Aqu os dejo un mini video con el resultado final

Usando ESP8266 como web server sin Arduino

http://www.prometec.net/esp8266-con-arduino-ide/

6/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

No deja de ser sorprendente que un pequeo chip, ridculamente barato, incluya procesador ms WIFI completo y la posibilidad de usarse como
una solucin completa para pequeos proyectos. En realidad la limitacin no viene de la capacidad del procesador o del WIFI del ESP8266, sino
del escaso nmero de patas que este montaje particular permite acceder de o desde el exterior.
Solamente dos pines digitales GPI00 y GPIO2, pero veremos en ms captulos que hay otros modelos de encapsulado que nos ofrece un nmero
superior de pines disponibles que podemos usar para proyectos ms complejos.
Pero esto ser tema de otras sesiones ms adelante, donde veremos algunos de esos modelos y veremos cmo trabajar con ellos

RESUMEN DE LA SESIN

Vimos el ESP8266 desde un nuevo punto de vista, como procesador.


Hemos visto como disponer del pluggin IDE para este mdulo, bien como segunda instalacin o bien
instalndolo en nuestro IDE normal.
Presentamos la configuracin bsica del entorno para programa directamente el ESP8266.
Volcamos nuestro primer programa y probamos el simple Blink LED

ANTERIOR

SIGUIENTE

http://www.prometec.net/esp8266-con-arduino-ide/

7/8

25/10/2015

ESP8266 como servidor web para manejar un LED | Tutoriales Arduino

CATEGORIAS DE LOS
PRODUCTOS
Selecciona una categora

Copyright 2014 Redline Asesores All Rights Reserved. | Redline Asesores

http://www.prometec.net/esp8266-con-arduino-ide/

8/8

También podría gustarte