Servidor web ESP32 usando Arduino IDE

Servidor Web Esp32 Usando Arduino Ide



ESP32 es una placa de microcontrolador que puede conectarse con múltiples dispositivos utilizando sus pines GPIO. Tiene un procesador de doble núcleo con interfaz Wi-Fi y Bluetooth integrada. Ambas características hacen de ESP32 una placa adecuada para diseñar proyectos de IoT. Una de las características principales de la placa ESP32 es su capacidad para conectarse con el punto de acceso existente. No sólo eso, sino que también puede crear su punto de acceso, para que otros dispositivos puedan conectarse a él.

En este artículo de ESP32, exploraremos cómo podemos conectar una placa ESP32 con un punto de acceso y diseñar su servidor web. Usando ese servidor web, controlaremos los LED y los aparatos de CA con la ayuda de un módulo de relé.

Contenido:

1. Servidor web ESP32

El servidor web tiene un programa especial que puede procesar y enviar páginas web a clientes web. Para abrir un sitio web, utilizamos un navegador web. Este navegador web también se denomina cliente web. El sitio web que desea ver está almacenado en otra computadora llamada servidor web.







Para comunicarse entre sí, el servidor web y el cliente web utilizan un lenguaje común llamado HTTP. Así es como funciona: el cliente web solicita al servidor web una página web mediante una solicitud HTTP. El servidor web devuelve la página web solicitada. Si la página web no está presente, verá un mensaje de error.



En ESP32, podemos diseñar un servidor web, ya que ESP32 no sólo puede conectarse con otros dispositivos a través de una red sino que también puede crear su servidor web y responder a las solicitudes recibidas. Todo esto es posible porque el ESP32 puede funcionar en tres modos diferentes:



  • Estación
  • Punto de acceso
  • Tanto la estación como el punto de acceso

Puede consultar este artículo para obtener información sobre los tres modos de ESP32:





Cómo configurar un punto de acceso (AP) ESP32 usando Arduino IDE

2. Cómo crear un servidor web ESP32 usando Arduino IDE

Para crear un servidor web ESP32 usando Arduino IDE, puede conectar ESP32 a un punto de acceso y generar una dirección IP para el servidor web. Puede aplicar algo de HTML y CSS para diseñar la interfaz de su servidor.



Una vez que comprenda el funcionamiento del punto de acceso ESP32, podrá diseñar fácilmente un servidor web ESP32 utilizando el código IDE de Arduino. El código del servidor web ESP32 utiliza la biblioteca Wi-Fi ESP32. Esto facilita nuestro trabajo, ya que esta biblioteca contiene todas las funciones importantes necesarias para conectar ESP32 a un punto de acceso.

Diseñemos un servidor web ESP32 usando el código IDE de Arduino.

3. Código del servidor web ESP32

El código del servidor web ESP32 implica la conexión ESP32 con el punto de acceso y la obtención de la dirección IP del servidor. Una vez que obtenga la dirección IP, deberá conectarse a la misma red para acceder al servidor web ESP32. Desde allí puedes controlar los LED y otros dispositivos.

Abra Arduino IDE y conecte su placa ESP32 con él:

Instalación de la placa ESP32 en Arduino IDE

Una vez que la placa ESP32 esté conectada, cargue el siguiente código en su placa.

