hbox-docs/docs/descargas/index.md

168 lines
18 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: "Descargas"
tags: [project-drogheda, hbox, descargas, firmware, v3, v4, v5, modem, zed-f9p]
date: 2026-09-27
project: Project Drogheda
author: Helgen Technologies
version: "1.9"
---
# Descargas
| Qué | Qué se le carga | Cómo | Sección |
|---|---|---|---|
| Tarjeta HBOX (Blackpill / EinarBoard) | Firmware `.bin` | DFU por USB | [Firmware](#firmware-del-hbox-que-binario-va-en-que-tarjeta) |
| Módem 4G NTRIP Master | Parámetros `$$$AS+…` | Terminal serie por el USB XBEE | [Módem 4G](#parametros-del-modem-4g-ntrip-master) |
| simpleRTK2B Pro (ZED-F9P) | Configuración u-center y firmware u-blox | u-center por el USB POWER+GPS | [ZED-F9P](#firmware-y-configuracion-del-simplertk2b-pro-zed-f9p) |
Cada carga se registra en el [acta de reflasheo](../formularios/reflasheo.html) y queda en el [expediente](../unidad.html) con las capturas de antes y después.
## Verifica el SHA-256
Antes de flashear. Un binario incompleto o de otra tarjeta puede dejarla inservible.
```bash
shasum -a 256 archivo.bin # macOS / Linux (o sha256sum)
certutil -hashfile archivo.bin SHA256 # Windows (cmd)
Get-FileHash .\archivo.bin -Algorithm SHA256 # Windows (PowerShell)
```
Debe coincidir carácter por carácter con [`SHA256SUMS.txt`](SHA256SUMS.txt). Si no coincide, descarga otra vez; si sigue sin coincidir, no lo uses y avisa.
## Firmware del HBOX — qué binario va en qué tarjeta
Un binario por tarjeta. El nombre lleva la tarjeta y eso manda; el número de versión no dice nada de la tarjeta (`0.4.0` no es "para V4": es una versión vieja del firmware de V5).
| Tarjeta | MCU | Código fuente | Binario vigente | Estado |
|---|---|---|---|---|
| V3 — EinarBoard 1.0, 3 unidades en campo ([manual](../manuales/manual-tarjeta-V3.md)) | Blackpill en zócalo (F411CE) | `blackpillrtkcode_v4` (4.0.0) | [`hbox-tarjetaV3_4.0.0.bin`](hbox-tarjetaV3_4.0.0.bin) · 64 352 B · `a68a87ff…` | Compilado 19-sep, sin prueba de banco |
| V4 — `hbox-watchdog-v4` ([manual](../manuales/manual-tarjeta-V4.md)) | Blackpill + PCF8574 · W5500 · SC16IS752 | `hbox_v5_bringup` + `board_v4.h` (`-DHBOX_BOARD_V4`) | [`hbox-tarjetaV4_0.6.0.bin`](hbox-tarjetaV4_0.6.0.bin) · 88 556 B · `1458470bbdd95b49…` | Compilado 27-sep, sin prueba de banco. DFU solo con USB; puente U13-P7 → SW4G1 opcional ([procedimiento V4](../procedimientos/v4-prueba-fw-0.5.6.md)) |
| V5 — `hbox-watchdog-v5`, lote de 15 ([manual](../manuales/manual-tarjeta-V5.md)) | STM32F411RET6 soldado | `hbox_v5_bringup` (0.6.0) | [`hbox-v5-bringup_0.6.0.bin`](hbox-v5-bringup_0.6.0.bin) · `8a0ee4839763eae8…` | Vigente desde 27-sep, sin prueba de banco. Uso: [prueba y flasheo §5](../procedimientos/v5-prueba-y-flasheo.md) y [ensamble §5](../procedimientos/v5-ensamble.md) |
0.6.0 CAMPO (V4 y V5): cargador con gobernador (hasta 0.5.9 estaba apagado, paquete de un solo uso); en batería la etapa y el módem siguen encendidos y reportando igual que en 24 V (la V5.5 no arranca el módem en frío sobre el boost, ver [módem en batería](../procedimientos/prueba-bateria-modem.md#3-hallazgos-2527-sep)); ningún ciclo de etapa en batería; corte a 3.40 V; reset del MCU al volver el 5 V tras ≥ 10 s de respaldo; vigilancia del módem solo diagnóstica (`modem=` en `STAT`); teclas `C`/`M`/`R`. 0.5.1 fue la última embarcada antes de 0.6.0.
!!! warning "No se cruzan"
- `hbox-v5-bringup_…` (F411RE soldado) en una V3 o V4: otro MCU y otro mapa de pines. La V4 usa `hbox-tarjetaV4_…`.
- `hbox-tarjetaV3_…` o `blackpillrtkcode_v3` en una V4 o V5: manejan los LEDs de carga en PB12–PB15, que ahí son el SPI del W5500.
- Nada de `superseded/`: se guarda solo por trazabilidad.
- Nada que no esté publicado aquí con su SHA-256. Los `.bin` de V3 y V4 no viven en el repositorio; se compilan, se prueban en banco y se publican ([reflasheo §5](../procedimientos/reflasheo-unidades.md#5-para-ingenieria-generar-y-publicar-un-binario)).
Las tres tarjetas mandan la misma trama: `$PHLG` de 29 campos cada 30 s y un `$PHEV` por cambio de estado, en banda por el módem (Modo B). El monitor la parsea igual (`retranslator.py`: 20 campos base + 4 de v3 + 5 de 0.5.1, y `$PHEV`) y las tres se ven igual en Salud.
!!! warning "V3 4.0.0: todavía no en unidades de campo"
Compila y pasa el simulador, pero no ha corrido en una EinarBoard 1.0 real. Solo en la mesa de ingeniería hasta que se pruebe en banco (RTK-003 o RTK-006) y se quite este aviso. 4.0.0 activa Modo B por omisión (el MCU queda en línea con el enlace de correcciones), así que la primera prueba es en par: el binario publicado y uno sin Modo B sobre la misma unidad. Si el fix RTK cae al energizar K1, o `v5min` se hunde en ese instante, sospecha de la bobina de K1 llevando el riel al PFI del LTC4040.
```bash
arduino-cli compile --fqbn "$FQBN" --build-property "compiler.cpp.extra_flags=-DENABLE_MODOB=0" \
--output-dir build/v4-sinB blackpillrtkcode_v4
```
### Gobernador de carga (0.6.0)
No se podía encender el cargador sin más: en V5.5/V4 `RS1` 8 mΩ → límite de entrada del LTC4040 ≈ 3.1 A (más que los 3 A del SD-15B) y `R50` 825 Ω → 2.4 A de carga; paquete vacío + etapa + ráfaga LTE hunden el riel al PFI 4.60 V y la unidad entra en bucle (incidente de flota 10-ago). H0008 amaneció a 3.50 V tras una noche en batería y seguía "sin cargar" en 24 V.
El gobernador carga solo con etapa ON en 24 V; nunca en los primeros 120 s tras boot o STACK ON; arranca tras 30 s de riel ≥ 5.05 V; corta al instante bajo 4.90 V con enfriamiento de 60 s a 30 min; inhibe con celda ≥ 45 °C; rearma el safety timer del LTC4040. En fuente débil carga por ciclos: más lento, pero el módem nunca paga. Eventos `CHG_ON/CHG_SHED/CHG_OFF/CHG_HOT/CHG_COOL/CHG_PULSE`; `STAT` → `carga=FASE … ltc=CARGANDO|no cortes=`; tecla `C` = veto. El monitor muestra 🔌 CARGANDO (columna Energía) solo con `chg=1` en `$PHLG`. `PHLG_FW` = `0.6.0` (sin "-fm"). Prueba de banco: [módem en batería §1](../procedimientos/prueba-bateria-modem.md#1-cargador-060). Si corta sin parar: V5.6 (`RS1` 10 mΩ, `R50` 1.5 kΩ) o fuente de 4 A.
### Monitor con builds de ciclo
Builds con ciclo o ahorro en batería (0.5.2–0.5.8, o compilados con `-DENABLE_DUTY=1`) apagan el módem entre reportes: ~120–180 s cada 10 min con `pwr=BATT` y `DUTY_SLEEP next=<s>`. Para que ese silencio no cuente como caída ni dispare el correo del notifier, `retranslator.py` debe llevar el soporte `DUTY` (24-sep): despliega primero el servidor, después flashea. 0.5.9+ y la V3 4.0.0 reportan continuo en batería (el monitor muestra ⚡ sin badge de silencio).
### V4 = V5 en un Blackpill
Cotejada pad por pad (`hbox-watchdog-v4.kicad_pcb` contra `board_v5.h`): mismas redes, pines, direcciones I²C (PCF8574 `0x20`, SHT40 `0x44`, TMP102 `0x48`, SC16IS752 `0x4D`), W5500 en SPI2 y K1 en `PB5`. Única diferencia: `ETH_INT` en `PB2` (J1.16) en vez de `PC0`. Se flashea por DFU solo con USB (sin 24 V, batería desconectada); ese USB alimenta el 5 V y el W5500, cuya `INTn` llega a `PB2` = `BOOT1`. Sin `STM32 BOOTLOADER`, se flashea la Blackpill fuera del zócalo ([procedimiento V4](../procedimientos/v4-prueba-fw-0.5.6.md)).
### Flasheo y consola (V5)
DFU por J11 (mantén SW2, pulsa y suelta SW1, suelta SW2):
```bash
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0.bin
```
o STM32CubeProgrammer → USB → Connect → Download en `0x08000000`. Tarjetas con cualquier versión anterior se reflashean igual. La primera línea tras reset dice la versión (`hbox-v5-bringup 0.6.0 built …`); si `STAT` no termina en `stack=…`, la tarjeta sigue con 0.1.1.
Consola: `EVT` en cada cambio (etapa, ignición, 5 V, cargador, NMEA, fix), `STAT` cada 5 s y `$PHLG` cada 10 s. `l` = leyenda, `v` = puntos de medición de la etapa RTK, `P` y luego `Y` = encender la etapa (requiere 5 V en P2).
El nombre "bring-up" viene de 0.1.x, que solo probaba la tarjeta; desde 0.4.0 es el firmware de campo de la V5. Compilación y cambios: [README del firmware](hbox-v5-bringup-README.md).
### Versiones superadas
No se flashean. Sirven para identificar lo que trae una tarjeta vieja o para volver atrás si una prueba de banco lo pide.
| Archivo | Por qué se retiró |
|---|---|
| [`superseded/hbox-tarjetaV3_3.0.4.bin`](superseded/hbox-tarjetaV3_3.0.4.bin) | Lógica de campo (3.0.3) sin telemetría en banda: el monitor no ve Salud. Sustituida por 4.0.0. |
| [`superseded/hbox-v5-bringup_0.5.9.bin`](superseded/hbox-v5-bringup_0.5.9.bin) · [`superseded/hbox-tarjetaV4_0.5.9.bin`](superseded/hbox-tarjetaV4_0.5.9.bin) | Sin cargador (paquete de un solo uso). 0.6.0 añade el gobernador y nada más. |
| [`superseded/hbox-v5-bringup_0.5.8.bin`](superseded/hbox-v5-bringup_0.5.8.bin) · [`superseded/hbox-tarjetaV4_0.5.8.bin`](superseded/hbox-tarjetaV4_0.5.8.bin) | No usar. Recovery activo en batería: el silencio del ahorro provocaba "RTK perdido" y un ciclo de etapa que dejaba el módem oscuro hasta un reset (noche 26/27-sep). |
| [`superseded/hbox-v5-bringup_0.5.7.bin`](superseded/hbox-v5-bringup_0.5.7.bin) · [`superseded/hbox-tarjetaV4_0.5.7.bin`](superseded/hbox-tarjetaV4_0.5.7.bin) | Despertar de batería por reset del MCU: en banco no enciende el módem en batería (brown-out del boost); solo servía al volver el 5 V. |
| [`superseded/hbox-v5-bringup_0.5.6.bin`](superseded/hbox-v5-bringup_0.5.6.bin) · [`superseded/hbox-tarjetaV4_0.5.6.bin`](superseded/hbox-tarjetaV4_0.5.6.bin) | Pulso `MODEM_RST` por U13-P7 (solo con puente); sin puente el módem no encendía en las ventanas y un reset en batería dejaba la etapa apagada. |
| [`superseded/hbox-v5-bringup_0.5.5.bin`](superseded/hbox-v5-bringup_0.5.5.bin) · [`superseded/hbox-tarjetaV4_0.5.5.bin`](superseded/hbox-tarjetaV4_0.5.5.bin) | No usar. UART del GNSS en alta impedancia no bastó: `3V3_MODEM` queda en ~1 V y el módem no rearranca. |
| [`superseded/hbox-v5-bringup_0.5.4.bin`](superseded/hbox-v5-bringup_0.5.4.bin) · [`superseded/hbox-tarjetaV4_0.5.4.bin`](superseded/hbox-tarjetaV4_0.5.4.bin) | No usar. El ciclo de etapa al volver el 5 V no apagaba el módem (el UART del GNSS sostenía su riel): no rearrancaba sin reset. |
| [`superseded/hbox-v5-bringup_0.5.3.bin`](superseded/hbox-v5-bringup_0.5.3.bin) · [`superseded/hbox-tarjetaV4_0.5.3.bin`](superseded/hbox-tarjetaV4_0.5.3.bin) | Ventana de 2 min; al volver el 5 V el módem podía quedar en latch hasta un reset. |
| [`superseded/hbox-v5-bringup_0.5.2.bin`](superseded/hbox-v5-bringup_0.5.2.bin) · [`superseded/hbox-tarjetaV4_0.5.2.bin`](superseded/hbox-tarjetaV4_0.5.2.bin) | Primer reporte cada 10 min en batería; ventana de 90 s insuficiente para entregar la posición. |
| [`superseded/hbox-v5-bringup_0.5.1.bin`](superseded/hbox-v5-bringup_0.5.1.bin) · [`superseded/hbox-tarjetaV4_0.5.1.bin`](superseded/hbox-tarjetaV4_0.5.1.bin) | Última de campo antes del ciclo de 10 min (en batería dejaba la etapa encendida hasta vaciar el paquete). |
| [`superseded/hbox-v5-bringup_0.4.0.bin`](superseded/hbox-v5-bringup_0.4.0.bin) | Sin `$PHLG` en banda. Sustituida por 0.5.1. |
??? note "Historial por versión, 0.4.0 → 0.6.0"
- Desde 0.4.0: AUTO de fábrica (la etapa RTK enciende sola 3 s después de ver 5 V en P2); watchdog 16 s; ventilador (política v3.0.3); recuperación de enlace (ciclo de etapa si el F9P calla 60 s; LIMP tras 3 ciclos); LEDs de carga y color de estado; corte térmico 60 °C; corte de batería 3.40 V. Anota la versión en el acta.
- 0.6.0 CAMPO: 0.5.9 + gobernador de carga (arriba).
- 0.5.9 CAMPO: sin ciclo ni ahorro en batería (`ENABLE_DUTY 0`, `ENABLE_BATT_SAVER 0`); ningún ciclo de etapa en batería (`RECOVERY_ABORT`); reset del MCU al volver el 5 V tras ≥ 10 s; un reset en batería deja la etapa apagada hasta que vuelva el 5 V; vigilancia del módem: `STAT` con `rtcm_age= sta= rtcm_last= sag5= sagb= flat= modem=vivo|SOSPECHOSO|?`, eventos `MODEM_DARK`/`MODEM_BACK`/`MODEM_WATCH`. Con esos números se calibra 0.5.10.
- 0.5.8 CAMPO (retirada): nunca apaga el módem en batería (un módem ya encendido aguanta el paso de 24 V a batería); ráfaga de posición de ~8 s cada 10 min y `$PHLG` cada 3 min (`SAVER_ON`, `DUTY_SLEEP`/`DUTY_WAKE`, `ahorro=`); autonomía estimada ~30–35 h; recovery aún activo en batería.
- 0.5.7: cada despertar de batería (≥ 10 min tras la última ventana) y cada regreso del 5 V es un reset del MCU (`NVIC_SystemReset`, igual que P10): arranque en ~4 s; se pierden uptime y contadores. Tecla `R`. Un reset por SW1/P10 en batería abre ventana en 60 s y `P` se acepta en batería con vbat ≥ 3.60 V.
- 0.5.6: 3 s tras cada encendido de etapa, pulso de 500 ms al reset del módem por U13 P7 (`MODEM_RST`, `mrst=`, tecla `M`); requiere el puente U13 pin 12 → diodo BAT54 → SW4G1 pad 1. Con la etapa apagada PA9/PA10 en alta impedancia sin pull-up.
- 0.5.5: con la etapa apagada el UART del GNSS queda en alta impedancia (PA2 sostenía el riel del simpleRTK2B y, por él, el del módem); al volver el 5 V la etapa se cicla 10 s (`PWR_RETURN_CYCLE`).
- 0.5.2–0.5.7: en batería, ventana de reporte de 120–180 s cada 10 min (`DUTY_WAKE` / `DUTY_SLEEP next=<s>` / `DUTY_SKIP` / `DUTY_END`), ventilador y LEDs apagados en reposo; protecciones de batería (< 3.40 V) y temperatura (≥ 60 °C) por encima del ciclo. El MCU sigue despierto; el ahorro es la etapa (~2.3 W). Retirado en 0.5.8 para V5.5/V4; queda con `-DENABLE_DUTY=1`.
- 0.5.1: `$PHLG` suma `up_s`, `pwr` (VEH/BATT), `v5min`/`vbat_min` (mínimos de la ventana de 30 s; cazan hundimientos LTE de 50–200 ms) y `bkp_n`; cada cambio de estado sale como `$PHEV,<up_s>,<CODIGO>,<detalle>`. Los analizadores viejos ignoran los campos extra. El 18-sep se reportó que la etapa no encendía; resuelto el 19-sep: 0.5.1 ensambla, enciende y reporta completo.
- 0.5.0: Modo B. 10 s después de que habla el F9P, el MCU conmuta K1 y `$PHLG` viaja cada 30 s con el NMEA (`STAT … modoB=ON relay=… phlg_aire=…`, sube 1 cada 30 s). Si el MCU falla, K1 vuelve al paso directo. `B` lo bloquea para pruebas. Sin 5 V la etapa sigue desde la batería (`EVT BACKUP inicio` / `BACKUP fin` con duración y tramas); se apaga con vbat < 3.40 V o > 50 °C. `A` regresa a MANUAL.
## Parámetros del módem 4G NTRIP Master
Se envían por el USB XBEE del simpleRTK2B a 115200, línea por línea (solo las que empiezan con `$$$AS+`); cada una contesta `OK`.
[`4G_NTRIP_HelgenSRV-NMEA.example.txt`](4G_NTRIP_HelgenSRV-NMEA.example.txt): plantilla con todas las claves y los valores sensibles en blanco.
| Clave | Configura | En la plantilla |
|---|---|---|
| `AS+I=1111` | Entra a modo configuración | Fijo |
| `AS+A` · `AS+Q` · `AS+q` | APN: host, usuario, contraseña | `<APN_HOST>` `<APN_USER>` `<APN_PASS>` |
| `AS+S` · `AS+P` | Caster NTRIP: host y puerto | `<NTRIP_CASTER_HOST>` `<NTRIP_CASTER_PORT>` |
| `AS+U` · `AS+M` | Caster: `usuario:contraseña` y mountpoint | `<NTRIP_USER>:<NTRIP_PASS>` `<NTRIP_MOUNTPOINT>` |
| `AS+B=115200` | Velocidad hacia el F9P | Fijo |
| `AS+r` · `AS+h` · `AS+k=2` | Servidor secundario (monitor Helgen): IP, puerto, modo | `<SECONDARY_SERVER_IP>` `<SECONDARY_SERVER_PORT>` |
| `AS+K` | ID de estación = `H00xx` de la unidad; se anota en el acta | `<STATION_ID>` |
!!! warning "Credenciales"
El archivo con los valores reales (usuario y contraseña del caster y de la APN) no está en el sitio ni en el repositorio: sin secretos en el repo, nunca. Pídelo a ingeniería para la unidad que vas a configurar; llega por canal directo, se usa y no se guarda ni se reenvía. Nunca lo escribas en un acta.
## Firmware y configuración del simpleRTK2B Pro (ZED-F9P)
| Qué | Origen | Estado |
|---|---|---|
| Firmware del ZED-F9P | Estándar de u-blox, serie HPG: [u-blox → ZED-F9P → Documentation & resources → Firmware Update](https://www.u-blox.com/en/product/zed-f9p-module). Se carga con u-center (solo Windows) a 115200 | Disponible en u-blox |
| Configuración Helgen (`.txt` de u-center) | Nuestra: UART1 a 115200 (lo que lee la tarjeta), UART2 a la velocidad del módem, mensajes NMEA | Pendiente de publicar |
!!! warning "No actualices el firmware del F9P sin razón concreta"
Las correcciones llegan por el módem, no por el GNSS, y en las capturas de junio los receptores estaban sanos. Actualizar es solo-Windows, puede dejar el receptor a medias y borra la configuración. Anota la versión (u-center → View → Messages → UBX-MON-VER) y déjala. Solo se actualiza por un arreglo de u-blox a un problema que estemos viendo, en banco, nunca en una unidad instalada.
Leer o cargar la configuración: u-center → Tools → Receiver Configuration. Después, guarda en FLASH y reconecta para confirmar que sobrevive al reinicio; una configuración solo en RAM se pierde al primer corte (así se perdió tiempo en junio).
## Publicar un firmware nuevo
Lista y comandos: [reflasheo §5](../procedimientos/reflasheo-unidades.md#5-para-ingenieria-generar-y-publicar-un-binario).
## Herramientas
- STM32CubeProgrammer (Windows/macOS/Linux): https://www.st.com/en/development-tools/stm32cubeprog.html
- dfu-util (macOS: `brew install dfu-util`; Linux: `apt install dfu-util`)
- Terminal serie: CoolTerm, `screen /dev/tty.usbmodem* 115200` o el monitor serie de Arduino IDE
## Historial de revisiones
| Versión | Fecha | Cambios |
|---|---|---|
| 1.x | 2026-09-19 → 2026-09-27 | Cada binario nuevo (0.4.0 → 0.6.0) añadió su nota. |
| 1.8 | 2026-09-29 | Historial por versión en cajas plegables; enlaces a manuales. |
| 1.9 | 2026-09-29 | Edición breve. Una sola tabla de binarios vigentes; verificación SHA-256 con encabezado propio; tabla de parámetros del módem completa (antes en la configuración de la unidad); lista de publicación → reflasheo §5. |
Versiones anteriores en git.