Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 junto con otros entusiastas.

¿Por qué unirte?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Accede anticipadamente a nuevos anuncios de productos y avances.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones festivas y sorteos: Participa en sorteos y promociones especiales.

👉 ¿Estás listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo.

Lección 49: Sistema de Notificación de Intrusión basado en Blynk

Este proyecto demuestra un sistema simple de detección de intrusión para el hogar utilizando un sensor de movimiento PIR (HC-SR501). Cuando el sistema está configurado en el modo «Away» a través de la aplicación Blynk, el sensor PIR monitorea el movimiento. Cualquier movimiento detectado desencadena una notificación en la aplicación Blynk, alertando al usuario sobre una posible intrusión.

Componentes Requeridos

En este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Universal Maker Sensor Kit

94

BUY

También puedes comprarlos por separado desde los enlaces a continuación.

INTRODUCCIÓN AL COMPONENTE

ENLACE DE COMPRA

ESP32 & Development Board (Placa ESP32)

Comprar

Módulo de Sensor de Movimiento PIR (HC-SR501)

-

1. Montaje del Circuito

../_images/Lesson_12_PIR_Module_esp32_bb.png

2. Configuración de Blynk

2.1 Inicialización de Blynk

  1. Dirígete a Blynk y selecciona START FREE para crear una cuenta gratuita.

    ../_images/09_blynk_access.png
  2. Ingresa tu correo electrónico para iniciar el proceso de registro.

    ../_images/09_blynk_sign_in.png
  3. Confirma tu registro a través de tu correo electrónico.

  4. Después de la confirmación, aparecerá Blynk Tour. Se recomienda seleccionar «Skip». Si también aparece Quick Start, considera saltarlo también.

2.2 Creación de Plantillas

  1. Primero, crea una plantilla en Blynk. Sigue las instrucciones para crear la plantilla Intrusion Alert System.

  2. Asigna un nombre a la plantilla, selecciona ESP32 como hardware y selecciona WiFi como tipo de conexión, luego haz clic en Done.

2.3 Generación de Datastreams

Abre la plantilla que acabas de configurar y vamos a crear dos datastreams.

  1. Haz clic en New Datastream.

  2. En el pop-up, elige Virtual Pin.

  3. Nombra el Virtual Pin V0 como AwayMode. Establece el DATA TYPE como Integer con los valores MIN y MAX establecidos como 0 y 1.

  4. De manera similar, crea otro datastream de Virtual Pin. Nómbralo Current Status y establece el DATA TYPE como String.

2.4 Configuración de un Evento

A continuación, configuraremos un evento que enviará una notificación por correo electrónico si se detecta una intrusión.

  1. Haz clic en Add New Event.

    ../_images/09_blynk_event_add.png
  2. Define el nombre del evento y su código específico. Para TYPE, selecciona Warning y escribe una breve descripción para el correo electrónico que se enviará cuando ocurra el evento. También puedes ajustar con qué frecuencia recibes las notificaciones.

    Nota

    Asegúrate de que el EVENT CODE esté configurado como intrusion_detected. Este código está predefinido en el código, por lo que cualquier cambio requerirá ajustar el código también.

    ../_images/09_event_1_shadow.png
  3. Ve a la sección Notifications para activar las notificaciones y configurar los detalles del correo electrónico.


2.5 Ajuste del Web Dashboard

Asegurarse de que el Web Dashboard interactúe perfectamente con el Sistema de Alerta de Intrusión es fundamental.

  1. Simplemente arrastra y coloca tanto el Switch widget como el Label widget en el Web Dashboard.

  2. Cuando pases el ratón sobre un widget, aparecerán tres íconos. Usa el ícono de configuración para ajustar las propiedades del widget.

  3. En la configuración del Switch widget, selecciona Datastream como AwayMode(V0). Establece ONLABEL y OFFLABEL para mostrar «away» y «home», respectivamente.

  4. En la configuración del Label widget, selecciona Datastream como Current Status(V1).

2.6 Guardando la Plantilla

Finalmente, no olvides guardar tu plantilla.

2.7 Creación de un Dispositivo

  1. Es hora de crear un nuevo dispositivo.

  2. Haz clic en From template para comenzar con una nueva configuración.

  3. Luego, selecciona la plantilla Intrusion Alert System y haz clic en Create.

  4. Aquí verás el Template ID, Device Name y AuthToken. Necesitas copiar estos valores en tu código para que el ESP32 pueda trabajar con Blynk.

