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 ve reforzada por el hecho de que el mercado de la seguridad para el hogar se estima en unos USD 56.900 millones.

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.

Teniendo todo esto en cuenta, era hora de ponerse manos a la obra… Tras evaluar todas las herramientas y recursos que ya tenía a su disposición, Leonardo decidió crear un sistema de detección de movimiento que tomara una fotografía cada vez que se activara, ya que, de entre todas las demás opciones, esta era la más eficaz 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 detectar movimiento, activa una cámara ESP32 para tomar una fotografía. La imagen se envía a Google Drive y su ID de archivo, ID de carpetay nombre de archivo se envían a UbidotsUbidotsUbidots UbidotsUbidotsdashboard. UbidotsUbidots UbidotsUbidots también genera las alertas que Leonardo recibe en su teléfono cada vez que se toma una foto, lo que facilita estar al tanto de cualquier novedad.

Construcción del sistema de detección de movimiento, paso a paso

Hardware utilizado en el proyecto

  1. Sensor de movimiento PIR (1)
  2. Placa de desarrollo del módulo de cámara M5Stack ESP32 (1)
  3. Módulo de conexión básico SparkFun FTDI - 3,3 V (1)
  4. Cables puente (1)

Herramientas de software/nube utilizadas en el proyecto

  1. Una cuenta activa Ubidots
  2. IDE de Arduino
  3. 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.
  • Introduce el token de tu Ubidots en la variable llamada "TOKEN". De esta forma, el sistema enviará el ID del archivo, el ID de la carpetay el nombre del archivo dentro del contexto del punto en formato de cadena. Normalmente, el contexto se utiliza para almacenar cadenas en pares clave-valor.
const TOKEN = "TU-TOKEN";

Puedes cambiar la etiqueta de la variable y la etiqueta del dispositivo según lo desees. En dichos dispositivos y variables, almacenarás el ID del archivo, el ID de la carpetay el nombre del 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 fotos tomadas por la ESP32-CAM. Además, verás un menú desplegable con algunos registros de las fotos 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, CSSy JavaScript y péguelos en el editor de código del widget.
  • En el código JavaScript, coloca el token de tu 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

Ubidots Los eventos permiten activar notificaciones por correo electrónico, SMS, llamadas de voz e incluso webhooks según los datos de tus sensores. En este caso, utilizaremos los eventos para recibir correos electrónicos con las imágenes capturadas por la ESP32-CAM. Sigue 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.