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
#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
#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
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)
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
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