Compartir
Portada de HORUS EYE
Proyecto diy · iaiot

HORUS EYE

Torreta DIY que sigue personas con visión artificial y apunta foco, láser y bocina.

2 feb 20265 minde lectura3vistas
Tipo
Torreta DIY
Detección
MobileNet SSD
Control
ESP32 + MQTT
Estado
Prototipo
año
2026

La idea

HORUS EYE es un experimento de seguridad perimetral que va más allá de una cámara que graba: una torreta que, cuando la cámara ve a alguien, le apunta con un foco de 30 W y un láser verde, y que puede hacer sonar una bocina de 120 dB. Va sobre un soporte de dos servos, la mueve un ESP32 y se maneja desde el móvil.

La vigilancia la hace una cámara IP que ofrece su vídeo por RTSP.

Portada de HORUS EYE con la torreta de foco, láser y bocina
Esquema a mano del sistema: cámara IP, router, servidor local con la red neuronal, ESP32, dos servos y foco
Esquema del sistema: la cámara manda la imagen al servidor local, la red neuronal localiza a la persona y el ESP32 mueve los servos y enciende el foco.
Circuito eléctrico dibujado a mano con fuente de 12 V, conversor a 5 V, ESP32, dos servos DS3115 y relé del foco
Circuito eléctrico: fuente de 12 V, conversor a 5 V para el ESP32 y los servos, y relé para el foco.

Cómo detecta y apunta

La detección corre en un ordenador, no en el microcontrolador. Un script de Python abre el flujo RTSP secundario de la cámara y pasa los fotogramas por una red MobileNet SSD preentrenada, con el módulo DNN de OpenCV. En cuanto aparece una persona con más de un 20 % de confianza, deja de detectar y arranca un tracker CSRT sobre su recuadro: seguir es mucho más barato que detectar en cada fotograma. Si el tracker falla cinco fotogramas seguidos, vuelve a buscar.

El centro del recuadro se traduce a ángulos con una regla lineal: el ancho de la imagen se reparte entre 60° y 120° de giro, y el alto igual para la inclinación. Es una correspondencia sin calibrar, que funciona mientras cámara y torreta miren a la misma escena. Los dos ángulos viajan como dos bytes por puerto serie.

Del banco de pruebas al ESP32

El primer prototipo movía dos microservos SG90 con un Arduino Uno: leía esos dos bytes, los limitaba a 0–180° y los escribía en los pines 9 y 10. Para la torreta real pasé a un ESP32 y a dos servos DS3115 de 15 kg, que aguantan el peso del foco. En el esquema eléctrico los servos van por PWM a los GPIO 25 y 26 y el relé del foco al GPIO 27; una fuente de 12 V alimenta el foco y un conversor DC-DC baja a 5 V para el ESP32 y los servos. El consumo está sumado a mano en el propio papel: 0,5 A del ESP32, 1 A por servo y 2,5 A del foco.

Entre medias hubo un paso intermedio: un joystick virtual de escritorio, en Python con Tkinter, que movía los servos del ESP32 por HTTP y limitaba los envíos a uno cada 100 ms.

La app de control

La torreta se maneja desde una app Flutter (en su repositorio se llama Osiris Sentinel) que habla MQTT con el ESP32. Tiene dos pestañas. En Control, una cruceta mueve los servos, un botón central los centra, la cabecera muestra los grados que publica cada servo y tres interruptores encienden el foco, el láser y la alarma de 120 dB. En Órdenes se programan posiciones: ángulo X e Y, qué actuadores se encienden y durante cuántos segundos; al ejecutar una orden, la app apunta, enciende y lo apaga todo al terminar.

Cada actuador tiene su propio tema MQTT y devuelve su estado por otro. Si la conexión con el broker se cae, la app reintenta cada cinco segundos.

Galería de la aplicación

Control manual: cruceta de los servos e interruptores de foco, láser y alarma.

Control manual: cruceta de los servos e interruptores de foco, láser y alarma.

Órdenes: posición X/Y, actuadores y duración de cada orden programada.

Órdenes: posición X/Y, actuadores y duración de cada orden programada.

Ventana de información con los datos del desarrollador.

Ventana de información con los datos del desarrollador.

Pantalla de arranque

Pantalla de arranque

Foco y láser encendidos (demo)

Foco y láser encendidos (demo)

Orden en ejecución (demo)

Orden en ejecución (demo)

Materiales

12 elementos
  • ESP32 como controlador central
  • Cámara IP con RTSP
  • 2 servos DS3115 de alto par (15 kg)
  • Foco LED 30W (de moto, 3600 lm)
  • Láser verde 12V
  • Bocina 120 dB
  • Fuente de alimentación 12V 10A
  • Conversor DC-DC 12V a 5V (5A)
  • 3 relés controlados por ESP32
  • Estructura metálica para servos
  • Cables y conectores
  • App Flutter de control por MQTT

Materiales necesarios

ESP32 (×1)

ESP32 (×1)

Foco LED 30W (×1)

Foco LED 30W (×1)

Láser verde 12V (×1)

Láser verde 12V (×1)

Bocina 120 dB (×1)

Bocina 120 dB (×1)

Fuente 12V 10A (×1)

Fuente 12V 10A (×1)

Conversor 12V → 5V (5A) (×1)

Conversor 12V → 5V (5A) (×1)

Relés para ESP32 (×3)

Relés para ESP32 (×3)

Estructura metálica + 2 servos 15 kg (×1)

Estructura metálica + 2 servos 15 kg (×1)

Cables y conectores (varios)

Cables y conectores (varios)

Montaje

  1. Montar la estructura metálica con los dos servos de 15 kg.
  2. Acoplar el foco LED, el láser y la bocina a la base móvil.
  3. Cablear el ESP32 con los relés, la fuente de 12 V y el conversor a 5 V.
  4. Activar el RTSP de la cámara y lanzar el script de detección en el ordenador.
  5. Levantar un broker MQTT en la red local para el ESP32 y la app.
  6. Mover la torreta y disparar los actuadores desde la app Flutter.

El prototipo

Banco de pruebas: ESP32, relés, fuente y el esquema en papel.

Banco de pruebas: ESP32, relés, fuente y el esquema en papel.

Fuente de alimentación de 12 V.

Fuente de alimentación de 12 V.

Conversor DC-DC de 12 V a 5 V.

Conversor DC-DC de 12 V a 5 V.

Placa de relés que conmuta los actuadores.

Placa de relés que conmuta los actuadores.

ESP32 con antena externa.

ESP32 con antena externa.

Consejos & seguridad

  • Asegura una fuente de alimentación estable para los servos y actuadores.
  • Calibra los ángulos de los servos para evitar bloqueos mecánicos.
  • Protege conexiones con carcasas si el sistema se instala en exterior.
  • Aísla bien los circuitos de 12V y 5V para evitar caídas de tensión.
  • Protege el broker MQTT con usuario y contraseña, y usa TLS si sale a Internet: el puerto 1883 viaja en claro.

Ojo con el láser

Un láser verde apuntado a los ojos puede dañar la vista, y un foco o una bocina orientados a la calle molestan a quien no tiene culpa. La disuasión tiene que quedarse dentro de tu propiedad.

Estado real

HORUS EYE es un prototipo, no un producto. Lo que existe: la torreta montada, la app que la mueve y enciende foco, láser y alarma por MQTT, y el seguimiento de personas. También probé la API de la propia cámara para leer y mover su pan/tilt y capturar fotogramas etiquetados con su posición; se quedó en pruebas.

El resto sigue en desarrollo. No detallo aquí qué hace sola y qué no.

Materiales / Compra

Tienda: Componentes comprados online (AliExpress y Amazon) y en tiendas de electrónica, elegidos por potencia y fiabilidad. Detección con el modelo MobileNet SSD preentrenado sobre OpenCV.

Agradecimientos

  • •Inspiración en la comunidad maker y proyectos de seguridad autónoma.

Aprendizajes

Detectar en cada fotograma es caro, así que el sistema detecta una vez y luego sigue con un tracker CSRT, volviendo a detectar solo tras cinco fallos seguidos. Y con un foco de 30 W y dos servos de 15 kg en la misma fuente, el presupuesto de corriente se hizo en papel antes de enchufar nada.