auto-sync 2026-09-24 18:00

This commit is contained in:
Leopoldo Rodríguez 2026-09-24 18:00:15 -06:00
parent dd04624a95
commit d62026374c
12 changed files with 155 additions and 52 deletions

View File

@ -1,5 +1,7 @@
a68a87ff1f6b34a8284e9e5e32c95da7bb8d8adc071c5fd64412a3e744e46b28 hbox-tarjetaV3_4.0.0.bin
4528187f9d675bca8114583d44eccf4d2149d847f7e5fc402631d8811ee39282 hbox-tarjetaV4_0.5.1.bin
e1f351084e803306c376989b284ca0f9f9f1a3445e59494f8a5ff7a9652ad44c hbox-v5-bringup_0.5.1.bin
fa2b7554099b332c70ab18cde24b30a4f0a46ac01987466e491c69b308783a5a hbox-tarjetaV4_0.5.2.bin
a9b0d6c1c640ebc9a132236ca465cad04e8eed99962b7dc6024b6ee8b765d2d6 hbox-v5-bringup_0.5.2.bin
035ebeb348461765f099341603a9e99b94512f8477509efb78aa7caf953f4c2f superseded/hbox-tarjetaV3_3.0.4.bin
4528187f9d675bca8114583d44eccf4d2149d847f7e5fc402631d8811ee39282 superseded/hbox-tarjetaV4_0.5.1.bin
a8de74b3d7768e9d5656ae0bff05475445c0cd2599ecfdc4ab081e517ed3d6ef superseded/hbox-v5-bringup_0.4.0.bin
e1f351084e803306c376989b284ca0f9f9f1a3445e59494f8a5ff7a9652ad44c superseded/hbox-v5-bringup_0.5.1.bin

Binary file not shown.

Binary file not shown.

View File

