Icono del sitio Home Assistant Fácil

Servidor web con ESP32

Un servidor web con ESP32, ¿Para qué?

Es posible que te preguntes justo esto. Si lo piensas un momento te darás cuenta (posiblemente con preocupación) que muchas horas de nuestra vida giran alrededor de páginas web. Las consumimos a saco, leemos el periódico, buscamos hoteles, que tiempo va a hacer mañana, etc, etc, etc… Podría estar así hasta que el mundo se acabe.

Bueno, capaz que no tanto :D

En fin, ¿Qué te parece incorporarlo a nuestra domótica casera?

Podríamos saber la temperatura de una habitación, encender luces o apagarlas y todo a través de un servidor web.

Aunque lo más interesante es el hardware donde irá instalado. Un famoso microcontrolador de muy muy pocos euros. El ESP32.

Y, por lo tanto, este artículo va de eso. De quitarse el miedo e ir agregando cada día más posibilidades a tus decisiones.

Para ello vamos a hacer un ejemplo muy sencillo. Apagaremos un par de LED desde nuestro móvil. Y quien dice un LED dice cualquier dispositivo que acepte estados binarios, es decir, ON/OFF, HIGH/LOW, en definitiva 1 o 0.

Vamos allá.

Requisitos del servidor web con ESP32

Puedes utilizar cualquier microcontrolador que tenga capacidad de comunicarse vía TCP/IP, que es el protocolo de comunicaciones que utilizan los servicios WEB en el planeta Tierra.

Ese microcontrolador tiene que poder comunicarse, ya sea por cable o por wifi. Para ello, vamos a utilizar un ESP32 de la empresa Espressif Systems, que aparte de tener una antena Wifi también tiene capacidad de comunicarse vía Bluetooth BLE.

En particular el modelo ESP32-WORM-32.

Esto es lo que necesitas:

Si quieres profundizar en esta página encontraras todo lo relevante de todos los modelos ESP32.

¿Qué es un servidor web y cómo funciona?

¿Qué crees que hay detrás de una dirección WEB (URL) que escribes en un navegador (como Chrome, Firefox, etc.)? Por ejemplo, la de un periódico digital http://www.elperiodicodigital.com (no existe, es solo un ejemplo).

Lo que hay detrás es un mínimo de tres entornos que pueden estar separados o no, te lo cuento muy sintetizado, son:

Entiendo que puedas pensar que estoy ampliando demasiado el entorno, lo sé, pero me interesa que entiendas como funciona todo este tinglado a nivel empresarial. Reflexionar a lo grande no es ningún pecado. Quedaros con la idea y nada más.

Dependiendo del dinero que pueda una empresa gastar, estos entornos pueden estar en el mismo servidor o no. Incluso aun separados, cada entorno puede tener 1 o N servidores, además estos pueden crecer o disminuir en función de la carga que tengan.

Un periódico digital es un ejemplo perfecto de esto último, imagínate que publican un bombazo, el servicio puede crecer automáticamente en 2 o N servidores para dar servicio a una concurrencia de clientes alta, cuando la noticia deja de ser un bombazo, de la misma manera, los servidores que componen el servicio del periódico digital decrecerán hasta adecuarse a la concurrencia normal.

Ahora volvamos a la tierra, en nuestro caso solo vamos a servir páginas web con HTML y vamos a formatearlas con un poco de CSS. Y en el proceso, vamos a interactuar con nuestro ESP32 y nuestro móvil.

Y volviendo al principio, cuando escribes una página WEB (URL) en un navegador y pulsas INTRO/ENTER, lo que hace tu navegador es enviar una solicitud HTTP al servidor WEB (GET request). El trabajo se traslada al servidor WEB que debe de poder procesar esa solicitud.

Por ejemplo, imagina que escribes una URL como http://192.168.1.125/ledon en el navegador de vuestro PC o móvil. El navegador envía una solicitud HTTP al ESP32 que procesa esta solicitud, la lee y entiende que el usuario quiere encender un LED, el ESP32 enciende el LED y devuelve una página web al navegador mostrándole el estado del LED: ON

Para lograr este cometido vamos a utilizar dos librerías:

