#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
// Definir los pines GPIO
#define RELAY_PIN GPIO_NUM_22
#define PIR_PIN GPIO_NUM_4 // Cambia este pin según tu conexión
void app_main(void)
{
// Configurar el pin del relé como salida
gpio_reset_pin(RELAY_PIN);
gpio_set_direction(RELAY_PIN, GPIO_MODE_OUTPUT);
gpio_set_level(RELAY_PIN, 0); // Iniciar apagado
// Configurar el pin del PIR como entrada
gpio_reset_pin(PIR_PIN);
gpio_set_direction(PIR_PIN, GPIO_MODE_INPUT);
printf("Sistema de detección de movimiento iniciado\n");
printf("PIR sensor en GPIO %d\n", PIR_PIN);
printf("Relé en GPIO %d\n", RELAY_PIN);
int estado_anterior = 0;
// Bucle infinito
while(1) {
// Leer el estado del sensor PIR
int estado_pir = gpio_get_level(PIR_PIN);
if (estado_pir == 1 && estado_anterior == 0) {
// Movimiento detectado
gpio_set_level(RELAY_PIN, 1);
printf("¡MOVIMIENTO DETECTADO! - Relé ACTIVADO\n");
}
else if (estado_pir == 0 && estado_anterior == 1) {
// Ya no hay movimiento
gpio_set_level(RELAY_PIN, 0);
printf("Sin movimiento - Relé DESACTIVADO\n");
}
estado_anterior = estado_pir;
// Pequeña pausa para evitar consumo excesivo de CPU
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}