Servidor web ESP32 DHT11/DHT22 – Temperatura y humedad con Arduino IDE
En este artículo, exploraremos cómo crear un servidor web con ESP32 y los sensores de temperatura y humedad DHT11/DHT22. Utilizando el Arduino IDE, aprenderemos a recopilar datos ambientales y visualizarlos de forma remota a través de una interfaz web. ¡Acompáñanos en esta emocionante aventura de IoT!
En este proyecto, aprenderá cómo crear un servidor web ESP32 asíncrono usando DHT11 o DHT22 que muestra la temperatura y la humedad usando el IDE de Arduino.
El servidor web que creamos actualiza automáticamente las métricas sin tener que actualizar la página web.
Con este proyecto aprenderás:
Cómo leer la temperatura y la humedad de los sensores DHT;
Actualice automáticamente las lecturas del sensor sin tener que actualizar la página web.
Para obtener una explicación más detallada de cómo usar los sensores de temperatura y humedad DHT22 y DHT11 con el ESP32, consulte nuestra guía completa: ESP32 con sensores de temperatura y humedad DHT11/DHT22 usando el IDE de Arduino
Puede ver el video tutorial o continuar leyendo esta página para obtener las instrucciones escritas.
Servidor web asíncrono
Usamos para construir el servidor web. Biblioteca ESPAsyncWebServer Esto proporciona una manera sencilla de crear un servidor web asincrónico. La creación de un servidor web asíncrono tiene varias ventajas, como se menciona en la página de GitHub de la biblioteca, como por ejemplo:
“Manejar más de una conexión a la vez”;
“Cuando envías la respuesta, inmediatamente estás listo para procesar otras conexiones mientras el servidor se encarga de enviar la respuesta en segundo plano”;
“Motor de procesamiento de plantillas simple para manejar plantillas”;
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema
Antes de continuar con el servidor web, debe conectar el sensor DHT11 o DHT22 al ESP32 como se muestra en el siguiente diagrama de circuito.
En este caso conectamos el pin de datos a GPIO27pero puedes conectarlo a cualquier otro pin digital. Puede utilizar este diagrama esquemático para los sensores DHT11 y DHT22.
(Este esquema utiliza la versión del módulo ESP32 DEVKIT V1 con 36 GPIO; si está utilizando un modelo diferente, verifique la distribución de pines de la placa que está utilizando).
Nota: Si utiliza un módulo con sensor DHT, normalmente sólo tiene tres pines. Los pines deben estar etiquetados para que sepas cómo conectarlos. Además, muchos de estos módulos ya tienen una resistencia pull-up interna, por lo que no es necesario agregar una al circuito.
Instalación de bibliotecas
Para este proyecto necesitas instalar algunas bibliotecas:
En las siguientes secciones explicamos cómo funciona el código. Continúe leyendo si desea obtener más información o pase a la sección de demostración para ver el resultado final.
Importando bibliotecas
Primero importe las bibliotecas necesarias. Acceso inalámbrico a Internet, ESPAsyncWebServer y eso ESPAsyncTCP son necesarios para configurar el servidor web. Adafruit_Sensor y eso DHTSe requieren bibliotecas para leer los sensores DHT11 o DHT22.
Defina el GPIO al que está conectado el pin de datos DHT. En este caso está conectado a GPIO27.
#define DHTPIN 27 // Digital pin connected to the DHT sensor
Luego seleccione el tipo de sensor DHT que está utilizando. En nuestro ejemplo utilizamos el DHT22. Si usa otro tipo, solo necesita descomentar su sensor y descomentar todos los demás.
#define DHTTYPE DHT22 // DHT 22 (AM2302)
Crear una instancia DHTObjeto con el tipo y pin que definimos anteriormente.
DHT dht(DHTPIN, DHTTYPE);
Crea uno Servidor web asíncronoObjeto en el puerto 80.
AsyncWebServer server(80);
Leer funciones de temperatura y humedad.
Creamos dos funciones: una para leer la temperatura (leerDHTTemperatura()) y el otro para leer la humedad (leerDHTHhumedad()).
String readDHTTemperature() {
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float t = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan
Serial.println("Failed to read from DHT sensor!");
return "--";
}
else {
Serial.println
return String
}
}
Recuperar los valores de los sensores es muy sencillo: leer temperatura() Y leerhumedad() métodos en el dht Objeto.
float t = dht.readTemperature();
float h = dht.readHumidity();
También tenemos una condición que devuelve dos guiones (-) si el sensor no puede tomar lecturas.
if (isnan
Serial.println("Failed to read from DHT sensor!");
return "--";
}
Las medidas se devuelven como un tipo de cadena. Para convertir un flotante en una cadena, use el cadena() Función.
return String
Por defecto, la temperatura se da en grados Celsius. Para obtener la temperatura en grados Fahrenheit, comente la temperatura en Celsius y descomente la temperatura en Fahrenheit para obtener:
//float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float t = dht.readTemperature(true);
Creando el sitio web
Continúe a la página del servidor web.
Como puede ver en la imagen de arriba, la página web muestra un encabezado y dos párrafos. Hay un párrafo para mostrar la temperatura y otro para mostrar la humedad. También hay dos iconos para diseñar nuestra página.
Veamos cómo se crea este sitio web.
Todo el texto HTML con los estilos incluidos se guarda en índice_html Variable. Ahora repasemos el texto HTML y veamos qué hace cada parte.
La siguiente La etiqueta hace que su sitio web responda en cualquier navegador.
Todas las etiquetas anteriores deben estar entre Y etiquetas. Estas etiquetas se utilizan para incluir contenido que no es directamente visible para el usuario, como por ejemplo: b. El Etiquetas y estilos.
texto HTML
Dentro de En etiquetas añadimos el contenido de la página web.
El
Las etiquetas agregan un encabezado a la página web. En este caso el texto “ESP32 DHT Server”, pero puedes agregar cualquier otro texto.
<h2>ESP32 DHT Server</h2>
Luego hay dos párrafos. Uno muestra la temperatura y el otro muestra la humedad. Los párrafos están a través del
Y
etiquetas. El párrafo de temperatura es el siguiente:
La siguiente línea escribe la palabra "temperatura" en la página web.
<span class="dht-labels">Temperature</span>
El texto TEMPERATURA entre los caracteres % es un marcador de posición para el valor de temperatura.
<span id="temperature">%TEMPERATURE%</span>
Eso significa que estos %TEMPERATURA% El texto es como una variable que se reemplaza con el valor de temperatura real del sensor DHT. Los marcadores de posición en el texto HTML deben tener entre % caracteres.
Finalmente, agregamos el símbolo de grado.
<sup class="units">°C</sup>
El </sup> Las etiquetas hacen que el texto sea superíndice.
Usamos el mismo enfoque para la sección de humedad, pero usamos un símbolo diferente y el %HUMEDAD% Marcador de posición.
En resumen, esta sección anterior se encarga de actualizar la temperatura de forma asincrónica. Se repite el mismo proceso para los valores de humedad.
Importante: Dado que el sensor DHT tarda bastante en obtener lecturas, recomendamos aumentar el intervalo de solicitud o eliminar las actualizaciones automáticas si desea conectar varios clientes a un ESP32 al mismo tiempo.
procesador
Ahora tenemos que Procesador() Función que reemplaza los marcadores de posición de nuestro texto HTML por los valores reales de temperatura y humedad.
Al acceder al sitio web, comprobamos si el HTML contiene marcadores de posición. Si es el %TEMPERATURA% Comodín, devolvemos la temperatura usando el leerDHTTemperatura() función creada previamente.
Necesitamos agregar dos controladores adicionales para actualizar los valores de temperatura y humedad. Cuando recibimos una solicitud en el /Temperatura URL simplemente necesitamos enviar el valor de temperatura actualizado. Es texto sin formato y debe enviarse como un carácter, por eso lo usamos cadena_c() Método.
Ahora sube el código a tu ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos.
Después de la carga, abra el monitor en serie con una velocidad de baudios de 115200. Presione el botón de reinicio ESP32. La dirección IP de ESP32 debería aparecer en el monitor serie.
Demostración del servidor web
Abra un navegador e ingrese la dirección IP ESP32. Su servidor web debería mostrar las últimas lecturas del sensor.
Tenga en cuenta que los valores de temperatura y humedad se actualizan automáticamente sin necesidad de actualizar la página web.
Solución de problemas
Si su sensor DHT no proporciona lecturas, consulte nuestra Guía de solución de problemas de DHT para ayudarle a resolver el problema.
Envolver
En este tutorial le mostramos cómo crear un servidor web asíncrono usando el ESP32 para mostrar los valores de un sensor DHT11 o DHT22 y cómo actualizar los valores automáticamente.
Si te gustó este proyecto, también te puede gustar:
ESP32 Deep Sleep con Arduino IDE y fuentes de activación
Este tutorial es una vista previa del curso Aprenda ESP32 con Arduino IDE. Si le gusta este proyecto, asegúrese de consultar la página del curso ESP32 donde cubrimos este y muchos otros temas de ESP32.
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded
Servidor web ESP32 DHT11/DHT22 – Temperatura y humedad con Arduino IDE
En este proyecto, aprenderás a construir un servidor web asíncrono ESP32 con DHT11 o DHT22 que muestra la temperatura y la humedad utilizando Arduino IDE.
¿Qué aprenderás?
Cómo leer la temperatura y la humedad de los sensores DHT11 y DHT22;
Construir un servidor web asíncrono utilizando la biblioteca ESPAsyncWebServer;
Actualizar automáticamente las lecturas del sensor sin necesidad de actualizar la página web.
Para completar este tutorial, necesitas las siguientes piezas:
Placa de desarrollo ESP32;
Sensor de temperatura y humedad DHT22 o DHT11;
Resistor de 4.7k Ohm;
Protoboard;
Cables puente.
Puedes encontrar todas las piezas para tus proyectos al mejor precio en MakerAdvisor.com/tools.
Esquemático
Antes de proceder al servidor web, debes conectar el sensor DHT11 o DHT22 al ESP32 como se muestra en el siguiente diagrama esquemático.
En este caso, estamos conectando el pin de datos al GPIO 27, pero puedes conectarlo a cualquier otro pin digital. Puedes utilizar este diagrama esquemático tanto para los sensores DHT11 como para los DHT22.
Instalación de bibliotecas
Debes instalar un par de bibliotecas para este proyecto:
La biblioteca DHT y la biblioteca del controlador de sensor unificado de Adafruit para leer del sensor DHT.
Las bibliotecas ESPAsyncWebServer y Async TCP para construir el servidor web asíncrono.
Sigue las instrucciones del siguiente enlace para instalar esas bibliotecas:
Programaremos el ESP32 utilizando Arduino IDE. Asegúrate de tener el complemento ESP32 instalado antes de proceder.
Abre tu Arduino IDE y copia el siguiente código:
Copia aquí el código HTML...
Inserta las credenciales de tu red en las variables correspondientes y el código funcionará de inmediato.
¿Cómo funciona el código?
En los siguientes párrafos te explicaremos cómo funciona el código. Sigue leyendo si quieres aprender más o salta a la sección de demostración para ver el resultado final.
...
Una vez que hayas cargado el código en tu ESP32, abre el Monitor Serie a una velocidad de baudios de 115200. Presiona el botón de reinicio del ESP32. La dirección IP del ESP32 debería aparecer en el monitor serie.
Demostración del servidor web
Abre un navegador y escribe la dirección IP del ESP32. Tu servidor web debería mostrar las últimas lecturas del sensor. Observa que las lecturas de temperatura y humedad se actualizan automáticamente sin necesidad de refrescar la página.
En este tutorial, te hemos mostrado cómo construir un servidor web asíncrono con el ESP32 para mostrar las lecturas del sensor DHT11 o DHT22 y cómo actualizar las lecturas automáticamente. Si te gustó este proyecto, también te pueden interesar:
Aprender ESP32 con Arduino IDE (curso);
Construir un servidor web ESP32 utilizando archivos del sistema de archivos (SPIFFS);
ESP32 Web Server – control de salidas;
ESP32 Deep Sleep con Arduino IDE y fuentes de despertar.
Este tutorial es una vista previa del curso "Aprender ESP32 con Arduino IDE". Si te gusta este proyecto, asegúrate de echar un vistazo a la página del curso ESP32 donde cubrimos este y muchos otros temas con el ESP32.
3 comentarios en «Servidor web ESP32 DHT11/DHT22 – Temperatura y humedad con Arduino IDE»
¡Qué genial que se pueda hacer algo así con el ESP32 y el DHT11/DHT22! Definitivamente voy a probarlo, gracias por las instrucciones detalladas. ¡Sigue así!
¡Me parece increíble lo que se puede lograr con el ESP32 y los sensores DHT11/DHT22! Definitivamente voy a intentarlo, gracias por el tutorial paso a paso. ¡Estoy emocionado por probarlo!
Lo siento, debes estar conectado para publicar un comentario.
Usamos cookies para asegurar que te damos la mejor experiencia en nuestra web. Si continúas usando este sitio, asumiremos que estás de acuerdo con ello.AceptarPolítica de privacidad
¡Qué genial que se pueda hacer algo así con el ESP32 y el DHT11/DHT22! Definitivamente voy a probarlo, gracias por las instrucciones detalladas. ¡Sigue así!
¡Me parece increíble lo que se puede lograr con el ESP32 y los sensores DHT11/DHT22! Definitivamente voy a intentarlo, gracias por el tutorial paso a paso. ¡Estoy emocionado por probarlo!
¡Interesante proyecto! Me encanta la combinación de tecnología y la monitorización de temperatura y humedad. ¡Gracias por compartir!