Modos de funcionamiento ESP32

El ESP32 con la librería Wifi.h nos posibilita trabajar de varias maneras diferentes. No solo la típica conexión al AP (punto de acceso) de tu router (como cualquier PC o móvil), sino que también permite una conexión directa entre ESP32 y los clientes sin pasar por el router, ni por su punto de acceso Wifi.

Cualquiera de estos modos de operar son posibles con ESP32, la diferencia radica en decidir como quieres que se comporte el ESP32.

Servidor web con ESP32

Este es el camino que vamos a seguir:

Compras

Te he puesto como opción los cables porque el ESP32 que yo he utilizado para este artículo no cabe en una placa de pruebas estándar, en mi caso (lo verás en las fotos) he partido por la mitad y las he separado, de ahí el tema de los cables. También puedes comprar dos placas de pruebas e insertar cada fila de pines del ESP32 en cada una de las placas de prueba.

Las resistencias y los dos LED, van de la mano, es decir, no todos los colores de un LED necesitan la misma resistencia, como no es lo mismo su diámetro, LED de 5 mm o 3 mm.

Esquema del prototipo de nuestro servidor web con ESP32

El diseño no tiene misterio alguno, solamente debes de tener precaución al colocar los diodos LED en su posición correcta, la patilla más corta llamada cátodo es el negativo que conectaremos al pin GND del ESP32.

Utilizo los pines G4 y G5 para alimentar los LED. Como puedes ver en la imagen.

Nada, del dicho al hecho… en este caso no hay un gran trecho, es muy sencillo, solo atento a la posición del los LED

Código del servidor web con ESP32

He dejado en los comentarios del propio programa las explicaciones más relevantes del código. De todos modos, os dejo una serie de enlaces si quieres profundizar.

Primero debes de configurar tu IDE Arduino para que reconozca tu ESP32 y el puerto de comunicaciones correcto para transmitir y recibir datos por el puerto serie.

Placa: «ESP32 Dev Module».

Puerto: depende de tu sistema operativo COMx para Windows y /dev/xxxxx para los Linux y Mac.

Si quieres ver en profundidad como se configura el IDE de Arduino pásate por esta página, además encontrarás datos sobre el ESP32, pines, características y algunos detalles más.

No olvides subir el siguiente código.

Aquí dejo unos enlaces de interés:

Acceso al servidor web con ESP32

Para acceder a la página del servidor web con ESP32 y ver los mensajes solo tienes que abrir el Monitor Serie, luego de esto, si todo ha ido bien, debes de ver algo parecido a esto:

Verás claramente la IP con la que el servidor web con ESP32 presenta la página.

Accede ahora con tu móvil (o PC) a la dirección http://192.168.1.39 (en mi caso, pero a ti seguro que te aparecerá otra IP).

Si todo ha ido bien, verás que al pulsar alguno de los botones, aparte de aparecer en el Monitor Serie el correspondiente mensaje, el LED se encenderá o apagara.

Puedes jugar a cambiar los colores, modificando el código, por ejemplo, añadiendo un color de fondo

O cambiar los colores de los botones.

Conclusión sobre servidor web con ESP32

Como comente al principio puedes conectar cualquier dispositivo electrónico que responda a un ON/OFF. El ESP32 es pequeño, pero matón y poder acceder vía WEB lo hace bastante atractivo.

Lo que hemos visto es una pequeña pincelada, como ejemplo, la librería WebServer.h no nos permite conexiones simultáneas, para ello necesitamos otra librería, ESPAsyncWebServer que hace que el ESP32 se comporte como un servidor asíncrono. En el propio Arduino IDE tienes ejemplos.

También si ya sabes algo de html y css, existe una manera de poder trabajar con ficheros tipo index.html o micss.css, sin las complicaciones de compilarlos con otro lenguaje de programación, en este caso C++.

Me refiero a SPIFFS (SPI Flash File System), un sistema de ficheros para trabajar con la memoria flash del nuestro ESP32. Este artículo está en inglés, pero es muy bueno.

Bueno, ¿Quién dijo miedo? A por ello. Ciao

Gracias a Depositphotos por la cesión de las imágenes.

Salir de la versión móvil