ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

En este artículo, vamos a explorar cómo utilizar un sensor DHT para medir la temperatura y la humedad con los microcontroladores ESP32 y ESP8266. Además, aprenderemos cómo mostrar estas lecturas en una pantalla OLED para obtener una experiencia visual en tiempo real. ¡Sigue leyendo para descubrir cómo llevar a cabo este emocionante proyecto de Internet de las cosas!

Aprenda a mostrar los valores de temperatura y humedad de un sensor DHT11/DHT22 en una pantalla OLED SSD1306 usando un ESP32 o un ESP8266 con Arduino IDE.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

La idea detrás del uso de la pantalla OLED con ESP32 o ESP8266 es ilustrar cómo se puede crear una interfaz de usuario física para sus placas.

Descripción del proyecto

En este proyecto utilizamos un Pantalla OLED I2C SSD1306 128×64 como se muestra en la siguiente figura.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

La temperatura y la humedad se miden con el Sensor de temperatura y humedad DHT22 (Tú también puedes DHT11).

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Si no está familiarizado con el sensor DHT11/DHT22, le recomendamos leer la siguiente guía:

  • ESP32 con sensor DHT11/DHT22 (Arduino IDE)

Piezas requeridas

Para este tutorial necesitarás los siguientes componentes:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Esquema

La pantalla OLED que utilizamos se comunica a través del protocolo de comunicación I2C, por lo que debes conectarla a los pines I2C del ESP32 o ESP8266.

Por defecto los pines ESP32 I2C son:

  • GPIO 22: SCL
  • GPIO 21: ASD

Si está utilizando un ESP8266, los pines I2C estándar son:

  • GPIO5 (D1): SCL
  • GPIO4 (D2): ASD

Siga el siguiente diagrama esquemático si está utilizando una placa ESP32:

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Recomendaciones de literatura: Guía de referencia de asignación de pines ESP32

Si está utilizando un ESP8266, siga el siguiente diagrama.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

En este caso conectamos el pin de datos DHT a GPIO 14Pero puedes utilizar cualquier otro GPIO adecuado.

Recomendaciones de literatura: Guía de referencia de asignación de pines ESP8266

Instalación de bibliotecas

Antes de cargar el código, debe instalar las bibliotecas para escribir en la pantalla OLED y las bibliotecas para leer desde el sensor DHT.

Instalación de las bibliotecas OLED

Existen varias bibliotecas para controlar la pantalla OLED con el ESP8266. En este tutorial usaremos las bibliotecas de adafruit: la Biblioteca Adafruit_SSD1306 y eso Biblioteca Adafruit_GFXSiga los siguientes pasos para instalar estas bibliotecas:

1. Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse.

2. Tipo «SSD1306”en el cuadro de búsqueda e instale la biblioteca SSD1306 de Adafruit.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

3. Después de instalar la biblioteca SSD1306 de Adafruit, escriba «gráfico“ en el campo de búsqueda e instale la biblioteca.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Instalación de las bibliotecas de sensores DHT

Para leer desde el sensor DHT utilizamos las bibliotecas de Adafruit.

1. Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse.

2. Buscar «DHT”en el cuadro de búsqueda e instale la biblioteca DHT de Adafruit.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

3. Después de instalar la biblioteca DHT de Adafruit, escriba «Sensor unificado de Adafruit”en el campo de búsqueda. Desplácese hacia abajo para buscar e instalar la biblioteca.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Instalación de las tarjetas ESP

Programamos el ESP32/ESP8266 usando Arduino IDE, por lo que el complemento ESP32/ESP8266 debe estar instalado en su Arduino IDE. Si no, primero sigue el siguiente tutorial que se adapte a tus necesidades:

  • Instale la placa ESP32 en Arduino IDE (Instrucciones de Windows)
  • Instale la placa ESP32 en Arduino IDE (Instrucciones para Mac OS X y Linux)
  • Instale la placa ESP8266 en el IDE de Arduino

Finalmente, reinicie su IDE de Arduino.

código

Después de instalar las bibliotecas necesarias, puede copiar el siguiente código en su IDE de Arduino y cargarlo en su placa ESP32 o ESP8266.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define DHTPIN 14     // Digital pin connected to the DHT sensor

// Uncomment the type of sensor in use:
//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);

  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(5000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan
    Serial.println("Failed to read from DHT sensor!");
  }
  // clear display
  display.clearDisplay();
  
  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  
  display.display(); 
}

Ver código sin formato

Así es como funciona el código

Echemos un vistazo rápido a cómo funciona el código.

Importando bibliotecas

El código comienza con la integración de las bibliotecas necesarias. cable, Adafruit_GFX Y Adafruit_SSD1306 se utilizan para conectarse a la pantalla OLED. El Adafruit_Sensor y eso DHT Las bibliotecas se utilizan para interactuar con los sensores DHT22 o DHT11.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

Crear un objeto de visualización

Luego define las dimensiones de tu pantalla OLED. En este caso utilizamos una pantalla de 128 × 64 píxeles.

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