3. Ejecución del Código

  1. Antes de ejecutar el código, asegúrate de instalar la biblioteca Blynk desde el Library Manager en el IDE de Arduino.

  2. Abre el archivo Lesson_49_Blynk_based_intrusion_system.ino ubicado en el directorio universal-maker-sensor-kit\esp32\Lesson_49_Blynk_based_intrusion_system. También puedes copiar su contenido en el IDE de Arduino.

  3. Reemplaza los valores de BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME y BLYNK_AUTH_TOKEN con tus propios ID únicos.

    #define BLYNK_TEMPLATE_ID "TMPxxxxxxx"
    #define BLYNK_TEMPLATE_NAME "Intrusion Alert System"
    #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
    
  4. También necesitas ingresar el ssid y la contraseña de tu red WiFi.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  5. Elige la placa correcta (ESP32 Dev Module) y el puerto, luego haz clic en el botón Subir.

  6. Abre el monitor serial (configura la tasa de baudios a 115200) y espera el mensaje de conexión exitosa.

    ../_images/09_blynk_upload_code.png
  7. Después de una conexión exitosa, activar el interruptor en Blynk comenzará la vigilancia del módulo PIR. Cuando se detecte movimiento (estado 1), dirá «¡Alguien aquí!» y enviará una alerta a tu correo electrónico.

4. Explicación del Código

  1. Configuración y Bibliotecas

    Aquí, se configuran las constantes de Blynk y las credenciales. También se incluyen las bibliotecas necesarias para el ESP32 y Blynk.

    /* Comment this out to disable prints and save space */
    #define BLYNK_PRINT Serial
    
    #define BLYNK_TEMPLATE_ID "xxxxxxxxxxx"
    #define BLYNK_TEMPLATE_NAME "Intrusion Alert System"
    #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    
    #include <WiFi.h>
    #include <WiFiClient.h>
    #include <BlynkSimpleEsp32.h>
    
  2. Configuración WiFi

    Ingresa tus credenciales WiFi.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  3. Configuración del Sensor PIR

    Establece el pin donde está conectado el sensor PIR e inicializa las variables de estado.

    const int sensorPin = 14;
    int state = 0;
    int awayHomeMode = 0;
    BlynkTimer timer;
    
  4. Función setup()

    Esta función inicializa el sensor PIR como entrada, configura la comunicación serial, se conecta a WiFi y configura Blynk.

    • Usamos timer.setInterval(1000L, myTimerEvent) para establecer el intervalo del temporizador en setup(), aquí se ejecuta la función myTimerEvent() cada 1000ms. Puedes modificar el primer parámetro de timer.setInterval(1000L, myTimerEvent) para cambiar el intervalo entre ejecuciones de myTimerEvent.


    void setup() {
    
        pinMode(sensorPin, INPUT);  // Establece el pin del sensor PIR como entrada
        Serial.begin(115200);           // Inicia la comunicación serial a 115200 baudios para depuración
    
        // Configura Blynk y conéctate a WiFi
        Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    
        timer.setInterval(1000L, myTimerEvent);  // Configura una función que se llamará cada segundo
    }
    
  5. Función loop()

    La función loop ejecuta continuamente Blynk y las funciones del temporizador de Blynk.

    void loop() {
       Blynk.run();
       timer.run();
    }
    
  6. Interacción con la Aplicación Blynk

    Estas funciones se llaman cuando el dispositivo se conecta a Blynk y cuando hay un cambio en el estado del pin virtual V0 en la aplicación Blynk.

    • Cada vez que el dispositivo se conecta al servidor de Blynk, o se reconecta debido a condiciones de red deficientes, se llama a la función BLYNK_CONNECTED(). El comando Blynk.syncVirtual() solicita el valor de un solo pin virtual. El pin virtual especificado ejecutará la llamada BLYNK_WRITE().

    • Siempre que el valor de un pin virtual en el servidor BLYNK cambie, se activará BLYNK_WRITE().


    // Esta función se llama cada vez que el dispositivo se conecta a Blynk.Cloud
    BLYNK_CONNECTED() {
        Blynk.syncVirtual(V0);
    }
    
    // Esta función se llama cada vez que cambia el estado del pin Virtual 0
    BLYNK_WRITE(V0) {
        awayHomeMode = param.asInt();
        // lógica adicional
    }
    
  7. Manejo de Datos

    Cada segundo, la función myTimerEvent() llama a sendData(). Si el modo de alejamiento está habilitado en Blynk, verifica el sensor PIR y envía una notificación a Blynk si se detecta movimiento.

    • Usamos Blynk.virtualWrite(V1, "Somebody in your house! Please check!"); para cambiar el texto de una etiqueta.

    • Usa Blynk.logEvent("intrusion_detected"); para registrar el evento en Blynk.


    void myTimerEvent() {
       sendData();
    }
    
    void sendData() {
       if (awayHomeMode == 1) {
          state = digitalRead(sensorPin);  // Lee el estado del sensor PIR
    
          Serial.print("state:");
          Serial.println(state);
    
          // Si el sensor detecta movimiento, envía una alerta a la aplicación Blynk
          if (state == HIGH) {
            Serial.println("Somebody here!");
            Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
            Blynk.logEvent("intrusion_detected");
          }
       }
    }
    

Referencia