@ -29,14 +29,21 @@ Cada carga se registra en el **[acta de reflasheo](../formularios/reflasheo.html
| Tarjeta | MCU | Código fuente | **Binario vigente** | Estado |
|---|---|---|---|---|
| **V3** — EinarBoard 1.0, las 3 unidades en campo | Blackpill en zócalo (F411CE) | `blackpillrtkcode_v4` (4.0.0) | [`hbox-tarjetaV3_4.0.0.bin`](hbox-tarjetaV3_4.0.0.bin) | ⚠ compilado, **sin prueba de banco** |
| **V4** — `hbox-watchdog-v4` | Blackpill en zócalo + PCF8574 · W5500 · SC16IS752 | `hbox_v5_bringup` + `board_v4.h` | [`hbox-tarjetaV4_0.5.1.bin`](hbox-tarjetaV4_0.5.1.bin) | ⚠ compilado 22-sep, **sin prueba de banco** |
| **V5** — `hbox-watchdog-v5`, lote de 15 | STM32F411RET6 soldado | `hbox_v5_bringup` (0.5.1) | [`hbox-v5-bringup_0.5.1.bin`](hbox-v5-bringup_0.5.1.bin) | ✅ **en despliegue** |
| **V4** — `hbox-watchdog-v4` | Blackpill en zócalo + PCF8574 · W5500 · SC16IS752 | `hbox_v5_bringup` + `board_v4.h` | [`hbox-tarjetaV4_0.5.2.bin`](hbox-tarjetaV4_0.5.2.bin) | ⚠ compilado 24-sep, **sin prueba de banco** |
| **V5** — `hbox-watchdog-v5`, lote de 15 | STM32F411RET6 soldado | `hbox_v5_bringup` (0.5.2) | [`hbox-v5-bringup_0.5.2.bin`](hbox-v5-bringup_0.5.2.bin) | ⚠ **vigente desde 24-sep** — reporte cada 10 min en batería; 0.5.1 fue la última en campo |
Los tres reportan al servidor **la misma trama**: `$PHLG` de 29 campos cada 30 s y un `$PHEV` por cada
cambio de estado, en banda por el módem (Modo B). Es exactamente lo que el monitor desplegado parsea hoy
(`retranslator.py`: 20 campos base + 4 de v3 + 5 de 0.5.1, y `$PHEV`), así que las tres tarjetas se ven
igual en la columna *Salud*.
!!! warning "0.5.2 (V4 y V5) cambia cómo se ve la unidad en el monitor cuando está en batería"
Con 0.5.2 la unidad **apaga el módem entre reportes** mientras está en batería: enciende ~90–180 s cada
10 min, manda posición y `$PHLG` con `pwr=BATT`, avisa `DUTY_SLEEP next=<s>` y se calla. Para que ese
silencio **no aparezca como desconexión** (ni dispare el correo del notifier, ni cuente como caída), el
`retranslator.py` del servidor debe llevar el soporte `DUTY` (24-sep). **Desplegar primero el servidor,
después flashear 0.5.2.** Con la V3 (4.0.0) no cambia nada: sigue reportando continuo en batería.
!!! note "V4 = la V5 en un Blackpill"
Cotejada pad por pad en `hbox-watchdog-v4.kicad_pcb` contra `board_v5.h`: mismas redes, mismos pines
del MCU, mismas direcciones I2C (PCF8574 `0x20`, SHT40 `0x44`, TMP102 `0x48`, SC16IS752 `0x4D`), mismo
@ -46,7 +53,7 @@ igual en la columna *Salud*.
para que el W5500 apagado no pueda sostener `BOOT1` en alto.
!!! danger "Lo que NO se puede cruzar"
- `hbox-v5-bringup_0.5.1.bin` (compilado para el F411RE soldado) en una **V3 o V4**: otro MCU y otro
- `hbox-v5-bringup_0.5.x.bin` (compilado para el F411RE soldado) en una **V3 o V4**: otro MCU y otro
mapa de pines. La V4 usa **su propio binario** `hbox-tarjetaV4_…`, compilado para Blackpill.
- `hbox-tarjetaV3_…` en una **V4**: maneja los LEDs de carga en PB12–PB15, que en la V4 son el SPI del W5500.
- Cualquier binario de la carpeta `superseded/`: se conservan solo por trazabilidad.
@ -58,42 +65,47 @@ No se flashean. Están para identificar lo que una tarjeta vieja pueda traer y p
| Archivo | Por qué se retiró |
|---|---|
| [`superseded/hbox-tarjetaV3_3.0.4.bin`](superseded/hbox-tarjetaV3_3.0.4.bin) | Misma lógica que las unidades en campo (3.0.3) pero **sin telemetría en banda**: el monitor no ve nada en *Salud*. Sustituida por 4.0.0. |
| [`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 versión de campo antes del reporte cada 10 min en batería (en batería dejaba la etapa encendida hasta vaciar el paquete). Sirve para volver atrás si 0.5.2 da problemas en banco. |
| [`superseded/hbox-v5-bringup_0.4.0.bin`](superseded/hbox-v5-bringup_0.4.0.bin) | Versión de V5 sin `$PHLG` en banda. Sustituida por 0.5.1. |
### Firmware de bring-up — EinarBoard v5
| Archivo | Versión | SHA-256 | Uso |
|---|---|---|---|
| [**hbox-v5-bringup_0.5.1.bin**](hbox-v5-bringup_0.5.1.bin) | **0.5.1** (2026-09-18) — **campo + Modo B / telemetría — EN PRUEBA** (reportado: etapa RTK no enciende) | `e1f351084e803306…` | Sección 5 del [procedimiento de prueba y flasheo v5](../procedimientos/v5-prueba-y-flasheo.md) y sección 5 del [ensamble](../procedimientos/v5-ensamble.md) (modo de banco `P` / `n`) |
| [**hbox-v5-bringup_0.5.2.bin**](hbox-v5-bringup_0.5.2.bin) | **0.5.2** (2026-09-24) — **campo + Modo B + reporte cada 10 min en batería** — ⚠ sin prueba de banco; requiere servidor con soporte `DUTY` | `a9b0d6c1c640ebc9…` | Sección 5 del [procedimiento de prueba y flasheo v5](../procedimientos/v5-prueba-y-flasheo.md) y sección 5 del [ensamble](../procedimientos/v5-ensamble.md) (modo de banco `P` / `n`) |
Flasheo por DFU en **J11** (mantener **SW2**, pulsar y soltar **SW1**, soltar SW2):
```bash
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.5.1.bin
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.5.2.bin
```
o con **STM32CubeProgrammer** → USB → Connect → Download del `.bin` en `0x08000000`.
!!! success "A/B 0.4.0 vs 0.5.1 — cerrado el 19-sep"
El 18-sep por la tarde se reportó que con 0.5.1 la etapa RTK no encendía. **Resuelto:** 0.5.1 ensambla,
enciende y reporta telemetría completa en el monitor desplegado. **Se embarca con 0.5.1.** `0.4.0`
enciende y reporta telemetría completa en el monitor desplegado. **Se embarcó con 0.5.1; desde el 24-sep la vigente es 0.5.2.** `0.4.0`
queda en `superseded/` solo como referencia.
!!! note "Tarjetas ya flasheadas con cualquier versión anterior"
Re-flashear con **0.5.1** por el mismo procedimiento DFU. **La primera línea de la consola tras reset dice la versión**
(`hbox-v5-bringup 0.5.1 built …`): si la línea `STAT` no termina en `stack=…`, la tarjeta sigue con 0.1.1.
Re-flashear con **0.5.2** por el mismo procedimiento DFU. **La primera línea de la consola tras reset dice la versión**
(`hbox-v5-bringup 0.5.2 built …`): si la línea `STAT` no termina en `stack=…`, la tarjeta sigue con 0.1.1.
!!! tip "Consola 0.5.1"
!!! tip "Consola 0.5.x"
Líneas `EVT` en cada cambio (stack, ignición, 5 V, cargador, NMEA, fix), `STAT` con nombres cada 5 s y `$PHLG` cada 10 s
(misma trama de salud que lee el servidor). Teclear `l` para la leyenda y `v` para los puntos de medición de la etapa RTK.
Para encender la etapa RTK: `P` y luego `Y` (requiere 5 V en P2).
!!! warning "0.5.1 = firmware de campo mínimo + telemetría y eventos en banda — AUTO de fábrica"
!!! warning "0.5.x = firmware de campo mínimo + telemetría y eventos en banda — AUTO de fábrica"
Desde 0.4.0 el modo AUTO es el **de fábrica**: la etapa RTK se enciende sola 3 s después de ver 5 V en P2 — no hace falta consola
ni teclear `A`. Incluye watchdog 16 s, ventilador (política v3.0.3), recuperación de enlace (ciclo de etapa si el F9P deja de
hablar 60 s; LIMP tras 3 ciclos), LEDs de carga y color de estado, corte térmico 60 °C y corte de batería 3.40 V.
**El cargador sigue APAGADO: el paquete es de un solo uso hasta el firmware de producción.** Anotarlo en el acta de la unidad.
**0.5.2 — batería:** con 5 V perdidos la etapa ya no queda encendida hasta vaciar el paquete: ventana de reporte de 90–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).
**0.5.1 — diagnóstico:** `$PHLG` lleva además `up_s`, `pwr` (VEH/BATT), `v5min`/`vbat_min` (mínimos de la ventana de 30 s)
y `bkp_n`; cada cambio de estado sale como `$PHEV,<up_s>,<CODIGO>,<detalle>` al servidor (misma línea de tiempo que los `EVT`).
@ -136,7 +148,7 @@ Es el firmware que gobierna la unidad en la máquina, distinto del de bring-up d
| Tarjeta | Archivo | Estado |
|---|---|---|
| **V3** — flota desplegada | [`hbox-tarjetaV3_4.0.0.bin`](hbox-tarjetaV3_4.0.0.bin) · 64 352 B · `a68a87ff…` | ⚠ compilado 19-sep, falta prueba de banco. El «4» es la versión del firmware, **no** la tarjeta |
| **V4** | [`hbox-tarjetaV4_0.5.1.bin`](hbox-tarjetaV4_0.5.1.bin) · 79 452 B · `4528187f9d675bca…` | ⚠ compilado 22-sep, falta prueba de banco. Es 0.5.1 para Blackpill (`-DHBOX_BOARD_V4`), DFU **solo con USB** |
| **V4** | [`hbox-tarjetaV4_0.5.2.bin`](hbox-tarjetaV4_0.5.2.bin) · 81 772 B · `fa2b7554099b332c…` | ⚠ compilado 24-sep, falta prueba de banco. Es 0.5.2 para Blackpill (`-DHBOX_BOARD_V4`), DFU **solo con USB** |
!!! danger "Mientras diga «pendiente», no hay binario aprobado"
No flashees una unidad V3 o V4 con un archivo que no esté publicado aquí con su SHA-256. Los

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Acta de recepción — HBOX</title>
<title>Acta de recepción e inspección — HBOX</title>
<link rel="stylesheet" href="acta.css">
</head>
<body>
@ -12,7 +12,11 @@
<script src="series.js"></script>
<script src="acta.js"></script>
<script>
const enciende = v => String(v.enciende || '').startsWith('Sí');
const enciende = v => String(v.enciende || '').startsWith('Sí');
const corto = v => String(v.continuidad || '').startsWith('Sí');
const conBat = v => !String(v.bateria_fisica || '').startsWith('La unidad no trae');
const batMala = v => ['Hinchada','Con manchas','Caliente'].some(t => String(v.bateria_fisica || '').startsWith(t));
const puedeEnergizar = v => !corto(v);
Acta.render({
tipo: 'recepcion',
@ -21,13 +25,15 @@ Acta.render({
nombres: { alan: 'Alán Basurto', daniel: 'Daniel Martínez', leo: 'Leo Rodríguez' },
unidades: window.SERIES,
etiquetaSerie: 'Unidad que se recibe',
titulo: 'Acta de recepción',
subtitulo: 'Helgen Technologies · se llena al abrir la caja, ANTES de entrar al puerto.',
titulo: 'Acta de recepción e inspección',
subtitulo: 'Helgen Technologies · una por cada caja, al abrirla, ANTES de entrar al puerto.',
textoOK: 'LISTA PARA ENTRAR',
intro: '<b>Para qué sirve.</b> Es la última revisión antes de que la unidad cruce la puerta del puerto, '
+ 'donde ya no se puede regresar por un cable. Se compara contra el <b>acta de envío</b>: mismo '
+ 'firmware, misma SIM, mismo contenido. Lo que no coincida, aquí se detecta. Historial de la unidad: '
+ 'elige la serie y mira sus visitas anteriores arriba.',
intro: '<b>Para qué sirve.</b> Es la última revisión antes de que la unidad cruce la puerta del puerto, donde ya '
+ 'no se puede regresar por un cable ni abrir la caja. Se hace <b>a cada unidad, sin excepción</b>: se compara '
+ 'contra el <b>acta de envío</b> (mismo firmware, misma SIM, mismo contenido), se busca daño de transporte y se '
+ 'comprueba con multímetro y fuente que la unidad enciende bien <b>antes</b> de que alguien la suba a una máquina. '
+ '<b>Kit:</b> fuente de 24 V (≥ 1 A, con límite de corriente si la tiene), multímetro, cable USB con datos, laptop. '
+ '<b>Orden obligatorio:</b> inspección → multímetro sin energía → energizar → prueba de vida.',
secciones: [
{ titulo: '0 · Qué llega y dónde',
@ -49,7 +55,7 @@ Acta.render({
] },
{ titulo: '2 · Contenido contra el acta de envío',
sub:'Abre el acta de envío de esta unidad (expediente) y compara punto por punto.',
sub:'Abre el acta de envío de esta unidad (expediente, arriba) y compara punto por punto.',
items: [
{ tipo:'check', clave:'c_unidad', req:true, txt:'Unidad HBOX presente, etiqueta legible, <b>la serie coincide</b> con la del envío.' },
{ tipo:'check', clave:'c_ant_gnss', txt:'Antena GNSS con cable.' },
@ -60,20 +66,69 @@ Acta.render({
{ tipo:'foto', clave:'f_contenido', req:true, etiqueta:'contenido', txt:'Todo el contenido desplegado.' },
] },
{ titulo: '3 · Prueba rápida de vida (5 minutos, en el taller)',
sub:'Con fuente de 24 V y las antenas conectadas. No hace falta cielo abierto para esto.',
{ titulo: '3 · Inspección física de la unidad — daño de transporte',
sub:'Con la tapa abierta y SIN energía. Lo que se busca: golpes, cosas sueltas y módulos que se salieron de su zócalo con la vibración.',
items: [
{ tipo:'radio', clave:'enciende', req:true, txt:'¿Enciende y el LED parpadea?',
opciones:['Sí','No — LED apagado','Enciende pero se apaga'] },
{ tipo:'texto', clave:'fw', rows:'1', si:enciende, req:true, txt:'Firmware que reporta (línea BOOT)', ph:'fw=4.0.0' },
{ tipo:'check', clave:'fw_coincide', si:enciende, txt:'El firmware <b>coincide con el del acta de envío</b>.' },
{ tipo:'radio', clave:'modem', si:enciende, txt:'LED de red del módem 4G tras 3 minutos',
opciones:['Lento o fijo (registró)','Rápido (no registra)','Apagado'] },
{ tipo:'check', clave:'sim_ok', si:enciende, txt:'La SIM es la del acta de envío (ICCID coincide).' },
{ tipo:'archivo', clave:'log', etiqueta:'recepcion', si:enciende, txt:'Captura de la consola (opcional, pero útil si algo se ve raro)' },
{ tipo:'check', clave:'i_sacudir', req:true, txt:'Sacudí la unidad cerrada junto al oído: <b>nada suena suelto</b> adentro.' },
{ tipo:'radio', clave:'gabinete', req:true, txt:'Gabinete y prensaestopas',
opciones:['Sin daño','Rayado o marcado (cosmético)','Golpeado, agrietado o deformado','Con humedad adentro'] },
{ tipo:'check', clave:'i_zocalos', req:true, txt:'Módulos <b>bien asentados en sus zócalos</b>: Blackpill (si la tarjeta lo lleva), simpleRTK2B en los headers UNO y módem 4G en el zócalo XBee. Empujé cada uno con el dedo: no se mueven ni quedan pines fuera.' },
{ tipo:'check', clave:'i_conectores', req:true, txt:'Prueba de meneo en cada conector, Dupont y SMA: los SMA de las antenas apretados, el GX16 con seguro, ningún cable con el aislante pelado o pellizcado por la tapa.' },
{ tipo:'radio', clave:'placa', req:true, txt:'Tarjeta a simple vista',
opciones:['Normal','Componente desprendido o pista levantada','Marca de quemado o decoloración','Corrosión o humedad'] },
{ tipo:'radio', clave:'bateria_fisica', req:true, txt:'Estado físico de la batería',
opciones:['Normal','Hinchada o abombada','Con manchas o fuga','Caliente','La unidad no trae batería'],
aviso:'Hinchada, con fuga o caliente: <b>desconéctala antes de energizar</b> y la unidad <b>no entra</b>. Registra un acta de daño.' },
{ tipo:'foto', clave:'f_bat', etiqueta:'bateria', si:batMala, req:true, txt:'Foto de la batería, dos ángulos.' },
{ tipo:'foto', clave:'f_interior', req:true, etiqueta:'interior', txt:'El interior de la unidad, tapa abierta, con los módulos y conectores a la vista.' },
{ tipo:'foto', clave:'f_dano_unidad', etiqueta:'unidad-dano', txt:'Foto de cualquier daño que hayas encontrado (de cerca).',
si:v=>['Golpeado','Con humedad'].some(t=>String(v.gabinete||'').startsWith(t)) || !String(v.placa||'').startsWith('Normal'), req:true },
{ tipo:'texto', clave:'nota_fisica', rows:'2', txt:'¿Qué encontraste?' },
] },
{ titulo: '4 · Veredicto',
{ titulo: '4 · Multímetro SIN energía — continuidad a tierra',
sub:'Multímetro en Ω, fuente apagada y desconectada, batería desconectada si se puede. Un corto que llegó del transporte se detecta aquí y no con humo.',
items: [
{ tipo:'nota', txt:'<div class="peligro"><b>Nunca energices antes de medir continuidad.</b> Si hay un corto, la fuente lo va a alimentar y el daño ya no se puede rastrear al transporte.</div>' },
{ tipo:'medida', clave:'r_24v', req:true, txt:'Entrada 24 V a GND (GX16 pines 1-2)', esperado:'> 10 kΩ (la lectura sube mientras cargan los capacitores)', u:'Ω' },
{ tipo:'medida', clave:'r_5v', req:true, txt:'Riel de 5 V a GND (salida Mean Well / P2)', esperado:'> 1 kΩ', u:'Ω' },
{ tipo:'medida', clave:'r_3v3', txt:'Riel de 3.3 V a GND', esperado:'> 1 kΩ', u:'Ω' },
{ tipo:'radio', clave:'continuidad', req:true, txt:'¿Alguna lectura se quedó fija entre 0 y 20 Ω?',
opciones:['No — todo abierto','Sí — hay un corto'],
aviso:'Con corto <b>no se energiza</b>. La unidad no entra: registra un <b>acta de daño</b> con la lectura y la foto, y marca la serie.' },
{ tipo:'medida', clave:'v_bat_vacio', si:conBat, req:true, txt:'Voltaje de la batería en vacío', esperado:'3.0 – 4.2 V (compara con el del acta de envío)', u:'V',
aviso:'Menor a 3.0 V: la batería se descargó en el trayecto; anótalo. Mucho más baja que en el envío: sospecha de consumo con la unidad "apagada".' },
] },
{ titulo: '5 · Energizar y medir',
sub:'Solo si el paso 4 salió limpio. Fuente de 24 V al GX16 (pines 1-2), antenas conectadas, tapa abierta para medir. Si la fuente tiene límite de corriente, ponlo en 1 A.',
items: [
{ tipo:'radio', clave:'enciende', req:true, si:puedeEnergizar, txt:'Al energizar: ¿enciende y el LED de estado parpadea?',
opciones:['Sí','No — LED apagado','Enciende pero se apaga','Enciende y la fuente entra en límite de corriente'],
aviso:'Si la fuente entra en límite o algo se calienta: <b>apaga de inmediato</b>. No entra; acta de daño.' },
{ tipo:'medida', clave:'v_24', si:enciende, req:true, txt:'Entrada 24 V', esperado:'23 – 26 V', u:'V' },
{ tipo:'medida', clave:'v_5', si:enciende, req:true, txt:'Riel 5 V (salida Mean Well / P2)', esperado:'4.9 – 5.4 V', u:'V',
aviso:'Por debajo de 4.8 V el módem se va a caer con cada ráfaga LTE (disparo PFI del LTC4040). No entra así.' },
{ tipo:'medida', clave:'v_3v3', si:enciende, txt:'Riel 3.3 V', esperado:'3.20 – 3.40 V', u:'V' },
{ tipo:'medida', clave:'i_estable', si:enciende, txt:'Corriente a los 60 s (si la fuente la muestra)', esperado:'150 – 400 mA con la etapa RTK encendida', u:'mA' },
{ tipo:'medida', clave:'v_bat_on', si:v=>enciende(v)&&conBat(v), txt:'Batería con la unidad encendida', u:'V' },
] },
{ titulo: '6 · Prueba de vida (5 minutos)',
sub:'Con la unidad encendida. Por la consola USB se lee la línea BOOT; el resto es a simple vista.',
items: [
{ tipo:'texto', clave:'fw', rows:'1', si:enciende, req:true, txt:'Firmware que reporta (línea BOOT o banner de consola)', ph:'fw=4.0.0' },
{ tipo:'check', clave:'fw_coincide', si:enciende, req:true, txt:'El firmware <b>coincide con el del acta de envío</b>.' },
{ tipo:'radio', clave:'modem', si:enciende, req:true, txt:'LED de red del módem 4G tras 3 minutos',
opciones:['Lento o fijo (registró)','Rápido (no registra)','Apagado'] },
{ tipo:'check', clave:'sim_ok', si:enciende, txt:'La SIM es la del acta de envío (ICCID coincide).' },
{ tipo:'radio', clave:'gnss', si:enciende, txt:'GNSS (si hay cielo o ventana)', opciones:['Ve satélites / tiene fix','No ve satélites','No se pudo probar (techo)'] },
{ tipo:'check', clave:'servidor', si:enciende, txt:'La unidad <b>aparece en el monitor</b> (posición o Salud) — pídele a alguien con acceso que lo confirme.' },
{ tipo:'archivo', clave:'log', etiqueta:'recepcion', si:enciende, txt:'Captura de la consola (opcional, pero útil si algo se ve raro)' },
{ tipo:'check', clave:'cerrada', si:enciende, txt:'Apagué la fuente, cerré la tapa, apreté los prensaestopas y volví a poner la etiqueta a la vista.' },
] },
{ titulo: '7 · Veredicto',
items: [
{ tipo:'radio', clave:'accion', req:true, guardaEn:'accion', txt:'¿Entra al puerto?',
opciones:[
@ -81,7 +136,7 @@ Acta.render({
'Entra con observaciones (anótalas)',
'No entra — se queda en el taller para revisión',
'Rechazada — regresa a Querétaro'],
aviso:'Si no enciende o el firmware no coincide, <b>no entra</b>. Instalarla y descubrirlo arriba de una máquina cuesta una visita más y un permiso más.' },
aviso:'Corto, no enciende, riel de 5 V bajo o firmware distinto al del envío: <b>no entra</b>. Instalarla y descubrirlo arriba de una máquina cuesta una visita más y un permiso más de ICAVE. Si no entra, registra además un <b>acta de daño</b> para que la serie quede marcada.' },
{ tipo:'texto', clave:'observaciones', rows:'3', txt:'Observaciones' },
] },
]

View File

@ -17,7 +17,7 @@ incluidos los daños.
| 4 | **Ensamble** de la unidad | Banco QRO | [Ensamble](v5-ensamble.md) | [Ensamble](../formularios/ensamble.html) — no acepta módulos sin acta aprobada ni ya usados | ✅ |
| 5 | **Prueba final** antes de embarcar | Banco QRO | [Prueba final](v5-prueba-final-unidad.md) | *(se registra en la de ensamble)* | ✅ |
| 6 | **Envío** | QRO → terminal | [abajo](#6-envio) | [Envío](../formularios/envio.html) | 🆕 |
| 7 | **Recepción**, antes de entrar al puerto | Taller Veracruz | [abajo](#7-recepcion) | [Recepción](../formularios/recepcion.html) | 🆕 |
| 7 | **Recepción e inspección**, cada caja, antes de entrar al puerto | Taller Veracruz | [abajo](#7-recepcion-e-inspeccion-cada-caja-antes-de-entrar-al-puerto) | [Recepción](../formularios/recepcion.html) — inspección + multímetro + prueba de vida | 🆕 |
| 8 | **Instalación** en la máquina | Patio | ⬜ pendiente | ⬜ `instalacion-campo` (el servidor ya lo acepta) | ⬜ |
| 9 | **Vida en campo**: falla, diagnóstico, reflasheo | Patio / taller | [Campo](../diagnostico/procedimiento-diagnostico-campo.md) · [Banco](diagnostico-banco.md) · [Reflasheo](reflasheo-unidades.md) | [Campo](../formularios/diagnostico.html) · [Banco](../formularios/banco.html) · [Reflasheo](../formularios/reflasheo.html) | ✅ |
| ⚡ | **Daño o incidente**, en cualquier momento | Donde sea | [abajo](#dano-en-cualquier-momento) | [Daño](../formularios/dano.html) — **marca la serie** | 🆕 |
@ -64,20 +64,42 @@ arnés GX16 · material de gabinete si aplica · hoja impresa con serie, máquin
Fotos: la caja abierta con todo adentro, la unidad con su etiqueta legible, la caja cerrada y rotulada.
## 7 · Recepción
## 7 · Recepción e inspección — cada caja, antes de entrar al puerto
Se llena **al abrir la caja, antes de entrar al puerto** — la última oportunidad de regresar por un
cable. Se compara contra el acta de envío de esa unidad (está en su expediente).
cable o de detectar un golpe de transporte. **Una acta por unidad, sin excepción**, aunque lleguen diez
en el mismo envío. Se compara contra el acta de envío de esa unidad (está en su expediente).
**Kit del técnico:** fuente de 24 V (≥ 1 A; si tiene límite de corriente, en 1 A) · multímetro · cable
USB con datos · laptop. No hace falta osciloscopio: lo que puede romperse en un camión se ve con el
multímetro y con los ojos.
**Orden obligatorio:** inspección → multímetro sin energía → energizar → prueba de vida. Nunca al revés.
1. **Paquete, antes de abrir:** foto tal como llegó; si viene golpeado, mojado o abierto, foto del daño.
2. **Contenido contra el envío:** misma serie, mismas piezas. Lo que falte o sobre, se anota.
3. **Prueba rápida de vida** (5 min, en el taller, fuente de 24 V): enciende y el LED parpadea ·
`BOOT` reporta el **mismo firmware** que el envío · el módem registra en Telcel (LED lento o fijo) ·
la SIM es la misma (ICCID).
4. **Veredicto:** lista para entrar · entra con observaciones · se queda en el taller · rechazada.
3. **Inspección física, tapa abierta, sin energía.** Sacudir la unidad junto al oído (nada suelto).
Gabinete y prensaestopas sin golpes. **Módulos asentados en sus zócalos** — el Blackpill, el
simpleRTK2B en los headers UNO y el módem en el zócalo XBee viajan enchufados, y la vibración los
saca: empujar cada uno con el dedo. Prueba de meneo en conectores, Dupont y SMA. Tarjeta sin
componentes desprendidos ni marcas de quemado. Batería normal (hinchada, con fuga o caliente → se
desconecta, no entra, acta de daño). Foto del interior.
4. **Multímetro sin energía — continuidad a tierra.** Entrada 24 V a GND > 10 kΩ · riel 5 V a GND >
1 kΩ · riel 3.3 V a GND > 1 kΩ · voltaje de batería en vacío 3.0 – 4.2 V (comparar con el del
envío). **Cualquier lectura fija entre 0 y 20 Ω es un corto: no se energiza**, acta de daño.
5. **Energizar y medir.** 24 V al GX16 (pines 1-2), antenas conectadas. LED de estado parpadea ·
entrada 23 – 26 V · **riel 5 V 4.9 – 5.4 V** (por debajo de 4.8 V el módem se cae con cada ráfaga
LTE) · 3.3 V 3.20 – 3.40 V · corriente a los 60 s 150 – 400 mA si la fuente la muestra. Si la fuente
entra en límite o algo se calienta: apagar, no entra.
6. **Prueba de vida (5 min):** `BOOT` reporta el **mismo firmware** que el envío · el módem registra
(LED lento o fijo a los 3 min) · la SIM es la misma (ICCID) · si hay cielo, ve satélites · alguien
con acceso confirma que **aparece en el monitor**. Apagar, cerrar la tapa, apretar prensaestopas.
7. **Veredicto:** lista para entrar · entra con observaciones · se queda en el taller · rechazada.
!!! danger "Si no enciende o el firmware no coincide, no entra"
Instalarla y descubrirlo arriba de una máquina cuesta una visita más y un permiso más de ICAVE.
!!! danger "Corto, no enciende, 5 V bajo o firmware distinto: no entra"
Instalarla y descubrirlo arriba de una máquina cuesta una visita más y un permiso más de ICAVE. Si
no entra, además del veredicto se registra un **acta de daño**: así la serie queda marcada y nadie la
instala por error.
## ⚡ Daño en cualquier momento

View File

@ -38,8 +38,8 @@ cuando debería estar cortada.
| Generación de tarjeta | Binario | Estado |
|---|---|---|
| **V3** — EinarBoard 1.0 (RTK-003, RTK-006, RTK-014), Blackpill | `hbox-tarjetaV3_4.0.0.bin` | ⚠ publicado, sin prueba de banco |
| **V4** — Blackpill + PCF8574/W5500/SC16IS752 | `hbox-tarjetaV4_0.5.1.bin` | ⚠ publicado, sin prueba de banco (mismo código que V5 + `board_v4.h`) |
| **V5** — MCU soldado, lote de 15 | `hbox-v5-bringup_0.5.1.bin` | ✅ en despliegue |
| **V4** — Blackpill + PCF8574/W5500/SC16IS752 | `hbox-tarjetaV4_0.5.2.bin` | ⚠ publicado, sin prueba de banco (mismo código que V5 + `board_v4.h`) |
| **V5** — MCU soldado, lote de 15 | `hbox-v5-bringup_0.5.2.bin` | ⚠ vigente 24-sep (reporte cada 10 min en batería); antes flashear, servidor con soporte `DUTY` |
Si el renglón dice *pendiente*, **no hay binario aprobado todavía**: el flasheo de esa generación
está detenido hasta que ingeniería lo publique (§6).
@ -151,8 +151,8 @@ arduino-cli compile \
--fqbn "STMicroelectronics:stm32:GenF4:pnum=BLACKPILL_F411CE,usb=CDCgen,xserial=generic,rtlib=nanofp" \
--build-property "build.extra_flags=-DHBOX_BOARD_V4" \
--output-dir release/ hbox_v5_bringup/
mv release/hbox_v5_bringup.ino.bin release/hbox-tarjetaV4_0.5.1.bin
shasum -a 256 release/hbox-tarjetaV4_0.5.1.bin | tee -a release/SHA256SUMS
mv release/hbox_v5_bringup.ino.bin release/hbox-tarjetaV4_0.5.2.bin
shasum -a 256 release/hbox-tarjetaV4_0.5.2.bin | tee -a release/SHA256SUMS
```
**El destino de tarjeta ya viene bien por omisión:** el propio `.ino` trae `TARGET_EINARBOARD 1` y

View File

@ -1,7 +1,7 @@
# HBOX v5 — Prueba final de unidad ensamblada con firmware 0.5.1 (field-minimum + telemetría y eventos)
# HBOX v5 — Prueba final de unidad ensamblada con firmware 0.5.x (field-minimum + telemetría y eventos)
**Alcance:** unidad completa (EinarBoard V5 + ArduSimple + módem 4G + batería + antenas) dentro del HBOX, antes de embarcar.
**Firmware:** `hbox-v5-bringup_0.5.1.bin` (SHA-256 `e1f35108…`) — descarga en <https://drogheda.helgen.online/descargas/>.
**Firmware:** `hbox-v5-bringup_0.5.2.bin` (SHA-256 `a9b0d6c1…`; V4: `hbox-tarjetaV4_0.5.2.bin`, `fa2b7554…`) — descarga en <https://drogheda.helgen.online/descargas/>. La sección de respaldo cambia con 0.5.2: ver la nota al final de esa sección.
**Duración:** ~45 min por unidad (P1–P6). Registrar todo en el acta de ensamble (`HBOX5-Exx-Axxx-Rxxxx`).
!!! warning "Lo que 0.5.1 NO hace"
@ -51,6 +51,16 @@ Con la etapa ON: **desconectar el 24 V** (se va el 5 V del SD-15B). Esperar 5 mi
| `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` | — |
!!! note "Con 0.5.2 la P3 se ve distinta — y dura 13 min, no 6"
Con **0.5.2** la etapa ya **no** sigue encendida en batería. Lo esperado al desconectar el 24 V:
`EVT V5 PERDIDO` → `BACKUP inicio … modo reporte cada 10 min` → la etapa sigue ON entre **90 y 180 s**
(ventana de reporte) → `DUTY reposo: ventana Ns fix=… → etapa OFF, despierta en Ns` → `STAT … stack=OFF`,
LED corto cada 5 s, ventilador OFF. **Esperar 10 min desde el inicio de la ventana:** `DUTY despertar #1` →
etapa ON → nueva ventana → reposo. Solo entonces reconectar el 24 V: `EVT V5 PRESENTE` → `DUTY fin: 5 V
volvió — 1 ventanas, 0 omitidas` → `BACKUP fin`. Si la etapa **no se apaga** tras 180 s, el binario no es
0.5.2 (leer la primera línea de la consola). En el monitor la unidad debe quedar **en amarillo "batería",
no en rojo "desconectada"** durante el reposo — si aparece desconectada, el servidor no tiene el soporte `DUTY`.
## P4 — Cielo abierto: primer RTK (10 min)
Con antena GNSS con cielo despejado y base activa (`$$$AS+` configurado):

View File

@ -78,7 +78,7 @@ nav:
- "📦 Ciclo de vida — envío, recepción, daños":
- "El ciclo de vida de una unidad (mapa)": procedimientos/ciclo-de-vida.md
- "▶ Acta de envío": formularios/envio.html
- "▶ Acta de recepción (antes de entrar al puerto)": formularios/recepcion.html
- "▶ Acta de recepción e inspección (cada caja, antes del puerto)": formularios/recepcion.html
- "▶ Acta de daño o incidente": formularios/dano.html
- "🗂 Expediente de una unidad": unidad.html

View File

@ -22,11 +22,13 @@ declare -a MAP=(
"03-Architecture-Hardware/kicad/docs/GIT-GUIDE_Colaboradores-Externos_ES.md|docs/git/guia-git-es.md"
"03-Architecture-Hardware/kicad/docs/GIT-GUIDE_External-Collaborators_EN.md|docs/git/git-guide-en.md"
# Descargas para técnicos (firmware de bring-up v5)
"04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.5.1.bin|docs/descargas/hbox-v5-bringup_0.5.1.bin"
"04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.5.2.bin|docs/descargas/hbox-v5-bringup_0.5.2.bin"
"04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.5.1.bin|docs/descargas/superseded/hbox-v5-bringup_0.5.1.bin"
"04-Source-Code/firmware/hbox_v5_bringup/release/superseded/hbox-v5-bringup_0.4.0.bin|docs/descargas/superseded/hbox-v5-bringup_0.4.0.bin"
"04-Source-Code/firmware/release/hbox-tarjetaV3_3.0.4.bin|docs/descargas/superseded/hbox-tarjetaV3_3.0.4.bin"
"04-Source-Code/firmware/release/hbox-tarjetaV3_4.0.0.bin|docs/descargas/hbox-tarjetaV3_4.0.0.bin"
"04-Source-Code/firmware/release/hbox-tarjetaV4_0.5.1.bin|docs/descargas/hbox-tarjetaV4_0.5.1.bin"
"04-Source-Code/firmware/release/hbox-tarjetaV4_0.5.2.bin|docs/descargas/hbox-tarjetaV4_0.5.2.bin"
"04-Source-Code/firmware/release/hbox-tarjetaV4_0.5.1.bin|docs/descargas/superseded/hbox-tarjetaV4_0.5.1.bin"
"04-Source-Code/firmware/hbox_v5_bringup/README.md|docs/descargas/hbox-v5-bringup-README.md"
)