198 lines
14 KiB
Markdown
198 lines
14 KiB
Markdown
---
|
||
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.3
|
||
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
|
||
|
||
!!! 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 C90 4.7 µF / C91 10 nF. `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. |
|
||
|
||
Versiones anteriores en git.
|