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 |
También puedes comprarlos por separado desde los enlaces a continuación.
INTRODUCCIÓN AL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
ESP32 & Development Board (Placa ESP32) |
|
- |
1. Montaje del Circuito
2. Configuración de Blynk
2.1 Inicialización de Blynk
Dirígete a Blynk y selecciona START FREE para crear una cuenta gratuita.
Ingresa tu correo electrónico para iniciar el proceso de registro.
Confirma tu registro a través de tu correo electrónico.
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
Primero, crea una plantilla en Blynk. Sigue las instrucciones para crear la plantilla Intrusion Alert System.
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.
Haz clic en New Datastream.
En el pop-up, elige Virtual Pin.
Nombra el Virtual Pin V0 como AwayMode. Establece el DATA TYPE como Integer con los valores MIN y MAX establecidos como 0 y 1.
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.
Haz clic en Add New Event.
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.
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.
Simplemente arrastra y coloca tanto el Switch widget como el Label widget en el Web Dashboard.
Cuando pases el ratón sobre un widget, aparecerán tres íconos. Usa el ícono de configuración para ajustar las propiedades del widget.
En la configuración del Switch widget, selecciona Datastream como AwayMode(V0). Establece ONLABEL y OFFLABEL para mostrar «away» y «home», respectivamente.
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
Es hora de crear un nuevo dispositivo.
Haz clic en From template para comenzar con una nueva configuración.
Luego, selecciona la plantilla Intrusion Alert System y haz clic en Create.
Aquí verás el
Template ID,Device NameyAuthToken. Necesitas copiar estos valores en tu código para que el ESP32 pueda trabajar con Blynk.
3. Ejecución del Código
Antes de ejecutar el código, asegúrate de instalar la biblioteca
Blynkdesde el Library Manager en el IDE de Arduino.Abre el archivo
Lesson_49_Blynk_based_intrusion_system.inoubicado en el directoriouniversal-maker-sensor-kit\esp32\Lesson_49_Blynk_based_intrusion_system. También puedes copiar su contenido en el IDE de Arduino.Reemplaza los valores de
BLYNK_TEMPLATE_ID,BLYNK_TEMPLATE_NAMEyBLYNK_AUTH_TOKENcon tus propios ID únicos.#define BLYNK_TEMPLATE_ID "TMPxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
También necesitas ingresar el
ssidy lacontraseñade tu red WiFi.char ssid[] = "your_ssid"; char pass[] = "your_password";
Elige la placa correcta (ESP32 Dev Module) y el puerto, luego haz clic en el botón Subir.
Abre el monitor serial (configura la tasa de baudios a 115200) y espera el mensaje de conexión exitosa.
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
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>
Configuración WiFi
Ingresa tus credenciales WiFi.
char ssid[] = "your_ssid"; char pass[] = "your_password";
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;
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 ensetup(), aquí se ejecuta la funciónmyTimerEvent()cada 1000ms. Puedes modificar el primer parámetro detimer.setInterval(1000L, myTimerEvent)para cambiar el intervalo entre ejecuciones demyTimerEvent.
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 }
Función loop()
La función loop ejecuta continuamente Blynk y las funciones del temporizador de Blynk.
void loop() { Blynk.run(); timer.run(); }
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 comandoBlynk.syncVirtual()solicita el valor de un solo pin virtual. El pin virtual especificado ejecutará la llamadaBLYNK_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 }
Manejo de Datos
Cada segundo, la función
myTimerEvent()llama asendData(). 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