Dispositivos y sensores

Un hogar más seguro con un sistema de detección de movimiento fácil de instalar

Damos prioridad a nuestra seguridad e intentamos reducir los riesgos al máximo, una realidad que pone de relieve el hecho de que se calcula que el mercado de la seguridad doméstica está valorado en unos 56 900 millones de dólares.

Leonardo Castellanos
- 6 min read
Enviar por correo electrónico

Pocas cosas son tan universales e importantes como sentirse seguro en casa. Cualquier perturbación de esta sensación puede bastar para repercutir negativamente en toda su vida. Por eso, independientemente de lo reales que sean las amenazas, damos prioridad a nuestra seguridad e intentamos reducir los riesgos en la medida de lo posible, una realidad que pone de relieve el hecho de que se calcula que el mercado de la seguridad doméstica está valorado en unos 56 900 millones de dólares.

Un importante factor que ha contribuido al crecimiento de este mercado ha sido la aparición del IoT, que, unido a la mayor disponibilidad de tecnologías de conectividad fiables, ha brindado a los propietarios de viviendas la posibilidad de hacerse con todo tipo de dispositivos que graban vídeo, alarman a los usuarios o bloquean puertas, entre otras ventajas.

Y aunque estos dispositivos son asequibles y muy fáciles de usar (lo que se traduce en instalaciones y usos sencillos), en Ubidots somos makers, por lo que nuestro primer instinto suele ser buscar las piezas y construir con nuestras propias manos los dispositivos que necesitamos.

Ese fue el caso de Leonardo, uno de nuestros ingenieros de Éxito del Cliente, que recientemente se enfrentó a una situación en la que la seguridad de su casa y su familia corrían un riesgo potencial.

Para abreviar, unos individuos de aspecto sospechoso fueron vistos varias veces deambulando por su barrio y, aunque aún no había ocurrido nada, había consenso en la comunidad sobre lo incómodos que se sentían.

En el caso de Leonardo, esta situación era aún más estresante porque viaja con su familia la mayoría de los fines de semana, lo que deja la casa vacía y da a estos individuos (u otros) una oportunidad ideal para invadirla.

Con todo esto en mente, era hora de ponerse manos a la obra... Tras evaluar todas las herramientas y recursos de los que ya disponía, Leonardo decidió fabricar un sistema de detección de movimiento que hiciera una foto cada vez que se disparara, ya que, de todas las demás opciones, ésta era la más eficaz para su problema.

El sistema que imaginaba tenía la ventaja de ser a la vez sutil y extremadamente eficaz, ya que no tendría que vigilar las imágenes constantemente (dado que le avisaría de cada nueva imagen/movimiento) y siempre podría llamar a la policía cuando el sistema fotografiara algo que le pareciera problemático, independientemente de su ubicación.

El sistema funciona mediante un sensor infrarrojo pasivo que, al registrar un movimiento, dispara una ESP32-CAM para tomar una foto. A continuación, la imagen se envía a Google Drive y su FileID, FolderID y FileName se envían a Ubidots, donde las imágenes se pueden visualizar en un dashboard. Ubidots también genera las alertas que Leonardo recibe en su teléfono cada vez que se hace una foto, lo que facilita el seguimiento 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. M5Stack ESP32 Módulo de cámara placa de desarrollo (1)
  3. SparkFun FTDI basic breakout - 3.3V (1)
  4. Cables puente (1)

Software/herramientas en la nube utilizadas en el proyecto

  1. Una cuenta activa de Ubidots
  2. IDE Arduino
  3. Script de Google

1. Cablear el sensor de movimiento PIR a la ESP32-CAM

Con la ayuda de unos cables puente, conecta el sensor de movimiento PIR a la ESP32-CAM siguiendo el esquema que se muestra en la imagen inferior. Ten en cuenta que puedes cambiar el pinout dentro del código.

2. Programación del proyecto Google Script.

