/** Sensores, Dispositivos, Redes y Protocolos de Comunicaciones
Manejo de sensores y actuadores en IoT
Andrés Eduardo Zúñiga López
ESP32 + DHT22 + LED + Button + Resistor - Wokwi Activity Sensores- */
// librería para el manejo del DHT22
#include "DHTesp.h"
// conexiones del sensor de temperatura y humedad, led´s y botones
// pin al que estará conectado el sensor DHT22
const int DHT_PIN = 15;
//pin al que estará conectado el led AMARILLO de humedad
int Humidity_LED_PIN=2;
// pin al que estará conectado el led ROJO de temperatura
int Temp_LED_PIN=14;
// pin al que estará conectado el primer boton-pulsador
int Pulsador1_PIN=27;
// pin al que estará conectado el segundo boton-pulsador
int Pulsador2_PIN=26;
/** definición de umbrales */
#define Temp_Threshold 45 // temperatura
#define Humidity_MIN 25 // humedad mínima
#define Humidity_MAX 60 // humedad máxima
DHTesp dhtSensor;
/* configurar el entorno de trabajo */
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!"); //tomado del ejercicio base
//Determinamos que el pin del led de humedad será para mostrar OUT
pinMode(Humidity_LED_PIN, OUTPUT);
//Determinamos que el pin del led de temperatura será para mostrar OUT
pinMode(Temp_LED_PIN, OUTPUT);
//Determinamos que el pin del botón1 sera para recibir IN
pinMode(Pulsador1_PIN, INPUT);
//Determinamos que el pin del botón2 sera para recibir IN
pinMode(Pulsador2_PIN, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
/** tarea principal del programa
bucle de lectura de las variables del sensor */
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temperatura: " + String(data.temperature, 2) + "°C");
Serial.println("Humedad: " + String(data.humidity, 1) + "%");
Serial.println("------------");
//Análisis de Humedad - led AMARILLO
float humidity = data.humidity;
//Serial.println(humidity);
//Serial.println(humidity_MIN);
//Serial.println(humidity_MAX);
if (humidity < Humidity_MIN || humidity > Humidity_MAX) {
digitalWrite(Humidity_LED_PIN, HIGH);
Serial.println("Alarma de Humedad");
} else {
digitalWrite(Humidity_LED_PIN, LOW);
}
//Análisis de Temperatura - led ROJO
float temperature = data.temperature;
//Serial.println(temperature);
if (temperature > Temp_Threshold) {
digitalWrite(Temp_LED_PIN, HIGH);
Serial.println("Alarma de Temperatura");
} else {
digitalWrite(Temp_LED_PIN, LOW);
}
//Uso de los botones para apagar los led´s
//Si activamos algún botón/pulsador, apagamos los leds encendidos
if (digitalRead(Pulsador1_PIN) == HIGH || digitalRead(Pulsador2_PIN) == HIGH )
{
digitalWrite(Humidity_LED_PIN, LOW);
digitalWrite(Temp_LED_PIN, LOW);
Serial.println("Botón/pulsador activado");
delay(500);
}
//de lo contrario, solo informa que el sensor sigue activo
else {
Serial.println("Sensor activo");
}
delay(100); // espera para una nueva lectura del sensor
}