¿Qué vamos a hacer?

¡Bienvenido a un nuevo nivel de interacción con tu entorno usando tu ESP32-C3 SuperMini! En este tutorial, aprenderás a conectar y leer datos de dos sensores ambientales muy comunes en tu kit: el Módulo DHT11, que mide temperatura y humedad, y el Módulo de Resistor Fotosensible (LDR), que detecta la intensidad de la luz.

Al final de este tutorial, serás capaz de:

  • Conectar el sensor DHT11 y obtener lecturas de temperatura y humedad.
  • Conectar el sensor LDR y medir la intensidad de la luz ambiental.
  • Mostrar estos valores en el Monitor Serial del IDE de Arduino y, opcionalmente, en tu pantalla OLED (si ya completaste el Tutorial 3).

Requisitos Previos:

Antes de comenzar, asegúrate de tener lo siguiente:

  • ESP32-C3 SuperMini (1 unidad)
  • Módulo DHT11 (1 unidad)
  • Módulo de Resistor Fotosensible (LDR) (1 unidad)
  • Protoboard de 830 puntos (1 unidad)
  • Resistencia de 10K Ohm (para el LDR)
  • Cables Dupont H-M y M-M
  • IDE de Arduino con la plataforma ESP32 instalada y configurada (Tutorial 0).
  • (Opcional): Pantalla OLED de 0.96 pulgadas (si quieres mostrar los datos en ella, necesitarás las librerías del Tutorial 3: U8g2).

Descripción: El sensor DHT11 es muy popular por su facilidad de uso para obtener datos de temperatura y humedad relativa. En esta actividad, lo conectarás, instalarás la librería necesaria y programarás tu ESP32-C3 para que muestre estas lecturas en el Monitor Serial.

Materiales que necesitas:

  • ESP32-C3 SuperMini
  • Módulo DHT11 (El modulo sensor Azul)
  • Cables Dupont

¿Qué es el Módulo DHT11?

Tutorial 4: Sensores de Ambiente.

El Módulo DHT11 es un sensor digital que te permite medir la temperatura y la humedad relativa del aire. Es muy fácil de usar porque solo necesita un pin de datos para enviar la información a tu ESP32-C3. Es ideal para proyectos de estaciones meteorológicas caseras, control de clima en interiores o sistemas de riego inteligentes.

Conexión del circuito (Módulo DHT11):

¡Antes de conectar, asegúrate de que tu ESP32-C3 SuperMini esté desconectada del computador!

  • Pin VCC o + del DHT11 a 3.3V en tu ESP32-C3.
  • Pin GND o - del DHT11 a GND en tu ESP32-C3.
  • Pin Data del DHT11 a GPIO 4 en tu ESP32-C3.

Esquemático y Simulación en Wokwi:

Observa cómo se conecta el sensor DHT11 a tu ESP32-C3 SuperMini. Haz clic en la imagen para abrir la simulación en Wokwi. Allí podrás ver las lecturas de temperatura y humedad simuladas en el Monitor Serial.

Tutorial 4: Sensores de Ambiente.

Instalación de Librerías Esenciales para el DHT11:

Para que tu ESP32-C3 pueda «hablar» con el sensor DHT11, necesitamos instalar una librería específica.

  1. Abre tu IDE de Arduino.
  2. Ve al menú superior y haz clic en Herramientas > Administrar Bibliotecas....
  3. En la barra de búsqueda, escribe DHT sensor library y presiona Enter.
  4. Busca la librería que dice «DHT sensor library» (publicada por Adafruit) y haz clic en Instalar.
  5. También busca e instala la librería Adafruit Unified Sensor. Es una dependencia de la librería DHT y es necesaria para su correcto funcionamiento.

Una vez instaladas ambas, ¡estás listo para el código!

#include <DHT.h>       // Incluye la librería DHT para el sensor
#include <DHT_U.h>     // Incluye la librería unificada de sensores de Adafruit (requerida por DHT)

// Define el pin donde está conectado el sensor DHT11 y el tipo de sensor
#define DHTPIN 4       // Pin GPIO 4 de la ESP32-C3
#define DHTTYPE DHT11  // Especificamos que es un sensor DHT11

// Crea un objeto DHT con el pin y tipo definidos
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200); // Inicia la comunicación serial a 115200 baudios
  Serial.println(F("Iniciando lectura del sensor DHT11..."));
  dht.begin(); // Inicializa el sensor DHT
}

void loop() {
  // Las lecturas del DHT pueden tomar un tiempo (aproximadamente 250ms).
  // Es una buena práctica agregar un pequeño retardo entre lecturas para no saturar el sensor.
  delay(2000); // Espera 2 segundos entre cada lectura

  // Lee la humedad (en porcentaje)
  float h = dht.readHumidity();
  // Lee la temperatura (en grados Celsius)
  float t = dht.readTemperature();

  // Verifica si las lecturas fueron exitosas (no son NaN - Not a Number)
  if (isnan(h) || isnan(t)) {
    Serial.println(F("Error al leer del sensor DHT11. ¡Revisa las conexiones!"));
  } else {
    // Si las lecturas son válidas, las mostramos en el Monitor Serial
    Serial.print(F("Humedad: "));
    Serial.print(h);
    Serial.print(F(" %\t"));
    Serial.print(F("Temperatura: "));
    Serial.print(t);
    Serial.println(F(" *C"));
  }
}

Objetivo: Conectar el Módulo LDR a tu ESP32-C3 SuperMini y leer el valor de la intensidad de luz ambiental.

Descripción: El Resistor Fotosensible (LDR) es un componente que cambia su resistencia eléctrica en función de la cantidad de luz que recibe. Cuanta más luz, menor su resistencia. En esta actividad, aprenderás a usar este cambio de resistencia para medir la luz ambiental en tu entorno.

Materiales que necesitas:

  • ESP32-C3 SuperMini
  • Módulo de Resistor Fotosensible (LDR)
  • Resistencia de 10K Ohm
  • Cables Dupont
  • Protoboard (esencial para esta conexión)

¿Qué es el Módulo de Resistor Fotosensible (LDR)?

Tutorial 4: Sensores de Ambiente.

El Módulo de Resistor Fotosensible (LDR) es un sensor de luz que viene en una pequeña placa. Está listo para usar y simplifica la detección de luz:

  • Detecta la intensidad de la luz ambiental.
  • Posee un potenciómetro azul para ajustar su sensibilidad (definir un umbral).
  • Entrega una salida digital (pin DO) que indica si la luz está por encima o por debajo de ese umbral (es decir, si hay «mucha luz» o «poca luz»).

Es ideal para proyectos que reaccionan a la luz, como encender una luz al oscurecer o activar una alarma ante cambios de iluminación.

Conexión del circuito (Módulo LDR):

¡Asegúrate de que tu ESP32-C3 SuperMini esté desconectada del computador antes de realizar las conexiones!

  • Conecta un extremo de tu LDR a 3.3V de la ESP32-C3.
  • Conecta el otro extremo del LDR al GPIO 1 de tu ESP32-C3 (este es un pin analógico).
  • Conecta una patilla de la Resistencia de 10K Ohm al mismo GPIO 1 donde conectaste el LDR.
  • Conecta la otra patilla de la Resistencia de 10K Ohm a GND de la ESP32-C3.

Este arreglo crea un «divisor de voltaje» que permite a la ESP32-C3 leer los cambios de luz como cambios de voltaje.


Esquemático y Simulación en Wokwi:

Observa cómo se conectan el LDR y la resistencia de 10K Ohm. Haz clic en la imagen para abrir la simulación en Wokwi. Allí podrás simular los cambios de luz y ver cómo varían las lecturas en el Monitor Serial.

Tutorial 4: Sensores de Ambiente.

Código para la Actividad 2:

Para esta actividad, no necesitas librerías adicionales, ya que analogRead() es una función nativa de Arduino. Este código leerá el valor del LDR y lo mostrará en el Monitor Serial.

// Define el pin donde está conectado el pin de Salida Digital (DO) del módulo LDR.
#define LDR_DOUT_PIN GPIO_NUM_5

void setup() {
  Serial.begin(115200); // Inicia la comunicación serial
  Serial.println(F("Iniciando lectura del módulo LDR (Salida Digital)..."));
  pinMode(LDR_DOUT_PIN, INPUT); // Configura el pin como entrada
}

void loop() {
  // Lee el estado digital del pin DO del módulo LDR
  int ldrState = digitalRead(LDR_DOUT_PIN);

  Serial.print(F("Estado de Luz (DO): "));
  if (ldrState == HIGH) {
    // Si la salida es HIGH, significa que la luz está por encima o por debajo del umbral,
    // dependiendo de cómo esté configurado internamente el módulo. Generalmente, HIGH es "oscuro" o "no hay luz"
    // cuando el potenciómetro se ajusta para detectar baja luz.
    Serial.println(F("OSCURO / LUZ BAJA"));
  } else {
    // LOW es lo contrario.
    Serial.println(F("CLARO / LUZ ALTA"));
  }

  // Puedes probar a cubrir el sensor o apuntarle con una luz y ajustar el potenciómetro
  // para ver cómo cambia el estado en el Monitor Serial.

  delay(500); // Pequeña pausa
}

Objetivo: Integrar las lecturas del DHT11 y el LDR y mostrarlas de forma clara en tu pantalla OLED.

