Un hogar más seguro con un sistema de detección de movimiento fácil de construir
Pocas cosas son tan universales e importantes como sentirse seguro en casa. Cualquier alteración de esta sensación puede tener un impacto negativo en toda la vida. Por eso, independientemente de la realidad de las amenazas, priorizamos nuestra seguridad e intentamos reducir los riesgos al máximo, una realidad que se evidencia al estimar que el mercado de la seguridad para el hogar está valorado en unos 56.900 millones USD .
Un contribuyente importante al crecimiento de este mercado ha sido el surgimiento de IoT, que, junto con la mayor disponibilidad de tecnologías de conectividad confiables, ha brindado a los propietarios de viviendas la oportunidad de obtener todo tipo de dispositivos que graban videos, alarman a los usuarios o bloquean puertas, entre otros beneficios.
Y aunque estos dispositivos son asequibles y muy fáciles de usar (lo que resulta en instalaciones y usos fáciles), aquí en Ubidotssomos creadores, por lo que nuestro primer instinto suele ser buscar las piezas y construir los dispositivos que necesitamos con nuestras propias manos.
Ese fue el caso de Leonardo, uno de nuestros ingenieros de Éxito del Cliente, quien recientemente enfrentó una situación en la que la seguridad de su casa y su familia estaba potencialmente en riesgo.
Para resumir, varias veces se vieron individuos de aspecto sospechoso deambulando por su vecindario y, aunque todavía no había sucedido nada, había un consenso en la comunidad sobre lo incómodos que se sentían.
En el caso de Leonardo, esta situación fue aún más estresante porque viaja con su familia la mayoría de los fines de semana, dejando la casa vacía y dándole a estos individuos (u otros) una oportunidad ideal para entrar sin permiso.
Con todo esto en mente, llegó el momento de ponerse manos a la obra… Después de evaluar todas las herramientas y recursos que ya tenía a su disposición, Leonardo decidió hacer un sistema de detección de movimiento que tomara una fotografía cada vez que se activara, ya que, de todas las demás opciones, esta era la más efectiva para su problema.
El sistema que imaginó tenía las ventajas de ser a la vez sutil y extremadamente eficiente, ya que no tendría que monitorear las imágenes constantemente (dado que lo alertaría de cada nueva imagen/movimiento) y siempre podría llamar a la policía cuando el sistema fotografiara algo que pensara que era problemático, independientemente de su ubicación.
El sistema funciona mediante un sensor infrarrojo pasivo que, al registrar movimiento, activa una cámara ESP32 para tomar una foto. La imagen se envía a Google Drive y su ID de archivo , ID de carpeta y nombre de archivo se envían a Ubidots donde las fotos se pueden visualizar en un dashboard . Ubidots también genera las alertas que Leonardo recibe en su teléfono cada vez que se toma una foto, lo que facilita mantenerse al día con las novedades.
Construcción del sistema de detección de movimiento, paso a paso
Hardware utilizado en el proyecto
- Sensor de movimiento PIR (1)
- Placa de desarrollo del módulo de cámara M5Stack ESP32 (1)
- Módulo de conexión básico SparkFun FTDI - 3,3 V (1)
- Cables puente (1)
Herramientas de software/nube utilizadas en el proyecto
- Una cuenta activa Ubidots
- IDE de Arduino
- Script de Google
1. Conecte el sensor de movimiento PIR al ESP32-CAM
Con la ayuda de cables puente, conecte el sensor de movimiento PIR al ESP32-CAM siguiendo el esquema que se muestra en la imagen a continuación. Tenga en cuenta que puede cambiar la asignación de pines dentro del código.
2. Programación del proyecto Google Script.
Para crear un nuevo proyecto de Google Script, siga estos pasos:
- Vaya al de Google Apps Script .
- Haga clic en el botón “+ Nuevo proyecto” de la parte superior izquierda y cree un nuevo proyecto.
- Copie el código que se encuentra en este repositorio y péguelo en su proyecto de Google Script.
- Coloque el token de su Ubidots en la variable " TOKEN ". De esta manera, el sistema enviará el ID de archivo , el ID de carpeta y el nombre de archivo dentro del contexto del punto en formato de cadena. Normalmente, el contexto se usa para almacenar cadenas en pares clave-valor.
const TOKEN = "TU-TOKEN";Puede cambiar la etiqueta de la variable y la etiqueta del dispositivo según sus preferencias. En estos dispositivos y variables, almacenará el ID de archivo , el ID de carpeta y el nombre de archivo de la imagen tomada por la ESP32-CAM.
- Implemente su código y cambie los permisos del script para permitir que todos puedan verlo.
- Copia el ID que aparece en "ID de implementación" una vez publicado el script. Lo usaremos dentro de ESP32-CAM.
3. Programación de su ESP32-CAM.
Hay muchos tutoriales en internet sobre cómo programar el ESP32-CAM, por ejemplo, este . Descarga el código correspondiente de este repositorio y ábrelo en tu IDE de Arduino.
Sin embargo, se deben realizar algunos cambios en el código para que funcione correctamente en su ESP32-CAM.
- Coloque sus credenciales de red inalámbrica en los campos SSID y Contraseña.
const char* ssid = "SU-SSID"; const char* password = "SU-CONTRASEÑA";
- Pegue el ID de su Google Script en la siguiente variable.
Cadena myScript = "/macros/s/SU-ID-URL/exec"; //Reemplazar solo "SU-ID-URL"Por último, ejecuta todo el código en tu IDE de Arduino y actualiza tu ESP32-CAM.
4. Personaliza tu widget Ubidots
El widget de lienzo HTML te permite crear tu propio widget personalizado. Haz clic aquí para obtener más información. Con el widget creado en los siguientes pasos, podrás ver las imágenes tomadas por la ESP32-CAM. Además, verás un menú desplegable con algunos registros de las imágenes que, si lo prefieres, puedes eliminar.
Ahora, creemos nuestro propio widget usando estos fragmentos de código:
- Vaya al menú desplegable "Datos" Ubidots en la barra de navegación, luego "Dashboards" y, finalmente, seleccione el dashboard en el que trabajará.
- Haga clic en el botón “+” de la esquina superior derecha de su dashboard.
- Seleccione la opción “HTML Canvas”.
- Copie los HTML , CSS y JavaScript y péguelos en el editor de código del widget.
- En el código JavaScript, coloque el token de su Ubidots en la variable llamada " TOKEN ".
var TOKEN = 'TU-TOKEN';- Verifica los permisos en la carpeta de Google Drive que contiene todas las imágenes. Debes permitir el acceso a "cualquier persona con el enlace".
Nota importante: debe confirmar que las etiquetas de dispositivo y variable configuradas en el proyecto de Google Script coincidan con las etiquetas de dispositivo y variable configuradas en el código JavaScript.
5. Configurar una alerta
Los eventos Ubidots permiten activar notificaciones por correo electrónico, SMS, llamadas de voz e incluso webhooks según los datos de los sensores. En este caso, usaremos los eventos para recibir correos electrónicos con las imágenes capturadas por la ESP32-CAM. Siga estos pasos.
- Vaya al menú desplegable "Datos" en la barra de navegación, luego "Eventos".
- Haga clic en el botón “+” de la parte superior derecha y cree un nuevo evento.
- Configure su evento para que se active una vez que la variable reciba "1".
- Tenga en cuenta que Ubidots permite usar campos personalizados dentro de las acciones de eventos. Por ejemplo, incluiremos la URL del archivo de imagen, que se almacena en el contexto del punto de datos. Para acceder al contexto, utilice esta notación:
Hola, el sistema ha detectado un extraño en: {{variable.last_value_timestamp}} , por favor revisa la imagen en el siguiente enlace: https://drive.google.com/file/d/ {{variable.last_value_context.fileID}} /view?usp=sharing
En "Acciones ENTONCES" establezca un cero en la variable para restablecer el disparador del evento.
Y así, usted puede, como Leonardo, construir un sistema IoT simple pero efectivo que mejore la seguridad de su hogar y brinde tranquilidad a su vida.