Drogheda/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Prueba-Ethernet-y-Puertos-Serie_ES_v1.0.md

239 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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) <!-- VERIFICAR: nombre y SHA-256 del binario -eth publicado --> |
| 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> (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,<UID 24 hex>,0.6.0-eth,EinarBoard v5 (HBOX v5),02:48:42:xx:xx:xx,<up_s>*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 <!-- VERIFICAR: el SP3485 no polariza A/B en recepción; medir en la primera V5.5 y fijar el rango --> | 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) <!-- VERIFICAR: estado por defecto de SER_DEA (DE/~RE de U14) tras reset del SC16IS752; si el driver arranca activo se leerá ≈ +2 V (marca) --> | ≈ 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 <!-- VERIFICAR: tecla y texto de salida del auto-test de lazo en 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). |