0% encontró este documento útil (0 votos)
83 vistas

Servidor Web ESP8266

El ESP8266 es un chip con capacidad Wi-Fi con un microcontrolador que permite a otros microcontroladores conectarse a una red Wi-Fi. Tiene una CPU de 32 bits, memoria RAM y flash, soporte Wi-Fi 802.11 b/g/n, GPIO, interfaces SPI e I2C y puede programarse desde el IDE de Arduino mediante la instalación de un plugin. El documento proporciona detalles sobre cómo crear un servidor web independiente con un ESP8266 que puede controlar dos LED a través de solicitudes HTTP.

Cargado por

Fernando Hdz
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
83 vistas

Servidor Web ESP8266

El ESP8266 es un chip con capacidad Wi-Fi con un microcontrolador que permite a otros microcontroladores conectarse a una red Wi-Fi. Tiene una CPU de 32 bits, memoria RAM y flash, soporte Wi-Fi 802.11 b/g/n, GPIO, interfaces SPI e I2C y puede programarse desde el IDE de Arduino mediante la instalación de un plugin. El documento proporciona detalles sobre cómo crear un servidor web independiente con un ESP8266 que puede controlar dos LED a través de solicitudes HTTP.

Cargado por

Fernando Hdz
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

¿Qué es un ESP8266?

El ESP8266 es un chip con capacidad Wi-Fi con un stack TCP/IP completo y un


microcontrolador, fabricado por Espressif, una empresa China. El primer chip se
hizo conocido el mercado con el módulo ESP-01, desarrollado por la empresa AI-
Thinker. Este pequeño módulo permite a otros microcontroladores conectarse a
una red inalámbrica Wi-Fi y realizar conexiones simples con TCP/IP usando
comandos al estilo Hayes (comandos AT).
Diversos modelos de módulos que utilizan el ESP8266

Características

•   CPU RISC de 32-bit: Tensilica Xtensa LX106 con un reloj de 80 MHz. El reloj de
la CPU y la memoria flash puede duplicarse por overclocking en algunos
dispositivos. La CPU puede funcionar a 160 MHz y la memoria flash puede
trabajar entre 40 MHz y 80 MHz. Varía según la versión del chip.
•   RAM de programa de 64 KB, RAM de datos de 96 KB
•   Capacidad de memoria externa flash QSPI de 512 KB a 4 MB (puede manejar
hasta 16 MB)
•   IEEE 802.11 b/g/n Wi-Fi
     o Tiene integrados: TR switch, balun, LNA, amplificador de potencia de RF y
una red de adaptación de impedancias
     o Soporte de autenticación WEP y WPA/WPA2
•   16 pines GPIO (Entradas/Salidas de propósito general)
•   Interfaces SPI, I²C,
•   Interfaz I²S con DMA (comparte pines con GPIO)
•   Pines dedicados a UART, más una UART únicamente para transmisión que
puede habilitarse a través del pin GPIO2
•   1 conversor ADC de 10-bit

El ESP8266 se puede programar desde el IDE de Arduino. Para eso hay que
instalar lo que se llama un plugin, en el que está incluido todo lo necesario para
compilar y subir programas que fueron escritos tal como si fuesen .INO de
Arduino.
Debemos incorporar librerías y los programas de manejo de las placas con el chip
ESP8266 a nuestro IDE. Para hacerlo, debemos indicarle la URL desde donde se
obtienen.
Para hacerlo, debemos abrir el menú Archivo, y luego Preferencias.
Veremos este panel, en la parte inferior el recuadro de texto rotulado Gestor de
URLs Adicionales de Tarjetas. Dentro de él, usando copiar y pegar, se debe
introducir el texto indicado aquí:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Luego pulse en el botón Ok.
Ahora debemos ir al menú Herramientas, luego Placa.
Y finalmente Gestor de Tarjetas, se abrirá una ventana como la que sigue, en la
cual escribimos, en el recuadro superior de filtro/busqueda, “ESP8266” (antes de
terminar de escribir ya aparecerá el Gestor de Tarjetas que buscamos, que indica
que fue creado por “ESP8266 Community”. Allí pulsamos sobre Instalar:
Al abrir nuevamente Herramientas, y luego Placa, deslizamos la lista para ver lo
que aparece al final de ella (abajo), y vemos que ya existen las opciones referidas
a los ESP8266:
Servidor web ESP8266 con IDE Arduino
En este proyecto, creará un servidor web independiente con un ESP8266 que
puede alternar dos LED con Arduino IDE. Este servidor web ESP8266 es móvil y
se puede acceder con cualquier dispositivo que sea como navegador en su red
local.
Prepare el IDE de Arduino
1. Descargue e instale Arduino IDE en su sistema operativo (algunas versiones
anteriores no funcionarán).
2.  Luego, debe instalar el complemento ESP8266 para el IDE de Arduino. Para
eso, vaya a Archivo > Preferencias .
3.  Ingresehttp://arduino.esp8266.com/stable/package_esp8266com_index.jsonen
el campo " URL de administrador de placa adicionales " como se muestra en la
figura a continuación. Luego, haga clic en el botón " Aceptar ".
4.  Vaya a Herramientas > Tablero > Administrador de tableros ...
5.  Desplácese hacia abajo, seleccione el menú de la placa ESP8266 e instale
"e sp8266 by ESP8266 Community ", como se muestra en la figura a continuación.
Cargar código al ESP-01 requiere establecer una comunicación en serie entre su
ESP8266 y un programador FTDI como se muestra en el diagrama esquemático a
continuación.

Nota: alternativamente, puede usar un adaptador serie ESP8266-01 , que es más


fácil de usar y menos propenso a errores.
La siguiente tabla muestra las conexiones que necesita hacer entre el ESP8266 y
el programador FTDI.

ESP8266 Programador de FTDI

RX TX

TX RX

CH_PD 3.3V

GPIO 0 GND

VCC 3.3V

GND GND

Codigo de Ejemplo.

Complete project details at https://randomnerdtutorials.com


*********/

// Load Wi-Fi library


#include <ESP8266WiFi.h>

// Replace with your network credentials


const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Set web server port number to 80


WiFiServer server(80);

// Variable to store the HTTP request


String header;

// Auxiliar variables to store the current output state


String output5State = "off";
String output4State = "off";

// Assign output variables to GPIO pins


const int output5 = 5;
const int output4 = 4;

// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0;
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
Serial.begin(115200);
// Initialize the output variables as outputs
pinMode(output5, OUTPUT);
pinMode(output4, OUTPUT);
// Set outputs to LOW
digitalWrite(output5, LOW);
digitalWrite(output4, LOW);

// Connect to Wi-Fi network with SSID and password


Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}