/**************

Linuxhint.com
Servidor web ESP32 para controlar los LED

**************/
// Importar la biblioteca para Conexión wifi
#incluir
// Introduce tu nombre y contraseña de Wi-Fi
carácter constante * ssid = 'ESP32' ;
carácter constante * contraseña = '123456789' ;
// Elija el número de puerto para el servidor web
Servidor WiFiServer ( 80 ) ;
// Crear una variable para almacenar la solicitud web.
encabezado de cadena;
// Crear variables para almacenar el estado de las salidas.
Salida de cadena26State = 'APAGADO' ;
Salida de cadena27State = 'APAGADO' ;
// Asigne los pines de salida a las variables.
constante int salida26 = 26 ;
constante int salida27 = 27 ;
tiempo actual largo sin firmar = milis ( ) ;
tiempo anterior largo sin firmar = 0 ;
// Elegir el tiempo límite para la solicitud web en milisegundos
tiempo de espera largo constante = 2000 ;
configuración vacía ( ) {
Serie.comienzo ( 115200 ) ;
  // Establecer los pines de salida como salidas
​ modo pin ( salida26, SALIDA ) ;
​ pinModo ( salida27, SALIDA ) ;
  // Apagar las salidas
escritura digital ( salida26, BAJA ) ;
escritura digital ( salida27, BAJA ) ;
  // Conéctate a la red Wi-Fi
Impresión.serie ( 'Conectado a ' ) ;
Serial.println ( ssid ) ;
WiFi.comenzar ( ssid, contraseña ) ;
  // Esperar hasta la conexión está establecida
  mientras ( Estado de WiFi ( ) ! = WL_CONECTADO ) {
demora ( 500 ) ;
Impresión.serie ( '.' ) ;
  }
Serial.println ( '' ) ;
Serial.println ( 'WiFi conectado.' ) ;
Serial.println ( 'Dirección IP: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
servidor.comenzar ( ) ;
}

bucle vacío ( ) {
Cliente WiFiClient = servidor.disponible ( ) ; // Controlar para nuevos clientes
  si ( cliente ) { // Si un cliente está conectado,
horaactual = milis ( ) ;
Hora anterior = Hora actual;
Serial.println ( 'Cliente nuevo.' ) ; // Notificar al puerto serie
Cadena línea actual = '' ; // Cree una cadena para almacenar los datos del cliente.
    mientras ( cliente.conectado ( ) && Hora actual - Hora anterior = 0 ) {
Serial.println ( 'GPIO 26 activado' ) ;
salida26Estado = 'EN' ;
escritura digital ( salida26, ALTA ) ;
            } demás si ( encabezado.indexOf ( 'OBTENER /26/desactivado' ) > = 0 ) {
Serial.println ( 'GPIO 26 desactivado' ) ;
salida26Estado = 'APAGADO' ;
escritura digital ( salida26, BAJA ) ;
            } demás si ( encabezado.indexOf ( 'OBTENGA /27/en' ) > = 0 ) {
Serial.println ( 'GPIO 27 encendido' ) ;
salida27Estado = 'EN' ;
escritura digital ( salida27, ALTA ) ;
            } demás si ( encabezado.indexOf ( 'OBTENER /27/desactivado' ) > = 0 ) {
Serial.println ( 'GPIO 27 desactivado' ) ;
salida27Estado = 'APAGADO' ;
escritura digital ( salida27, BAJA ) ;
            }
           
cliente.println ( '' ) ;
cliente.println ( '' ) ;
cliente.println ( '' ) ;
            // CSS para diseñar los botones.
cliente.println ( 'html {familia de fuentes: Helvetica; pantalla: bloque en línea; margen: 0px automático; alineación de texto: centro;}' ) ;
cliente.println ( 'cuerpo {fondo: gradiente lineal (a la derecha, #0f0c29, #302b63, #24243e); }' ) ;
            // Botones de color azul neón con efecto luminoso.
cliente.println ( '.button { color de fondo: #08f; borde: ninguno; color: blanco; relleno: 16px 40px;' ) ;
cliente.println ( 'decoración de texto: ninguna; tamaño de fuente: 30px; margen: 2px; cursor: puntero; sombra de cuadro: 0 0 20px #08f;}' ) ;
            // Botones de color gris oscuro con efecto luminoso.
cliente.println ( '.button2 {color de fondo: #333; sombra de cuadro: 0 0 20px #333;}' ) ;
            // Efecto de transición para los botones
cliente.println ( '.button, .button2 {transición: todos los 0,3 s entran y salen fácilmente;}' ) ;
            // Botones redondeados
cliente.println ( '.botón, .botón2 {radio-borde: 50%;}' ) ;
            // título de la página web
cliente.println ( '

Servidor web Linuxhint ESP32

'
) ;
            // encabezado de página web
cliente.println ( '

Servidor web ESP32

');

            // Mostrar el estado y los botones. para GPIO 26
cliente.println ( '

GPIO 26 - Estado ' + salida26Estado + '



'
) ;
            // Mostrar el botón ON si el estado está APAGADO
            si ( salida26Estado == 'APAGADO' ) {
cliente.println ( '

/ 26 / en '>ENCENDIDO

'
) ;
            } demás { // Mostrar el botón APAGADO si el estado está encendido
cliente.println ( '

/ 26 / apagado '>DESACTIVADO







'
) ;
            }
            // Mostrar el estado y los botones. para GPIO 27
cliente.println ( '

GPIO 27 - Estado ' + salida27Estado + '



'
) ;
            // Mostrar el botón ON si el estado está APAGADO
            si ( salida27Estado == 'APAGADO' ) {
cliente.println ( '

/ 27 / en '>ENCENDIDO



'
) ;
            } demás { // Mostrar el botón APAGADO si el estado está encendido
cliente.println ( '

/ 27 / apagado '>DESACTIVADO





'
) ;
            }
cliente.println ( '' ) ;
            // Finalice la respuesta HTTP con una línea en blanco
cliente.println ( ) ;
            // Salga del mientras bucle
            romper ;
          } demás { // Borrar la línea actual si él es una nueva línea
LíneaActual = '';
          }
} si no (c != '
\r ') { // Agrega el byte a la línea actual si' no es un carruaje devolver
Línea actual += c;
        }
      }
    }
    // Restablecer el encabezado
