Sistema de seguridad multicapa para detección de intrusiones y protección de vitrinas – Grupo 04
Sistema empotrado de seguridad para la protección de una vitrina con un objeto en su interior.
Combina una barrera infrarroja láser, sensor de movimiento, sensor de peso y vigilancia por cámara web en tiempo real, permitiendo al usuario monitorizar la sala y tomar decisiones ante una intrusión.

Recreamos una vitrina de exposición realista, donde los objetos de valor (representados por una colonia) quedan protegidos por capas de seguridad activa y pasiva. Con la ESP32-CAM integrada, el propietario puede ver mediante conexión web lo que ocurre en la sala, recibir alertas y capturar una fotografía si detecta algo sospechoso.
Índice
- Introducción
- Funcionamiento
- Material usado y costes
- Diseño
- Implementación
- Construcción
- Problemas y soluciones encontradas
- Posibles mejoras
- Autores
- Demostración
Introducción
Para llevar a cabo este proyecto, nos inspiramos en el reciente robo al museo del louvre.
Esto nos llevó a desarrollar un sistema empotrado de protección ante intrusos con múltiples capas de detección: una barrera infrarroja láser que detecta el cruce del haz, un sensor de movimiento que cubre el perímetro de la vitrina, y un sensor de peso que detecta si el objeto protegido ha sido desplazado o retirado. Ante cualquiera de estos eventos, el sistema captura una foto y notifica al usuario, que en ese momento está visualizando la imagen en directo de la ESP32-CAM.
Inicialmente se planteó un sistema más simple basado únicamente en la barrera láser, pero al considerarlo insuficiente se incorporaron el sensor de movimiento y el sensor de peso, dotando al sistema de mayor robustez.
Funcionamiento
El funcionamiento del proyecto es el siguiente: el sistema permanece en estado de vigilancia activa de forma continua. Cualquiera de los tres sensores puede capturar una fotografía de forma independiente, aunque la detección simultánea de varios de ellos confirma con mayor certeza una intrusión real.
Se diferencian los siguientes casos de uso:
- Si la barrera infrarroja es interrumpida (alguien cruza el haz láser frente a la vitrina), captura una foto y la envía al usuario que está visualizando la cámara web.
- Si el sensor de movimiento detecta presencia en el área protegida, ocurre lo mismo: captura de foto y notificación al usuario.
- Si el sensor de peso detecta que el objeto protegido ha sido retirado o desplazado de su base, el sistema también captura una foto, ya que indica manipulación directa del objeto.
- En todos los casos, el usuario que recibe la notificación puede ver en tiempo real lo que capta la ESP32-CAM.
Material usado y costes
A continuación se detallan los materiales utilizados en el proyecto y su coste aproximado:
| Material | Coste |
|---|---|
| ESP32-CAM (×1) | 3,46 € |
| Laser | 1,21 |
| Sensor de ultrasonido | Proporcionado en el kit |
| Sensor de peso | Proporcionado en el kit |
| Sensor LDR | Proporcionado en el kit |
| Resistencias y cables | Proporcionado en el kit |
| Placa Arduino / ESP32 | 3,75 |
| Cartón (caja exterior + estructura interna) | 0 € |
| Plástico metacrilato (paredes de la vitrina) | 2,85 € |
| Espejitos (decoración interior) | 1,29€ |
| Poliespan (base del objeto protegido) | 0,94 € |
| Fieltro rojo (tapizado interior) | 1,81 € |
| Palillos (estructura de sujeción) | 0 € |
| Lana roja (decoración / delimitación) | 2,26 € |
| Pintura (acabado exterior) | 3 € aprox |
| Objeto a proteger (meteorito / colonia) | 3 € ( no cuenta) |
| Coste total | ~16,82 € |
Los materiales con coste 0 € fueron obtenidos de forma gratuita. Los del kit fueron proporcionados por los docentes al inicio del curso, y el resto son materiales de uso doméstico o reutilizados.
Implementación (CÓDIGO)
const int pinSensor = 12;
int valorPresion = 0;
const int trigPin = 26;
const int echoPin = 25;
long duration;
float distance;
const int pinLdr = 14;
int valorLdr = 0;
bool alertaPeso = false;
bool estadoAnteriorPeso = false;
bool alertaLaser = false;
bool estadoAnteriorLaser = false;
bool alertaUltrasonidoActiva = false; // El estado de la alerta (ON/OFF)
bool objetoPresente = false; // Si hay algo a < 8cm ahora mismo
bool objetoEstabaPresente = false; // Si había algo a < 8cm en el ciclo anterior
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW);
}
void loop() {
valorPresion = analogRead(pinSensor);
valorLdr = analogRead(pinLdr);
distance = estimateDistance();
alertaPeso = (valorPresion < 10);
if (alertaPeso != estadoAnteriorPeso) {
if (alertaPeso) {
Serial.println(«ALERTA3»);
} else {
Serial.println(«NORMAL3»);
}
estadoAnteriorPeso = alertaPeso;
}
objetoPresente = (distance < 8 && distance > 0);
if (objetoEstabaPresente == true && objetoPresente == false) {
alertaUltrasonidoActiva = !alertaUltrasonidoActiva;
if (alertaUltrasonidoActiva) {
Serial.println("ALERTA1"); // Sistema armado / Alerta activada
} else {
Serial.println("NORMAL1"); // Sistema desarmado / Alerta desactivada
}
}
objetoEstabaPresente = objetoPresente;
alertaLaser = (valorLdr < 690);
if (alertaLaser != estadoAnteriorLaser) {
if (alertaLaser) {
Serial.println(«ALERTA2»);
} else {
Serial.println(«NORMAL2»);
}
estadoAnteriorLaser = alertaLaser;
}
delay(100);
}
float estimateDistance()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.0343 / 2;
return distance;
}
Construcción y diseño
La construcción física del prototipo se llevó a cabo en los siguientes pasos:
- Se plantearon varios bocetos hasta definir la forma final de la vitrina, teniendo en cuenta el tamaño de los componentes y la disposición de los sensores.
- Se aprovechó una caja de cartón resistente se cortó modificó y pintó. Los refuerzos necesarios se hicieron con cinta adhesiva y pegamento.
- Se pintó la caja con pintura.
- Se abrieron dos huecos a la caja de carton, uno para poder ver dentro, otro para poder manipular los componentes de la manera más cómoda posible.
- Se tapizó el interior con fieltro rojo para recrear el aspecto de una moqueta, y se colocaron los espejitos en las paredes interiores para añadir poder rebotar el laser.
- Se construyó la base del objeto con poliespan, donde se apoya directamente sobre la celda de carga, permitiendo al sensor detectar cualquier variación de peso.
- Se hicieron las aperturas necesarias en la carcasa para los sensores.
- Se añadieron acabados decorativos con lana roja para darle un aspecto más trabajado.
- El objeto a proteger: colonia de la reina, se colocó sobre la base de poliespan, dentro de la vitrina terminada.
Así era en nuestra cabeza el proyecto antes de construirlo:

