julio 3, 2026
Cómo crear un sistema de seguridad para casa con ESP32 + sensor PIR + Blynk IoT (alertas al celular)

Cómo crear un sistema de seguridad para casa con ESP32 + sensor PIR + Blynk IoT (alertas al celular)

Nota: a veces verás “Blink IoT / blink.cloud” en videos, pero la plataforma popular para este tipo de proyectos es Blynk IoT (panel web blynk.cloud) y su app Blynk IoT.

Lo que vas a construir (y lo que no)

Vas a montar un sistema de alarma DIY básico que:

  • Detecta movimiento con un PIR.
  • Si está armado, activa un buzzer (alarma sonora local).
  • Envía una notificación push al teléfono usando Blynk IoT (vía evento).

Esto es perfecto para pasillos, entradas, garaje u oficina.
Y ahora la parte irónicamente importante: no reemplaza un sistema profesional con redundancia, batería certificada, sensores perimetrales y monitoreo 24/7. Es como poner un perro guardián simpático: ayuda mucho, pero no es un banco suizo.

Materiales necesarios

Hardware

  • ESP32 (dev board compatible)
  • Sensor PIR (HC-SR501 o similar)
  • Buzzer (activo recomendado; pasivo si usarás PWM)
  • Protoboard + jumpers
  • Cable USB (según tu placa)
  • Wi-Fi estable

Software

  • Arduino IDE (o PlatformIO)
  • App Blynk IoT (Android/iOS)
  • Cuenta en Blynk Cloud (blynk.cloud)

Conexiones recomendadas (wiring)

Aquí conviene ir con calma: la mayoría de errores “misteriosos” son cables, pines mal elegidos o alimentación equivocada.

PIR → ESP32

  • VCC3.3V (o 5V si tu módulo lo requiere; revisa serigrafía/datasheet del PIR)
  • GNDGND
  • OUTGPIO 13 (puedes cambiarlo)

Buzzer → ESP32

  • +GPIO 25
  • GND

Consejo de vida real: aleja el PIR de ventanas, corrientes de aire, aire acondicionado o radiadores. El PIR “ve” cambios térmicos, así que una cortina moviéndose con sol directo puede convertirse en tu peor enemigo… y tu mejor generador de notificaciones a las 3:17 AM.

Paso 1: Crear el proyecto en Blynk (Cloud + App)

La idea es que Blynk sea tu “central” en la nube: recibe el evento y dispara la notificación push.

  1. Entra a Blynk Cloud (blynk.cloud) y crea cuenta / inicia sesión.
  2. Crea un Template (ej.: Home Security ESP32).
  3. Dentro del template, crea un Event llamado:
    • motion_detected
      y habilita Push notifications.
  4. Crea un Device desde el template.
  5. Copia las credenciales que usarás en el código (según tu flujo: BLYNK_TEMPLATE_ID y BLYNK_AUTH_TOKEN).

UI mínima en la app (recomendada)

  • Añade un Switch para armar/desarmar (Virtual Pin V1).
  • (Opcional) Añade un LED widget o “Value display” para estado armado.
  • (Opcional) Un “Notification log” o historial si tu plan lo permite.

Paso 2: Código base para ESP32 (Arduino) — con filtro y anti-spam

Este sketch incluye:

  • Armado/Desarmado desde Blynk (V1)
  • Filtro “movimiento estable” (~1s)
  • Cooldown para evitar spam (ej.: 60s)
  • Buzzer por 3s + logEvent() para push

Si tu librería/plantilla de Blynk difiere, ajusta includes y credenciales a lo que te muestra Blynk Cloud al crear el dispositivo.

/***************************************************
 * ESP32 + PIR + Buzzer + Blynk IoT (Push Event)
 * - PIR: GPIO 13
 * - Buzzer: GPIO 25
 ***************************************************/

#define BLYNK_TEMPLATE_ID   "TU_TEMPLATE_ID"
#define BLYNK_TEMPLATE_NAME "Home Security ESP32"

char ssid[] = "TU_WIFI";
char pass[] = "TU_PASSWORD";

// ---- Pines ----

// ---- Lógica ----
bool armed = false;

unsigned long motionStart = 0;
const unsigned long stableDelayMs = 1000;   // movimiento estable 1s
bool motionLatched = false;

unsigned long lastAlertMs = 0;
const unsigned long cooldownMs = 60000;     // 60s sin volver a alertar

BLYNK_WRITE(V1) { // Switch virtual en la app (V1)
  armed = param.asInt();
  motionLatched = false;
  motionStart = 0;
}

void buzzAlarm(unsigned long ms) {

}

void setup() {
  Serial.begin(115200);
}

void loop() {
  Blynk.run();

  int pirState = digitalRead(PIR_PIN);

  if (!armed) {
    motionStart = 0;
    motionLatched = false;
    return;
  }

  // Armado:
  if (pirState == HIGH) {
    if (motionStart == 0) motionStart = millis();

    const bool stable = (millis() - motionStart >= stableDelayMs);
    const bool cooldownOk = (millis() - lastAlertMs >= cooldownMs);

    if (!motionLatched && stable && cooldownOk) {
      motionLatched = true;
      lastAlertMs = millis();

      // 1) Notificación push vía evento
      Blynk.logEvent("motion_detected", "Movimiento detectado (PIR)");

      // 2) Alarma sonora local
      buzzAlarm(3000);

      Serial.println("ALERTA: Movimiento detectado");
    }
  } else {
    // Sin movimiento: resetea el latch para permitir futuras detecciones
    motionStart = 0;
    motionLatched = false;
  }
}

Por qué este “filtro” importa

Un PIR puede dar picos breves. Exigir 1 segundo estable es como decirle: “no me cuentes chismes; tráeme hechos”.
Y el cooldown evita la avalancha de notificaciones cuando hay movimiento constante (o un gato con ambiciones).

