ESP8266 Como Servidor Web para Manejar Un LED - Tutoriales Arduino
ESP8266 Como Servidor Web para Manejar Un LED - Tutoriales Arduino
Hom e
OBJETIVOS
MATERIAL REQUERIDO.
Una Protoboard .
http://www.prometec.net/esp8266-con-arduino-ide/
1/8
25/10/2015
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.
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
#include "ESP8266WiFi.h"
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");
http://www.prometec.net/esp8266-con-arduino-ide/
3/8
25/10/2015
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>
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
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>
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);
delay(500);
http://www.prometec.net/esp8266-con-arduino-ide/
5/8
25/10/2015
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:
Serial.println("new client");
while(!client.available())
delay(1);
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:
client.print(s);
delay(1);
Serial.println("Client disonnected");
http://www.prometec.net/esp8266-con-arduino-ide/
6/8
25/10/2015
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
ANTERIOR
SIGUIENTE
http://www.prometec.net/esp8266-con-arduino-ide/
7/8
25/10/2015
CATEGORIAS DE LOS
PRODUCTOS
Selecciona una categora
http://www.prometec.net/esp8266-con-arduino-ide/
8/8