Tutorial del Internet de las Cosas y Bluetooth con el ESP32
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
115.- Wemos D1 R32 ESP32. Cliente de un servidor web instalado en el ordenador.
- Vamos a instalar un pequeñísimo servidor web en nuestro ordenador.
- Este servidor tendrá una página web llamada dato.htm su contenido será la frase: Hola amigo.
- El Wemos entrará en esa página web y mostrará en el Monitor Serie esa frase.
- [Más adelante cuando veamos las pantalla LCD, mostrará la frase en la pantalla LCD]
_____________________________________________________________
1.- Instalación de un Servidor web en nuestro ordenador.
- Vamos a esta página:
7B.- Vamos a instalar un pequeño servidor web mediante un archivo de 146 kB.
- Bajamos el archivo: shttp3.exe
- Lo ejecutamos, se creará en nuestro ordenador la siguiente carpeta: C:\shttps
- Entramos en esa carpeta y ejecutamos
http.exe
- Vamos a C:\shttps\www y creamos un archivo llamado: dato.htm con este contenido: Hola amigo.
- Si ahora vamos a un navegador web y escribimos la IP del ordenador, por ejemplo: 192.168.1.4/dato.htm
- Saldrá esa frase.
_____________________________________________________________
2.- El ESP32 actúa como cliente y lee la página dato.htm del Servidor del ordenador.
- Ahora la tarjeta del ESP32 entrará en el servidor web del ordenador, leerá el archivo dato.htm y mostrará su contenido en el Monitor Serie.
- En este caso asignaremos a nuestra tarjeta una IP estática.
- Tanto el servidor web del ordenador como nuestra tarjeta con el ESP32 deben estar en la misma red local.
cliente_ip_estatica.ino |
#include <WiFi.h>
const char* ssid = "Nombre_de_tu_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
const char* host = "192.168.1.4"; // IP del servidor del ordenador o dominio web.
const char* url = "/dato.htm"; // Página en donde está el dato a mostrar.
IPAddress local_IP(192, 168, 1, 115); // IP estática en la tarjeta del ESP32
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8); //opcional
IPAddress secondaryDNS(8, 8, 4, 4); //opcional
void setup()
{
Serial.begin(115200);
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("Fallo en la configuracion de la STACION.");
}
Serial.print("Conectado a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectado.");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
Serial.print("ESP Mac: ");
Serial.println(WiFi.macAddress());
Serial.print("Máscara de subred: ");
Serial.println(WiFi.subnetMask());
Serial.print("Puerta de enlace: ");
Serial.println(WiFi.gatewayIP());
Serial.print("DNS: ");
Serial.println(WiFi.dnsIP());
}
void loop()
{
delay(5000);
Serial.print("conectando con ");
Serial.println(host);
// WiFiClient es para crear la conexión.
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("error en la conexión.");
return;
}
Serial.print("Petición de URL: ");
Serial.println(url);
// Esto le envía la petición al servidor web del ordenador.
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Conexión: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Rebasado 5 segundos.");
client.stop();
return;
}
}
// Lee todas las líneas recibidas del servidor y las escribe en el Monitor Serie.
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("Conexión cerrada.");
}
|
_____________________________________________________________
3.- Comentarios.
- Observa que hay un temporizador en el código, en este caso cada 5 segundos chequea la pagina dato.htm, si en el servidor web que tenemos en el ordenador, cambiamos el contenido del archivo dato.htm, se mostrará ese contenido.
- Adaptación de:
https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiClientStaticIP/WiFiClientStaticIP.ino
_____________________________________________________________
4.- Propuesta.
- Además de que salga en el Monitor Serie, que salga en la pantalla LCD, consulta el tutorial 140.
_______________________________
|