encabezado = '' ;
    // Cerrar la conexión del cliente
cliente.detener ( ) ;
Serial.println ( 'Cliente desconectado.' ) ;
Serial.println ( '' ) ;
  }
}

Explicación del código

El código del servidor web ESP32 comenzó configurando la conexión Wifi. Primero, incluye la biblioteca WiFi.h. A continuación, este código requiere que ingrese el SSID y la contraseña de la red a la que desea conectar su placa ESP32. Después de eso, creamos variables para almacenar el estado de las salidas y se asignaron los pines de salida a estas variables. Aquí usamos los pines GPIO 26 y 27, pero también puede usar cualquier otro pin GPIO para conectar dispositivos o LED.

En la segunda parte del código, se inicia la comunicación en serie. Esto nos servirá para comprobar el estado de la placa ESP32 y los periféricos conectados a ella. Junto a estos, hemos definido la salida serie para diferentes estados de los dos LED conectados. Puede conectar luces LED y definir su estado como ENCENDIDO y APAGADO. Esta parte del código también imprimirá la dirección IP del servidor web ESP32 después de cargar el código. La parte del código que incluye la dirección IP solo se imprimirá una vez, ya que está dentro de la función Configuración().



En la tercera parte, o dentro de la función Loop(), hemos definido el código para manejar las solicitudes Web y controlar los pines GPIO. Esta parte del código se ejecutará repetidamente tal como está en la función loop(). Comprueba si hay nuevos clientes y lee los datos de los clientes. Después de leer, analiza las solicitudes HTTP y envía una respuesta adecuada, como encender o apagar un LED. Esta parte del código también contiene información sobre el estilo básico del servidor web ESP32. La interfaz incluye los botones LED y sus estados actuales.

4. Dirección IP del servidor web ESP32

La dirección IP del servidor web ESP32 es el identificador único del dispositivo en la red. Para acceder al servidor web ESP32, necesitará esta dirección IP. Después de cargar el código anterior, el enrutador asigna automáticamente la dirección IP, también conocida como IP dinámica. Sin embargo, también puede asignar manualmente una dirección IP también conocida como IP estática.

Para averiguar la dirección IP de su servidor ESP32, puede verificar el monitor serial de Arduino IDE después de cargar el código. Recuerde, esta dirección IP solo se mostrará si la placa ESP32 se conecta correctamente con un punto de acceso.

Nota : Si le resulta difícil conectar su placa ESP32 con un punto de acceso, intente cambiar el SSID del enrutador (punto de acceso). Intente evitar los caracteres especiales en su SSID.

5. Control de los LED mediante el servidor web ESP32

