Tutorial 4: Sensores de Ambiente.

¿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 *

Medios de pago

Pagar con Flow

Puedes pagar con Webpay, Khipu, Onepay o Mach. Es rápido, seguro y no tiene costo adicional.

WebpayKhipuOnepayMach

Transferencia Bancaria

Realiza una transferencia directa desde tu banco. En la finalización de tu compra podrás ver los datos bancarios.

Seguimiento de Pedido

Ingresa tu número de pedido o código de seguimiento

MechaCoin

Gana $500 en
Cashback de Bienvenida

💰 $500 en MechaCoins gratis

Cada MechaCoin = $1 de descuento real. Crea tu cuenta y empieza a acumular cashback en cada compra.

¿Quieres $500 en cashback?