Para crear un nuevo proyecto de Google Script, sigue estos pasos:

  • Accede al sitio web de Google Apps Script.
  • Haz clic en el botón superior izquierdo "+ Nuevo proyecto" y crea un nuevo proyecto.
  • Copia el código que se encuentra en este repositorio y pégalo en tu proyecto Google Script.
  • Ponga el token de su cuenta Ubidots en la variable llamada "TOKEN". De esta manera, el sistema enviará el fileID, folderID, y fileName 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";

Puede cambiar la etiqueta de la variable y la etiqueta del dispositivo como desee. En dichos dispositivos y variables, almacenará el fileID, folderID y fileName de la imagen tomada por la ESP32-CAM.

  • Despliega tu código y cambia los permisos del script para que todo el mundo pueda verlo.
  • Copia el ID que aparece en "Deployment ID" una vez que publiques el script. Lo usaremos dentro de la ESP32-CAM.

3. Programación de su ESP32-CAM.

Hay muchos tutoriales en Internet sobre cómo programar la ESP32-CAM, por ejemplo, éste. Descarga el código correspondiente de este repositorio y ábrelo en tu IDE de Arduino.

Sin embargo, hay que hacer algunos cambios en el código para que funcione correctamente en su ESP32-CAM.

  • Introduce las credenciales de tu red inalámbrica en los campos SSID y Contraseña.

const char* ssid = "YOUR-SSID";
const char* password = "YOUR-PASSWORD";

  • Pega el ID de tu Google Script en la siguiente variable.
String myScript = "/macros/s/YOUR-URL-ID/exec"; //Reemplazar sólo "YOUR-URL-ID"

Por último, ejecuta todo el código en tu IDE Arduino y flashea tu ESP32-CAM.

4. Personalice su widget Ubidots

El widget HTML canvas 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 desplegable con algunos registros de las fotos que, si lo prefieres, puedes eliminar.

Ahora, vamos a crear nuestro propio widget utilizando estos fragmentos de código:

  • Vaya al menú desplegable "Datos" de Ubidots en la barra de navegación, luego a "Cuadros de mando" y, por último, seleccione el dashboard en el que va a trabajar.
  • Haz clic en el botón "+" de la parte superior derecha de dashboard.
  • Seleccione la opción "Lienzo HTML".
  • Copie los códigos HTML, CSS y JavaScript y péguelos en el editor de código del widget.
  • En el código JavaScript, ponga el token de su cuenta 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. Tienes que permitir el acceso a "cualquier persona con el enlace".

Nota importante: debes confirmar que las etiquetas de dispositivo y variable establecidas en el proyecto de Google Script coinciden con las etiquetas de dispositivo y variable establecidas en el código JavaScript.

5. Configurar una alerta

Los eventos de Ubidots te permiten activar notificaciones por correo electrónico, SMS, llamadas de voz e incluso webhook en función de los datos de tus sensores. En este caso, vamos a utilizar los eventos para recibir correos electrónicos con las imágenes capturadas por la ESP32-CAM. Sigue estos pasos.

  • Vaya al menú desplegable "Datos" de la barra de navegación y, a continuación, a "Eventos".
  • Haz clic en el botón "+" de la parte superior derecha y crea un nuevo evento.
  • Configura tu evento para que se active una vez que la variable reciba "1".
  • Tenga en cuenta que Ubidots le permite utilizar 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, utiliza esta notación:

Hola, el sistema ha detectado un extraño en: {{variable.last_value_timestamp}}Consulte la imagen en el siguiente enlace: https://drive.google.com/file/d/{{variable.ultimo_valor_contexto.fileID}}/ver?usp=compartir

En "acciones THEN" ponga un cero en la variable para reiniciar el disparo del evento.

Y así de fácil, puedes, como Leonardo, construir un sistema IoT sencillo pero eficaz que mejore la seguridad de tu hogar y aporte tranquilidad a tu vida.