Tutorial del Internet de las Cosas y Bluetooth con el ESP32
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
195.- Wemos D1 R32 ESP32. Servidor web Asíncrono.
________________________________
22.- Servidor web con conexión asíncrona. (I)
p62D_esp32_asincrono.aia
- Este es otro tipo de servidor web, es Asíncrono.
- Observa que la parte del servidor no está en el loop {}
- En este código el módulo se conectar a nuestro Router Wifi.
- Escribimos un número en la aplicación, ese número irá al módulo ESP32, se mostrará en el Monitor Serie y se devolverá a la aplicación.
- La variable es mi_valor
- Aquí están las dos librerías necesarias para trabaja en Asíncrono, descomprime este archivo y copia las dos carpetas en la carpeta libraries de Arduino:
AsyncTCP.zip
___________________________________________________
- Diseño.
___________________________________________________
- Bloques.
___________________________________________________
- Código.
wervidor_asincrono.ino |
// Juan A. Villalpando.
// KIO4.COM
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
const char* ssid = "Nombre_de_tu_Red_Wifi.";
const char* password = "Clave_WiFi";
AsyncWebServer server(80);
String mi_valor = "23.00";
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
server.on ("/app", HTTP_GET, [] (AsyncWebServerRequest *request)
{
if(request->hasHeader("mi_valor")){
AsyncWebHeader* h = request->getHeader("mi_valor");
request-> send (200, "text/plain", h->value().c_str());
Serial.printf("Mi valor: %s\n", h->value().c_str());
}
});
server.begin();
}
void loop(){}
|
_________________________________
22.- Servidor web con conexión asíncrona. Punto de Acceso. (II)
- El mismo código anterior, pero como Punto de Acceso.
- En esta ocasión nuestro módulo no está conectado al Router, es independiente. Nuestro módulo crea la red 192.168.4.X
- Debes cambiar la red WiFi del móvil a "Juan" con contraseña "12345678"
- Es conveniente instalar la aplicación para comprobar su funcionamiento y cambiar en "Ajustes" la red Wifi a la creada por el ESP32.
- Si tienes el MIT Companion en 192.168.1.5 y la nueva es es 192.168.4.1, no se verá una a otra.
- Puedes utilizar la misma aplicación de App Inventor que hemos visto en el apartado anterior cambiando la IP: 192.168.4.1
- En la aplicación de App Inventor debes poner:
http://192.169.4.1/app
wervidor_asincrono_punto_acceso.ino |
// Juan A. Villalpando.
// KIO4.COM
#include "WiFi.h"
#include <WiFiAP.h>
#include "ESPAsyncWebServer.h"
// Set these to your desired credentials.
const char* ssid = "Juan";
const char* password = "123456789";
AsyncWebServer server(80);
String mi_valor = "23.00";
void setup(){
Serial.begin(115200);
Serial.println();
Serial.println("Configuring access point...");
// You can remove the password parameter if you want the AP to be open.
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.begin();
Serial.println("Server started");
server.on ("/app", HTTP_GET, [] (AsyncWebServerRequest *request)
{
if(request->hasHeader("mi_valor")){
AsyncWebHeader* h = request->getHeader("mi_valor");
request-> send (200, "text/plain", h->value().c_str());
Serial.printf("Mi valor: %s\n", h->value().c_str());
}
});
server.begin();
}
void loop(){}
|
_________________________________
22.- Servidor web con conexión asíncrona. Página web. Número aleatorio. (III)
- En este ejemplo el módulo se conecta a nuestro Router.
- Se puede utilizar la aplicación de App Inventor que hemos visto anteriormente modificando y ampliando algunos bloques.
- Si en un navegador web escribimos http://192.168.1.11/pag saldrá una página web [los Botones no realizan ningún enlace]
- Si en un navegador web escribimos http://192.168.1.11/ale saldrá un número aleatorio del 0 al 100 con dos decimales.
- Si en la app de App Inventor ponemos http://192.168.1.11/app con mi_valor obtendremos ese valor en el Monitor Serie y en retorno.
- En el loop {} en vez de crear números aleatorios, puedes conectar un potencíómetro a una entrada Analógica del módulo y transmitir su valor.
servidor_asincrono_punto_acceso.ino |
// Juan A. Villalpando.
// KIO4.COM
// Noviembre 2018
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
const char* ssid = "Nombre_de_tu_Wifi";
const char* password = "Clave_Wifi";
String aleato;
String mi_valor = "23.00";
String paginaweb = "<!DOCTYPE HTML><html><head><meta charset=utf-8>"
"</head><body><font face='Arial'><center><h1>Servidor web con NodeMCU.</h1>"
"<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>"
"<h3>Página web.</h3>"
"<br><br>"
"<img src='http://iesromerovargas.com/kio42.png'><br>"
"<a href='/a'><button>Juan Antonio </button></a>"
"<a href='/b'><button>KIO4.COM </button></a>"
"<a href='/c'><button>Buen tiempo. </button></a>"
"<a href='/d'><button>Puerto Real </button></a>"
"<p><font face='Arial'>Esto es un ejemplo de página web.</font></p>"
"<p><font face='Arial'><a href='http://kio4.com'>kio4.com</a></p>"
"</font></center></body></html>";
AsyncWebServer server(80);
void setup(){
Serial.begin(115200);
delay(10);
// Conecta a la red wifi.
Serial.println();
Serial.println();
Serial.print("Conectando con ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Conectado con WiFi.");
// Esta es la IP
Serial.print("Esta es la IP para conectar: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
server.on ("/pag", HTTP_GET, [] (AsyncWebServerRequest *request)
{request-> send (200, "text/html", paginaweb);});
server.on ("/ale", HTTP_GET, [] (AsyncWebServerRequest *request)
{request-> send (200, "text/plain", aleato);});
server.on ("/app", HTTP_GET, [] (AsyncWebServerRequest *request)
{
if(request->hasHeader("mi_valor")){
AsyncWebHeader* h = request->getHeader("mi_valor");
request-> send (200, "text/plain", h->value().c_str());
Serial.printf("Mi valor: %s\n", h->value().c_str());
}
});
server.begin();
}
void loop(){
float aleatorio = random(0, 10000)/ 100.0;
aleato = (String) aleatorio;
}
|
https://github.com/me-no-dev/ESPAsyncWebServer/blob/master/README.md
_______________________________
|