Ahora configuraremos dos LED con la placa ESP32 y los controlaremos usando el servidor web ESP32. Puede utilizar los mismos pines GPIO definidos dentro del código o modificar el código para cualquier otro pin GPIO. Aquí vamos a conectar un LED al GPIO 26 y el otro al GPIO 27.

Interfaz de escritorio

Una vez que el hardware esté listo, el siguiente paso es acceder al servidor web utilizando la misma dirección IP proporcionada por el ESP32 en el terminal IDE de Arduino. Para eso, su sistema debe conectarse con la misma red. En el escritorio, abra la configuración de WiFi y conéctese a la red.

Una vez conectado, puede acceder al servidor web mediante un navegador web (Chrome). Escriba la IP del servidor web ESP32 en la barra de URL y presione Ingresar . Una vez abierto, verá la siguiente interfaz.

En el estado actual establecido dentro del código, ambos LED están APAGADOS. Entonces, después de conectar el ESP32 a la PC, verá que ninguno de los LED está encendido.

Comenzaremos encendiendo el LED en GPIO 26. Mueva el interruptor de APAGADO y verá que el LED se iluminará.

El LED en GPIO 26 está encendido.

De manera similar, para el LED en GPIO 27, active el segundo botón.

Ahora verá que el segundo LED conectado al GPIO 27 también se iluminará.

También puede ENCENDER ambos LED alternando sus botones.

Después de cambiar ambos LED, verá que ambos LED se iluminarán.

Interfaz móvil

El servidor web ESP32 no sólo se limita a navegadores de escritorio, también puedes acceder a él desde cualquier otro dispositivo como un teléfono inteligente o una tableta. Para conectarse con el servidor web ESP32, abra la configuración de red WiFi y busque el mismo SSID que definió dentro del código.

Después de buscar el punto de acceso, conecte su teléfono inteligente con ese punto de acceso.

Una vez conectado, abra el navegador de su teléfono inteligente y acceda al servidor web utilizando la dirección IP ESP32. La interfaz del teléfono inteligente es similar a la del escritorio. Tienes control total para controlar tus pines GPIO tal como lo haces en un navegador de escritorio.

6. Control de aparatos de aire acondicionado mediante el servidor web ESP32

Por ahora, hemos conectado un LED simple con ESP32 y los hemos controlado usando el servidor web ESP32. Pero eso es sólo un programa simple para el servidor web ESP32. Puede aplicar el mismo concepto a cualquiera de los sensores o módulos y generar el resultado deseado.

Por ejemplo, puede conectar un módulo de relé con ESP32 y controlar cualquier aparato de CA utilizando el mismo código de servidor web indicado anteriormente.

Leer : Relé con ESP32 usando Arduino IDE

Ahora conectaremos una bombilla de CA con ESP32 mediante un módulo de relé. Aquí voy a utilizar el pin GPIO 26 para controlar la bombilla de CA. Puede definir los pines GPIO que desee para controlar el relé.

ESP32 Pin Pines del módulo de relé
Número de bastidor/3V3 vcc
Tierra Tierra
GPIO 26 o GPIO 27 EN1 o EN2

A continuación se muestra el diagrama esquemático de ESP32 con un módulo de relé y una bombilla de CA.

Después de conectar el módulo de relé, abra el servidor web ESP32 y active el interruptor GPIO 26.

Verá que la bombilla se ENCIENDE.

Hemos creado con éxito un servidor web ESP32 y controlamos dispositivos de CA y CC con él. Puede aplicar el mismo código para cualquier otro sensor y crear sus servidores web personalizados para su proyecto.

Conclusión

ESP32 es una placa de microcontrolador que puede conectarse con un punto de acceso o puede actuar como punto de acceso para otros dispositivos. Con esta función de ESP32, puede diseñar un servidor web ESP32. Todo lo que necesitas es conectar tu placa ESP32 con un punto de acceso y obtener la dirección IP para el servidor web. Después de eso, debe escribir la misma IP en cualquiera de los navegadores web y tendrá acceso al servidor web de inmediato. Pero asegúrese de estar conectado a la misma red mientras accede al servidor web ESP32. Además, puede modificar el código proporcionado y controlar cualquier sensor o módulo de su elección.