Módulo 6

Sensores básicos: temperatura, humedad, distancia ultrasónica

Manejo de Sensores y Actuadores

ESP32 Mecatrónica IoT UNAM

1. Introducción a los Sensores Básicos

Los sensores son elementos fundamentales en la mecatrónica y el Internet de las Cosas (IoT), ya que permiten la interacción de los sistemas con su entorno. Entre los más comunes se encuentran los sensores de temperatura, humedad y distancia ultrasónica.

Los sensores de temperatura y humedad son utilizados en múltiples aplicaciones industriales, como el control de procesos de producción, la monitorización de condiciones ambientales en invernaderos, en sistemas de climatización o en la industria de alimentos. Los sensores de distancia ultrasónica son esenciales en robots y vehículos autónomos, sistemas de seguridad y en la medición de niveles de líquidos.

2. Explicación Técnica Detallada

El ESP32 tiene múltiples pines de entrada y salida digital que pueden ser utilizados para conectar sensores. Para leer la señal de un sensor de temperatura/humedad como el DHT11 o DHT22, se utiliza un pin digital configurado como entrada.

Para el sensor de distancia ultrasónica HC-SR04, se utilizan dos pines digitales: uno configurado como salida (TRIGGER) y otro como entrada (ECHO). El ESP32 envía un pulso por el pin TRIGGER y mide el tiempo que tarda en recibir el eco.

Sensor DHT11/DHT22 - Temperatura y Humedad

DHT - Lectura de Temperatura y Humedad
#include "DHT.h"

#define DHTPIN 4     // Pin conectado al sensor DHT
#define DHTTYPE DHT11   // DHT 11 (también funciona con DHT22)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("Sensor DHT11/DHT22 - Iniciando...");
  
  dht.begin();
}

void loop() {
  // Esperar 2 segundos entre mediciones
  delay(2000);

  // Leer humedad (porcentaje)
  float humedad = dht.readHumidity();
  // Leer temperatura en Celsius
  float temperatura = dht.readTemperature();
  // Leer temperatura en Fahrenheit
  float temperaturaF = dht.readTemperature(true);

  // Verificar si las lecturas fallaron
  if (isnan(humedad) || isnan(temperatura) || isnan(temperaturaF)) {
    Serial.println("Error al leer el sensor DHT!");
    return;
  }

  // Calcular índice de calor en Fahrenheit
  float indiceCalor = dht.computeHeatIndex(temperaturaF, humedad);
  // Convertir a Celsius
  float indiceCalorC = dht.computeHeatIndex(temperatura, humedad, false);

  Serial.print("Humedad: ");
  Serial.print(humedad);
  Serial.print("%  Temperatura: ");
  Serial.print(temperatura);
  Serial.print("°C ");
  Serial.print(temperaturaF);
  Serial.print("°F  Índice de calor: ");
  Serial.print(indiceCalorC);
  Serial.println("°C");
}

Sensor HC-SR04 - Distancia Ultrasónica

HC-SR04 - Medición de Distancia
#define TRIGGER_PIN  5  // Pin TRIGGER del HC-SR04
#define ECHO_PIN     18 // Pin ECHO del HC-SR04

void setup() {
  Serial.begin(115200);
  pinMode(TRIGGER_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  Serial.println("Sensor HC-SR04 - Iniciando...");
}

void loop() {
  // Limpiar el pin TRIGGER
  digitalWrite(TRIGGER_PIN, LOW);
  delayMicroseconds(2);
  
  // Enviar pulso de 10 microsegundos
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);
  
  // Leer el tiempo del eco
  long duracion = pulseIn(ECHO_PIN, HIGH);
  
  // Calcular distancia (velocidad del sonido = 343 m/s)
  // Distancia = (tiempo * velocidad) / 2
  float distancia_cm = (duracion * 0.034) / 2;
  
  // Mostrar resultados
  Serial.print("Distancia: ");
  Serial.print(distancia_cm);
  Serial.println(" cm");
  
  // Verificar límites del sensor (2cm - 400cm)
  if (distancia_cm < 2 || distancia_cm > 400) {
    Serial.println("Fuera de rango!");
  }
  
  delay(500);
}

3. Ejercicios Prácticos

1

Sensor DHT11 - Temperatura y Humedad

Básico 20-30 min

Objetivo: Leer y mostrar en el monitor serial los valores de temperatura y humedad.

Materiales:

  • ESP32
  • Sensor DHT11 o DHT22
  • Resistencia pull-up 10kΩ
  • Cables jumper
  • Protoboard

Conexiones:

  • VCC → 3.3V
  • GND → GND
  • DATA → Pin 4 (con resistencia pull-up)
2

Sensor HC-SR04 - Distancia Ultrasónica

Intermedio 30-40 min

Objetivo: Medir y mostrar en el monitor serial la distancia a un objeto.

Materiales:

  • ESP32
  • Sensor ultrasónico HC-SR04
  • Cables jumper
  • Protoboard

Conexiones:

  • VCC → 5V
  • GND → GND
  • TRIG → Pin 5
  • ECHO → Pin 18
3

Sistema IoT - Sensores + MQTT

Avanzado 60-90 min

Objetivo: Integrar múltiples sensores y enviar datos a un servidor MQTT.

Materiales:

  • ESP32
  • Sensor DHT11/DHT22
  • Sensor HC-SR04
  • Resistencias y cables
  • Broker MQTT (Mosquitto)

Funcionalidades:

  • Lectura simultánea de sensores
  • Envío de datos vía WiFi
  • Publicación en tópicos MQTT

4. Proyecto Aplicado: Sistema de Invernadero Inteligente

Monitorización y Control Automatizado

Objetivo: Desarrollar un sistema completo de monitorización ambiental para invernadero con control automatizado de condiciones y alertas remotas.

Sensores Integrados:

  • Temperatura: DHT22 (alta precisión)
  • Humedad: DHT22 + Sensor de suelo
  • Nivel de agua: HC-SR04
  • Luz: LDR (opcional)
  • Actuadores: Ventiladores, bombas
  • Conectividad: WiFi + MQTT

5. Evaluación y Troubleshooting

Problemas Comunes

  • Lecturas erróneas DHT: Verificar resistencia pull-up
  • HC-SR04 sin respuesta: Revisar alimentación 5V
  • Valores inestables: Añadir delays apropiados
  • Sensor no detectado: Verificar conexiones y librerías

Criterios de Evaluación

  • Lecturas precisas y estables
  • Conexiones correctamente realizadas
  • Código bien estructurado y comentado
  • Manejo adecuado de errores
  • Calibración de sensores