Ring Door: Sistema de Seguridad Inteligente con ESP32 y Arduino

👥 Integrantes del equipo

🔹 Joaquín Fuentes Lopéz
🔹 Sergio Barrios Paz
🔹 Jorge Sánchez Aguilar

📌 ¿Quieres más detalles sobre el proyecto?
Puedes consultar la memoria completa y acceder al código fuente documentado en nuestro repositorio de GitHub.

En la memoria encontrarás todos los detalles técnicos, explicaciones y justificaciones del desarrollo.
El repositorio contiene el código actualizado, instrucciones de uso y documentación adicional.


Resumen del proyecto

Ring Door se trata de una puerta que dispone de distintos aros de seguridad con protección tanto software como hardware. Está pensado para mejorar la seguridad en el entorno de una puerta de entrada, combinando sensores físicos, control de accesos y notificaciones automáticas.

El sistema cuenta con varias capas de seguridad:

  • Detección de movimiento mediante sensores.
  • Autenticación por huella dactilar.
  • Envío de alertas en caso de intentos de acceso fallidos.

Además, hemos desarrollado una arquitectura compuesta por tres elementos principales:

  • Un conjunto de dispositivos físicos (ESP32-CAM y Arduino) que interactúan con ambos servicios para registrar y comunicar los eventos.
  • Un servidor web local, donde se almacenan los registros y las imágenes capturadas por el sistema.
  • Un bot de Telegram, que notifica en tiempo real si se detecta algún intento sospechoso o fallido de acceso.

Problemas/Desafíos y sus soluciones

Durante el desarrollo de Ring Door, nos encontramos con diversos problemas que requirieron soluciones técnicas y de diseño. A continuación, detallamos los principales desafíos a los que nos enfrentamos y cómo los resolvimos:

  1. Calidad de los materiales

    Algunos componentes, como ciertos cables o módulos, presentaban una calidad deficiente que dificultaba las conexiones o provocaba fallos intermitentes. Para solventarlo, optamos por soldar aquellos módulos que nos causaban problemas como el lector NFC. Para soldar los módulos tenemos que hacerlo con la mayor precisión posible ya que puede hacer que el modulo deje de funcionar

  2. Imprecisión del servomotor

    El servomotor encargado del cierre y apertura de la puerta no realizaba un giro exacto de 90 grados, lo cual afectaba el correcto funcionamiento del sistema. Para resolver este problema tuvimos que realizar ajustes en el codigo a base de ensayo y error hasta encontrar el porcentaje justo que le teníamos que dar para que hiciese el giro correctamente. Además tenéis que tener en cuenta que si la maqueta se encuentra en inclinada afectará a este giro, haciendo que posiblemente la puerta no realice el giro de manera adecuada.

  3. Mal montaje de los componentes

    Inicialmente, algunas conexiones entre módulos no eran del todo claras, lo que ocasionaba errores de comunicación o fallos eléctricos. Como sugerencia os recomendamos que utilicéis colores específicos para determinadas conexiones, por ejemplo el color rojo para todo lo relacionado con VCC o el negro para GND.

  4. Montaje de la puerta de la maqueta

    Diseñar y montar una puerta funcional a escala resultó más complejo de lo previsto, especialmente para lograr que se integrara bien con el servomotor y que realice el giro de manera correcta. Como solución a este problema tenéis que tener en cuenta que el elemento que gira del servo motor tiene que estar en el eje de giro de la puerta, es decir, donde deberían de estar las bisagras.

  5. Problemas con la comunicación Bluetooth

    Antes de tener el área de seguridad con sensor de movimiento (PIR) nuestra idea era que este área fuese bluetooth de esta forma si una persona no autorizada entra en el área sonaría la alarma directamente. Cuando nos pusimos a implementar esta funcionalidad empezaron a surgir varios problemas. El primero es que existe dos tipos de Bluetooth:

    Bluetooth clásico: El más antiguo y usado para conexiones más estables que permite una transferencia de datos más alta.
    Bluetooth LE (low energy): Es más actual y menos costoso, la mayoría de nuestros móviles lo tienen y funciona escaneando cada cierto tiempo el área bluetooth buscando dispositivos que estén mandando señales.

    La ESP32 permite tanto Bluetooth clásico como LE y los que buscábamos era que la propia ESP32 escaneara el área Bluetooth buscando MACs autorizadas, pero los móviles actuales por seguridad cambiar la MAC cada cierto tiempo por lo tanto era inviable que fuese persistente. La siguiente opción era tratar a la ESP32 como si fuese un teclado o unos cascos, de esta forma si que se conectaba pero limita las funciones de la ESP32, tras estos dos problemas decidimos probar con el clásico, conseguimos conectarlo aunque solo nos permitía tener un solo dispositivo conectado, pero ya teníamos un posible solución a explorar.

  6. RAM ESP32

    Una vez que ya teníamos una solución para el Bluetooth, apareció uno nuevo, y es que la ESP32 no tenia suficiente RAM para realizar todas las funcionalidades ya que las librerías eran bastante pesadas. Nosotros por temas de tiempo y imposibilidad para comprar algún dispositivo para tener más RAM decidimos cambiar este área bluetooth por el área con sensor de movimiento. De todos modos se solucionaría aumentando la RAM de la ESP32.

  7. Estabilidad de la comunicación entre dispositivos

    El último problema que tuvimos fue la comunicación entre el Servidor Web y la ESP32 y la ESP32 con la Arduino, es decir la ESP32 haría de puente entre ambos. El primer problema que tuvimos es que el traspaso de información del Servidor a la ESP32 era el correcto pero de la ESP32 al Arduino no, esto es causado porque la ESP32 trabaja a 3.3V y la Arduino a 5V por lo que tenemos que aumentarlo a 5V.

    Además apareció otro problema, la ESP32 no se conectaba con el servidor, la solución consistía en tener todo en la misma red wifi, además, es muy importante que la red wifi sea una de confianza, esta opción se cambia en el configurador de la red. Lo más cómodo y lo que os recomendamos es que creéis vuestra propia red wifi con los datos de vuestro móvil y conectarlo todo ahí configurando la red desde el ordenador donde este conectado el Servidor Web.

Demostración en video

Ahora os mostraremos un video del funcionamiento.

Componentes utilizados

  • ESP32-CAM
  • Arduino UNO
  • Detector de huellas
  • Sensor PIR
  • Servo Motor SG90
  • Lector NFC
  • Pantalla LCD

Como se ha dicho anteriormente esta lista contiene el conjunto de dispositivos físicos usados en el proyecto, pero además de estos hemos creado un servidor local para hacer el sistema escalable y modular, el enlace se encuentra al inicio de este articulo con instrucciones para clonarlo y usarlo. En cuanto al bot de Telegram, se trata de una librería del Arduino IDE, en la memoria técnica se entra más en detalle.

Galería de imágenes


También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *