Arquitectura Ciberfísica

Esta es la sección más importante del proyecto. La arquitectura ciberfísica define cómo cada componente físico y digital se comunica, qué protocolo utiliza y cuál es su rol dentro del sistema integrado.


Visión general

El sistema Planchado Express es un sistema ciberfísico (CPS) compuesto por cinco capas de comunicación que operan de forma simultánea y coordinada:

Capa Componentes Protocolo
Nube / Internet Firebase, Render (Flask), GitHub Pages HTTPS / REST / Firebase SDK
Coordinación local Raspberry Pi 3 (rutina_maestra.py) Python / HTTP / Modbus / Serial
HMI Raspberry Pi 3 + pantalla táctil + cámara QR HTTPS → Firebase
Control industrial PLC Allen Bradley Micro850 Modbus TCP
Robótica y periféricos UR3, ESP32, sensores, motor, pistón Modbus TCP, Serial USB

Diagrama de arquitectura

alt text

Protocolos de comunicación

Modbus TCP — PLC Micro850

El PLC Allen Bradley Micro850 se comunica con la Raspberry Pi mediante Modbus TCP, utilizando la librería pymodbus en Python.

PLC_IP      = "192.168.3.151"
PLC_PORT    = 502
PLC_UNIT_ID = 1

# Coils de salida (control)
COIL_CMD_START    = 0   # 000001 — Arrancar motor
COIL_CMD_STOP     = 1   # 000002 — Parar motor
COIL_CMD_DIR_FWD  = 2   # 000003 — Dirección adelante
SALIDA_AUX_PLANCHA = 6  # 000007 — Activar plancha

# Entradas digitales (lectura de sensores)
SENSOR1_ADDRESS = 3     # 000004 — Barrera IR
SENSOR2_ADDRESS = 4     # 000005 — Inductivo UR3
SENSOR3_ADDRESS = 5     # 000006 — Inductivo salida

Modbus TCP — Robot UR3

El UR3 también utiliza Modbus TCP para comunicarse con la Raspberry Pi. Adicionalmente, los scripts URScript se envían directamente al robot mediante un socket TCP al puerto 30002.

ROBOT_IP   = "192.168.3.71"
ROBOT_PORT = 30002

# Señales Modbus del UR3 (definidas dentro del script URScript)
modbus_add_signal("192.168.3.71", 255, 129, 3, "RX74", False)
modbus_add_signal("192.168.3.133", 255, 130, 3, "TX71", False)

HTTP REST — Raspberry Pi cámara

La Raspberry Pi orquestadora solicita la fotografía a la Raspberry Pi de cámara mediante una API Flask local:

RASPBERRY_IP   = "192.168.3.162"
RASPBERRY_PORT = 5000
BASE_RPI       = f"http://{RASPBERRY_IP}:{RASPBERRY_PORT}"

Serial USB — ESP32

El ESP32 recibe comandos de la Raspberry Pi mediante comunicación serial para controlar la torreta de señalización y el pistón eléctrico:

ESP32_SERIAL_PORT = "COM3"
ESP32_BAUDRATE    = 115200
ESP32_TIMEOUT     = 1

HTTPS/REST — Backend en Render (nube)

La rutina maestra se comunica con el backend Flask desplegado en Render para sincronizar el estado con Firebase y subir las fotografías de evidencia:

RENDER_BASE_URL = "https://docker-planchaduria.onrender.com"

Tabla de IPs y puertos del sistema

Componente IP / Puerto Protocolo Rol
PLC Micro850 192.168.3.151:502 Modbus TCP Control de campo
UR3 Robot 192.168.3.71:30002 Modbus TCP + Socket Planchado
Raspberry Pi cámara 192.168.3.162:5000 HTTP REST Captura IA
Backend Render docker-planchaduria.onrender.com HTTPS REST API nube
Firebase Firebase Admin SDK HTTPS DB + Auth + Storage
ESP32 COM3 / 115200 baud Serial USB Pistón + Torreta

Rol de cada componente en el CPS

Raspberry Pi 3 — Orquestador central

Es el cerebro del sistema. Ejecuta rutina_maestra.py, que coordina todos los demás componentes. Hace polling a Firebase para detectar pedidos, controla el PLC por Modbus, envía scripts al UR3, comanda el ESP32 por serial, solicita fotos a la Raspberry cámara y ejecuta el modelo de IA localmente.

PLC Allen Bradley Micro850 — Control de campo

Gestiona los actuadores físicos y los sensores del proceso: enciende/apaga el motor de la banda, lee el estado de los tres sensores (S1, S2, S3) y activa la plancha eléctrica (salida 000007). Es la interfaz entre el mundo digital y el mundo físico de la línea de producción.

UR3 — Robot colaborativo de planchado

Ejecuta las trayectorias de planchado sobre la prenda, con 7 waypoints calibrados por tipo de prenda. Recibe la instrucción de inicio vía señal Modbus y el script URScript por socket TCP. Es el actuador de mayor valor en el sistema.

ESP32 — Control periférico

Controla la torreta de señalización LED (indica el estado del sistema visualmente en planta) y el pistón eléctrico que empuja la prenda planchada hacia el gancho de salida. Se comunica con la Raspberry Pi por serial USB.

HMI — Interfaz local de operación

Panel táctil con Raspberry Pi 3 que muestra el estado del pedido en tiempo real (consultando Firebase) y lee el código QR del cliente mediante cámara integrada para validar el inicio del proceso.

Firebase — Capa de datos y sincronización

Base de datos y plataforma de autenticación en la nube. Almacena pedidos (Firestore), estado del proceso en tiempo real (Realtime Database), fotografías de evidencia (Storage) y gestiona la autenticación de usuarios (Auth).

Interfaz web — Punto de contacto con el cliente

Aplicación web en GitHub Pages que permite al cliente registrar su prenda, obtener el QR, consultar el estado del pedido y ver el historial. Se comunica directamente con Firebase mediante el SDK de JavaScript.


Siguiente sección

Diseño Mecánico