Paso 3: Subir el sketch y probar sin volverte loco

Cómo crear un sistema de seguridad para casa con ESP32 + sensor PIR + Blynk IoT (alertas al celular)

  1. Conecta el ESP32 por USB.
  2. En Arduino IDE:
    • Board: tu modelo de ESP32
    • Port: el puerto correcto
  3. Sube el sketch.
  4. Si se queda en “Connecting…”, mantén presionado BOOT al iniciar carga (algunas placas lo requieren).
  5. Abre Serial Monitor a 115200 y observa:
    • conexión Wi-Fi
    • conexión a Blynk
    • logs de alerta

Prueba en dos fases:

  • Primero con el PIR quieto (sin falsos disparos).
  • Luego muévete delante del sensor, espera el stableDelay y confirma:
    • buzzer suena
    • notificación llega
    • cooldown evita repetición inmediata

Problemas típicos y soluciones rápidas

1) No llegan notificaciones push

  • Revisa permisos de notificación de la app Blynk IoT en tu teléfono.
  • Confirma que el Event existe y se llama exactamente motion_detected.
  • Asegúrate de que el dispositivo aparece Online en Blynk Cloud.
  • Verifica que tu cuenta/app esté en el mismo “workspace” o proyecto del dispositivo.

2) Se dispara todo el tiempo (falsas alarmas)

  • Ajusta sensibilidad del PIR (si tiene potenciómetro).
  • Cambia ubicación: lejos de sol directo, ventanas, corrientes de aire y fuentes de calor.
  • Sube stableDelayMs a 1500–2500ms.
  • Aumenta cooldownMs (ej.: 120s) si el lugar tiene movimiento frecuente.

3) El buzzer suena bajo o extraño

  • Usa buzzer activo (más simple: HIGH/LOW).
  • Si es pasivo, idealmente usa PWM (y alimenta correctamente si requiere driver).
  • Si el buzzer consume demasiado, usa un transistor (NPN + resistencia) para no castigar el GPIO.

4) “Connecting…” infinito a Blynk

  • Revisa SSID/clave.
  • Asegura Wi-Fi 2.4 GHz (muchos entornos IoT no usan 5 GHz).
  • Verifica token/credenciales.
  • Reinicia router si hay filtrado MAC o aislamiento de clientes.

Buenas prácticas (para que sea útil y “AdSense-friendly”)

  • Privacidad y legalidad: instala sensores solo en espacios donde tengas permiso.
  • Seguridad realista: úsalo como capa adicional, no como única defensa.
  • Cifrado y cuentas: protege tu cuenta Blynk con contraseña fuerte y 2FA si está disponible.
  • Red estable: IoT en la nube depende de tu Wi-Fi y del servicio. Para alarmas críticas, prioriza automatización local o redundancia.

PIR vs mmWave (tabla rápida para elegir mejor sensor)

Si quieres llevar este proyecto “de hobby a herramienta seria”, el sensor importa más de lo que parece.

Característica PIR (infrarrojo pasivo) mmWave (radar)
Detecta Cambios de calor/movimiento Presencia y micro-movimientos
Falsos positivos Moderados (sol/aire/calor) Pueden existir (ajuste fino)
Detecta “estar quieto” Mal Muy bien
Configuración Muy simple Más compleja
Precio Bajo Medio/alto
Ideal para Pasillos, entradas, exterior techado Habitaciones, presencia continua, “ocupación real”

Resumen humano: PIR es el martillo confiable; mmWave es el bisturí exigente.

Mejoras recomendadas (para versión “2.0”)

Si quieres que esto parezca un sistema de verdad (sin dejar de ser DIY), estas mejoras valen oro:

  1. Sirena + transistor/relé (más fuerte que buzzer).
  2. Batería/UPS (si se va la luz, la alarma no debería quedarse muda).
  3. Modo noche (armado automático en horario + desarmado al despertar).
  4. Registro de eventos (guardar timestamp en Google Sheets, MQTT o base local).
  5. Sensor de puerta/ventana (reed switch) para complementar PIR.
  6. Botón físico de pánico (GPIO con pull-up) para alarma manual.

Checklist final antes de colgarlo en la pared

  • PIR alimentado correctamente (3.3V/5V según módulo)
  • GND común para todo
  • Applet/Evento creado con nombre exacto
  • Switch V1 arma/desarma
  • Filtro estable + cooldown activos
  • Ubicación del PIR lejos de fuentes de calor/corrientes
  • Notificaciones verificadas con pantalla bloqueada

FAQ

¿Puedo armar y desarmar desde el celular?

Sí. Con un switch virtual en Blynk (como V1 en el código).

¿Funciona sin internet?

  • El buzzer puede seguir sonando (local).
  • Las notificaciones push no, porque dependen de conexión a Blynk Cloud.

¿Qué tan preciso es el PIR?

Es bastante bueno para movimiento “claro”, pero puede fallar con:

  • cambios de temperatura
  • sol directo
  • mascotas
  • corrientes de aire

Por eso el filtro (movimiento estable) y el cooldown suelen ser la diferencia entre “útil” y “tortura”.

Conclusión: una alarma sencilla, pero con buenas decisiones

Este proyecto es una gran puerta de entrada (sí, lo dije) a la seguridad doméstica DIY: barato, rápido y sorprendentemente funcional si lo instalas bien. La clave no está solo en el código; está en dónde pones el PIR, cómo filtras y cómo evitas el spam.

Si quieres convertirlo en un “tutorial definitivo” todavía más potente, el siguiente salto lógico es: mmWave + registro de eventos + batería + sirena. Ahí ya no juegas a “casa inteligente”; empiezas a diseñarla.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *