hbox-docs/docs/procedimientos/v5-prueba-y-flasheo.md

312 lines
15 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: EinarBoard v5 (HBOX v5) — Procedimiento de prueba y flasheo por tarjeta
tags: [project-drogheda, hardware, einarboard, v5, bringup, testing, flasheo, procedimiento]
project: Project Drogheda
author: Helgen Technologies
date: 2026-09-15
version: 1.0
status: ACTIVO — aplicar a cada una de las 15 tarjetas del lote JLC 22-Ago-2026
audience: técnicos de banco
---
# EinarBoard v5 — Procedimiento de prueba y flasheo
**Lote:** 15 tarjetas `hbox-watchdog-v5` (JLCPCB, pedido 22-Ago-2026).
**Objetivo:** verificar que cada tarjeta enciende sin cortos, que sus rieles están en valor,
y dejarla flasheada con el firmware de arranque entregado por ingeniería.
**Duración estimada:** 15–20 min por tarjeta.
> ⛔ **REGLA 1 — NO flashear `blackpillrtkcode_v3` (v3.0.3) en esta tarjeta.**
> Ese firmware es para la EinarBoard 1.0 (Blackpill). En la v5 usa los pines PB12–PB15 como
> LEDs de batería, pero en esta tarjeta esos pines son el bus SPI del chip Ethernet (W5500).
> Solo se flashea el archivo `.bin` que entregue ingeniería para v5.
>
> ⛔ **REGLA 2 — Sin batería y sin módulos en estas pruebas.** No conectar nada en P4
> (batería), ni insertar el simpleRTK2B en MOD1, ni el módem 4G en J7/J8.
>
> ⛔ **REGLA 3 — Fuente de banco siempre con límite de corriente.** Si la corriente llega al
> límite o un componente se calienta: apagar, marcar la tarjeta como FALLA y pasar a la siguiente.
---
## 0. Material
| Cant. | Ítem |
|---|---|
| 1 | Multímetro (continuidad / V DC) |
| 1 | Fuente de banco 0–30 V con límite de corriente ajustable |
| 1 | Cable USB-C ↔ USB-C (o USB-A ↔ USB-C) **con datos** (no solo carga) |
| 1 | Laptop con **STM32CubeProgrammer** instalado (o `dfu-util` en terminal) |
| 1 | Archivo de firmware: **`hbox-v5-bringup_0.1.1.bin`** — descarga: **https://drogheda.helgen.online/descargas/** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `91ca6f87`) |
| 1 | Jumper 2.54 mm para P11 (interruptor de corte) |
| 1 | Lupa o lámpara con aumento |
| — | Hoja de registro (sección 7) |
**Identificación en la tarjeta** (serigrafía):
| Ref. | Qué es | Dónde se usa |
|---|---|---|
| **J11** | USB-C **DFU** (junto a SW1/SW2 y J10 Ethernet) | Alimentar solo el MCU y flashear |
| **J9** | USB-C del **módem** | NO se usa en este procedimiento |
| **SW1** | Botón **RESET** | Reiniciar el MCU |
| **SW2** | Botón **BOOT0** | Entrar en modo DFU |
| **TP7 / TP6** | Puntos de prueba **3V3 / GND** | Medir el riel de 3.3 V |
| **TP3 / TP4 / TP5** | SWDIO / SWCLK / NRST | Solo si ingeniería pide programar por ST-Link |
| **P2** | Entrada **5 V** (donde va la Mean Well SD-15B) | Prueba del riel de 5 V |
| **P1** | Entrada **24 V** (GX16) — pin 1 = +24 V, pin 2 = GND | Prueba del buck del ventilador |
| **P11** | Header **CUTOFF-SW** (2 pines) | Puentear para que pase MAIN5V → SYS5V |
| **P6** | Header del ventilador (2 pines) — pin 1 = +5V_FAN, pin 2 = retorno conmutado | Medir salida del buck (pin 1 contra GND) |
| **MOD1** | Zócalo UNO del simpleRTK2B — pin **"5V"** | Verificar que la etapa RTK arranca **apagada** |
| **D18** | LED verde **PWR** | Enciende cuando hay 3.3 V |
| **D17** | LED azul **C13** | Lo controla el firmware (apagado en chip virgen) |
| **U17** | Regulador AMS1117 3.3 V | Tocar para verificar temperatura |
| **Y2** | Cristal **3.6864 MHz** (HC-49, marcado `3.6864` / `36.864`) | Verificación visual |
---
## 1. Inspección visual (sin energía) — 3 min
Con lupa, en cada tarjeta:
- [ ] No hay puentes de soldadura visibles entre pines de **U16** (MCU, 64 pines), **U11**
(W5500), **U10** (SC16IS752), **U6** (LTC4040).
- [ ] **Y2** dice `3.6864` (o `36.864`). Los otros tres cristales: **Y1** y **Y3** = `25.000`,
**Y4** = pequeño de 32.768 kHz. Si Y2 dice `1.8432` → marcar y avisar a ingeniería.
- [ ] Botones **SW1** y **SW2** presentes y con "clic".
- [ ] Conectores **J11**, **J9**, **J10 (RJ45)** bien asentados, sin pines doblados.
- [ ] Jumpers de configuración del cargador presentes: **JP2, JP3, JP4** (no tocar su posición).
- [ ] Sin componentes faltantes evidentes ni marcas de quemado.
---
## 2. Continuidad — cortos a tierra (sin energía) — 2 min
Multímetro en **ohms** (no en modo continuidad/beep, porque los capacitores dan lecturas
transitorias). Punta negra en **TP6 (GND)**. Esperar a que la lectura se estabilice.
| Medir en | Riel | Esperado | Si es < 100 Ω |
|---|---|---|---|
| **TP7** | 3V3 | > 1 kΩ (la lectura sube lentamente) | FALLA — corto en 3.3 V |
| **P2 pin 1** | VEH5V (entrada 5 V) | > 1 kΩ | FALLA — corto en entrada 5 V |
| **P11 pin 1** | MAIN5V | > 1 kΩ | FALLA — corto en 5 V del sistema |
| **P1 pin 1** | 24V_IN | > 10 kΩ | FALLA — corto en 24 V |
| **MOD1 pin "5V"** | SW_5V (etapa RTK) | > 1 kΩ | FALLA |
> Nota: es normal ver lecturas de unos cientos de ohms **que van subiendo** — son los
> capacitores cargándose con el multímetro. Lo que NO es normal es una lectura fija de 0–20 Ω.
---
## 3. Prueba del riel de 3.3 V por USB (J11) — 3 min
Con USB solo se energiza el MCU y la lógica de 3.3 V; el riel de 5 V del sistema queda apagado.
Es la forma más segura de encender la tarjeta por primera vez.
1. Conectar el cable USB-C en **J11** (el que está junto a los botones), otro extremo a la laptop
o a un cargador USB.
2. Verificar:
| Punto | Esperado |
|---|---|
| **D18** (LED verde PWR) | **Encendido** |
| **TP7** respecto a TP6 | **3.20 – 3.40 V** |
| **U17** (AMS1117) al tacto tras 1 min | Tibio, se puede tocar. **Si quema → FALLA** |
| **D17** (LED azul) | Apagado o fijo (chip virgen — normal) |
3. Si D18 no enciende o TP7 < 3.0 V → desconectar, marcar **FALLA (3V3)**.
4. **Dejar el USB conectado** para la sección siguiente.
---
## 4. Prueba de rieles de 5 V y 24 V con fuente de banco — 5 min
Se hace **con el MCU virgen (sin firmware)**: así todos sus pines quedan en alta impedancia y la
etapa RTK permanece apagada por diseño. Esto es lo que se está verificando.
### 4a. Riel de 5 V (entrada P2)
1. Fuente de banco: **5.0 V, límite 500 mA**, salida apagada.
2. Colocar el **jumper en P11** (CUTOFF-SW).
3. Conectar fuente a **P2**: pin 1 = +5 V, pin 2 = GND. (Puede quedarse el USB en J11.)
4. Encender la salida y medir:
| Punto | Esperado |
|---|---|
| Corriente de la fuente | **< 300 mA** (típico 100–250 mA) |
| **P11 pin 1** (MAIN5V) | 4.8 – 5.1 V |
| **P11 pin 2** (SYS5V, con jumper) | 4.8 – 5.1 V |
| **TP7** (3V3) | 3.20 – 3.40 V |
| **MOD1 pin "5V"** (SW_5V, etapa RTK) | **0 V** ← obligatorio. Si hay 5 V aquí → FALLA (etapa RTK no arranca apagada) |
| **U6** (LTC4040), **U12** (buck Ethernet) al tacto | Tibios, no queman |
5. Apagar la salida de la fuente. Desconectar de P2.
### 4b. Riel de 24 V → buck del ventilador (entrada P1)
1. Fuente de banco: **24.0 V, límite 200 mA**, salida apagada.
2. Conectar a **P1**: pin 1 = +24 V, pin 2 = GND. **Pin 3 (ignición) sin conectar.**
3. Encender la salida y medir:
| Punto | Esperado |
|---|---|
| Corriente de la fuente | **< 50 mA** (sin ventilador) |
| **P6 pin 1** (5V_FAN) respecto a **TP6 (GND)** | **4.9 – 5.1 V** (no medir contra P6 pin 2: es el lado conmutado del ventilador) |
| **U2** (buck) al tacto | Frío o tibio |
4. Apagar salida. Desconectar de P1. Quitar el jumper de P11 (opcional; puede dejarse).
> Si algún valor está fuera de rango: marcar FALLA con la sección (4a o 4b) y el valor medido.
> **No flashear una tarjeta con FALLA.**
---
## 5. Flasheo por USB DFU (J11) — 5 min
Solo para tarjetas que pasaron las secciones 1 a 4.
### 5a. Entrar en modo DFU
1. Solo el **USB en J11** conectado a la laptop (nada en P1/P2).
2. **Mantener presionado SW2 (BOOT0).**
3. Sin soltar SW2, **presionar y soltar SW1 (RESET)**.
4. **Soltar SW2.**
5. La laptop debe detectar un dispositivo **"STM32 BOOTLOADER"** (ID `0483:DF11`).
> El chip viene **vacío de fábrica**: no hace nada hasta que se flashea, y **solo** entra al
> programador con esta secuencia de botones. Si no aparece el dispositivo: cambiar el cable
> USB (muchos son solo de carga), repetir la secuencia con calma (SW2 debe estar presionado
> cuando se suelta SW1).
### 5b. Flashear con STM32CubeProgrammer (recomendado)
1. Abrir **STM32CubeProgrammer**.
2. Arriba a la derecha, en el selector de conexión elegir **USB**. Pulsar el botón de refrescar;
debe aparecer `USB1`. Pulsar **Connect**.
3. Ir a la pestaña **Erasing & Programming** (icono de flecha hacia abajo, lado izquierdo).
4. **File path** → seleccionar `hbox-v5-bringup_0.1.1.bin`.
5. **Start address** = `0x08000000`. Marcar **Verify programming** y **Run after programming**.
6. Pulsar **Start Programming**. Esperar "File download complete" y "Verify… successful".
7. Pulsar **Disconnect**.
### 5c. Alternativa por terminal (`dfu-util`, macOS/Linux)
```bash
dfu-util -l # debe listar [0483:df11]
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.1.1.bin
```
### 5d. Verificación después del flasheo
1. Abrir un terminal serie en la laptop (CoolTerm, Serial, `screen`, o el monitor de Arduino)
y dejarlo listo. Pulsar **SW1** (RESET) una vez.
2. Esperado en los primeros 5 segundos:
| Punto | Esperado |
|---|---|
| **D17** (LED azul) + LED de panel en P8 (si hay) | **Parpadean** a 1 Hz (MCU ejecutando el firmware) |
| **DB1 → DB4** (LEDs del indicador de batería) | Se encienden **en secuencia** una vez, luego se apagan; después R, G, B en P14 si hay LED RGB conectado |
| Laptop | Aparece un **puerto serie** nuevo ("STMicroelectronics Virtual COM Port" / `usbmodem…`) |
| Terminal serie a **115200 baud** | Encabezado `hbox-v5-bringup 0.1.1`, luego líneas `[PASS]` / `[FAIL]`, y al final **`>>> BOARD OK`** |
3. Si el terminal se abrió tarde y no se vio el reporte: teclear **`r`** en el terminal → repite
todas las pruebas (y vuelve a encender los LEDs en secuencia).
4. Reporte esperado (todas `[PASS]`):
```
[PASS] CLOCK_HSE SYSCLK=96000000 Hz HSE_RDY=1 PLL_SRC=HSE ← cristal Y3 y USB OK
[PASS] LSE_Y4 Y4 32.768k LSERDY=1 ← cristal Y4 OK
[PASS] I2C PCF8574 U13 @0x20 ACK
[PASS] I2C SHT40 U3 @0x44 ACK
[PASS] I2C TMP102 U4 @0x48 ACK
[PASS] I2C SC16IS752 U10 @0x4D ACK
[PASS] TMP102 TMP102 27.50 C
[PASS] SHT40 SHT40 27.8 C 45.0 %RH
[PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60
[PASS] GAUGE_WALK visual — technician confirms ← el técnico confirma que vio DB1→DB4
[PASS] ADC vbat=0.00 v5=0.00 ntc=..C mcu=..C ← vbat y v5 en 0 es NORMAL con solo USB
[PASS] DIN ign=0 chrg=.. fault=.. ser_irq=1 eth_int=..
---- RESULT: 12 PASS / 0 FAIL ----
>>> BOARD OK
```
Después imprime una línea `STAT …` cada 2 s con temperaturas y voltajes — es normal.
5. Cualquier `[FAIL]` → anotar la línea completa en la hoja de registro y marcar **FALLA (POST)**.
El LED azul que no parpadea → repetir 5a–5b una vez; si vuelve a fallar → **FALLA (FLASH)**.
> Este firmware **no enciende la etapa RTK ni el cargador**: solo prueba la tarjeta. El firmware
> de producción v5 se flashea después, por el mismo procedimiento DFU.
---
## 6. Cierre de la tarjeta
- [ ] Desconectar USB.
- [ ] Etiquetar la tarjeta con su número de serie (**V5-01 … V5-15**) y fecha, en la esquina
cerca de MH4 (sin tapar serigrafía ni componentes).
- [ ] Llenar la hoja de registro.
- [ ] Guardar en bolsa antiestática. Las tarjetas con FALLA van en bolsa aparte con la nota
del punto que falló.
---
## 7. Hoja de registro del lote
| Tarjeta | Visual (1) | Cortos (2) | 3V3 USB (3) | 5 V (4a) | 24 V (4b) | DFU (5a) | Flash (5b) | Post-flash (5d) | OK / FALLA | Técnico | Fecha |
|---|---|---|---|---|---|---|---|---|---|---|---|
| V5-01 | | | | | | | | | | | |
| V5-02 | | | | | | | | | | | |
| V5-03 | | | | | | | | | | | |
| V5-04 | | | | | | | | | | | |
| V5-05 | | | | | | | | | | | |
| V5-06 | | | | | | | | | | | |
| V5-07 | | | | | | | | | | | |
| V5-08 | | | | | | | | | | | |
| V5-09 | | | | | | | | | | | |
| V5-10 | | | | | | | | | | | |
| V5-11 | | | | | | | | | | | |
| V5-12 | | | | | | | | | | | |
| V5-13 | | | | | | | | | | | |
| V5-14 | | | | | | | | | | | |
| V5-15 | | | | | | | | | | | |
Anotar el valor medido cuando esté fuera de rango (ej. "TP7 = 2.9 V").
---
## Anexo A — Notas de ingeniería (no requeridas para el técnico)
Verificado contra `hbox-watchdog-v5.kicad_pcb` / `.kicad_sch` (netlist, 15-Sep-2026):
- **Alimentación por J11:** VBUS → D13 (SS34) → `/LDO_IN` → U17 AMS1117 → `/3V3`. `/SYS5V`
queda apagado, por lo tanto U12 y `/3V3_ETH` (W5500) quedan apagados. R100/R101 (5.1 k en CC)
presentes: un cable C-a-C entrega VBUS.
- **DFU:** BOOT0 = pin 60 de U16, pull-down R98 10 k, SW2 lo lleva a 3V3. `/BOOT1_STRAP`
(PB2, pin 28) fijo a GND por R99 10 k. HSE = Y3 25 MHz en PH0/PH1 (el bootloader ROM lo
requiere, AN2606). USB en PA11/PA12 (pines 44/45) con ESD D14/D15.
- **SWD:** TP3 SWDIO (PA13), TP4 SWCLK (PA14), TP5 NRST, TP6 GND, TP7 3V3.
- **Colisión firmware v3.0.3 ↔ v5 (única encontrada):** `PIN_BATLED1..4` = PB12–PB15 (pines
33–36) = `/ETH_CS`, `/ETH_SCK`, `/ETH_MISO`, `/ETH_MOSI` (SPI2 del W5500). PB14 es salida del
W5500. El indicador de batería en v5 está en U13 PCF8574 (A0–A2 a GND → dirección I²C
0x20, salidas P0–P3 → RB1–RB4 120 R → LEDs). Todo el resto del mapa de pines de v3 coincide
con v5: PA0 BAT_SENSE, PA1 PWR_CTRL, PA2/PA3 GNSS, PA4 5V_SENSE, PA5 IGN_SENSE, PA6 FAN_PWM,
PA8 CHRG_EN, PA9/PA10 USART1, PB0 EXT_LED, PB1 NTC, PB3 CHRG_STAT, PB4 CHRG_FAULT,
PB5 BYP_CTRL, PB6/PB7 I²C1, PC13 LED (activo bajo, R102 1 k a 3V3), PB10 tach = NC.
- **Pines de v5 que v3 no conoce (firmware v5 debe manejarlos):** PC0 `/ETH_INT`,
PA15 `/ETH_RST` (sin pull-up: flota si el MCU no lo maneja), PB8 `/SER_IRQ` (SC16IS752),
PC14/PC15 LSE 32.768 kHz (Y4). `/SER_RSTn` sí tiene pull-up R80 10 k.
- **Cristales (BOM = maestro):** Y2 = C2238 X49SM36864MSD2SC-1 = **3.6864 MHz** para el
SC16IS752 (`XTAL_FREQ 3686400`); el campo "1.8432MHz" del esquemático/BOM es un error de
etiqueta. Y1 (W5500) y Y3 (HSE del MCU) = C14872 X49SM25MSD2SC = **25 MHz**, confirmados contra el BOM de ensamble en JLCPCB. Y4 = 32.768 kHz LSE.
- **Estado del archivo KiCad vs tarjetas fabricadas:** el `.kicad_pcb` vivo tiene 35 huellas
movidas después del pedido (commits 24-Ago y 07-Sep: reubicación de la zona Ethernet/DFU
J10/U11/U12/Y1/C90–C103/J11, D14–D16, R20, C101). La netlist no cambió. La referencia
física de este lote es `production/HBOX_v5_PROD.zip` (22-Ago). En las tarjetas recibidas
D14–D16 están junto al MCU, no junto a J11.
- **Buck del ventilador U2 se habilita solo:** `/EN_FAN` = divisor Ren1 100 k / Ren2 20 k desde
`/24V` (≈4 V con 24 V de entrada), no depende del MCU → la prueba 4b es válida con chip virgen.
`/FAN_RET` es el lado bajo conmutado por Q2 (gate desde PA6): con MCU virgen queda abierto.
- **Objetivo de compilación del firmware v5:** `STMicroelectronics:stm32:GenF4:pnum=GENERIC_F411RETX`
(no `BLACKPILL_F411CE`), `HSE_VALUE=25000000` con `SystemClock_Config` explícito en HSE para
que el USB CDC tenga reloj exacto.