/**Sensores, Dispositivos, Redes y Protocolos de Comunicaciones
Actividad 1: Manejo de sensores y actuadores en IoT
El objetivo principal es crear una pequeña aplicación IoT para ejecutarla
en el dispositivo simulado y probar sus entradas y salidas, trabajando con sensores y actuadores
Mercedes Marín Navarro
ESP32 + DHT22 + LEDs + Buttons + Resistor - Wokwi Activity Sensores**/
// librería para el manejo del DHT22
#include "DHTesp.h"
/**conexiones del sensor de temperatura y humedad, leds y botones**/
//pin al que estará conectado el sensor DHT22 (13)
int DHT_PIN=13;
//pin al que estará conectado el led AMARILLO de humedad (15)
int Humidity_LED_PIN=15;
// pin al que estará conectado el led ROJO de temperatura (14)
int Temp_LED_PIN=14;
// pin al que estará conectado el primer boton-pulsador (27)
int Pulsador1_PIN=27;
// pin al que estará conectado el segundo boton-pulsador (26)
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!");
//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 ROSA
float humidity = data.humidity;
/**condicion de activacion si la
humedad no está entre el 25% y el 60%
en caso contrario el led continua apagado*/
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 - AZUL
float temperature = data.temperature;
/**condicion de activacion si la
tempratura es mayor a 45%
en caso contrario el led continua apagado**/
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 leds
//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(1000);
}
//si no hay activación de botón, el sensor sigue activo
else {
Serial.println("Sensor activo");
}
delay(100); // espera para una nueva lectura del sensor
}