--- 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.5.0.bin`** — descarga: **https://drogheda.helgen.online/descargas/** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `98656ddc`) | | 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.5.0.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.5.0.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.5.0` (cualquier otra version: re-flashear), 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.