--- title: HBOX V5 (V5.5 / V5.6) — Prueba de banco de Ethernet y puertos serie (RS-485 / RS-232) tags: [project-drogheda, hardware, hbox, v5, v5.6, ethernet, w5500, rs485, rs232, sc16is752, testing, procedimiento] project: Project Drogheda author: Helgen Technologies date: 2026-09-29 version: 1.0 status: ACTIVO — obligatoria en al menos una V5.5 ANTES de pedir la V5.6; después, en toda unidad con RJ45 o clemas serie en el panel audience: técnicos de banco --- # HBOX V5 — Prueba de banco: Ethernet y puertos serie **Objetivo:** demostrar en hardware real que el W5500 (Ethernet) y el SC16IS752 con sus transceptores (RS-485 en P15, RS-232 en P16) funcionan. Hasta el 28-sep **Ethernet nunca se había ejercitado en una tarjeta real**; la V5.6 copia ese bloque tal cual, así que esta prueba en una V5.5 es condición para ordenar la V5.6. **Duración:** Ethernet 15 min · serie 15 min. **Registro:** [**▶ acta Ethernet y puertos serie**](../formularios/ethernet-serie.html). !!! danger "Seguridad eléctrica — las tres reglas" 1. **Nunca probar Ethernet con la unidad solo en batería ni solo por USB.** El W5500 se alimenta de `3V3_ETH`, que cuelga del 5 V del sistema: sin 5 V el chip está sin alimentar y el firmware lo deja en reset. En batería el firmware tampoco lo enciende (no valen sus ~130 mA). 2. **5 V del sistema ≥ 5.2 V** durante la prueba (SD-15B ajustado a ~5.3 V o fuente de banco a 5.3 V en P2). Con menos, la ráfaga LTE del módem lleva el riel al PFI 4.60 V del LTC4040 y la tarjeta se reinicia a media prueba. 3. **Sin batería si se usa fuente de banco en P2** sin 24 V (no hay cargador que gobernar, pero un paquete Li-ion sobre una fuente mal ajustada no se perdona). Lo normal: 24 V al GX16 y el SD-15B interno. --- ## 0. Material | Cant. | Ítem | |---|---| | 1 | Unidad V5 ensamblada (tarjeta + simpleRTK2B + módem + antenas) o tarjeta V5 sola + simpleRTK2B (para ver NMEA) | | 1 | Fuente 24 V al GX16 (o fuente 5.3 V / 3 A en P2) | | 1 | Laptop con terminal serie (115200) grabando a archivo, **y** con `nc` (macOS/Linux) o `ncat` (Windows, Nmap) | | 1 | Binario de banco **`hbox-v5-bringup_0.6.0-eth.bin`** (lo compila ingeniería con `-DENABLE_ETH=1`; SHA-256 en su entrega) | | 1 | Cable Ethernet **directo** (cat 5e o mejor), 1–3 m; el W5500 hace Auto-MDIX, no hace falta cruzado | | 1 | Adaptador **USB ↔ RS-485** (con terminales A/B o D+/D−) | | 1 | Adaptador **USB ↔ RS-232** (DB9 macho, chip FTDI/Prolific) + 3 cables con puntera para la clema | | 1 | Multímetro | | — | Destornillador plano 2.5 mm para las clemas Phoenix MC 1,5 | --- ## A. Prueba de Ethernet (build `0.6.0-eth`) ### A1. Preparar la laptop (una vez) 1. Adaptador Ethernet de la laptop en **IP manual 192.168.7.1**, máscara **255.255.255.0**, sin gateway. (Si en vez de cable directo se usa un switch con DHCP, la unidad tomará la IP del DHCP; entonces la laptop debe estar en esa red y la unidad seguirá buscando el servidor en 192.168.7.1 — por eso el cable directo es lo más simple.) 2. Firewall de la laptop: permitir entradas al puerto **5010/TCP** (o desactivarlo durante la prueba). 3. Abrir un terminal y dejar escuchando: ```bash nc -lk 5010 # macOS / Linux ncat -lk 5010 # Windows (Nmap) ``` ### A2. Flashear el build de banco 1. DFU en **J11** (mantener SW2, pulsar y soltar SW1, soltar SW2) — igual que el [procedimiento de flasheo §5](v5-prueba-y-flasheo.md). Solo USB, sin 24 V. 2. `dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0-eth.bin` (o STM32CubeProgrammer). 3. Terminal serie en J11: la primera línea debe decir **`hbox-v5-bringup 0.6.0-eth`**. La ayuda (`h`) debe listar la tecla `E=Ethernet on/off`. !!! warning "Al terminar, regresar la unidad a 0.6.0" El build `-eth` es de banco. Antes de embarcar se vuelve a flashear **`hbox-v5-bringup_0.6.0.bin`** (campo) y se anota en el acta de reflasheo. ### A3. Secuencia de prueba 1. Cable Ethernet **entre J10 y la laptop**. Aún sin 24 V: los LEDs de J10 deben estar **apagados** (W5500 sin alimentar por USB — correcto). 2. Energizar **24 V + ignición** (P11 en ON). En consola, en los primeros ~15 s: | Paso | Línea esperada en consola | Qué significa | |---|---|---| | a | `>>> BOARD OK` · `EVT … STACK ON reason=auto` | tarjeta y etapa bien | | b | `EVT ETH W5500 OK en SPI2 (W5500) mac=02:48:42:xx:xx:xx ip_estatica=192.168.7.2 — esperando cable` | **el chip responde** (`$PHEV … ETH_HW,ok`) | | c | LED de **enlace** de J10 encendido; el de **actividad** parpadea | PHY con enlace | | d | `EVT ETH sin DHCP en 4 s -> IP estatica` (cable directo) **o** `ETH enlace ARRIBA ip= (DHCP)` (switch) | dirección obtenida | | e | `EVT ETH enlace ARRIBA ip=192.168.7.2 (estatica) gw=… -> servidor 192.168.7.1:5010` | listo para conectar | | f | `EVT ETH conectado a 192.168.7.1:5010 (n=1): NMEA + $PHLG + $PHEV en espejo` | **socket abierto** | 3. En la ventana de `nc` debe aparecer **primero** una línea de identidad y luego el flujo: ``` $PHID,,0.6.0-eth,EinarBoard v5 (HBOX v5),02:48:42:xx:xx:xx,*CS $PHLG,0.6.0-eth,RUN,… $GNGGA,… $GNRMC,… ``` (`$PHID` se repite cada 5 min. Con la etapa apagada o sin simpleRTK2B llegan solo `$PHLG`/`$PHEV`.) 4. Teclear **`s`**: `STAT … eth=CONECTADO ip=192.168.7.2 lineas=N bytes=… drop=0 conn=1`. `lineas` debe subir; `drop` debe quedarse en 0. 5. **Prueba de cable:** desconectar el RJ45 10 s → `EVT ETH cable desconectado — esperando enlace`; reconectar → vuelve a `enlace ARRIBA` y `conectado (n=2)` en < 10 s. 6. **Prueba de servidor:** cerrar `nc` (Ctrl-C) → `EVT ETH servidor desconectado … reintento en 5 s`; volver a lanzar `nc -lk 5010` → reconecta solo. 7. **Tecla `E`:** `E` → `ETH OFF (operador)`, LEDs de J10 apagados; `E` otra vez → toda la secuencia b–f de nuevo. 8. **Sin 5 V:** quitar los 24 V (con batería puesta) → `EVT ETH OFF (sin_5V): W5500 en reset` y `STAT … eth=off`. Volver los 24 V → reset del MCU (0.5.9+) y la secuencia completa otra vez. 9. Guardar el log de consola **y** la captura de `nc` (`nc -lk 5010 | tee H00xx_eth.txt`). Ambos van al acta. ### A4. Criterios de aceptación — Ethernet | Criterio | PASA si | |---|---| | Hardware | `ETH W5500 OK en SPI2` en cada arranque con 5 V (nunca `NO responde`) | | Enlace | LED de enlace de J10 ON con cable; `enlace ARRIBA` en < 10 s tras conectar el cable | | Dirección | DHCP tomado si hay servidor DHCP; si no, cae a 192.168.7.2 en ≤ 5 s | | Espejo | `$PHID` es la primera línea en `nc`; después NMEA + `$PHLG` continuos ≥ 5 min; `drop=0` | | Recuperación | cable fuera/dentro y servidor caído/arriba se recuperan solos en < 10 s | | No interferencia | mientras Ethernet está conectado: `modoB=ON`, `phlg_aire` sigue subiendo, el monitor sigue viendo la unidad por 4G, `v5min ≥ 4.9` | ### A5. Árbol de fallas — Ethernet | Síntoma | Dónde buscar | |---|---| | `EVT ETH W5500 NO responde en SPI2 … — 3V3_ETH? U11? reintento en 10 s` (`$PHEV … ETH_HW,fail`) | Medir **3V3_ETH** (U12 salida / J10 pin 4 TCT) → 3.3 V. Si 0 V: U12 o su enable, `SYS5V` (P11 cerrado?). Si 3.3 V: SPI2 (PB12 CS, PB13 SCK, PB14 MISO, PB15 MOSI) y **RST PA15**: en V5.5 PA15 no tiene pull-down (flota); la tarjeta debe llevar R112 4.7 k en V5.6. Cristal Y1 25 MHz. Soldadura de U11 (QFN 48) | | `W5500 OK` pero **nunca** `enlace ARRIBA`; LED de enlace apagado | cable (probar otro), el adaptador de la laptop está activo?, **J10** (pines doblados, magnéticos: HR911105A trae los transformadores dentro — un J10 golpeado los rompe), pares TX/RX (J10 1-2 / 3-6) | | `enlace ARRIBA` pero nunca `conectado` (`eth=buscando_srv`) | IP de la laptop ≠ 192.168.7.1/24, `nc` no está escuchando, **firewall** de la laptop, dos adaptadores de red con la misma subred | | `conectado` pero `nc` no muestra nada / `drop` sube | `nc` sin `-k` se cerró tras el primer cliente; la laptop no drena (terminal congelada) | | Se reinicia la tarjeta al conectar Ethernet | riel 5 V: `v5min` < 4.6 → SD-15B / fuente; ver regla 2 de seguridad | | Todo bien con cable directo pero no con switch | el switch da DHCP en otra subred y el servidor sigue siendo 192.168.7.1 → cable directo, o build con `-DETH_SERVER_IP=` de esa red | --- ## B. Prueba de puertos serie (P15 RS-485, P16 RS-232) ### B0. Lo que puede probar cada firmware | Firmware | Qué prueba | Cómo | |---|---|---| | **0.6.0 / 0.6.0-eth** (hoy) | presencia del SC16IS752 (registro scratchpad) + **niveles estáticos** de los transceptores | B1 + B2 | | **0.6.1** (planeado; *cuando exista*) | lazo interno A↔B y eco externo por cada puerto a **9600 8N1** | B3 + B4 | ### B1. Presencia (cualquier 0.6.x) Con la tarjeta energizada (USB basta), en consola teclear **`r`** y buscar: ``` [PASS] I2C SC16IS752 U10 @0x4D ACK [PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60 ``` `[FAIL] … no ACK at 0x4D` → U10 sin alimentación / soldadura / dirección (A0, A1 a GND). `SPR rd=` distinto de `A5` → U10 dañado o **Y2** no oscila (debe decir `3.6864`). ### B2. Niveles estáticos (cualquier 0.6.x, multímetro, sin nada conectado a las clemas) | Medir (negro a GND = P15.3 / P16.3) | Esperado | Si no | |---|---|---| | **P16.1 (TX RS-232)** | **−5 a −6.5 V** (marca en reposo del MAX3232) | ≈ 0 V: U15 sin 3V3 o bomba de carga muerta (C1±/C2± = C de U15); ≈ +5 V: T1IN en bajo = U10 en reset | | **P16.2 (RX RS-232)** | ≈ 0 V flotando (R1IN tiene pull-down interno) | — | | **P15.1 (A) y P15.2 (B)** respecto a GND | ambas entre 1 y 3 V; sin JP5 pueden flotar cerca de 3.3/0 según el driver | ambas 0 V con 3V3 presente: U14 sin VCC | | **P15.1 – P15.2** (A – B) con JP5 cerrado | 0 V ± 0.2 (driver desactivado, línea terminada) | ≈ 0 con JP5 abierto también es normal | | **JP5** con la tarjeta apagada, ohms entre P15.1 y P15.2 | JP5 abierto: > 10 kΩ · JP5 cerrado: **≈ 120 Ω** (R82) | — | ### B3. Lazo interno (cuando exista 0.6.1) Cablear **P15 ↔ P16 no** — son eléctricamente distintos. El lazo interno de 0.6.1 conecta TX→RX de cada canal **dentro del SC16IS752** (registro MCR bit 4) y no necesita cable: tecla de consola de 0.6.1 → `[PASS] SER_LOOP_A` / `[PASS] SER_LOOP_B`. Prueba U10 y el cristal, **no** los transceptores ni las clemas. ### B4. Eco externo con adaptadores (cuando exista 0.6.1) — 9600 8N1 Con 0.6.1 en modo eco, todo lo que entra por un puerto sale por el mismo puerto. **RS-485 (P15):** 1. Cerrar **JP5** en la tarjeta *solo si* el adaptador también termina (la mayoría trae 120 Ω conmutable): bus de dos nodos = dos extremos = dos terminaciones. Anotar la posición en el acta. 2. Adaptador: **A → P15.1**, **B → P15.2**, **GND → P15.3**. Par trenzado, ≤ 3 m en banco. 3. Terminal en el puerto del adaptador a **9600 8N1**, eco local apagado. Enviar `HELGEN-485 0123456789\r\n` diez veces (o un archivo de 1 kB). 4. Esperado: cada línea regresa **idéntica**. 10/10 sin caracteres perdidos = PASA. 5. Si no vuelve nada: **intercambiar A y B** (muchos adaptadores etiquetan D+/D− al revés). Si sigue sin nada: B2. **RS-232 (P16):** 1. Cable de 3 hilos con puntera: **P16.1 TX → DB9 pin 2 (RXD)** · **P16.2 RX → DB9 pin 3 (TXD)** · **P16.3 GND → DB9 pin 5**. (Cruce DTE↔DTE; sin control de flujo.) 2. Terminal en el adaptador a **9600 8N1**. Enviar `HELGEN-232 0123456789\r\n` diez veces. 3. Esperado: 10/10 líneas de vuelta idénticas. Basura o nada: revisar cruce (probar pines 2↔3 invertidos) y B2. ### B5. Criterios de aceptación — puertos serie | Prueba | PASA si | Con qué firmware | |---|---|---| | Presencia U10 | `[PASS] SC16IS752 … SPR rd=0xA5` | 0.6.0+ | | Niveles RS-232 | P16.1 en −5…−6.5 V en reposo | 0.6.0+ | | Niveles RS-485 | A y B con nivel (no 0/0), 120 Ω entre A-B solo con JP5 cerrado | 0.6.0+ | | Lazo interno A y B | `[PASS] SER_LOOP_A` y `SER_LOOP_B` | 0.6.1 | | Eco RS-485 | 10/10 líneas idénticas a 9600 8N1 | 0.6.1 | | Eco RS-232 | 10/10 líneas idénticas a 9600 8N1 | 0.6.1 | !!! note "Sin 0.6.1, el resultado de serie se registra como «presencia + niveles OK»" Es lo máximo que puede probarse hoy y **basta para ordenar la V5.6** (el bloque serie no cambia entre V5.5 y V5.6). El eco con adaptadores se repite cuando salga 0.6.1 y se agrega al mismo acta. --- ## C. Cierre - [ ] Re-flashear **`hbox-v5-bringup_0.6.0.bin`** (campo) si la unidad se va a embarcar; anotar en el acta de reflasheo. - [ ] Quitar cable Ethernet y adaptadores; tapas ciegas en J10/P15/P16 si el panel no los usa. - [ ] Acta [Ethernet y puertos serie](../formularios/ethernet-serie.html) enviada con los dos logs. --- ## Anexo A — Notas de ingeniería - Ethernet en firmware: `ethService()` — `RST` alto → 150 ms → `Ethernet.begin` estático (prueba el chip y lee el PHY) → con cable, DHCP con 4 s de presupuesto (K1 liberado mientras, `relayDisengage("eth_dhcp")`) o estática → `connect()` con timeout 300 ms, reintento 5 s. Escrituras no bloqueantes (`availableForWrite`), descartes en `drop=`. MAC `02:48:42:` + hash del UID. Eventos en banda: `ETH_HW`, `ETH_UP`, `ETH_LINK`, `ETH_CONN`, `ETH_DISC`, `ETH_OFF`. - V5.5 vs V5.6 en este bloque: V5.6 añade **R112 4.7 k pull-down en `ETH_RST` (PA15)** y C90 4.7 µF / C91 10 nF según datasheet. Si una V5.5 arranca con `W5500 NO responde` de forma intermitente, sospechar PA15 flotando antes de que el firmware tome el pin. - SC16IS752: dirección 0x4D (A1 = A0 = GND, modo I²C), IRQ en PB8 (R81 10 k), cristal Y2 3.6864 MHz (`XTAL_FREQ 3686400` → 9600 = divisor 24). Canal A → U14 SP3485 (DE y ~RE unidos en `SER_DEA`), canal B → U15 MAX3232 (canal 2 sin usar: T2IN a GND, R2IN a GND). - Netlist V5.6 (`p5ntc-after.xml`): P15.1 `RS485_A`, P15.2 `RS485_B`, P15.3 GND; JP5.1 `RS485_T` (R82 120 Ω → A), JP5.2 `RS485_B`; P16.1 `RS232_TX` (T1OUT), P16.2 `RS232_RX` (R1IN), P16.3 GND; J10 1/2 TX±, 3/6 RX±, 4 TCT (3V3_ETH), 5 RCT, 7/8 NC, 9–12 LEDs de enlace/actividad. ## Historial de revisiones | Versión | Fecha | Autor | Cambios | |---|---|---|---| | 1.0 | 2026-09-29 | Helgen Technologies | Primera versión: prueba de Ethernet con `0.6.0-eth` (espejo TCP, DHCP/estática, recuperación, árbol de fallas) y de puertos serie (presencia, niveles, lazo y eco 9600 8N1 para 0.6.1). |