Servidor web con ESP8266
En este ejemplo veremos la comunicación wifi y usaremos el ESP8266
como un servidor web.
Manipularemos un led que está conectado al GPIO2 del ESP a través de
un navegador web.
La conexión es la misma del primer ejemplo y el código es el siguiente:
#include <ESP8266WiFi.h>
const char* ssid = "WifiNaylamp";
const char* password = "123456789";
WiFiServer server(80);
void setup() {
Serial.begin(9600);
delay(10);
//Configuración del GPIO2
pinMode(2, OUTPUT);
digitalWrite(2,LOW);
Serial.println();
Serial.println();
Serial.print("Conectandose a red : ");
Serial.println(ssid);
WiFi.begin(ssid, password); //Conexión a la red
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectado");
server.begin(); //Iniciamos el servidor
Serial.println("Servidor Iniciado");
Serial.println("Ingrese desde un navegador web usando la siguiente IP:");
Serial.println(WiFi.localIP()); //Obtenemos la IP
}
void loop() {
WiFiClient client = server.available();
if (client) //Si hay un cliente presente
{
Serial.println("Nuevo Cliente");
//esperamos hasta que hayan datos disponibles
while(!client.available()&&client.connected())
{
delay(1);
}
// Leemos la primera línea de la petición del cliente.
String linea1 = client.readStringUntil('r');
Serial.println(linea1);
if (linea1.indexOf("LED=ON")>0) //Buscamos un LED=ON en la 1°Linea
{
digitalWrite(2,HIGH);
}
if (linea1.indexOf("LED=OFF")>0)//Buscamos un LED=OFF en la 1°Linea
{
digitalWrite(2,LOW);
}
client.flush();
Serial.println("Enviando respuesta...");
//Encabesado http
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");// La conexión se cierra después de finalizar de la respuesta
client.println();
//Pagina html para en el navegador
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><title>Naylam Mechatronics</title>");
client.println("<body>");
client.println("<h1 align='center'>Test ESP8266</h1>");
client.println("<div style='text-align:center;'>");
client.println("<br />");
client.println("<button onClick=location.href='./?LED=ON'>LED ON</button>");
client.println("<button onClick=location.href='./?LED=OFF'>LED OFF</button>");
client.println("<br />");
client.println("</div>");
client.println("</body>");
client.println("</html>");
delay(1);
Serial.println("respuesta enviada");
Serial.println();
}
}
En el código deben modificar las variables correspondientes al nombre
y clave de la red.
Después de cargar el programa es necesario abrir el monitor serial para
ver si se ha conectado correctamente a la red, y a la vez ver la IP que se
nos ha asignado.
Posteriormente debemos abrir un navegador e ingresar la IP, es necesario
que la pc o celular estén en la misma red al que está conectado el
ESP8266. Si todo va bien les debe cargar la siguiente página:
Ahora al presionar el botón nuestro ESP realizará la acción
correspondiente.
En el monitor serial pueden monitorear las peticiones que se hacen al
ESP8266, solo mostramos la primera línea de cada petición http pues es
allí donde están los datos que pasamos por URL.