#include <DHT.h>
#include <ESP32Servo.h>
// -------- PINES --------
#define DHTPIN 15
#define DHTTYPE DHT22
#define PIR_PIN 13
#define LDR_PIN 34
#define TRIG_PIN 5
#define ECHO_PIN 18
#define LED_PIN 2
#define SERVO_PIN 4
#define POT_PIN 35
DHT dht(DHTPIN, DHTTYPE);
Servo servoMotor;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(PIR_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
// -------- SERVOMOTOR --------
servoMotor.attach(SERVO_PIN);
servoMotor.write(0);
Serial.println("CASA INTELIGENTE INICIADA");
}
void loop() {
// -------- SENSOR DHT --------
float temperatura = dht.readTemperature();
float humedad = dht.readHumidity();
// -------- SENSOR PIR --------
int movimiento = digitalRead(PIR_PIN);
// -------- FOTOCELDA --------
int luz = analogRead(LDR_PIN);
// -------- POTENCIOMETRO --------
int potenciometro = analogRead(POT_PIN);
// -------- SENSOR ULTRASONICO --------
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long tiempo = pulseIn(ECHO_PIN, HIGH);
float distancia = tiempo * 0.034 / 2;
// -------- MOSTRAR DATOS --------
Serial.println("------------------------");
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
Serial.print("Humedad: ");
Serial.print(humedad);
Serial.println(" %");
Serial.print("Luz: ");
Serial.println(luz);
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
Serial.print("Potenciometro: ");
Serial.println(potenciometro);
// -------- ILUMINACION AUTOMATICA --------
if (luz < 1500) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Luz encendida");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("Luz apagada");
}
// -------- CONTROL DEL SERVOMOTOR --------
if (temperatura > 28) {
servoMotor.write(90);
Serial.println("Ventilador: ABIERTO");
} else {
servoMotor.write(0);
Serial.println("Ventilador: CERRADO");
}
// -------- SEGURIDAD --------
if (movimiento == HIGH) {
Serial.println("ALERTA: Movimiento detectado");
}
// -------- DETECCION DE PROXIMIDAD --------
if (distancia > 0 && distancia < 20) {
Serial.println("Objeto cercano a la casa");
}
delay(1000);
}