Descripción
El proyecto de Sistema de Control de Acceso IoT busca resolver la problemática de seguridad y gestión de accesos en hogares y espacios comerciales, reemplazando las vulnerables y poco prácticas llaves físicas con un sistema seguro y eficiente basado en tarjetas NFC y aplicación javaFX. Este sistema permite una autenticación avanzada, monitoreo en tiempo real, gestión remota de accesos y notificaciones inmediatas, proporcionando una solución moderna que mejora significativamente la seguridad, conveniencia y control sobre quién puede ingresar a las instalaciones, reduciendo riesgos y aumentando la eficiencia en la gestión de accesos.
Análisis
El problema de seguridad en accesos físicos involucra varios actores y elementos:
- Usuarios: Personas autorizadas a acceder a las instalaciones.
- Administrador: Persona que gestiona el sistema y configura los permisos de acceso.
- Sistema de Control de Acceso: Compuesto por la Raspberry Pi Pico W, cerraduras electrónicas, tarjetas NFC y dispositivos móviles.
- Aplicación javaFX: Interfaz para la gestión y monitoreo de accesos.
El sistema interactúa con el medio externo mediante la autenticación de usuarios, la gestión de accesos y la comunicación segura con dispositivos móviles y servidores.
Seguridad de Accesos Físicos:
- Vulnerabilidad de Llaves Físicas: Las llaves pueden ser fácilmente perdidas, robadas o duplicadas, lo que representa un riesgo significativo para la seguridad.
- Falta de Control en Tiempo Real: Con las llaves físicas, no hay forma de monitorear en tiempo real quién está entrando o saliendo del hogar o espacio comercial.
- Gestión Ineficiente de Permisos: Cambiar las cerraduras y distribuir nuevas llaves es costoso y poco práctico, especialmente en situaciones donde se necesita ajustar los niveles de acceso frecuentemente.
Conveniencia y Flexibilidad:
- Acceso Remoto Limitado: Las llaves físicas no permiten gestionar el acceso de manera remota, lo que puede ser inconveniente en casos de emergencia o cuando se necesita permitir el acceso temporal a visitantes o personal de mantenimiento.
- Integración con Otros Sistemas: Las soluciones tradicionales no se integran bien con otros sistemas de seguridad y automatización del hogar.
Solución:
Implementación de un Sistema de Control de Acceso IoT con OOP:
Uso de Tarjetas NFC y Aplicaciones Móviles:
- Seguridad Mejorada: Las tarjetas NFC y aplicaciones móviles proporcionan un método de autenticación más seguro y difícil de duplicar.
- Monitoreo en Tiempo Real: El sistema permite registrar y monitorear en tiempo real todos los intentos de acceso, proporcionando un historial detallado de entradas y salidas.
Diseño Modular y Escalable mediante OOP:
- Estructura de Software Robusta: La Programación Orientada a Objetos permite diseñar una arquitectura modular, donde componentes como usuarios, permisos y dispositivos se representan como clases.
- Mantenibilidad y Extensibilidad: Utilizando principios de encapsulación, herencia y polimorfismo, se facilita la actualización y ampliación del sistema para incluir nuevas funcionalidades o dispositivos.
Gestión y Control Remoto:
- Flexibilidad en la Gestión de Accesos: La aplicación móvil permite otorgar y revocar permisos de acceso de manera remota y en tiempo real, aumentando la flexibilidad y conveniencia.
- Desactivación Inmediata: En caso de pérdida o robo de una tarjeta NFC, esta puede ser desactivada inmediatamente sin necesidad de cambiar cerraduras físicas.
Integración con IoT:
- Automatización y Sinergia: La integración con dispositivos IoT como la Raspberry Pi Pico W permite coordinar el sistema de control de acceso con otros sistemas de seguridad y automatización del hogar, como cámaras de vigilancia, alarmas y luces automáticas, creando un entorno más seguro y eficiente.
Pros:
- Seguridad Mejorada: Utilización de tarjetas NFC y métodos de autenticación avanzados para reducir riesgos de acceso no autorizado.
- Flexibilidad y Conveniencia: Gestión remota de accesos y permisos desde aplicaciones móviles, eliminando la necesidad de llaves físicas y facilitando la desactivación inmediata en caso de pérdida.
- Monitoreo en Tiempo Real: Registro detallado de eventos y capacidad de monitoreo continuo de accesos desde cualquier ubicación.
- Integración con IoT: Posibilidad de integración con dispositivos IoT para automatización y seguridad adicionales.
Contras:
- Costo Inicial: Implementación inicial puede requerir una inversión significativa en hardware y desarrollo de software.
- Dependencia de Tecnología: Vulnerabilidad potencial a fallas de red o problemas técnicos que podrían afectar la disponibilidad del sistema.
- Curva de Aprendizaje: Necesidad de capacitación para usuarios y administradores sobre el uso y mantenimiento del sistema.
Definición de Requerimientos
Casos de Uso
Primer caso de uso: Registrar Usuario
- Nombre: Registrar Usuario
- Propósito: Permitir al administrador agregar nuevos usuarios al sistema y asignarles permisos de acceso.
- Actores: Administrador
-
Pre-condiciones:
- El administrador debe estar autenticado en el sistema.
- El sistema debe estar en funcionamiento.
- Evento: El administrador decide agregar un nuevo usuario.
-
Curso normal de eventos:
Curso normal de eventos Paso Descripción 1 El administrador selecciona la opción de "Registrar Usuario" en la aplicación. 2 El sistema muestra un formulario para ingresar los datos del nuevo usuario (nombre, tarjeta NFC, permisos). 3 El administrador completa y envía el formulario. 4 El sistema valida los datos ingresados. 5 El sistema guarda la información del nuevo usuario en la base de datos. 6 El sistema confirma el registro exitoso del nuevo usuario. -
Curso alternativo de eventos:
Curso alternativo de eventos Paso Descripción 1 Si los datos ingresados no son válidos, el sistema muestra un mensaje de error y solicita correcciones. 2 Si el sistema no puede guardar la información debido a un problema técnico, se muestra un mensaje de error y se registra el fallo para su revisión. -
Requerimientos no funcionales:
- El formulario debe ser intuitivo y fácil de usar.
- La validación de datos debe ser rápida (menos de 2 segundos).
- El sistema debe asegurar la integridad de los datos guardados.
Segundo caso de uso: Autenticación y Acceso
- Nombre: Autenticar y Permitir Acceso
- Propósito: Verificar la identidad del usuario y permitirle el acceso a las áreas autorizadas.
- Actores: Administrador y usuario
-
Pre-condiciones:
- El usuario debe tener una tarjeta NFC registrada en el sistema.
- La cerradura electrónica (luces led para simular la cerradura) y la Raspberry Pi Pico W deben estar operativas.
- Evento: El usuario intenta acceder a una área utilizando su tarjeta NFC.
-
Curso normal de eventos:
Curso normal de eventos Paso Descripción 1 El usuario presenta su tarjeta NFC al lector. 2 El sistema lee los datos de la tarjeta NFC. 3 El sistema verifica la validez de la tarjeta NFC y los permisos del usuario. 4 Si la verificación es exitosa, el sistema envía una señal para abrir la cerradura electrónica. 5 El usuario recibe acceso al área autorizada. -
Curso alternativo de eventos:
Curso alternativo de eventos Paso Descripción 1 Si la tarjeta NFC no es válida, el sistema muestra un mensaje de acceso denegado y registra el intento fallido. 2 Si la comunicación con la cerradura electrónica falla, el sistema notifica al usuario y al administrador del problema. -
Requerimientos no funcionales:
- La verificación de la tarjeta NFC debe ser rápida (menos de 1 segundo).
- El sistema debe asegurar la privacidad y seguridad de los datos de autenticación.
Tercer caso de uso: Monitoreo en Tiempo Real
- Nombre: Monitorear Accesos en Tiempo Real
- Propósito: Permitir al administrador monitorear los intentos de acceso en tiempo real y recibir notificaciones de eventos.
- Actores: Administrador
-
Pre-condiciones:
- El administrador debe estar autenticado en el sistema.
- El sistema debe estar conectado a internet para enviar y recibir notificaciones.
- Evento: Se produce un intento de acceso al sistema.
-
Curso normal de eventos:
Curso normal de eventos Paso Descripción 1 Se produce un intento de acceso (exitoso o fallido). 2 El sistema registra el intento de acceso y su resultado. 3 El sistema envía una notificación al administrador con los detalles del intento de acceso. 4 El administrador recibe y revisa la notificación en tiempo real. 5 El administrador puede tomar acciones si es necesario (por ejemplo, bloquear un usuario). -
Curso alternativo de eventos:
Curso alternativo de eventos Paso Descripción 1 Si el envío de la notificación falla, el sistema intenta reenviar la notificación y registra el fallo. 2 Si el administrador no puede acceder a la notificación, el sistema guarda los detalles para una revisión posterior. -
Requerimientos no funcionales:
- Las notificaciones deben ser enviadas y recibidas en tiempo real (menos de 1 segundo de retraso).
- El sistema debe ser capaz de manejar múltiples intentos de acceso simultáneos.
- La interfaz de notificaciones debe ser clara y accesible desde dispositivos móviles y web.
Diseño
Diagrama de Clases UML
Arquitectura del proyecto
Dificultades
Integración de modulo RFID: Se presento un problema
la intentar integrar el modulo RFID con la Raspberry Pi Pico W, no se
logró incorporar el modulo RFID al sistema debido a problemas de
compatibilidad y falta de tiempo. Por lo que se opto por hacer uso de
un emulador de tarjetas NFC para simular el acceso. iterativas.
Código del Proyecto
El proyecto puede ser descargado en el siguiente link
Nota: El archivo comprimido incluye el código fuente, makefile, readme y otros archivos necesarios para compilar y ejecutar el proyecto. No incluye códigos fuentes externos ni archivos generados por el IDE. Las dependencias externas y cómo obtenerlas se detallan en el archivo readme.