Ring Door: Sistema de Seguridad Inteligente con ESP32 y Arduino
👥 Integrantes del equipo
📌 ¿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:
- 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 - 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. - 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. - 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. - 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. - 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. - 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














