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.
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.
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
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:
Recomendaciones de literatura: Guía de referencia de asignación de pines ESP32
Si está utilizando un ESP8266, siga el siguiente diagrama.
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.
3. Después de instalar la biblioteca SSD1306 de Adafruit, escriba «gráfico“ en el campo de búsqueda e instale la biblioteca.
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.
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.
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();
}
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.
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.
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:
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!");
}
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:
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.
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).
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.
Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries. Se abrirá el Administrador de Bibliotecas.
Escribe "SSD1306" en el cuadro de búsqueda e instala la biblioteca SSD1306 de Adafruit.
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.
Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries.
Busca "DHT" en el cuadro de búsqueda e instala la biblioteca DHT de Adafruit.
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.
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
Interesante proyecto, me encantaría intentarlo yo mismo. ¡Gracias por compartir!
¡Qué genial! Si tienes un tutorial o algo así, me encantaría probarlo también. ¡Gracias por la inspiración!