pin fw 0.5.0 + hbox-docs; prueba final de unidad

This commit is contained in:
Leopoldo Rodríguez 2026-09-18 11:51:14 -06:00
parent 94ad3fad02
commit e2bf432a32
8 changed files with 114 additions and 24 deletions

@ -1 +1 @@
Subproject commit 6c59791d72eab814fed9e023d5263a00f84c3b97 Subproject commit a82ca4ace53106dd7f1d18ffb1fb92a1f4b0c65d

View File

@ -37,7 +37,7 @@ y dejarla flasheada con el firmware de arranque entregado por ingeniería.
| 1 | Fuente de banco 0–30 V con límite de corriente ajustable | | 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 | 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 | Laptop con **STM32CubeProgrammer** instalado (o `dfu-util` en terminal) |
| 1 | Archivo de firmware: **`hbox-v5-bringup_0.2.1.bin`** — descarga: **https://drogheda.helgen.online/descargas/** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `78b34f46`) | | 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 | Jumper 2.54 mm para P11 (interruptor de corte) |
| 1 | Lupa o lámpara con aumento | | 1 | Lupa o lámpara con aumento |
| — | Hoja de registro (sección 7) | | — | Hoja de registro (sección 7) |
@ -183,7 +183,7 @@ Solo para tarjetas que pasaron las secciones 1 a 4.
2. Arriba a la derecha, en el selector de conexión elegir **USB**. Pulsar el botón de refrescar; 2. Arriba a la derecha, en el selector de conexión elegir **USB**. Pulsar el botón de refrescar;
debe aparecer `USB1`. Pulsar **Connect**. debe aparecer `USB1`. Pulsar **Connect**.
3. Ir a la pestaña **Erasing & Programming** (icono de flecha hacia abajo, lado izquierdo). 3. Ir a la pestaña **Erasing & Programming** (icono de flecha hacia abajo, lado izquierdo).
4. **File path** → seleccionar `hbox-v5-bringup_0.2.1.bin`. 4. **File path** → seleccionar `hbox-v5-bringup_0.5.0.bin`.
5. **Start address** = `0x08000000`. Marcar **Verify programming** y **Run after programming**. 5. **Start address** = `0x08000000`. Marcar **Verify programming** y **Run after programming**.
6. Pulsar **Start Programming**. Esperar "File download complete" y "Verify… successful". 6. Pulsar **Start Programming**. Esperar "File download complete" y "Verify… successful".
7. Pulsar **Disconnect**. 7. Pulsar **Disconnect**.
@ -192,7 +192,7 @@ Solo para tarjetas que pasaron las secciones 1 a 4.
```bash ```bash
dfu-util -l # debe listar [0483:df11] dfu-util -l # debe listar [0483:df11]
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.2.1.bin dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.5.0.bin
``` ```
### 5d. Verificación después del flasheo ### 5d. Verificación después del flasheo
@ -206,7 +206,7 @@ dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.2.1.bin
| **D17** (LED azul) + LED de panel en P8 (si hay) | **Parpadean** a 1 Hz (MCU ejecutando el firmware) | | **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 | | **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…`) | | Laptop | Aparece un **puerto serie** nuevo ("STMicroelectronics Virtual COM Port" / `usbmodem…`) |
| Terminal serie a **115200 baud** | Encabezado `hbox-v5-bringup 0.2.1` (si dice 0.1.1 o 0.2.0, re-flashear), luego líneas `[PASS]` / `[FAIL]`, y al final **`>>> BOARD OK`** | | 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 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). todas las pruebas (y vuelve a encender los LEDs en secuencia).

View File

@ -21,7 +21,7 @@ accionamiento de vibración **completo** (motovibrador + variador).
--- ---
## OLEADA 1 — Etapa térmica (≈ $9,400 MXN) ## OLEADA 1 — Etapa térmica (≈ $9,800 MXN + $1,100 de seguridad)
Pedir esta semana. Todo se consigue en MercadoLibre / Amazon MX / Steren / Pedir esta semana. Todo se consigue en MercadoLibre / Amazon MX / Steren /
ferretería industrial local. ferretería industrial local.
@ -44,15 +44,18 @@ ferretería industrial local.
| 1.14 | 🔴 **Fuelle/bota de silicón, barreno 50 mm** + brida de piso | Paso de la varilla motriz. Silicón 200 °C | 1 | 450 | | 1.14 | 🔴 **Fuelle/bota de silicón, barreno 50 mm** + brida de piso | Paso de la varilla motriz. Silicón 200 °C | 1 | 450 |
| 1.15 | Entrada IEC, indicadores, **paro de emergencia** | | — | 400 | | 1.15 | Entrada IEC, indicadores, **paro de emergencia** | | — | 400 |
| 1.16 | Consumibles: remaches, ángulo, tornillería, sellador de silicón alta temp | | — | 480 | | 1.16 | Consumibles: remaches, ángulo, tornillería, sellador de silicón alta temp | | — | 480 |
| | | | **Subtotal** | **9,400** | | | | | **Subtotal** | **9,800** |
### Seguridad — comprar junto con la Oleada 1, no después ### Seguridad — comprar junto con la Oleada 1, no después
| # | Artículo | Por qué | | # | Artículo | Por qué |
|---|---|---| |---|---|---|
| S.1 | **Extintor Clase D** (o cubeta de arena seca) | Pack de litio en la cámara. **CO₂ no sirve** para litio | | S.1 | **Cubeta de arena seca 20 kg** — $200 | Pack de litio en la cámara. **CO₂ no sirve** para litio |
| S.2 | Manta ignífuga (welding blanket) | | | S.2 | Manta ignífuga (welding blanket) — $600 | |
| S.3 | Guantes térmicos | Superficies a 75 °C | | S.3 | Guantes térmicos ×2 — $300 | Superficies a 75 °C |
| S.4 | *Opcional:* extintor Clase D — ~$3,500 | La arena + manta cubre el caso realista. En el BOM va con cantidad 0 |
**Subtotal seguridad: $1,100 MXN** (sin el extintor Clase D).
--- ---
@ -98,13 +101,18 @@ Pedir al pasar la compuerta G1.
| Bloque | MXN | | Bloque | MXN |
|---|---| |---|---|
| Oleada 1 — térmica | 9,400 | | Oleada 1 — térmica | 9,800 |
| Oleada 1 — seguridad | 1,100 |
| Oleada 2 — vibración | 11,700 | | Oleada 2 — vibración | 11,700 |
| Oleada 2 — impacto | 2,400 | | Oleada 2 — impacto | 2,400 |
| Oleada 2 — instrumentación | 2,700 | | Oleada 2 — instrumentación | 2,700 |
| **Subtotal** | **26,200** | | **Subtotal** | **27,700** |
| Contingencia 15 % | 3,900 | | Contingencia 15 % | 4,155 |
| **TOTAL** | **≈ 30,100** | | **TOTAL** | **≈ 31,855** |
> 🔴 **El archivo de control de compras es el BOM en Excel**, no esta tabla:
> `2026-09-17_Drogheda_HALT-Rig_BOM_v1.0.xlsx`. Ahí se capturan proveedor,
> estado y precio real, y los totales se recalculan solos.
--- ---

View File

@ -370,7 +370,7 @@ no `cflt` that fails to clear · C/N₀ drift within X dB.
| **Silicone oven gasket**, piano hinge, over-centre latches | — | 500 | | **Silicone oven gasket**, piano hinge, over-centre latches | — | 500 |
| **Silicone bellows boot, 50 mm bore** + floor flange | 1 | 450 | | **Silicone bellows boot, 50 mm bore** + floor flange | 1 | 450 |
| Control enclosure, IEC inlet, indicators, E-stop | — | 800 | | Control enclosure, IEC inlet, indicators, E-stop | — | 800 |
| **Subtotal** | | **9,400** | | **Subtotal** | | **9,800** |
### Vibration stage (D2 — full) ### Vibration stage (D2 — full)
@ -408,16 +408,20 @@ no `cflt` that fails to clear · C/N₀ drift within X dB.
| | MXN | | | MXN |
|---|---| |---|---|
| Thermal | 9,400 | | Thermal | 9,800 |
| **Safety (was missing a cost line in v1.0 — corrected)** | **1,100** |
| Vibration | 11,700 | | Vibration | 11,700 |
| Impact | 2,400 | | Impact | 2,400 |
| Instrumentation | 2,700 | | Instrumentation | 2,700 |
| Subtotal | **26,200** | | Subtotal | **27,700** |
| Contingency 15 % | 3,900 | | Contingency 15 % | 4,155 |
| **TOTAL** | **≈ 30,100** | | **TOTAL** | **≈ 31,855** |
Above the $30k top of the agreed band by ~$100 — i.e. on the line. Two ways to **Authoritative costing is now the BOM workbook**, not this table:
come back inside if needed: `2026-09-17_Drogheda_HALT-Rig_BOM_v1.0.xlsx`. The v1.0 draft understated the
thermal stage by $400 (arithmetic) and carried the safety kit at zero.
**$1,855 above the $30k top of the agreed band.** Three ways to come back inside:
- Drop the ADXL1002 and accept clipped shock peaks on the ADXL355 (−700). Not - Drop the ADXL1002 and accept clipped shock peaks on the ADXL355 (−700). Not
recommended; the shock channel is the one measurement we cannot fake. recommended; the shock channel is the one measurement we cannot fake.
@ -517,4 +521,5 @@ State this plainly in any client-facing use of the results.
- `03-Architecture-Hardware/2026-08-24_Drogheda_EinarBoard-v6_GNSS-4G-Integration_Design-Brief_v1.0.md` - `03-Architecture-Hardware/2026-08-24_Drogheda_EinarBoard-v6_GNSS-4G-Integration_Design-Brief_v1.0.md`
- `06-Testing-Validation/RCA-2026-06-field-failures.md` - `06-Testing-Validation/RCA-2026-06-field-failures.md`
- `06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md` - `06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md`
- Companion: `2026-09-17_Drogheda_HALT-Rig_Lista-Compras_v1.0.md` (shop purchasing list) - Companion: `2026-09-17_Drogheda_HALT-Rig_BOM_v1.0.xlsx` (**authoritative BOM** — buy from this)
- Companion: `2026-09-17_Drogheda_HALT-Rig_Lista-Compras_ES_v1.0.md` (narrative purchasing notes)

View File

@ -53,7 +53,7 @@ si el módulo ya está asignado.
| Ítem | Notas | | Ítem | Notas |
|---|---| |---|---|
| Gabinete HBOX con panel perforado (GX16-5, 3 × SMA, RJ45, prensaestopas) | según el diseño mecánico vigente | | Gabinete HBOX con panel perforado (GX16-5, 3 × SMA, RJ45, prensaestopas) | según el diseño mecánico vigente |
| EinarBoard **V5-NN** aprobada, con firmware de bring-up **0.2.1 o superior** | ver acta de tarjeta | | EinarBoard **V5-NN** aprobada, con firmware de bring-up **0.5.0 o superior** | ver acta de tarjeta |
| simpleRTK2B Pro **ARD-NNN** y módem 4G NTRIP Master **RTK-NNNN** aprobados e integrados | con sus bolsas | | simpleRTK2B Pro **ARD-NNN** y módem 4G NTRIP Master **RTK-NNNN** aprobados e integrados | con sus bolsas |
| Fuente **Mean Well SD-15B-05** (24 V → 5 V) | va dentro del HBOX | | Fuente **Mean Well SD-15B-05** (24 V → 5 V) | va dentro del HBOX |
| Pack de batería **1S4P** con NTC (3 hilos → P4) | conectar al final | | Pack de batería **1S4P** con NTC (3 hilos → P4) | conectar al final |

View File

@ -0,0 +1,77 @@
# HBOX v5 — Prueba final de unidad ensamblada con firmware 0.5.0 (field-minimum + telemetría)
**Alcance:** unidad completa (EinarBoard V5 + ArduSimple + módem 4G + batería + antenas) dentro del HBOX, antes de embarcar.
**Firmware:** `hbox-v5-bringup_0.5.0.bin` (SHA-256 `98656ddc…`) — descarga en <https://drogheda.helgen.online/descargas/>.
**Duración:** ~45 min por unidad (P1–P6). Registrar todo en el acta de ensamble (`HBOX5-Exx-Axxx-Rxxxx`).
!!! warning "Lo que 0.5.0 NO hace"
**No carga la batería** (cargador apagado). El paquete es de un solo uso: sostiene la unidad cuando se va el 5 V del vehículo
hasta 3.40 V y después la unidad solo funciona con alimentación del vehículo. Las unidades regresan a laptop (DFU en J11, 2 min)
cuando salga el firmware de producción. Anotar en el acta: *«fw 0.5.0-fm, cargador OFF»*.
## 0. Preparación
- Consola: cable USB-C en **J11**, PuTTY/CoolTerm **115200**. Cada línea es `STAT`, `EVT` o `$PHLG`; teclear `l` para la leyenda.
- Fuente: **24 V** en P1 (entrada + ignición) a través del arnés GX16 real; el SD-15B interno da el 5 V. Batería en P4. NTC en P12 si la unidad lo lleva.
- Antenas GNSS y LTE conectadas; SIM instalada; módem en su socket.
- Guardar el log completo de la consola: `HBOX5-Exx-Axxx-Rxxxx_prueba-final.txt` (adjuntarlo al acta).
## P1 — Arranque autónomo (2 min)
Energizar 24 V (con ignición) y **no tocar la consola**.
| Esperado | Si falla |
|---|---|
| Banner `hbox-v5-bringup 0.5.0` · `modo=AUTO` · `inputs at boot: v5=5.2–5.4V(ok) ign=ON` | otra versión → re-flashear; `ign=OFF` → arnés pin 3 / divisor 22k-10k |
| `---- RESULT: 12 PASS / 0 FAIL ----` · `>>> BOARD OK` | cualquier `[FAIL]` → tarjeta a revisión, no embarcar |
| `EVT … STACK ON reason=auto` **sin teclear nada** (≈10 s tras el banner) | no enciende → `STAT` muestra `v5=` bajo 4.5 o `modo=MAN` (teclear `A`) |
| `EVT … NMEA primera trama` < 3 s después · `EVT FAN ON (vehiculo: 5V+ign)` | sin NMEA → ArduSimple no arranca: medir SW_5V (MOD1 pin 5) ≈ 5 V |
| LED RGB **azul** (etapa ON sin RTK) o **verde** (RTK); gauge DB1–DB4 según `vbat` | RGB rojo con `stack=ON` → PCF8574 / cableado LEDs |
## P2 — Riel y módem (10 min)
Dejar la unidad 10 min encendida con el módem registrándose (LEDs del módem / la unidad aparece en el servidor).
| Esperado | Si falla |
|---|---|
| `STAT … v5=5.2x–5.3x(ok)` **todo el tiempo**; nunca `(BAJO)` ni `EVT V5 BAJO` | `BAJO` → el riel cae con la ráfaga LTE: SD-15B ajustado a ~5.3 V en P2 (memo 24-Jul, PFI LTC4040) |
| `tbat`/`tair`/`tmcu` estables (< 45 °C en banco) · `i2cerr=0` | `i2cerr` subiendo → bus I²C / soldadura U3/U4/U13 |
| `$PHLG,0.5.0-fm,RUN,…` cada 10 s, `rec=0`, sin `LIMP` | `rec` > 0 sin causa → NMEA intermitente: revisar MOD1 / UART1 F9P |
| **Modo B:** ≈10 s tras la primera NMEA, `EVT MODOB ON`; luego `STAT … modoB=ON relay=` (sube cientos/s) `phlg_aire=` (+1 cada 30 s) | `modoB=off` permanente → sin NMEA en PA3 o `B` bloqueado; `relay=0` con `modoB=ON` → K1 / PA10 |
| **Servidor:** en ≤ 2 min la unidad `H00xx` muestra la columna **Salud** (fw `0.5.0-fm`, vbat, temperaturas) y sigue reportando posición 1 Hz | posición sí pero sin Salud → el módem no reenvía la `$PHLG`: revisar `$$$AS+` (modo transparente) |
## P3 — Respaldo de batería (6 min) — **la prueba que nunca se había hecho en v5**
Con la etapa ON: **desconectar el 24 V** (se va el 5 V del SD-15B). Esperar 5 min. Reconectar.
| Esperado | Si falla |
|---|---|
| `EVT V5 PERDIDO` → `EVT BACKUP inicio vbat=4.0x` (la etapa **sigue ON**) · RGB **amarillo** | la etapa se apaga / la tarjeta se reinicia (`reset=POR`) → el LTC4040 no sostiene: medir MAIN5V (C32) durante el corte, esperado 4.79 V |
| `STAT … stack=ON backup=Ns nmea=` **sigue contando** 5 min · `fan` según termostato (normalmente OFF) | `nmea` se detiene → SW_BAT/L6 (pista 0.3 mm, auditoría EMC) o paquete flojo en P4 |
| al reconectar: `EVT V5 PRESENTE` → `EVT BACKUP fin dur≈300s nmea_durante=N … SOSTUVO` | — |
## P4 — Cielo abierto: primer RTK (10 min)
Con antena GNSS con cielo despejado y base activa (`$$$AS+` configurado):
| Esperado | Si falla |
|---|---|
| `EVT GGA fix … -> RTK FLOAT(5)` y luego `-> RTK FIX(4)`; `STAT … gga=RTK_FIX sats≥10 hdop<1.5` · RGB **verde** | se queda en `GPS(1)`: correcciones no llegan → módem/NTRIP (`$$$AS+`), no el F9P |
| `$PHLG … RUN,OK,4,…` | `link=DEGR` permanente = NMEA sí, RTK no |
## P5 — Recuperación de enlace (4 min, solo 1 unidad de muestra por lote)
Con la etapa ON y > 90 s de encendida: **retirar el ArduSimple del socket** (o su UART1) y cronometrar.
| Esperado | Si falla |
|---|---|
| `EVT NMEA PERDIDO >5 s` → a los 60 s `EVT RECOVERY #1 sin NMEA 60s -> ciclo de etapa 5 s` → `STACK OFF reason=no_nmea` → 5 s → `STACK ON reason=recovery` · RGB **magenta** | no cicla → `modo=MAN` o < 90 s de gracia |
| Reinsertar el ArduSimple → `NMEA primera trama`; `STAT … rec=1` | — |
## P6 — Apagado y acta (2 min)
- Quitar ignición: `EVT IGN OFF`, `EVT FAN OFF (bateria: termostato)`; la etapa sigue ON mientras haya 5 V (el SD-15B sigue con 24 V).
- Quitar 24 V: si la batería está, entra `BACKUP` (P3); dejarla hasta `SLEEP` **no** es necesario — reconectar y apagar con `P`.
- Guardar el log. En el acta: versión (`0.5.0-fm`), `uid=` del banner, resultado P1–P5, `vbat` final, y la nota *cargador OFF*.
## Lectura rápida del LED RGB (para el técnico de campo)
| Color | Significado |
|---|---|
| **verde** | etapa ON, RTK fix |
| **azul** | etapa ON, NMEA sí, sin RTK (normal bajo techo / al arrancar) |
| **magenta** | etapa ON pero el F9P no habla (revisar ArduSimple) |
| **amarillo** | funcionando desde la batería (sin 5 V del vehículo) |
| **rojo** | etapa OFF (sin 5 V, batería < 3.40 V, > 60 °C, o apagada por operador) |

@ -1 +1 @@
Subproject commit 86af91fe4bc993e536b8b3a060187d1d3f72e40d Subproject commit caee07fde9ab9c807356806bb2f22a4a169c9678