Nota

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

¿Por qué unirse?

  • Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.

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

  • Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy!

8.9 Sistema de Notificación de Intrusión Basado en Blynk

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

Componentes Necesarios

Para este proyecto, necesitamos los siguientes componentes.

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit de Inicio ESP32

320+

ESP32 Starter Kit

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

INTRODUCCIÓN AL COMPONENTE

ENLACE DE COMPRA

ESP32 placa

COMPRAR

Extensión de Cámara ESP32

COMPRAR

Cables Puente

COMPRAR

Módulo Sensor de Movimiento PIR

COMPRAR

1. Montaje del Circuito

../../_images/iot_9_blynk_bb.png

2. Configuración de Blynk

2.1 Inicializando Blynk

  1. Ve a la página de BLYNK y selecciona Sign Up FREE o Enterprise Solution.

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

    ../../_images/09_blynk_sign_in.png
  3. Revisa tu correo electrónico para ver un mensaje, y haz clic en el enlace Create Password en el correo para establecer tu contraseña.

    ../../_images/09_blynk_password.png
  4. Después de la confirmación, comenzará un Blynk Tour donde podrás aprender rápidamente sobre algunas de las características clave de Blynk.

    ../../_images/09_blynk_tour.png
  5. Después de completar el Blynk Tour, aparecerá una ventana donde podrás elegir explorar Blueprints o hacer clic en Quick Start para conectar rápidamente tu dispositivo. Sin embargo, en este caso, seleccionaremos «Have a look around first».

    ../../_images/09_blynk_skip.png

2.2 Creación de Plantillas

  1. Comienza creando una plantilla en Blynk. Sigue los pasos para configurar la plantilla Intrusion Alert System.

    ../../_images/09_create_template_1_shadow.png
  2. Nombra tu plantilla, elige ESP32 como el Hardware, selecciona WiFi como el Tipo de Conexión, y luego haz clic en Done.

    ../../_images/09_create_template_2_shadow.png
  3. Entra en la plantilla, donde se te indicarán los siguientes pasos. Haz clic en Configure template para subir una imagen de portada, mejorar la descripción y más. Sigue los tres pasos restantes para completar la configuración.

    ../../_images/09_blynk_temp_steps.png

2.3 Configurar Datastreams

  1. Abre la plantilla recién creada y ve a la página de configuración de datastreams.

    ../../_images/09_blynk_new_datastream.png
  2. Haz clic en New Datastream, y en la ventana emergente, selecciona Virtual Pin.

    ../../_images/09_blynk_datastream_virtual.png
  3. Nombra el Virtual Pin V0 como AwayMode y establece el TIPO DE DATO en Integer, con valores MIN y MAX de 0 y 1.

    ../../_images/09_create_template_shadow.png
  4. De manera similar, crea otro Virtual Pin llamado Current Status y establece el TIPO DE DATO en String.

    ../../_images/09_datastream_1_shadow.png

2.4 Configurar el Tablero Web

  1. Arrastra y suelta tanto el Switch widget como el Label widget en el Tablero Web.

    ../../_images/09_web_dashboard_1_shadow.png
  2. Pasa el cursor sobre un widget para ver tres iconos. Utiliza el icono de Configuración para configurar las propiedades del widget.

    ../../_images/09_blynk_dashboard_set.png
  3. Configura el Switch widget para que se enlace con el datastream AwayMode(V0), estableciendo las etiquetas ONLABEL y OFFLABEL para mostrar «away home» y «at home» respectivamente.

    ../../_images/09_web_dashboard_2_shadow.png
  4. En la configuración del Label widget, enlázalo con el datastream Current Status(V1).

    ../../_images/09_web_dashboard_3_shadow.png

2.5 Configuración de un Evento

  1. Haz clic en Events & Notifications y luego en Create Event.

    ../../_images/09_blynk_event_add.png
  2. Nombra el evento y especifica su código. Elige Warning para TIPO y proporciona una breve descripción para el correo electrónico de notificación. Ajusta la frecuencia de notificación según lo desees.

    Nota

    Asegúrate de que el CÓDIGO DEL EVENTO esté configurado como intrusion_detected. Cualquier cambio aquí requiere ajustes correspondientes en el código.

    ../../_images/09_event_1_shadow.png
  3. Ve a la sección de Notificaciones para habilitar las notificaciones y configurar los ajustes de correo electrónico.

    ../../_images/09_event_2_shadow.png
  4. En Configuración, define con qué frecuencia un evento activa las notificaciones y establece los intervalos según tu preferencia. Recuerda hacer clic en Create para guardar tus configuraciones.

    ../../_images/09_event_3_shadow.png

2.6 Guardar la Plantilla

  1. Recuerda guardar tus cambios en la plantilla.

    ../../_images/09_save_template_shadow.png

2.7 Crear un Dispositivo

  1. Es hora de crear un nuevo dispositivo a partir de la plantilla.

    ../../_images/09_blynk_device_new.png
  2. Selecciona From template para comenzar.

    ../../_images/09_blynk_device_template.png
  3. Elige la plantilla Intrusion Alert System y haz clic en Create.

    ../../_images/09_blynk_device_template2.png
  4. Anota el Template ID, Device Name y AuthToken para la integración con tu ESP32.

    ../../_images/09_blynk_device_code.png

3. Ejecución del Código

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

    ../../_images/09_blynk_add_library.png
  2. Abre el archivo iot_9_intrusion_alert_system.ino, ubicado en el directorio esp32-starter-kit-main\c\codes\iot_9_intrusion_alert_system. También puedes copiar su contenido en el Arduino IDE.

  3. Sustituye los marcadores de posición de BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME y BLYNK_AUTH_TOKEN por tus propios IDs ú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 password de tu red WiFi.

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

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

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

    ../../_images/09_blynk_code_alarm.png

4. Explicación del Código

  1. Configuración & Bibliotecas

    Aquí, configuras las constantes y credenciales de Blynk. También incluyes 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í lo configuramos para ejecutar 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);  // Set PIR sensor pin as input
        Serial.begin(115200);           // Start serial communication at 115200 baud rate for debugging
    
        // Configure Blynk and connect to WiFi
        Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    
        timer.setInterval(1000L, myTimerEvent);  // Setup a function to be called every second
    }
    
  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 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 Pin Virtual único. El Pin Virtual especificado realizará la llamada BLYNK_WRITE().

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


    // This function is called every time the device is connected to the Blynk.Cloud
    BLYNK_CONNECTED() {
        Blynk.syncVirtual(V0);
    }
    
    // This function is called every time the Virtual Pin 0 state changes
    BLYNK_WRITE(V0) {
        awayHomeMode = param.asInt();
        // additional logic
    }
    
  7. Manejo de Datos

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

    • Usamos Blynk.virtualWrite(V1, "¡Alguien en tu casa! ¡Por favor, revisa!"); 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);  // Read the state of the PIR sensor
    
          Serial.print("state:");
          Serial.println(state);
    
          // If the sensor detects movement, send an alert to the Blynk app
          if (state == HIGH) {
            Serial.println("Somebody here!");
            Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
             Blynk.logEvent("intrusion_detected");
          }
       }
    }
    

Reference