Luego inicialice un objeto de visualización con el ancho y alto previamente definidos utilizando el protocolo de comunicación I2C (&Cable).

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

El parámetro (-1) significa que su pantalla OLED no tiene un pin RESET. Si su pantalla OLED tiene un pin RESET, debe estar conectado a un GPIO. En este caso deberás pasar el número GPIO como parámetro.

Creando un objeto DHT

Luego defina el tipo de sensor DHT que está utilizando. Si usa un DHT22, no necesita cambiar el código. Si está utilizando un sensor diferente, simplemente descomente el sensor que está utilizando y comente los demás.

//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

Inicializar uno DHT Objeto sensor con el pin y tipo previamente definido.

DHT dht(DHTPIN, DHTTYPE);

configuración()

En el configuración()inicialice el monitor serie para fines de depuración.

Serial.begin(115200);

Inicialice el sensor DHT:

dht.begin();

Luego inicialice la pantalla OLED.

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
  Serial.println(F("SSD1306 allocation failed"));
  for(;;);
}

En este caso la dirección de la pantalla OLED utilizada es Versión:. Si esta dirección no funciona, puede ejecutar un escáner I2C para encontrar su dirección OLED. Puede El boceto del escáner I2C se puede encontrar aquí.

Agregue un retraso para darle tiempo a la pantalla para inicializarse y borrarse y establecer el color del texto en blanco:

delay(2000);
display.clearDisplay();
display.setTextColor(WHITE)

En el Cinta() Aquí leemos el sensor y mostramos la temperatura y la humedad en la pantalla.

Obtenga lecturas de temperatura y humedad de DHT

La temperatura y la humedad están en el t Y h Variables. Leer la temperatura y la humedad es tan fácil como usar el leer temperatura() Y leerhumedad() métodos en el dht Objeto.

float t = dht.readTemperature();
float h = dht.readHumidity();

Si no podemos recuperar las medidas, aparecerá un mensaje de error:

if (isnan(h) || isnan
  Serial.println("Failed to read from DHT sensor!");
}

Si recibe este mensaje de error, consulte nuestra guía de solución de problemas: Cómo solucionar el problema «Error en la lectura del sensor DHT».

Visualización de los valores del sensor en la pantalla OLED

Las siguientes líneas muestran la temperatura en la pantalla OLED.

  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");

Usamos eso establecerTamañoTexto() Método para definir el tamaño de fuente, el establecerCursor() determina dónde se debe mostrar el texto y el prensa() El método se utiliza para escribir algo en la pantalla.

Para imprimir la temperatura y la humedad, solo necesitas especificar sus variables prensa() Método de la siguiente manera:

display.print





La etiqueta "Temperatura" se muestra en el tamaño 1 y la medida real se muestra en el tamaño 2.

Para representar el símbolo º utilizamos el Página de códigos 437 Fuente. Para hacer esto debes cp437 A VERDADERO como sigue:

display.cp437(true);

Entonces usa eso escribir() Método para mostrar el carácter seleccionado. El símbolo º corresponde al carácter 167.

display.write(167);

También se sigue un enfoque similar al mostrar la humedad:

display.setTextSize(1);
display.setCursor(0, 35);
display.print("Humidity: ");
display.setTextSize(2);
display.setCursor(0, 45);
display.print(h);
display.print(" %"); 

No olvides que tienes que llamar. Pantalla.Pantalla() al final para que puedas mostrar algo en el OLED.

display.display(); 

Recomendaciones de literatura: ESP32 con sensor de temperatura y humedad DHT11/DHT22 con Arduino IDE

demostración

La siguiente imagen muestra lo que debería obtener al final de este tutorial. Los valores de humedad y temperatura se muestran en la pantalla OLED.

ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED

Solución de problemas

Si su sensor DHT no proporciona lecturas o recibe el mensaje "Error al leer el sensor DHT", consulte nuestra Guía de solución de problemas de DHT para ayudarle a resolver este problema.

Si ves el mensaje “Error en la asignación de SSD1306”Se produce un error o la pantalla OLED no muestra nada, puede deberse a uno de los siguientes problemas:

Dirección I2C incorrecta

La dirección I2C para la pantalla OLED que estamos usando es 0x3C. Sin embargo, su dirección puede ser diferente. Así que asegúrese de verificar la dirección I2C de su pantalla con uno Bosquejo del escáner I2C.

SDA y SCL no están conectados correctamente

Asegúrese de que los pines SDA y SCL de la pantalla OLED estén conectados correctamente. Si utiliza:

  • ESP32: pin SDA conectado a GPIO21 y pin SCL GPIO22
  • ESP8266: pin SDA conectado a GPIO4 (D2) y pin SCL GPIO5 (D1)

Envolver