void loop(){
WiFiClient client = server.available(); // Listen for incoming clients

if (client) { // If a new client connects,


Serial.println("New Client."); // print a message out in the serial port
String currentLine = ""; // make a String to hold incoming data from the
client
currentTime = millis();
previousTime = currentTime;
while (client.connected() && currentTime - previousTime <= timeoutTime) { //
loop while the client's connected
currentTime = millis();
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
header += c;
if (c == '\n') { // if the byte is a newline character
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();

// turns the GPIOs on and off


if (header.indexOf("GET /5/on") >= 0) {
Serial.println("GPIO 5 on");
output5State = "on";
digitalWrite(output5, HIGH);
} else if (header.indexOf("GET /5/off") >= 0) {
Serial.println("GPIO 5 off");
output5State = "off";
digitalWrite(output5, LOW);
} else if (header.indexOf("GET /4/on") >= 0) {
Serial.println("GPIO 4 on");
output4State = "on";
digitalWrite(output4, HIGH);
} else if (header.indexOf("GET /4/off") >= 0) {
Serial.println("GPIO 4 off");
output4State = "off";
digitalWrite(output4, LOW);
}

// Display the HTML web page


client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-
width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS to style the on/off buttons
// Feel free to change the background-color and font-size attributes to fit
your preferences
client.println("<style>html { font-family: Helvetica; display: inline-block;
margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #195B6A; border: none; color:
white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor:
pointer;}");
client.println(".button2 {background-color: #77878A;}</style></head>");

// Web Page Heading


client.println("<body><h1>ESP8266 Web Server</h1>");

// Display current state, and ON/OFF buttons for GPIO 5


client.println("<p>GPIO 5 - State " + output5State + "</p>");
// If the output5State is off, it displays the ON button
if (output5State=="off") {
client.println("<p><a href=\"/5/on\"><button
class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/5/off\"><button class=\"button
button2\">OFF</button></a></p>");
}

// Display current state, and ON/OFF buttons for GPIO 4


client.println("<p>GPIO 4 - State " + output4State + "</p>");
// If the output4State is off, it displays the ON button
if (output4State=="off") {
client.println("<p><a href=\"/4/on\"><button
class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/4/off\"><button class=\"button
button2\">OFF</button></a></p>");
}
client.println("</body></html>");

// The HTTP response ends with another blank line


client.println();
// Break out of the while loop
break;
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}

Debe modificar las siguientes dos variables con sus credenciales de red, para que
su ESP8266 pueda establecer una conexión con su enrutador.
// Replace with your network credentials
const char* ssid = "";
const char* password = "";

Probar el servidor web


Ahora, puede cargar el código y funcionará de inmediato. No olvide comprobar si
tiene seleccionada la placa y el puerto COM adecuados; de lo contrario, recibirá
un error al intentar cargar. Abra el Monitor de serie a una velocidad en baudios de
115200.
Encontrar la dirección IP ESP
Presione el botón RESTABLECER ESP8266, y generará la dirección IP ESP en el
monitor serie
Accediendo al servidor web
Abra su navegador, escriba la dirección IP ESP y verá la siguiente página. El
ESP8266 envía esta página cuando realiza una solicitud en la dirección IP de
ESP.

Si observa el monitor en serie, puede ver lo que está sucediendo en el fondo. El


ESP recibe una solicitud HTTP de un nuevo cliente, en este caso, su navegador.
También puede ver otra información sobre la solicitud HTTP: estos campos se
denominan campos de encabezado HTTP y definen los parámetros operativos de
una transacción HTTP.

Probar el servidor web


Probemos el servidor web. Haz clic en el botón para activarGPIO 5EN. El ESP
recibe una solicitud en la URL / 5 / on y enciende el LED 5.
El estado del LED también se actualiza en la página web.

También podría gustarte