Descripción: Esta actividad es opcional, pero altamente recomendada si ya completaste el Tutorial 3 del OLED. Aquí uniremos todo para crear una mini estación meteorológica y de luz, mostrando los valores de temperatura, humedad y luz en tu pequeña pantalla.

Materiales que necesitas:

  • ESP32-C3 SuperMini
  • Módulo DHT11
  • Módulo de Resistor Fotosensible (LDR)
  • Protoboard de 830 puntos
  • Resistencia de 10K Ohm
  • Cables Dupont
  • Pantalla OLED de 0.96 pulgadas (con librería U8g2 instalada, como en el Tutorial 3).

Conexión del circuito:

¡Asegúrate de que tu ESP32-C3 SuperMini esté desconectada del computador!

  • Conexiones OLED (I2C): (Revisa el Tutorial 3)
    • VCC a 3.3V
    • GND a GND
    • SDA a GPIO 8
    • SCL a GPIO 9
  • Conexiones DHT11: (Revisa la Actividad 1 de este tutorial)
    • VCC a 3.3V
    • GND a GND
    • Data a GPIO 4
  • Conexiones LDR: (Revisa la Actividad 2 de este tutorial)
    • VCC a 3.3V
    • GND a GND
    • DO (Digital Output) a GPIO 5

Esquemático y Simulación en Wokwi:

Aquí verás cómo se conectan todos los componentes: el OLED, el DHT11 y el LDR. Haz clic en la imagen para abrir la simulación en Wokwi y ver cómo los datos de los sensores se actualizan en la pantalla OLED.

Tutorial 4: Sensores de Ambiente.

Código para la Actividad 3 (Integración con OLED):

Este código combina las lecturas de los sensores con la visualización en el OLED. Asegúrate de tener instaladas las librerías DHT Sensor Library, Adafruit Unified Sensor y U8g2.

#include <DHT.h>       // Librería para el sensor DHT11
#include <DHT_U.h>     // Librería unificada de sensores de Adafruit
#include <U8g2lib.h>   // Librería U8g2 para la pantalla OLED

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

// Define el tipo de sensor DHT y el pin
#define DHTPIN 4
#define DHTTYPE DHT11  // Especificamos que es un sensor DHT11

// Crea el objeto DHT
DHT dht(DHTPIN, DHTTYPE);

// Define el pin para el LDR (salida digital DO)
#define LDR_DOUT_PIN GPIO_NUM_5

// Constructor U8g2 para tu OLED (revisa el Tutorial 3, Actividad 4 si no estás seguro)
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  Serial.begin(115200);
  dht.begin();    // Inicializa el sensor DHT
  pinMode(LDR_DOUT_PIN, INPUT); // Configura el pin del LDR como entrada
  u8g2.begin();   // Inicializa la pantalla OLED
  u8g2.setFontMode(1); // Modo de fuente transparente
  u8g2.setFontDirection(0); // Orientación horizontal
}

void loop() {
  delay(2000); // Espera 2 segundos entre lecturas para no saturar el DHT11

  // Lecturas del sensor DHT11
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Lectura del estado digital del módulo LDR
  int ldrState = digitalRead(LDR_DOUT_PIN);
  String estadoLuz = "Desconocido";
  if (ldrState == HIGH) {
    estadoLuz = "Oscuro"; // O "Poca Luz", dependiendo de cómo ajuste el potenciómetro
  } else {
    estadoLuz = "Claro";  // O "Mucha Luz"
  }


  u8g2.firstPage(); // Inicia el ciclo de dibujo de la pantalla
  do {
    u8g2.clearBuffer(); // Limpia el buffer de la pantalla

    // --- Mostrar Temperatura ---
    u8g2.setFont(u8g2_font_helvB10_tr); // Fuente para temperatura
    u8g2.setCursor(0, 12);
    if (isnan(t)) {
      u8g2.print("Temp: Error");
    } else {
      u8g2.print("Temp: ");
      u8g2.print(t, 1); // Muestra con un decimal
      u8g2.print(" C");
    }

    // --- Mostrar Humedad ---
    u8g2.setCursor(0, 32);
    if (isnan(h)) {
      u8g2.print("Hum: Error");
    } else {
      u8g2.print("Hum: ");
      u8g2.print(h, 1); // Muestra con un decimal
      u8g2.print(" %");
    }

    // --- Mostrar Estado de Luz ---
    u8g2.setCursor(0, 52);
    u8g2.print("Luz: ");
    u8g2.print(estadoLuz);

  } while (u8g2.nextPage()); // Pasa a la siguiente página

  // Mostrar también en el Monitor Serial (para depuración)
  Serial.print(F("Temp: ")); Serial.print(t); Serial.print(F(" C | "));
  Serial.print(F("Hum: ")); Serial.print(h); Serial.print(F(" % | "));
  Serial.print(F("Luz: ")); Serial.println(estadoLuz);
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *