hbox-docs/docs/procedimientos/v5-prueba-ethernet-serie.md

225 lines
16 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 — Prueba de banco: Ethernet y puertos serie"
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.4
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
audience: técnicos de banco
---
# HBOX V5 — Prueba de banco: Ethernet y puertos serie
!!! warning "V5.6 y V5.7: su serigrafía trae otros designadores (T43, 22-oct)"
Este procedimiento usa los designadores de la V5.5 (y de la V4), los que trae su serigrafía. La V5.6 y la V5.7 llegan con los de T43 y varios nombres ahora son **otra pieza**: el USB-C de DFU es **J7** (aquí J11) y la entrada de 5 V es **J16** (aquí P2). En una V5.6 o una V5.7, busca cada designador en la tabla de abajo antes de medir o conectar. Las notas marcadas «V5.6» ya van en la numeración nueva.
??? info "Designadores de este documento en la V5.6 y la V5.7 (19)"
| Aquí (V5.5) | V5.6 | V5.7 | Pieza |
|---|---|---|---|
| C90 | **C23** | **C23** | 4.7uF (en la V5.5: 10uF) |
| C91 | **C24** | **C24** | 10nF (en la V5.5: 4.7uF) |
| J10 | **J6** | **J6** | HR911105A |
| J11 | **J7** | **J7** | USB-C DFU |
| JP5 | **JP6** | **JP6** | RS485_TERM |
| K1 | **K1** | **K1** | G5V-1 DC5 |
| P2 | **J16** | — | 5V-IN-SD15B05 |
| P11 | **J2** | **J2** | CUTOFF-SW |
| P15 | **J11** | **J11** | RS485_OUT |
| P16 | **J12** | **J12** | RS232_OUT |
| R81 | **R36** | **R36** | 10k |
| R82 | **R71** | **R71** | 120R |
| U10 | **U5** | **U5** | SC16IS752IPW |
| U11 | **U2** | **U2** | W5500 |
| U12 | **U9** | **U9** | MP1584EN |
| U14 | **U7** | **U7** | SP3485EN |
| U15 | **U10** | **U10** | TRS3232E (en la V5.5: MAX3232) |
| Y1 | **Y1** | **Y1** | 25MHz |
| Y2 | **Y3** | **Y3** | 3.6864MHz (en la V5.5: 1.8432MHz) |
!!! abstract "Para quién · Cuándo · Tiempo · Necesitas"
- Para quién: técnicos de banco.
- Cuándo: al menos una V5.5 antes de pedir la V5.6 (Ethernet nunca se había probado en tarjeta real y la V5.6 copia el bloque); después, toda unidad V5.5/V5.6 con RJ45 o clemas serie en el panel, dentro de la [configuración de la unidad](v5-configuracion-unidad.md).
- Tiempo: Ethernet 15 min · serie 15 min.
- Necesitas: unidad V5 ensamblada (o tarjeta + simpleRTK2B para ver NMEA); 24 V al GX16 (o 5.3 V / 3 A en P2); laptop con terminal serie a 115200 grabando y `nc` (macOS/Linux) o `ncat` (Windows); binario de banco `hbox-v5-bringup_0.6.1-eth.bin` (lo compila ingeniería con `-DENABLE_ETH=1` y entrega su SHA-256; no uses el `0.6.0-eth`: con cable directo y sin DHCP se bloqueaba 4–5 s cada 5 s) <!-- VERIFICAR: nombre y SHA-256 del binario -eth publicado -->; cable Ethernet directo cat 5e de 1–3 m (el W5500 hace Auto-MDIX); adaptadores USB-RS485 y USB-RS232 (DB9 macho) con 3 cables con puntera; multímetro; desarmador plano 2.5 mm; [acta Ethernet y puertos serie](../formularios/ethernet-serie.html).
!!! warning "Reglas"
1. Nunca pruebes Ethernet solo en batería ni solo por USB: el W5500 cuelga de `3V3_ETH`, que sale del 5 V del sistema. Sin 5 V el firmware lo deja en reset.
2. 5 V del sistema ≥ 5.2 V (SD-15B o fuente a ~5.3 V). Con menos, la ráfaga LTE lleva el riel al PFI 4.60 V del LTC4040 y la tarjeta se reinicia.
3. Con fuente de banco en P2 y sin 24 V, sin paquete de batería. Lo normal: 24 V al GX16 y el SD-15B interno.
## A. Ethernet (build `0.6.1-eth`)
### A1. Laptop (una vez)
1. Adaptador Ethernet en IP manual 192.168.7.1, máscara 255.255.255.0, sin gateway. Con un switch con DHCP la unidad toma IP del DHCP pero sigue buscando el servidor en 192.168.7.1; usa cable directo.
2. Firewall: permite entradas a 5010/TCP o desactívalo durante la prueba.
3. Deja escuchando:
```bash
nc -lk 5010 # macOS / Linux
ncat -lk 5010 # Windows (Nmap)
```
### A2. Flasheo del build de banco
1. DFU por J11, solo USB, sin 24 V ([flasheo §5](v5-prueba-y-flasheo.md#5-flasheo-por-usb-dfu-j11-5-min)).
2. `dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.1-eth.bin` o STM32CubeProgrammer.
3. Terminal en J11: primera línea `hbox-v5-bringup 0.6.1-eth`; la ayuda (`h`) lista `E=Ethernet on/off`.
El build `-eth` es solo de banco: al terminar reflashea el binario V5 vigente de [Descargas](../descargas/index.md) (hoy `hbox-v5-bringup_0.6.0.bin`; ver C).
### A3. Secuencia
1. Cable entre J10 y la laptop. Sin 24 V los LEDs de J10 quedan apagados (correcto: el USB no alimenta el W5500).
2. Energiza 24 V + ignición (P11 en ON). En los primeros ~15 s:
| Paso | Consola | 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, actividad parpadea | PHY con enlace |
| d | `EVT ETH sin DHCP en 4 s -> IP estatica` (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 `nc` llega primero la identidad y luego el flujo. `$PHID` se repite cada 5 min; con la etapa apagada o sin simpleRTK2B solo llegan `$PHLG`/`$PHEV`.
```
$PHID,<UID 24 hex>,0.6.1-eth,EinarBoard v5 (HBOX v5),02:48:42:xx:xx:xx,<up_s>*CS
$PHLG,0.6.1-eth,RUN,…
$GNGGA,…
$GNRMC,…
```
4. `s`: `STAT … eth=CONECTADO ip=192.168.7.2 lineas=N bytes=… drop=0 conn=1`. `lineas` sube; `drop` queda en 0.
5. Cable: desconecta el RJ45 10 s → `EVT ETH cable desconectado — esperando enlace`; al reconectar, `enlace ARRIBA` y `conectado (n=2)` en < 10 s.
6. Servidor: cierra `nc` (Ctrl-C) → `EVT ETH servidor desconectado … reintento en 5 s`; relanza `nc -lk 5010` y reconecta solo.
7. Tecla `E` → `ETH OFF (operador)`, LEDs de J10 apagados; `E` otra vez repite b–f.
8. Sin 5 V: quita los 24 V con batería puesta → `EVT ETH OFF (sin_5V): W5500 en reset` y `eth=off`. Al volver los 24 V, reset del MCU (0.5.9+) y la secuencia completa.
9. Guarda el log de consola y la captura de `nc` (`nc -lk 5010 | tee H00xx_eth.txt`) para el acta.
### A4. Aceptación
| Criterio | Pasa si |
|---|---|
| Hardware | `ETH W5500 OK en SPI2` en cada arranque con 5 V, nunca `NO responde` |
| Enlace | LED de enlace ON con cable; `enlace ARRIBA` < 10 s tras conectar |
| Dirección | Toma DHCP si hay servidor; si no, 192.168.7.2 en ≤ 5 s |
| Espejo | `$PHID` primero; NMEA + `$PHLG` continuos ≥ 5 min; `drop=0` |
| Recuperación | Cable y servidor se recuperan solos en < 10 s |
| No interferencia | Con Ethernet conectado: `modoB=ON`, `phlg_aire` sube, el monitor ve la unidad por 4G, `v5min ≥ 4.9` |
### A5. Fallas
| Síntoma | Revisa |
|---|---|
| `EVT ETH W5500 NO responde en SPI2 … — 3V3_ETH? U11? reintento en 10 s` (`$PHEV … ETH_HW,fail`) | `3V3_ETH` (salida de U12 / J10 pin 4 TCT) = 3.3 V. Con 0 V: U12 o su enable, `SYS5V` (¿P11 cerrado?). Con 3.3 V: SPI2 (PB12 CS, PB13 SCK, PB14 MISO, PB15 MOSI) y RST en PA15 (en V5.5 flota sin pull-down; V5.6 lleva R112 4.7 k), cristal Y1 25 MHz, soldadura de U11 (QFN 48) |
| `W5500 OK` pero nunca `enlace ARRIBA` | Otro cable; adaptador de la laptop activo; J10 (pines doblados; el HR911105A trae los magnéticos dentro y un golpe los rompe); pares J10 1-2 / 3-6 |
| `enlace ARRIBA` sin `conectado` (`eth=buscando_srv`) | IP de la laptop ≠ 192.168.7.1/24, `nc` sin escuchar, firewall, dos adaptadores en la misma subred |
| `conectado` sin datos en `nc` o `drop` sube | `nc` sin `-k` se cerró tras el primer cliente; terminal congelada |
| Reinicio al conectar Ethernet | `v5min` < 4.6: SD-15B o fuente (regla 2) |
| Bien con cable directo, mal con switch | DHCP en otra subred y servidor fijo en 192.168.7.1: usa cable directo o pide build con `-DETH_SERVER_IP=` |
## B. Puertos serie (P15 RS-485, P16 RS-232)
### B0. Qué prueba cada firmware
| Firmware | Prueba | Secciones |
|---|---|---|
| 0.6.0 y 0.6.1 (y sus `-eth`) | Presencia del SC16IS752 y niveles estáticos | B1, B2 |
| Build con lazo serie (planeado; no es 0.6.1) | Lazo interno y eco externo a 9600 8N1 | B3, B4 |
### B1. Presencia (0.6.x)
Tarjeta energizada (USB basta). Teclea `r` y busca:
```
[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 o dirección (A0, A1 a GND). `SPR rd=` ≠ `A5`: U10 dañado o Y2 no oscila (marcado `3.6864`).
### B2. Niveles estáticos (0.6.x, sin nada en las clemas)
| Punto (negro a P15.3 / P16.3) | Esperado | Si no |
|---|---|---|
| P16.1 (TX RS-232) | −5 a −6.5 V (reposo del MAX3232) | ≈ 0 V: U15 sin 3V3 o bomba de carga muerta; ≈ +5 V: T1IN bajo = U10 en reset |
| P16.2 (RX RS-232) | ≈ 0 V (pull-down interno de R1IN) | — |
| P15.1 (A) y P15.2 (B) a GND | Ambas 1–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 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 |
| Ohms P15.1–P15.2, tarjeta apagada | JP5 abierto > 10 kΩ · cerrado ≈ 120 Ω (R82) | — |
### B3. Lazo interno (build con lazo, planeado)
No cablees P15 con P16: son eléctricamente distintos. El lazo une TX→RX de cada canal dentro del SC16IS752 (MCR bit 4), sin cable: tecla de consola del build con lazo <!-- VERIFICAR: tecla y texto de salida del auto-test de lazo cuando exista ese build --> → `[PASS] SER_LOOP_A` / `[PASS] SER_LOOP_B`. Prueba U10 y el cristal, no los transceptores ni las clemas.
### B4. Eco externo con adaptadores (build con lazo, 9600 8N1)
En modo eco, lo que entra por un puerto sale por el mismo.
RS-485 (P15):
1. JP5 según la [regla de terminación](#conexion-en-la-instalacion). En banco, bus de dos nodos: ciérralo solo si el adaptador también termina. Anota la posición.
2. A → P15.1, B → P15.2, GND → P15.3. Par trenzado, ≤ 3 m.
3. Terminal en el adaptador a 9600 8N1, sin eco local. Envía `HELGEN-485 0123456789\r\n` diez veces (o 1 kB).
4. Pasa con 10/10 líneas idénticas.
5. Sin respuesta: intercambia A y B (muchos adaptadores rotulan D+/D− al revés); si sigue, vuelve a B2.
RS-232 (P16):
1. Cable de 3 hilos: P16.1 TX → DB9 pin 2 (RXD) · P16.2 RX → DB9 pin 3 (TXD) · P16.3 GND → DB9 pin 5. Sin control de flujo.
2. Terminal a 9600 8N1. Envía `HELGEN-232 0123456789\r\n` diez veces.
3. Pasa con 10/10 idénticas. Basura o nada: invierte pines 2↔3 y revisa B2.
### B5. Aceptación
| Prueba | Pasa si | 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 Ω A-B solo con JP5 cerrado | 0.6.0+ |
| Lazo interno | `SER_LOOP_A` y `SER_LOOP_B` en PASS | build con lazo |
| Eco RS-485 / RS-232 | 10/10 idénticas a 9600 8N1 | build con lazo |
Hasta que salga el build con lazo el resultado se registra como "presencia + niveles OK". Basta para ordenar la V5.6 (el bloque serie no cambia). El eco se agrega al mismo acta cuando salga ese build.
## Conexión en la instalación
| Conector | Pin 1 | Pin 2 | Pin 3 | Notas |
|---|---|---|---|---|
| P15 RS-485 | A | B | GND | Semidúplex, 2 hilos. JP5 = terminación 120 Ω (R82) entre A y B |
| P16 RS-232 | TX (sale) | RX (entra) | GND | ±5 V (MAX3232). El HBOX es DTE |
- JP5 (puente de soldadura, abierto de fábrica): un bus RS-485 se termina solo en sus dos extremos. Ciérralo solo si el HBOX es un extremo; en un bus de dos nodos se cierran los dos; nunca en un nodo intermedio.
- RS-232 contra otro DTE (laptop, PLC con DB9 macho): cruzado como en B4. Contra un DCE (módem, DB9 hembra): directo.
- Clemas Phoenix MC 1,5 de 3 vías (paso 3.5 mm): alambre 0.2–1.5 mm² (AWG 24–16), pelado 7 mm, sin estañar (o con puntera). RS-485 en par trenzado con GND en el mismo cable.
- No hay PoE (J10 pines 7/8 sin conectar): la unidad sigue necesitando 24 V.
## C. Cierre
- [ ] Si la unidad se embarca, reflashea el binario V5 vigente de Descargas (hoy `hbox-v5-bringup_0.6.0.bin`) y anótalo en el [acta de reflasheo](../formularios/reflasheo.html).
- [ ] Retira cable y adaptadores; tapas ciegas en J10/P15/P16 que el panel no use.
- [ ] Envía el [acta Ethernet y puertos serie](../formularios/ethernet-serie.html) con los dos logs.
## Anexo — notas de ingeniería
- `ethService()`: `RST` alto → 150 ms → `Ethernet.begin` estático (prueba el chip y lee el PHY) → con cable, DHCP con 4 s (K1 liberado mientras, `relayDisengage("eth_dhcp")`) o estática → `connect()` con timeout 300 ms, reintento 5 s. Desde 0.6.1-eth: nunca `Ethernet.maintain()` tras un connect fallido (sin lease, la librería re-corría el DHCP entero: 4–5 s bloqueado cada 5 s); renovación del lease una vez por minuto solo si hubo DHCP; el cargador se pausa durante el DHCP; W5500 ausente: reintento cada 10 min tras 3 fallos. 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`.
- Defaults del build: DHCP, y si no hay respuesta en 4 s estática 192.168.7.2/24 (`-DETH_DHCP=0`, `-DETH_IP=192,168,1,50`); servidor 192.168.7.1:5010, reintento 5 s (`-DETH_SERVER_IP=`, `-DETH_SERVER_PORT=`); activo solo con 5 V, nunca en batería ni por USB. IP y servidor son banderas de compilación: otro valor = otro `.bin` de ingeniería. No hay build de campo con Ethernet y el servidor htracker no escucha el espejo; la unidad reporta por 4G.
- V5.6 añade R112 4.7 k pull-down en `ETH_RST` (PA15) y cambia C90 a 4.7 µF y C91 a 10 nF (en la serigrafía de la V5.6 son R5, C23 y C24). `W5500 NO responde` intermitente en V5.5: sospecha PA15 flotando antes de que el firmware tome el pin.
- SC16IS752: 0x4D (A1 = A0 = GND, I²C), IRQ en PB8 (R81 10 k), 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 y R2IN a GND). En 0.6.0 y 0.6.1 no hay tráfico de aplicación y el protocolo con el equipo del cliente está por definir.
- 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.
## Historial de revisiones
| Versión | Fecha | Cambios |
|---|---|---|
| 1.0 | 2026-09-29 | Primera versión: Ethernet con `0.6.0-eth` y puertos serie (presencia, niveles, lazo y eco para 0.6.1). |
| 1.1 | 2026-09-29 | Edición breve; recibe de la configuración de la unidad la tabla de conexión, la regla de JP5 y los defaults de Ethernet. |
| 1.2 | 2026-09-29 | Build de banco 0.6.1-eth (el 0.6.0-eth se bloqueaba sin DHCP). Lazo y eco serie: build posterior (0.6.1 salió como arreglo del cargador). |
| 1.3 | 2026-09-29 | Binario de campo vigente otra vez 0.6.0 (0.6.1 retirada). El build de banco sigue siendo `0.6.1-eth`: Ethernet funciona, pero su `$PHLG` por 4G no llega al monitor. |
| 1.4 | 2026-10-22 | Aviso y tabla de equivalencias para la V5.6 y la V5.7, que traen los designadores de T43 (22-oct). El cuerpo conserva la numeración de la V5.5. |
Versiones anteriores en git.