239 lines
14 KiB
Markdown
239 lines
14 KiB
Markdown
---
|
||
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). |
|