Esperamos que este tutorial sobre cómo mostrar los valores del sensor en una pantalla OLED le haya resultado útil. La pantalla OLED es una excelente manera de agregar una interfaz de usuario a sus proyectos. Si le gusta este proyecto, es posible que también desee saber cómo mostrar los valores del sensor en su navegador utilizando un servidor web ESP:

  • Servidor web ESP32 DHT (Arduino IDE)
  • Servidor web ESP8266 DHT (Arduino IDE)
  • Servidor web ESP32/ESP8266 DHT (MicroPython)

Puedes conocer más sobre ESP32 y ESP8266 en nuestros cursos:

  • Aprenda ESP32 con Arduino IDE
  • Domótica con ESP8266

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Lecturas de temperatura y humedad DHT en pantalla OLED con ESP32/ESP8266

Aprende cómo mostrar lecturas de temperatura y humedad de un sensor DHT11/DHT22 en una pantalla OLED SSD1306 usando un ESP32 o ESP8266 con Arduino IDE.

Descripción del Proyecto

En este proyecto utilizaremos una pantalla OLED SSD1306 128 × 64 como se muestra en la siguiente figura. La temperatura y humedad se medirán utilizando el sensor de temperatura y humedad DHT22 (también se puede usar DHT11).

Si no estás familiarizado con el sensor DHT11/DHT22, te recomendamos leer la siguiente guía: ESP32 con Sensor DHT11/DHT22 (Arduino IDE).

Partes Requeridas

  1. Pantalla OLED de 0.96 pulgadas
  2. ESP32 o ESP8266
  3. Sensor de temperatura y humedad DHT22 o DHT11
  4. Protoboard
  5. Resistor de 10k Ohm
  6. Cables de puente

Puedes encontrar todas las partes para tus proyectos al mejor precio en MakerAdvisor.com/tools.

Esquemático

La pantalla OLED que estamos utilizando se comunica a través del protocolo de comunicación I2C. Por lo tanto, debes conectarla a los pines I2C del ESP32 o ESP8266.

Si estás utilizando un ESP32, los pines I2C por defecto son:

  • GPIO 22: SCL
  • GPIO 21: SDA

Si estás utilizando un ESP8266, los pines I2C por defecto son:

  • GPIO 5 (D1): SCL
  • GPIO 4 (D2): SDA

Sigue el diagrama esquemático correspondiente dependiendo de si estás utilizando un ESP32 o ESP8266.

Para más información, puedes consultar la guía de referencia de pines del ESP32 y del ESP8266.

Instalación de Bibliotecas

Antes de subir el código, necesitas instalar las bibliotecas para escribir en la pantalla OLED y las bibliotecas para leer del sensor DHT.

Instalando las bibliotecas para la pantalla OLED

Existen varias bibliotecas disponibles para controlar la pantalla OLED con el ESP8266. En este tutorial, utilizaremos las bibliotecas de adafruit: Adafruit_SSD1306 y Adafruit_GFX.

  1. Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries. Se abrirá el Administrador de Bibliotecas.
  2. Escribe "SSD1306" en el cuadro de búsqueda e instala la biblioteca SSD1306 de Adafruit.
  3. Después de instalar la biblioteca SSD1306 de Adafruit, escribe "GFX" en el cuadro de búsqueda e instala la biblioteca GFX.

Instalando las bibliotecas para el sensor DHT

Para leer del sensor DHT, utilizaremos las bibliotecas de Adafruit.

  1. Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries.
  2. Busca "DHT" en el cuadro de búsqueda e instala la biblioteca DHT de Adafruit.
  3. Después de instalar la biblioteca DHT de Adafruit, busca "Adafruit Unified Sensor" en el cuadro de búsqueda. Desplázate hasta abajo para encontrar la biblioteca e instálala.

Para programar el ESP32/ESP8266 utilizando Arduino IDE, debes tener instalado el complemento de ESP32/ESP8266 en tu Arduino IDE. Si aún no lo has hecho, sigue el tutorial correspondiente en función de tus necesidades.

Finalmente, reinicia tu Arduino IDE.

Código

Después de instalar las bibliotecas necesarias, puedes copiar el siguiente código a tu Arduino IDE y subirlo a tu placa ESP32 o ESP8266.

Para ver el código completo y detalles del proyecto, visita randomnerdtutorials.com.

Funcionamiento del Código

Veamos brevemente cómo funciona el código:

Importando bibliotecas

El código comienza incluyendo las bibliotecas necesarias para interactuar con la pantalla OLED y el sensor DHT.

Creando un objeto de pantalla

Luego, se define las dimensiones de la pantalla OLED y se inicializa un objeto de pantalla.

Creando un objeto de sensor DHT

A continuación, se define el tipo de sensor DHT que se está utilizando y se inicializa un objeto de sensor DHT.

Configuración

En la configuración, se inicializa el monitor serial, el sensor DHT y la pantalla OLED.

Bucle

En el bucle continuamente se leen los valores del sensor y se muestran en la pantalla OLED.

De: link-to-blog-reference

2 comentarios en «ESP32/ESP8266: lecturas de temperatura y humedad DHT en pantalla OLED»

Deja un comentario