Problemas y soluciones encontradas
Uno de los principales retos fue la calibración del sensor de peso. Al tratarse de una celda de carga, cualquier vibración podía provocar lecturas inestables, generando falsas alarmas. Se solucionó cambiando a una resistencia de muchos más ohm y buscando un objeto que pesase bastante.
Otro problema fue la latencia de la ESP32-CAM. La imagen parecía que iba retrasada, lo que dificultaba la vigilancia en tiempo real. Se mejoró reduciendo el delay (sleep).
La alineación del haz infrarrojo también resultó más complicada de lo esperado. Se resolvió añadiendo guías de palillos para fijar la posición del emisor y el receptor con mayor precisión.
Posibles mejoras
Consideramos que este proyecto podría mejorarse en los siguientes aspectos:
- Optimizar el uso y orden de los cables así como adaptar el largo de los mismos.
- Implementar un sistema de código PIN o autenticación para acceder al servidor que reproduce la imagen.
- Mejorar la carcasa con materiales más rígidos (madera, impresión 3D) para una mayor durabilidad y un acabado más profesional.
- Añadir un registro de eventos con marca de tiempo en la nube.
- Incluir iluminación para mejorar la calidad de la imagen captada por la cámara en condiciones de poca luz.
Demostración
Autores
Este proyecto ha sido realizado por:
- Cristian Sebastian Aldea
- Alejandro Arias Souto
- Cristina Rosales Gallego
- Raúl Pérez del Prado