diff --git a/backend/lotes/2026-10-27_fw070pre-banco-ardusimple.json b/backend/lotes/2026-10-27_fw070pre-banco-ardusimple.json new file mode 100644 index 0000000..6d20e0f --- /dev/null +++ b/backend/lotes/2026-10-27_fw070pre-banco-ardusimple.json @@ -0,0 +1,194 @@ +{ + "lote": "2026-10-27_fw070pre-banco-ardusimple", + "autor": "claude", + "motivo": "27-oct, 18:39 (Leo): firmware 0.7.0-pre ya, procedimientos de prueba y actas de ensamble para la V5.6/V5.7, y la falta de ArduSimple en el tablero.", + "fuente": "/procedimientos/v56-v57-prueba-y-flasheo/", + "cambios": [ + { + "crear": { + "id": "t-compras-ardusimple", + "titulo": "Faltan ArduSimple: simpleRTK2B Pro y 4G NTRIP Master para el piloto V5.6/V5.7 y para las 500 del volumen", + "pista": "compras", + "estado": "por-hacer", + "responsable": "leo, adriana, jesus", + "fecha_limite": "2026-10-30", + "version_tarjeta": "V5.6", + "sitios": [ + "qro" + ], + "etiquetas": [ + "piloto", + "módulos", + "bloqueo" + ], + "descripcion": "Actas al 27-oct: 23 simpleRTK2B aprobados (ARD-001…023) y 17 módems 4G. 12 de cada uno van en unidades V5.5 y 3 parejas más esperan ensamble (A021-R0006, A022-R0003, A023-R0024). Libres: 8 simpleRTK2B (ARD-004, 008, 009, 011, 014, 015, 019, 020) y solo 2 módems (RTK-0014, RTK-0021): el módem es el cuello de botella. Lo que pide cada cosa: banco del piloto = 2 juegos de banco a la vez (alcanza con los libres); 10 unidades del piloto = 10 + 10 (faltan 2 simpleRTK2B y 8 módems, usando al final los 2 juegos de banco); volumen 135 + 365 = 500 + 500 (la v6 no los usa). Inventario: ARD-SRTK2B y MODEM-4G-NTRIP en 0, sin contar; la nota «500 pedidos (26-sep)» solo está en el simpleRTK2B. Falta: (1) Jesús, el conteo físico de los dos módulos, con y sin acta (t-inventario-inicial); (2) Leo y Adriana, el estado real del pedido de 500 (¿se colocó?, ¿pagado?, ¿incluye los 4G NTRIP Master?, ¿fecha?) y cotización y tiempo de entrega de ArduSimple; (3) Leo, D-27-7. Mientras tanto, las tarjetas se prueban con un juego de banco (procedimiento §0) y ningún juego de banco se ensambla.", + "enlaces": [ + { + "titulo": "Juego de módulos de banco (procedimiento §0)", + "url": "/procedimientos/v56-v57-prueba-y-flasheo/#0-el-juego-de-modulos-de-banco-faltan-ardusimple" + }, + { + "titulo": "Estado de actas (ARD y RTK)", + "url": "/tableros/actas/" + }, + { + "titulo": "Inventario · Querétaro", + "url": "/tableros/inventario/?sitio=qro" + } + ] + }, + "si_no_hay": [ + "Faltan ArduSimple" + ] + }, + { + "crear": { + "id": "d-27-7-ardusimple", + "titulo": "D-27-7: cuántos ArduSimple se piden ya para el piloto y cuándo los 500 + 500 del volumen — decide Leo", + "pista": "compras", + "estado": "por-hacer", + "responsable": "leo", + "fecha_limite": "2026-10-30", + "version_tarjeta": "V5.6", + "sitios": [ + "qro" + ], + "etiquetas": [ + "decisión", + "piloto" + ], + "descripcion": "Propuesta de Claude: (a) en cuanto Jesús cuente lo que hay, pedir ya lo que completa las 10 unidades del piloto (hoy: 8 módems 4G NTRIP Master + 2 simpleRTK2B, o lo que diga el conteo; el 4G NTRIP Master costaba ≈ €112 c/u a ≥ 50 en julio, re-cotizar); (b) los 500 + 500 del volumen con la pre-orden de las 135/365, cuando el piloto pase el banco, salvo que ArduSimple pida más tiempo de entrega que el piloto: entonces pedirlos antes, porque los zócalos MOD1 y J8/J9 no cambian aunque cambie la tarjeta. Si el pedido de 500 del 26-sep ya existe, (b) es confirmar que trae los dos módulos y su fecha.", + "bloqueada_por": [ + "t-inventario-inicial" + ], + "enlaces": [ + { + "titulo": "Faltan ArduSimple", + "url": "/tableros/pendientes/" + } + ] + }, + "si_no_hay": [ + "D-27-7" + ] + }, + { + "id": "t-fw-070", + "poner": { + "enlaces": [ + { + "titulo": "Auditoría final §5: firmware", + "url": "/hardware/auditoria-final-22oct/#5-firmware-063-no-sirve-a-v56v57-board_v56h-si" + }, + { + "titulo": "Ciclo de 10 min y umbrales (§4)", + "url": "/hardware/auditoria-final-22oct/#4-bateria-apagon-del-modem-y-ciclo-de-10-min" + }, + { + "titulo": "0.7.0-pre en Descargas (prueba)", + "url": "/descargas/#firmware-del-hbox-que-binario-va-en-que-tarjeta" + }, + { + "titulo": "Notas de versión 0.7.0-pre", + "url": "/descargas/notas-de-version/#070-pre-en-prueba" + } + ] + }, + "nota": "27-oct: 0.7.0-pre (F-1) en Descargas → prueba: hbox-tarjetaV56_0.7.0-pre.bin (112 456 B, RCT6; hbox-firmware a223481). Módem EN/RST/LED/RTCM, escalera de 180 s, Modo B con el módem vivo, LFP, NTC PC5, ignición por ADC. Revisión independiente: 14 hallazgos corregidos; simulador 81/81. Sigue F-2." + }, + { + "id": "t-banco-v5-procedimiento-t43", + "poner": { + "estado": "en-curso", + "responsable": "jesus, gibranlp, claude", + "enlaces": [ + { + "titulo": "Prueba y flasheo V5.6/V5.7 (0.7.0-pre)", + "url": "/procedimientos/v56-v57-prueba-y-flasheo/" + }, + { + "titulo": "Ensamble V5.6/V5.7", + "url": "/procedimientos/v56-v57-ensamble/" + }, + { + "titulo": "Acta de tarjeta V5.6", + "url": "/formularios/v56.html" + }, + { + "titulo": "Acta de tarjeta V5.7", + "url": "/formularios/v57.html" + }, + { + "titulo": "Acta del banco del piloto", + "url": "/formularios/piloto.html" + }, + { + "titulo": "Documento de diseño V5.6", + "url": "/hardware/diseno-v56/" + }, + { + "titulo": "Tabla viejo → nuevo", + "url": "/hardware/designadores-t43-22oct/#8-tablas-viejo-nuevo" + } + ] + }, + "nota": "27-oct: borrador publicado (T43 y 0.7.0-pre): procedimiento, actas V5.6 y V5.7, ensamble V5.6/V5.7 y acta del banco del piloto. Falta la lectura de Jesús y de Gibran, y ajustarlo con la primera tarjeta real." + }, + { + "id": "t-v56-banco-piloto", + "poner": { + "enlaces": [ + { + "titulo": "Banco del piloto: los 8 criterios (§10)", + "url": "/procedimientos/v56-v57-prueba-y-flasheo/#10-banco-del-piloto-los-8-criterios-para-liberar-las-135-y-las-365" + }, + { + "titulo": "Acta del banco del piloto", + "url": "/formularios/piloto.html" + }, + { + "titulo": "Auditoría §11 (plan)", + "url": "/hardware/auditoria-produccion-16oct/#11-plan-hasta-produccion" + } + ] + }, + "nota": "27-oct: los 8 criterios en T43 en el §10 y en el acta del banco del piloto (PILOTO-V5-6). Con 0.7.0-pre se pueden 6 de 8: el 3 (10 min en batería, piso dormido) espera F-2 y el 5 (lazo serie, Ethernet 24 h) espera F-3 y el build -eth. Necesita 2 juegos de módulos de banco." + }, + { + "id": "t-v57-banco-prototipos", + "poner": { + "enlaces": [ + { + "titulo": "V5.7: la fuente a bordo (§10.2)", + "url": "/procedimientos/v56-v57-prueba-y-flasheo/#102-v57-la-fuente-a-bordo-criterio-6" + }, + { + "titulo": "Acta del banco del piloto", + "url": "/formularios/piloto.html" + }, + { + "titulo": "ECO V5.7 — fuente a bordo", + "url": "/hardware/v57-eco-fuente/" + }, + { + "titulo": "D-21-2 (§6.2)", + "url": "/hardware/v56-v57-auditoria-21oct/#62-v57-por-que-c149c150-se-quedan-como-estan" + } + ] + }, + "nota": "27-oct: procedimiento en el §10.2 (T43: U15, D21, L4): carga electrónica en J3 pin 1, 9/12/24/32 V con 2.8 A, U15 < 110 °C y D21 < 100 °C, vías de entrada a 9 V, polaridad invertida. Se registra en el acta del banco del piloto (PILOTO-V5-7)." + }, + { + "id": "t-inventario-inicial", + "nota": "27-oct: prioridad, contar los simpleRTK2B Pro y los 4G NTRIP Master (con y sin acta, y los de unidades desarmadas, como RTK-014): de eso depende cuántos se piden (t-compras-ardusimple, D-27-7)." + }, + { + "id": "t-compras-prioridad", + "nota": "27-oct: agregar los ArduSimple (t-compras-ardusimple): para completar las 10 unidades del piloto ≈ 8 módems 4G + 2 simpleRTK2B; para el volumen, 500 + 500. No están en el costeo de JLC." + }, + { + "id": "t-plan-570", + "nota": "27-oct: al editar el plan, el pedido total es 560 y la etapa «Tarjeta probada» debe contar también prueba-v56 y prueba-v57 (las actas nuevas). En el servidor sigue el plan del 13-oct (570 = 113 / 327 / 130)." + } + ] +} diff --git a/docs/actas/index.md b/docs/actas/index.md index 0bdb0c5..e24d1cf 100644 --- a/docs/actas/index.md +++ b/docs/actas/index.md @@ -20,15 +20,18 @@ ArduSimple ARD-NNN ────► Acta módulo ArduSimple ─┤ └──────────────────────────────────────────────────┘ ``` -El acta de ensamble no deja elegir un módulo sin aprobar, sin integración o ya montado en otra unidad. El número de unidad se calcula de los tres módulos: `HBOX5-E07-A010-R0006` = V5-07 + ARD-010 + RTK-0006. +El acta de ensamble no deja elegir un módulo sin aprobar, sin integración o ya montado en otra unidad. El número de unidad se calcula de los tres módulos: `HBOX5-E07-A010-R0006` = V5-07 + ARD-010 + RTK-0006. En la V5.6 y la V5.7 (piloto, 27-oct) es `HBOX56-…` / `HBOX57-…`, con la tarjeta V56-NN / V57-NN. ## Producción y taller | Acta | Qué registra | Procedimiento | |---|---|---| | [Tarjeta V5](../formularios/v5.html) | Lote de 15 (V5-01 … V5-15; 30 seleccionables) | [Prueba y flasheo](../procedimientos/v5-prueba-y-flasheo.md) | -| [ArduSimple](../formularios/ardusimple.html) | Un receptor ARD-001 … ARD-030: visual, fix, configuración | [Módulos §1](../procedimientos/v5-modulos-integracion.md#1-simplertk2b-pro-acta-ardusimple) | -| [Módem 4G](../formularios/modem4g.html) | Un módem RTK-0001 … RTK-0030: IMEI/ICCID, configuración, registro | [Módulos §2](../procedimientos/v5-modulos-integracion.md#2-modem-4g-ntrip-master-acta-modem-4g) | +| [Tarjeta V5.6](../formularios/v56.html) · [Tarjeta V5.7](../formularios/v57.html) | Piloto (V56-NN / V57-NN): inspección con U14, rieles, flasheo de 0.7.0-pre, autoprueba, módem con el juego de banco, batería, ignición | [Prueba y flasheo V5.6/V5.7](../procedimientos/v56-v57-prueba-y-flasheo.md) | +| [Banco del piloto](../formularios/piloto.html) | Una por versión (PILOTO-V5-6, PILOTO-V5-7): los 8 criterios que liberan las 135 V5.6 y las 365 V5.7 | [Prueba y flasheo §10](../procedimientos/v56-v57-prueba-y-flasheo.md#10-banco-del-piloto-los-8-criterios-para-liberar-las-135-y-las-365) | +| [Ensamble V5.6](../formularios/ensamble-v56.html) · [Ensamble V5.7](../formularios/ensamble-v57.html) | Tarjeta V5.6/V5.7 + pareja aprobada → unidad `HBOX56-…` / `HBOX57-…` con su prueba | [Ensamble V5.6/V5.7](../procedimientos/v56-v57-ensamble.md) | +| [ArduSimple](../formularios/ardusimple.html) | Un receptor ARD-001 … ARD-100: visual, fix, configuración | [Módulos §1](../procedimientos/v5-modulos-integracion.md#1-simplertk2b-pro-acta-ardusimple) | +| [Módem 4G](../formularios/modem4g.html) | Un módem RTK-0001 … RTK-0100: IMEI/ICCID, configuración, registro | [Módulos §2](../procedimientos/v5-modulos-integracion.md#2-modem-4g-ntrip-master-acta-modem-4g) | | [Integración](../formularios/integracion.html) | La pareja: RTK FIX con NTRIP | [Módulos §3](../procedimientos/v5-modulos-integracion.md#3-integracion-ardusimple-4g-acta-de-integracion) | | [Ensamble](../formularios/ensamble.html) | Tres módulos aprobados → número de unidad → armado, 24 V, batería y respaldo | [Ensamble](../procedimientos/v5-ensamble.md) | | [Prueba V4](../formularios/v4.html) | V4-01 … V4-15: puente de reset del módem, flasheo, 24 V, batería y regreso de 24 V | [Preparación y prueba V4](../procedimientos/v4-prueba-fw-0.5.6.md) | diff --git a/docs/admin.html b/docs/admin.html index 623e5c4..eadb1fa 100644 --- a/docs/admin.html +++ b/docs/admin.html @@ -27,6 +27,9 @@ const cont = document.getElementById('cont'); const TIPOS = [ { tipo:'prueba-v5', label:'Prueba V5' }, + { tipo:'prueba-v56', label:'Prueba V5.6' }, + { tipo:'prueba-v57', label:'Prueba V5.7' }, + { tipo:'banco-piloto', label:'Banco del piloto' }, { tipo:'prueba-v4', label:'Prueba V4' }, { tipo:'ensamble', label:'Ensamble' }, ]; diff --git a/docs/bitacora.md b/docs/bitacora.md index 6b38ede..f9d2be1 100644 --- a/docs/bitacora.md +++ b/docs/bitacora.md @@ -23,6 +23,9 @@ Arriba, lo que pasó en el tablero de pendientes y en las actas en los últimos ### Octubre de 2026 **27 oct** +: **Firmware 0.7.0-pre (F-1) para la V5.6 y la V5.7, en prueba de banco** ([Descargas](descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta) · [notas de versión](descargas/notas-de-version.md#070-pre-en-prueba)): el primer firmware que enciende y vigila el módem de estas tarjetas (LED + RTCM3, pulsos y reinicios de alimentación con 3 min entre cada uno, LIMP), con el paquete LFP, la NTC en PC5 y la ignición por ADC. Antes de publicarlo pasó una **revisión independiente**: 14 hallazgos corregidos (vida con 4 flancos y antirrebote, DIN_4G en 0 V durante el reinicio de alimentación, un pulso por hora si solo hay RTCM, apagado en orden también en el reinicio por software…). Simulador 81/81. Un binario para las dos (`hbox-tarjetaV56_0.7.0-pre.bin`, RCT6), `hbox-firmware` `a223481`. **Solo banco.** +: **Prueba y flasheo, ensamble y actas de la V5.6 y la V5.7** (borrador, numeración de T43): [prueba y flasheo](procedimientos/v56-v57-prueba-y-flasheo.md) con los 8 criterios del piloto y la fuente de la V5.7, [ensamble](procedimientos/v56-v57-ensamble.md), actas de tarjeta [V5.6](formularios/v56.html) y [V5.7](formularios/v57.html), de ensamble [V5.6](formularios/ensamble-v56.html) y [V5.7](formularios/ensamble-v57.html) y del [banco del piloto](formularios/piloto.html). Falta la lectura de Jesús y de Gibran y ajustarlos con la primera tarjeta real. +: **Faltan ArduSimple:** según las actas quedan libres 8 simpleRTK2B y solo 2 módems 4G NTRIP Master. El banco del piloto alcanza (2 juegos de banco, que no se ensamblan); las 10 unidades del piloto necesitan 2 simpleRTK2B y 8 módems más, y el volumen 500 + 500. Jesús cuenta lo que hay, Leo y Adriana confirman el pedido de 500 del 26-sep y Leo decide D-27-7. Lote `2026-10-27_fw070pre-banco-ardusimple`. : **T45 listo** (para el 28-oct, sobre el Actualizar PCB de Michelle): **R80 pasa abajo de Q7**, porque donde estaba lo encerraba el anillo de `/MAIN5V` y `/VEH5V` solo podía llegarle por In2. Así `/VEH5V` va por F.Cu (≈ 7 mΩ desde L5.2; antes 31), `/VIN_SW` queda de 2 mm y las tomas Kelvin salen por el lado de adentro de R80 y van por B.Cu. Además: 6 vías en los EP de U4 y U7 y la limpieza del 26-oct. Probado en una copia: DRC con 0 errores y 0 sin conectar. La RF LTE pasa a **T45b** (30-oct). [Instrucciones para Michelle](hardware/instrucciones-michelle-27oct.md#2-despues-de-t45-martes-28-y-miercoles-29-bloque-b-y-r112) e [instrucciones para Leo](hardware/instrucciones-leo-27oct.md), v1.2; lote `2026-10-27_t45-lista`. : **Página de entrada propia** (adiós a la ventana gris) por el reporte de Adriana del 26-oct: después de restablecer, la gente no podía volver a entrar porque el navegador y el teléfono mandaban la contraseña vieja. Ahora se entra con el usuario **o el correo**, sin importar mayúsculas; cambiar la contraseña ya no saca; restablecer cierra las sesiones viejas; «Cerrar sesión» sí cierra; cada intento queda registrado (sin la contraseña). [Incidencias](tableros/incidencias.md) INC-0001 · despliegue `DESPLIEGUE.md` §A11. : [Incidencias del sitio](tableros/incidencias.md) («Problemas del sitio» al pie de cada página y en la entrada), [Standup](tableros/standup.md) diario con instrucciones y preguntas por persona, el **vigía** cada hora y el **agente diario**: qué hacen solos y qué deja listo para Leo, en [Agentes del sitio](agentes.md). Correos de Equipo de la lista de Gibran. Lote `2026-10-27_entrada-incidencias-agentes`. diff --git a/docs/descargas/SHA256SUMS.txt b/docs/descargas/SHA256SUMS.txt index a758794..1421249 100644 --- a/docs/descargas/SHA256SUMS.txt +++ b/docs/descargas/SHA256SUMS.txt @@ -2,6 +2,7 @@ a68a87ff1f6b34a8284e9e5e32c95da7bb8d8adc071c5fd64412a3e744e46b28 hbox-tarjetaV3 1458470bbdd95b490969976402bf2144a773a991b7650c55e3281687ba77b2e3 hbox-tarjetaV4_0.6.0.bin 8a0ee4839763eae8c96e990eb471dae30f0a491bfb9bd81fdfb39ee69436790a hbox-v5-bringup_0.6.0.bin a6c3b4677fa696bb08b99abae70d464c8593aad8be0d3f3883815d3769e0d281 prueba/hbox-tarjetaV4_0.6.3.bin +8dd260473e933d17c9e5d75d5cf7c1b3248944fc703f99842026d9354f6ffd57 prueba/hbox-tarjetaV56_0.7.0-pre.bin 3641159a4c68ef093a0e5ab3402356254a8165b2ce1b77d8ad2362415b0d7edd prueba/hbox-v5-bringup_0.6.3.bin 035ebeb348461765f099341603a9e99b94512f8477509efb78aa7caf953f4c2f superseded/hbox-tarjetaV3_3.0.4.bin 4528187f9d675bca8114583d44eccf4d2149d847f7e5fc402631d8811ee39282 superseded/hbox-tarjetaV4_0.5.1.bin diff --git a/docs/descargas/hbox-v5-bringup-README.md b/docs/descargas/hbox-v5-bringup-README.md index 1e7b6fe..f298487 100644 --- a/docs/descargas/hbox-v5-bringup-README.md +++ b/docs/descargas/hbox-v5-bringup-README.md @@ -41,6 +41,27 @@ mv out-v4/hbox_v5_bringup.ino.bin release/hbox-tarjetaV4_0.5.1.bin PB2 is BOOT1 on the F411: enter DFU with **USB only** (W5500 unpowered) so INTn cannot hold BOOT1 high. The first console line must read `board=EinarBoard v4 (HBOX v4)`. +### EinarBoard V5.6 / V5.7 (0.7.0-pre, 27-oct) — same sketch, `board_v56.h` +One binary for both boards (the 64 MCU pins are identical). The pilot carries the **STM32F411RCT6** (256 KB, T47), so the +build targets `GENERIC_F411RCTX`, keeps the EEPROM emulation in **sector 5** (`0x08020000`) and caps the image at 128 KB +below it. Without the two `FLASH_*` flags the sketch stops with `#error`. The same `.bin` runs on a RET6. +```bash +arduino-cli compile \ + --fqbn "STMicroelectronics:stm32:GenF4:pnum=GENERIC_F411RCTX,usb=CDCgen,xserial=generic,rtlib=nanofp" \ + --build-property "build.extra_flags=-DHSE_VALUE=25000000UL -DHBOX_BOARD_V56 -DFLASH_DATA_SECTOR=5 -DFLASH_BASE_ADDRESS=0x08020000UL" \ + --build-property "upload.maximum_size=131072" \ + --output-dir out-v56 hbox_v5_bringup +cp out-v56/hbox_v5_bringup.ino.bin release/hbox-tarjetaV56_0.7.0-pre.bin +``` +The first console lines must read `hbox-v5-bringup 0.7.0-pre` and `board=EinarBoard V5.6/V5.7 (HBOX v5)`; the in-band +`$PHLG` version is `0.7.0p`. **Bench only** until the pilot passes. Designators are the T43 ones on the silkscreen: +**SW1 = BOOT0, SW2 = RESET** (the opposite of V5.5), USB-C DFU/console = **J7**, modem socket = **J8/J9**, LTC4040 = **U14**. +DFU: hold SW1 → tap SW2 → release SW1. Technician procedure (ES): +`06-Testing-Validation/2026-10-27_Drogheda_EinarBoard-V5.6-V5.7_Prueba-y-Flasheo_ES_v1.0.md`. +The `-eth` build of the V5.6 (`-DENABLE_ETH=1`) is pending: the build Mac does not have the `Ethernet` library yet (pilot +criterion 5 waits for it and for F-3). The host simulator runs 27 V5.6/V5.7 scenarios on this build (see +`../tools/hostsim_v5/README.md`). + ### Ethernet de banco (0.6.0-eth) — `-DENABLE_ETH=1` Build separado; el binario de campo 0.5.8 no lo incluye. Necesita la librería `Ethernet` (`arduino-cli lib install Ethernet`). ```bash @@ -57,11 +78,13 @@ Cable directo al portátil (Auto-MDIX) o cualquier switch. Overrides: `-DETH_IP= ### Simulador en PC (0.6.1, ampliado en 0.6.2 y 0.6.3) — `../tools/hostsim_v5` Antes de flashear un cambio del gobernador de carga, del riel o del `$PHLG`, correr el simulador: compila este sketch sin -cambios contra stubs y un modelo eléctrico de la entrada de 5 V (calibrado con H0027) y revisa 54 escenarios (ráfagas del +cambios contra stubs y un modelo eléctrico de la entrada de 5 V (calibrado con H0027) y revisa 81 escenarios: 54 de V5.5/V4 (ráfagas del módem, cable débil, desconexión del 24 V, hiccup, batería mala, pausa NTC, autoprueba `r`, vuelta del `millis()`, VDDA, formato del `$PHLG`/`$PHCG` y largo de las líneas que van al módem, tecla `X`; desde 0.6.3 también respaldo corto con el paquete bajo, motivo del reset en el RTC y espera de carga creciente, `CHG_NOCHG`, SLEEP con la media y la vigilancia del -módem con histéresis) más un invariante de seguridad del cargador en cada vuelta del lazo. +módem con histéresis) y, desde 0.7.0-pre, 27 de V5.6/V5.7 (módem con EN/RESET/LED/RTCM3, escalera, ruido en el LED, 5 V que +rebota, caster caído, F9P sin alimentación, LFP, NTC, ignición), más un invariante de seguridad del cargador en cada vuelta +del lazo y los de V5.6/V5.7 en cada escritura de PA1/PC3/PB5/PC1/PA9. ```bash bash ../tools/hostsim_v5/run.sh # todo PASS = exit 0 bash ../tools/hostsim_v5/run.sh /ruta/a/otra/copia old # mismos escenarios contra otra versión (p. ej. 0.6.0) @@ -110,6 +133,8 @@ U13 pin 12 (P7) ──|<── SW4G1 pad 1 (MODEM_RST) diodo Schottky B ## Flash (DFU, J11) Hold **SW2** (BOOT0) → tap **SW1** (RESET) → release SW2 → device `0483:DF11` appears. +**V5.6 / V5.7 (T43): the opposite** — USB-C **J7**, hold **SW1** (BOOT0) → tap **SW2** (RESET) → release SW1, then +`dfu-util -a 0 -s 0x08000000:leave -D release/hbox-tarjetaV56_0.7.0-pre.bin` (bench only). ```bash dfu-util -a 0 -s 0x08000000:leave -D release/hbox-v5-bringup_0.5.1.bin ``` diff --git a/docs/descargas/index.md b/docs/descargas/index.md index 12c3621..a498228 100644 --- a/docs/descargas/index.md +++ b/docs/descargas/index.md @@ -1,10 +1,10 @@ --- title: "Descargas" -tags: [project-drogheda, hbox, descargas, firmware, v3, v4, v5, modem, zed-f9p] -date: 2026-10-01 +tags: [project-drogheda, hbox, descargas, firmware, v3, v4, v5, v5.6, v5.7, modem, zed-f9p] +date: 2026-10-27 project: Project Drogheda author: Helgen Technologies -version: "2.4" +version: "2.5" --- # Descargas @@ -38,6 +38,7 @@ Un binario por tarjeta. El nombre lleva la tarjeta y eso manda; el número de ve | 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…` | Vigente otra vez desde el 29-sep: 0.6.1 se retiró ([por qué](notas-de-version.md#por-que-se-retiro-061)). 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) · 89 028 B · `8a0ee4839763eae8…` | Vigente otra vez desde el 29-sep: 0.6.1 se retiró. Uso: [prueba y flasheo §5](../procedimientos/v5-prueba-y-flasheo.md) y [ensamble §5](../procedimientos/v5-ensamble.md) | +| V5.6 y V5.7 — piloto de 5 + 5 ([prueba y flasheo](../procedimientos/v56-v57-prueba-y-flasheo.md)) | STM32F411RCT6 soldado (256 KB; el volumen lleva RET6) | `hbox_v5_bringup` + `board_v56.h` (`-DHBOX_BOARD_V56`) | Ninguno vigente: solo [`prueba/hbox-tarjetaV56_0.7.0-pre.bin`](prueba/hbox-tarjetaV56_0.7.0-pre.bin), para el banco (abajo) | Piloto. DFU por **J7** con **SW1 = BOOT0** y **SW2 = RESET** (al revés que la V5.5) | 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. Qué cambió en cada versión y por qué: **[notas de versión](notas-de-version.md)**. @@ -61,8 +62,22 @@ Un binario por tarjeta. El nombre lleva la tarjeta y eso manda; el número de ve Qué probar y qué debe verse: [notas de versión → 0.6.3](notas-de-version.md#063-en-prueba). La prueba de largo de línea (tecla `X`, de 0.6.2) sigue igual: [`prueba/phtst_report.py`](prueba/phtst_report.py) (Python 3). Los binarios de 0.6.2 pasaron a `superseded/`. +!!! warning "0.7.0-pre EN PRUEBA DE BANCO (27-oct): solo para el banco del piloto V5.6 / V5.7" + El primer firmware que enciende el módem de la V5.6 y la V5.7 (pieza F-1). Un solo binario para las dos tarjetas. **No va a campo:** las unidades del piloto no se embarcan hasta que pasen los [8 criterios del banco del piloto](../procedimientos/v56-v57-prueba-y-flasheo.md#10-banco-del-piloto-los-8-criterios-para-liberar-las-135-y-las-365) y salga el firmware de campo (F-2 a F-8). + + - **El módem bajo control del MCU:** se enciende después de la etapa, recibe su pulso de RESET de rutina y el MCU lo vigila por su LED y por las correcciones RTCM3 que le entrega al F9P. Si no da señal de vida: pulsos y reinicios de alimentación con 3 min entre cada uno, nunca en lazo rápido. + - **Paquete LFP** (SLEEP a 2.95 V, rearme a 3.20 V), NTC de la celda en PC5, ignición por ADC (sirve en vehículos de 12 V) y EFCR = 0x30 lo primero (el RS-485 suelta el bus). + - Pasó una revisión independiente (14 hallazgos, todos corregidos) y 27 escenarios nuevos del simulador. + + | Tarjeta | Binario de prueba | Tamaño | SHA-256 | + |---|---|---|---| + | V5.6 y V5.7 | [`prueba/hbox-tarjetaV56_0.7.0-pre.bin`](prueba/hbox-tarjetaV56_0.7.0-pre.bin) | 112 456 B | `8dd260473e933d17…` | + + Cómo se prueba: [prueba y flasheo V5.6/V5.7](../procedimientos/v56-v57-prueba-y-flasheo.md), con el [acta de la V5.6](../formularios/v56.html) o la [de la V5.7](../formularios/v57.html). Qué cambió: [notas de versión → 0.7.0-pre](notas-de-version.md#070-pre-en-prueba). + !!! 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-tarjetaV56_…` solo en una V5.6 o una V5.7: en una V5.5 o una V4 manejaría pines que ahí son otra cosa (MODEM_EN en PC3, la NTC en PC5, la ignición por ADC). Y al revés: 0.6.x en una V5.6/V5.7 no enciende su módem. - `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 de `prueba/` en campo: son builds para el banco hasta que pasen y entren a la tabla de vigentes. diff --git a/docs/descargas/notas-de-version.md b/docs/descargas/notas-de-version.md index e4b0006..1a4b89b 100644 --- a/docs/descargas/notas-de-version.md +++ b/docs/descargas/notas-de-version.md @@ -1,15 +1,15 @@ --- title: "Notas de versión — firmware V4 / V5" -tags: [project-drogheda, hbox, firmware, notas-de-version, v4, v5, cargador, ltc4040, descargas] -date: 2026-10-01 +tags: [project-drogheda, hbox, firmware, notas-de-version, v4, v5, v5.6, v5.7, cargador, ltc4040, modem, descargas] +date: 2026-10-27 project: Project Drogheda author: Helgen Technologies -version: "1.4" +version: "1.5" --- # Notas de versión — firmware V4 / V5 -Un solo código fuente (`hbox_v5_bringup`) para las dos tarjetas: la V5 usa `hbox-v5-bringup_X.Y.Z.bin` y la V4 `hbox-tarjetaV4_X.Y.Z.bin`. La V3 tiene firmware propio (4.0.0) y no entra aquí. Binarios, SHA-256 y reglas de flasheo: [Descargas](index.md). +Un solo código fuente (`hbox_v5_bringup`) para las tarjetas: la V5 usa `hbox-v5-bringup_X.Y.Z.bin`, la V4 `hbox-tarjetaV4_X.Y.Z.bin` y, desde 0.7.0-pre, la V5.6 y la V5.7 `hbox-tarjetaV56_X.Y.Z.bin` (las dos con el mismo binario). La V3 tiene firmware propio (4.0.0) y no entra aquí. Binarios, SHA-256 y reglas de flasheo: [Descargas](index.md). !!! abstract "Las versiones en una línea" - **0.5.9**: en batería no se apaga ni cicla la etapa, pero **no carga**. La batería es de un solo uso. @@ -17,11 +17,13 @@ Un solo código fuente (`hbox_v5_bringup`) para las dos tarjetas: la V5 usa `hbo - **0.6.1** (retirada al día siguiente): el gobernador distingue una ráfaga del módem de una fuente que no aguanta. Pero su `$PHLG` era demasiado largo para el módem y el monitor se quedó sin Salud ni Energía. - **0.6.2** (prueba de banco del 30-sep, sustituida por 0.6.3): el gobernador de 0.6.1, con la telemetría en dos líneas cortas que el módem sí deja pasar. - **0.6.3** (en prueba de banco desde el 1-oct): 0.6.2, y además el módem que se apagaba en un respaldo corto con el paquete bajo vuelve solo, el motivo de cada reset llega al servidor y la unidad avisa si el cargador no carga un paquete bajo. + - **0.7.0-pre** (en prueba de banco desde el 27-oct, **solo V5.6 y V5.7**): el primer firmware que enciende y vigila el módem de esas tarjetas, con el paquete LFP, la NTC en PC5 y la ignición por ADC. En la V5.5 y la V4 nada cambia. -## Estado al 1-oct-2026 +## Estado al 27-oct-2026 {#estado-al-1-oct-2026} | Versión | Fecha | Estado | Binarios | |---|---|---|---| +| 0.7.0-pre | 27-oct | **En prueba de banco, solo V5.6 y V5.7** (piloto). No va a campo ([abajo](#070-pre-en-prueba)) | [V5.6 y V5.7](prueba/hbox-tarjetaV56_0.7.0-pre.bin) | | 0.6.3 | 1-oct | **En prueba de banco** desde el 1-oct. No flashear en campo hasta que pase ([abajo](#063-en-prueba)) | [V5](prueba/hbox-v5-bringup_0.6.3.bin) · [V4](prueba/hbox-tarjetaV4_0.6.3.bin) | | 0.6.2 | 29-sep | Prueba de banco del 30-sep; sustituida por 0.6.3 el 1-oct ([abajo](#062-en-prueba)) | [V5](superseded/hbox-v5-bringup_0.6.2.bin) · [V4](superseded/hbox-tarjetaV4_0.6.2.bin) | | 0.6.1 | 28-sep | **Retirada el 29-sep: no flashear.** Su telemetría no llega al monitor ([por qué](#por-que-se-retiro-061)) | [V5](superseded/hbox-v5-bringup_0.6.1.bin) · [V4](superseded/hbox-tarjetaV4_0.6.1.bin) | @@ -57,6 +59,41 @@ Desde 0.6.2 el firmware manda en banda el `$PHLG` con los campos 1–24 y, en el | Al volver el 24 V tras un respaldo | Reset del MCU tras ≥ 10 s | Igual | Igual. 0.6.3: también tras ≥ 1 s si el paquete bajó de 3.70 V; el motivo sale en `$PHEV BOOT` | | Build de banco con Ethernet | `0.6.0-eth` (sin cargador) | `0.6.0-eth` (con gobernador) | `0.6.1-eth` … `0.6.3-eth` (ya no repite el DHCP cada 5 s) | +## 0.7.0-pre en prueba de banco (27-oct): V5.6 y V5.7 {#070-pre-en-prueba} + +Publicada el 27-oct **solo para el banco del piloto** ([Descargas](index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta), carpeta `prueba/`). Es la pieza F-1 del plan de firmware. Un solo binario para la V5.6 y la V5.7, porque los 64 pines del MCU son iguales. En la V5.5 y la V4 no cambia nada: siguen con 0.6.x. + +### Por qué hacía falta + +0.6.x no sirve en estas tarjetas: no enciende el módem (MODEM_EN en PC3 es nuevo y R57 lo deja apagado), busca la NTC donde ya no está, usa los umbrales de Li-ion con un paquete LFP (meseta de 3.2–3.3 V) y lee la ignición con una entrada digital que a 12 V queda en la zona indefinida. + +### Qué hace + +| | 0.7.0-pre | +|---|---| +| Encendido del módem | Etapa ON → NMEA → 2 s → MODEM_EN → 1 s → pulso de RESET de 500 ms. Sin NMEA, a los 30 s, pero solo si el F9P tiene alimentación (PA10 en alto) | +| Señal de vida | 4 flancos del LED del módem en 10 s (con antirrebote) o una trama RTCM3 válida de las que el módem le entrega al F9P | +| Sin vida | 180 s → pulso de RESET (hasta 2) → MODEM_EN abajo 5 s con DIN_4G en 0 V (hasta 2) → LIMP: el módem queda encendido y hay otra escalera cada 30 min | +| Vivo y luego mudo | 3 min sin LED ni RTCM = oscuro → la misma escalera; la quinta en una hora = LIMP. Si el LED nunca se vio, sin RTCM solo un pulso por hora: puede ser el caster | +| Modo B (K1) | Solo con el módem vivo, o a los 60 s de encenderlo para que la unidad no desaparezca del monitor. Al apagar: K1 → módem → etapa | +| Respaldo | Al volver los 5 V el MCU no se reinicia; un pulso de RESET solo si el módem no dio señal de vida en el último minuto, y nunca a menos de 3 min del anterior | +| Paquete LFP | SLEEP 2.95 V, rearme 3.20 V; carga inhibida con la celda ≥ 55 °C o la tarjeta ≥ 70 °C; etapa apagada con 60 / 75 °C y rearme con 55 / 70 °C y 10 min fuera | +| Ignición | Por ADC: ON a partir de ≈ 6.9 V, OFF abajo de ≈ 4.8 V (sirve en 12 V) | +| Consola | `STAT … modem=VIVO en=1 led= rtcm= tipo= edad= rst= pwrcyc=`, teclas `M` (pulso), `Q` (reinicio de alimentación), `D` (solo vigilar) | +| En banda | `$PHLG` con la versión `0.7.0p`; `$PHEV MODEM_ON/RST/ALIVE/DARK/PWRCYC/LIMP…` y `PWR_RETURN` | + +### Revisión independiente (27-oct) + +Antes de publicarla, un agente que no escribió el código revisó el bloque del módem y encontró 14 puntos: un pico de ruido en el LED contaba como vida, un 5 V que rebota reiniciaba el módem en lazo, un caster caído castigaba a un módem sano, a los 24.8 días un módem sano salía «oscuro», el reinicio por software no apagaba en orden, durante el reinicio de alimentación algo seguía sosteniendo el riel del módem, entre otros. Todos quedaron corregidos y cada uno tiene su escenario en el simulador: 27 de V5.6/V5.7, 81 en total, todos en verde. + +### Qué falta (F-2 a F-8) + +Ciclo de 10 min en batería con el piso dormido < 100 mW, driver del SC16IS752 (RS-485 / RS-232), Ethernet de campo (build `-eth`), el acelerómetro para despertar y FOTA (D-22-6: el volumen lleva RET6). Con 0.7.0-pre se pueden correr 6 de los 8 criterios del piloto. + +### Cómo probarla + +[Prueba y flasheo V5.6/V5.7](../procedimientos/v56-v57-prueba-y-flasheo.md), con un juego de módulos de banco (faltan ArduSimple: el juego de banco no se ensambla). Lo que se ve en la consola, paso por paso, está en sus §6 y §7. + ## 0.6.3 en prueba de banco (1-oct) {#063-en-prueba} Publicada el 1-oct **solo para ingeniería y el banco** ([Descargas](index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta), carpeta `prueba/`). Sustituye a 0.6.2 con la misma telemetría (sirve el mismo servidor), los mismos cortes del gobernador de carga y el mismo encendido del módem. En campo sigue 0.6.0. diff --git a/docs/descargas/prueba/hbox-tarjetaV56_0.7.0-pre.bin b/docs/descargas/prueba/hbox-tarjetaV56_0.7.0-pre.bin new file mode 100755 index 0000000..0f1298f Binary files /dev/null and b/docs/descargas/prueba/hbox-tarjetaV56_0.7.0-pre.bin differ diff --git a/docs/formularios/ardusimple.html b/docs/formularios/ardusimple.html index ea17018..d47e439 100644 --- a/docs/formularios/ardusimple.html +++ b/docs/formularios/ardusimple.html @@ -14,7 +14,7 @@ + + + + +
+ + + + + diff --git a/docs/formularios/ensamble-v56v57.js b/docs/formularios/ensamble-v56v57.js new file mode 100644 index 0000000..cf9ea32 --- /dev/null +++ b/docs/formularios/ensamble-v56v57.js @@ -0,0 +1,101 @@ +/* Acta de ensamble — unidad HBOX con EinarBoard V5.6 o V5.7 y firmware 0.7.0-pre (27-oct-2026). + Tipo 'ensamble' (el mismo que la V5.5: el embudo de producción y la regla «un módulo, una unidad» valen igual). + Número de unidad: HBOX56-Exx-Axxx-Rxxxx / HBOX57-Exx-Axxx-Rxxxx. Procedimiento: procedimientos/v56-v57-ensamble.md. + Incluye la prueba final de la unidad del piloto (§5 a §7). */ +window.actaEnsambleV5x = function (ver) { + const v57 = ver === '5.7'; + const V = v57 ? 'V5.7' : 'V5.6', P = v57 ? 'V57' : 'V56', U = v57 ? 'HBOX57' : 'HBOX56'; + const volt = (k, txt, esp) => ({ tipo: 'medida', clave: k, txt, esperado: esp, u: 'V' }); + return { + tipo: 'ensamble', + titulo: 'Acta de ensamble — unidad HBOX ' + V, + subtitulo: 'Una unidad a la vez. Procedimiento: Ensamble de la unidad V5.6 / V5.7.', + intro: 'Primero el acta, luego el desarmador. Elige la tarjeta ' + V + ' y la pareja ArduSimple + 4G: el sitio verifica que estén aprobadas, ' + + 'que la pareja tenga integración y que ningún módulo esté en otra unidad. El número de unidad se calcula solo ' + + '(' + U + '-Exx-Axxx-Rxxxx). Procedimiento: Ensamble de la unidad V5.6 / V5.7.', + borrador: true, + tecnicoDesdeUsuario: true, + nombres: { leo: 'Leo Rodríguez', jesus: 'Jesús Romero', gibranlp: 'Gibran Ortega', daniel: 'Daniel Martínez' }, + componentes: [ + { clave: 'einar', etiqueta: 'EinarBoard ' + V, prefijo: P, desde: 1, hasta: v57 ? 370 : 140, pad: 2, tipoActa: v57 ? 'prueba-v57' : 'prueba-v56' }, + { clave: 'ard', etiqueta: 'simpleRTK2B Pro (ArduSimple)', prefijo: 'ARD', desde: 1, hasta: 100, pad: 3, tipoActa: 'modulo-ard' }, + { clave: 'modem', etiqueta: '4G NTRIP Master', prefijo: 'RTK', desde: 1, hasta: 100, pad: 4, tipoActa: 'modulo-4g' }, + ], + serie: s => U + '-E' + Acta.num(s.einar) + '-A' + Acta.num(s.ard) + '-R' + Acta.num(s.modem), + prefijoPrueba: U, + prerequisitos: [ + { etiqueta: 'Integración ArduSimple + 4G', tipo: 'integracion', serie: s => 'INT-A' + Acta.num(s.ard) + '-R' + Acta.num(s.modem) }, + ], + exigirAprobados: true, + unicoPorComponente: true, + textoOK: 'APROBADA — UNIDAD LISTA', + secciones: [ + { titulo: '1 · Antes de empezar', + items: [ + { tipo: 'fecha', clave: 's01_00_fecha', req: true, guardaEn: 'fecha', txt: 'Fecha' }, + { tipo: 'check', clave: 's01_01_banco', req: true, txt: 'Ninguno de los dos módulos es del juego de banco (etiqueta «BANCO»): esos no se ensamblan mientras dure el piloto.' }, + { tipo: 'check', clave: 's01_02_fw', req: true, txt: 'La tarjeta trae 0.7.0-pre de su acta de prueba (el encabezado lo dirá en §5).' }, + ] }, + { titulo: '2 · Tarjeta (sin energía)', + items: [ + { tipo: 'check', clave: 's02_00_serie', req: true, txt: 'La EinarBoard física es la ' + P + '-NN elegida arriba (etiqueta cerca de MH3).' }, + { tipo: 'check', clave: 's02_01_jp', req: true, txt: 'Puentes de fábrica intactos: JP3 2-3 (LFP), JP5 1-2, JP4 1-2, ' + + (v57 ? 'JP1 cerrado' : 'JP1 abierto') + ', JP2 abierto. No se cambian en banco.' }, + { tipo: 'check', clave: 's02_02_j2', req: true, txt: 'J2 sin el puente de banco: ahí va el interruptor de corte del panel.' }, + { tipo: 'check', clave: 's02_03_fija', req: true, txt: 'Tarjeta fija en la base del HBOX con MH1, MH3 y MH6 (MH2, MH4 y MH5 son los separadores del simpleRTK2B), sin flexión; apriete suave.' }, + ] }, + { titulo: '3 · Módulos (sin energía)', + items: [ + { tipo: 'check', clave: 's03_00_mod1', req: true, txt: 'simpleRTK2B en MOD1: pin «5V» del módulo sobre MOD1 pin 5, las tiras a fondo, ninguna clavija fuera.' }, + { tipo: 'check', clave: 's03_01_xbee', req: true, txt: '4G NTRIP Master en J8/J9 de la EinarBoard (paso 2.00 mm), silueta sobre la serigrafía. No en el simpleRTK2B: su USB-XBEE no se usa en servicio.' }, + { tipo: 'check', clave: 's03_02_sim', req: true, txt: 'SIM puesta. Nada roza la tapa, K1 ni los capacitores altos (C68, C30, C14).' }, + ] }, + { titulo: '4 · Panel y arnés (sin energía)', + items: [ + { tipo: 'check', clave: 's04_00_j15', req: true, txt: 'J15 ← GX16-5: 1 = + vehículo, 2 y 4 = GND, 3 = ignición, 5 = sin conexión. Polaridad medida antes de conectar.' }, + v57 ? { tipo: 'nota', txt: 'La V5.7 no lleva Mean Well: el GX16 entra directo a J15 (9–32 V).' } + : volt('s04_01_sd15', 'Salida de la Mean Well SD-15B-05, ajustada en banco antes de montarla', '5.30 V (5.2–5.4)'), + v57 ? { tipo: 'nota', txt: 'J16 no existe en la V5.7.' } + : { tipo: 'check', clave: 's04_02_j16', req: true, txt: 'J16 ← salida de la SD-15B (pin 1 = +5 V); la entrada de la SD-15B, del GX16 (24 V). Cable corto.' }, + { tipo: 'check', clave: 's04_03_jst', req: true, txt: 'J3 ventilador · J4 LED de panel · J1 botón de reset · J2 interruptor de corte · J10 LED RGB si el panel lo lleva. Cada JST con clic.' }, + { tipo: 'radio', clave: 's04_04_largos', req: true, txt: 'Largo de los arneses (los JST se movieron respecto a la V5.5)', opciones: ['Alcanzan sin tensión', 'Hubo que alargar alguno (anótalo en Observaciones)'] }, + { tipo: 'check', clave: 's04_05_ant', req: true, txt: 'GNSS: bulkhead SMA → SMA del simpleRTK2B con fijador de rosca. LTE: 2 bulkheads SMA → u.FL del módem, con clic y sin dobleces cerrados.' }, + { tipo: 'check', clave: 's04_06_j5', req: true, txt: 'J5 (paquete) todavía sin conectar. Cables con bridas; nada expuesto cerca de la entrada del vehículo.' }, + ] }, + { titulo: '5 · Energizado desde 24 V (sin batería) y prueba de la unidad', + sub: 'Fuente 24.0 V, límite 1.5 A, al GX16. Interruptor de corte en ON. USB en J7, terminal a 115200. Ignición (GX16 pin 3) a 24 V.', + items: [ + { tipo: 'check', clave: 's05_00_post', req: true, txt: 'Consola: hbox-v5-bringup 0.7.0-pre, 18 PASS y >>> BOARD OK.' }, + { tipo: 'medida', clave: 's05_01_v5', txt: 'STAT v5', esperado: v57 ? '5.20–5.45 V' : '5.20–5.40 V', u: 'V' }, + { tipo: 'check', clave: 's05_02_secuencia', req: true, txt: 'Sola, en modo AUTO: STACK ON → NMEA primera trama → MODEM ON → MODEM_RST → MODEM VIVO → MODOB ON (K1 hace clic).' }, + { tipo: 'medida', clave: 's05_03_rtcm', txt: 'MODEM ON → primer STAT con rtcm > 0', esperado: '< 60 s', u: 's' }, + { tipo: 'medida', clave: 's05_04_fix', txt: 'Encendido → fix=4 (RTK FIX), tecla n', esperado: '< 10 min con cielo', u: 'min' }, + { tipo: 'medida', clave: 's05_05_sats', txt: 'Satélites con fix=4', esperado: '≥ 10', u: 'sat' }, + { tipo: 'check', clave: 's05_06_fan', txt: 'Con la ignición a 24 V el ventilador gira; con la ignición a 0 V, IGN OFF y se detiene.' }, + { tipo: 'medida', clave: 's05_07_i', txt: 'Corriente a 24 V con la etapa y el módem encendidos', esperado: 'anota (se fija con el piloto)', u: 'mA' }, + { tipo: 'radio', clave: 's05_08_monitor', req: true, txt: 'La unidad aparece en el monitor (VERONICA / Wialon) con posición', opciones: ['Sí', 'No (anótalo y avisa a ingeniería)'] }, + ] }, + { titulo: '6 · Batería y respaldo', + sub: 'P apaga la etapa. Paquete LFP-HT 26650 1S4P en J5 (1 = BAT+, 2 = GND, 3 = NTC). P + Y la enciende.', + items: [ + volt('s06_00_voc', 'Paquete en vacío', '2.8–3.6 V'), + { tipo: 'medida', clave: 's06_01_vbat', modo: 'text', txt: 'STAT vbat / tcel', esperado: 'vbat ≈ paquete; tcel ≈ cuarto', ph: '3.27 / 24.8' }, + { tipo: 'check', clave: 's06_02_carga', txt: 'carga=ON ltc=CARGANDO unos 150 s después de STACK ON (si el paquete no está lleno).' }, + { tipo: 'tabla', clave: 's06_03_cortes', txt: 'Respaldo: corta y regresa los 24 V tres veces, 30 s cada vez', + etiquetaFilas: 'Corte', filas: ['1', '2', '3'], + columnas: [ + { k: 'reset', txt: '¿El MCU reinició?', opciones: ['no', 'sí'] }, + { k: 'modem', txt: 'Módem en batería', opciones: ['VIVO', 'se cayó'] }, + { k: 'vuelta', txt: 'Al volver los 24 V', opciones: ['sin reset, módem vivo', 'reinició', 'módem mudo'] }, + ] }, + { tipo: 'texto', clave: 's06_04_obs', txt: 'Observaciones', ph: 'reinicios, calentamiento, corriente fuera de rango…' }, + ] }, + { titulo: '7 · Cierre y etiquetado', + items: [ + { tipo: 'check', clave: 's07_00_etq', req: true, txt: 'Etiqueta exterior ' + U + '-Exx-Axxx-Rxxxx junto al GX16 e interior en la tapa.' }, + { tipo: 'check', clave: 's07_01_corte', txt: 'Corte en OFF para almacenar. Tapa con sello, tornillos en cruz, prensaestopas apretados.' }, + { tipo: 'nota', txt: 'Unidad del piloto: no se embarca hasta que pasen los 8 criterios del banco del piloto y salga el firmware de campo.' }, + ] }, + ], + }; +}; diff --git a/docs/formularios/ensamble-v57.html b/docs/formularios/ensamble-v57.html new file mode 100644 index 0000000..a2b66c2 --- /dev/null +++ b/docs/formularios/ensamble-v57.html @@ -0,0 +1,21 @@ + + + + + +Acta de ensamble — unidad HBOX V5.7 + + + + + +
+ + + + + diff --git a/docs/formularios/ensamble.html b/docs/formularios/ensamble.html index 8484513..9731806 100644 --- a/docs/formularios/ensamble.html +++ b/docs/formularios/ensamble.html @@ -19,8 +19,8 @@ Acta.render({ intro: 'Primero el acta, luego el desarmador. Elige los tres módulos: el sitio verifica que estén aprobados, que la pareja tenga integración y que ninguno esté en otra unidad. El número de unidad se calcula solo.', componentes: [ { clave:'einar', etiqueta:'EinarBoard v5', prefijo:'V5', desde:1, hasta:30, pad:2, tipoActa:'prueba-v5' }, - { clave:'ard', etiqueta:'simpleRTK2B Pro (ArduSimple)', prefijo:'ARD', desde:1, hasta:30, pad:3, tipoActa:'modulo-ard' }, - { clave:'modem', etiqueta:'4G NTRIP Master', prefijo:'RTK', desde:1, hasta:30, pad:4, tipoActa:'modulo-4g' }, + { clave:'ard', etiqueta:'simpleRTK2B Pro (ArduSimple)', prefijo:'ARD', desde:1, hasta:100, pad:3, tipoActa:'modulo-ard' }, + { clave:'modem', etiqueta:'4G NTRIP Master', prefijo:'RTK', desde:1, hasta:100, pad:4, tipoActa:'modulo-4g' }, ], serie: s => 'HBOX5-E' + Acta.num(s.einar) + '-A' + Acta.num(s.ard) + '-R' + Acta.num(s.modem), prefijoPrueba: 'HBOX5', diff --git a/docs/formularios/integracion.html b/docs/formularios/integracion.html index 40908c5..d68c638 100644 --- a/docs/formularios/integracion.html +++ b/docs/formularios/integracion.html @@ -18,8 +18,8 @@ Acta.render({ subtitulo: 'La pareja que irá junta en una unidad. Procedimiento: Módulos e integración §3.', intro: 'Elige los dos módulos. Ambos deben estar aprobados en su acta; el sitio lo verifica.', componentes: [ - { clave:'ard', etiqueta:'simpleRTK2B Pro (ArduSimple)', prefijo:'ARD', desde:1, hasta:30, pad:3, tipoActa:'modulo-ard' }, - { clave:'modem', etiqueta:'4G NTRIP Master', prefijo:'RTK', desde:1, hasta:30, pad:4, tipoActa:'modulo-4g' }, + { clave:'ard', etiqueta:'simpleRTK2B Pro (ArduSimple)', prefijo:'ARD', desde:1, hasta:100, pad:3, tipoActa:'modulo-ard' }, + { clave:'modem', etiqueta:'4G NTRIP Master', prefijo:'RTK', desde:1, hasta:100, pad:4, tipoActa:'modulo-4g' }, ], serie: s => 'INT-A' + Acta.num(s.ard) + '-R' + Acta.num(s.modem), prefijoPrueba: 'INT', diff --git a/docs/formularios/modem4g.html b/docs/formularios/modem4g.html index fbb2b01..e59f7cc 100644 --- a/docs/formularios/modem4g.html +++ b/docs/formularios/modem4g.html @@ -14,7 +14,7 @@ + + + + +
+ + + + diff --git a/docs/formularios/prueba-v56v57.js b/docs/formularios/prueba-v56v57.js new file mode 100644 index 0000000..1c1b1ba --- /dev/null +++ b/docs/formularios/prueba-v56v57.js @@ -0,0 +1,208 @@ +/* Acta de prueba por tarjeta — EinarBoard V5.6 y V5.7 con firmware 0.7.0-pre (27-oct-2026). + Tipos 'prueba-v56' (V56-NN) y 'prueba-v57' (V57-NN); una por serie. Las dos tarjetas comparten casi todo: + este archivo arma la configuración y v56.html / v57.html solo eligen la versión. + Procedimiento: procedimientos/v56-v57-prueba-y-flasheo.md (designadores de T43, los de la serigrafía). + - Las claves llevan el prefijo sNN_MM_ para que ver.html las muestre en orden, por sección. + - Cada etapa termina con «¿pasó?». Si no pasó, las secciones siguientes se ocultan (sus obligatorios dejan de + contar) y el acta se envía como FALLA desde el Cierre. */ +window.actaV5x = function (ver) { + const v57 = ver === '5.7'; + const V = v57 ? 'V5.7' : 'V5.6', P = v57 ? 'V57' : 'V56'; + const empieza = (v, k, t) => String(v[k] || '').startsWith(t); + const NO = 'No pasó — me detengo (explico en Cierre)'; + const FIN = ['s01_99_fin', 's02_99_fin', 's03_99_fin', 's04_99_fin', 's05_99_fin', 's06_99_fin', 's07_99_fin', 's08_99_fin']; + const hasta = n => v => FIN.slice(0, n).every(k => empieza(v, k, 'Pasó')); // pasaron las n etapas anteriores + const fin = (n, txt) => ({ tipo: 'radio', clave: FIN[n - 1], req: true, txt: '¿Pasó esta etapa?', opciones: [txt || 'Pasó — sigo', NO] }); + const ohm = (k, txt, esp) => ({ tipo: 'medida', clave: k, txt, esperado: esp || '> 1 kΩ', u: 'Ω', ph: 'p.ej. 3.2k' }); + const volt = (k, txt, esp, aviso) => Object.assign({ tipo: 'medida', clave: k, txt, esperado: esp, u: 'V' }, aviso ? { aviso } : {}); + + // ---------------- §4: rieles con fuente (MCU virgen) — lo único que cambia entre V5.6 y V5.7 ---------------- + const rieles = v57 ? [ + { tipo: 'nota', txt: 'Puente de banco en J2. Fuente a 24.0 V, límite 300 mA, en J15 (pin 1 = +, pin 2 = GND). Sin USB. J15 pin 3 al aire.' }, + { tipo: 'medida', clave: 's04_00_i', txt: 'Corriente en J15 a 24 V', esperado: '< 100 mA (típico 30–60 mA, a confirmar)', u: 'mA' }, + volt('s04_01_veh', 'J3 pin 1 (VEH5V por JP1) contra TP1', '5.20–5.45 V (nominal 5.32)'), + volt('s04_02_main', 'J2 pin 1 (MAIN5V)', 'J3 pin 1 menos ≈ 20 mV'), + volt('s04_03_sys', 'J2 pin 2 (SYS5V)', 'igual que J2 pin 1'), + volt('s04_04_3v3', 'TP2 (3V3)', '3.23–3.37 V'), + volt('s04_05_sw5v', 'MOD1 pin 5 (SW_5V)', '0 V (obligatorio)', 'Con 5 V aquí: FALLA (la etapa RTK no arranca apagada).'), + volt('s04_06_3v3m', 'J8 pin 1 (3V3_MODEM)', '0 V (obligatorio)', 'Con 3.3 V aquí: FALLA (el módem no arranca apagado).'), + { tipo: 'radio', clave: 's04_07_tp6', req: true, txt: 'TP6 (PFO) con 10 kΩ a TP2', opciones: ['Alto (≈ 3.3 V)', 'Bajo'] }, + { tipo: 'check', clave: 's04_08_frio', txt: 'U15, D21 y L4 fríos o tibios; K1 sin clic.' }, + volt('s04_09_veh12', 'J3 pin 1 con la fuente a 12.0 V', '5.20–5.45 V'), + ] : [ + { tipo: 'nota', txt: 'Puente de banco en J2. Fuente a 5.30 V, límite 500 mA, en J16 (pin 1 = +5 V, pin 2 = GND). Sin USB.' }, + { tipo: 'medida', clave: 's04_00_i', txt: 'Corriente en J16', esperado: '< 300 mA (típico 100–250 mA, a confirmar)', u: 'mA' }, + volt('s04_02_main', 'J2 pin 1 (MAIN5V) contra TP1', '5.20–5.35 V'), + volt('s04_03_sys', 'J2 pin 2 (SYS5V)', 'igual que J2 pin 1'), + volt('s04_04_3v3', 'TP2 (3V3)', '3.23–3.37 V'), + volt('s04_05_sw5v', 'MOD1 pin 5 (SW_5V)', '0 V (obligatorio)', 'Con 5 V aquí: FALLA (la etapa RTK no arranca apagada).'), + volt('s04_06_3v3m', 'J8 pin 1 (3V3_MODEM)', '0 V (obligatorio)', 'Con 3.3 V aquí: FALLA (el módem no arranca apagado).'), + { tipo: 'radio', clave: 's04_07_tp6', req: true, txt: 'TP6 (PFO) con 10 kΩ a TP2', opciones: ['Alto (≈ 3.3 V)', 'Bajo'] }, + { tipo: 'check', clave: 's04_08_frio', txt: 'U14 y U9 fríos o tibios; K1 sin clic.' }, + { tipo: 'nota', txt: 'Apaga J16. Ahora 24.0 V, límite 200 mA, en J15 (pin 1 = +, pin 2 = GND), J15 pin 3 al aire, J16 sin fuente: en la V5.6 el 24 V solo alimenta el buck del ventilador (U15).' }, + { tipo: 'medida', clave: 's04_10_i24', txt: 'Corriente en J15', esperado: '< 50 mA (sin ventilador)', u: 'mA' }, + volt('s04_11_fan', 'J3 pin 1 contra TP1 (no contra J3 pin 2)', '4.85–5.15 V'), + { tipo: 'check', clave: 's04_12_d12', txt: 'D12 apagado (sin J16 ni USB la tarjeta no tiene 5 V: correcto); U15 frío o tibio.' }, + ]; + rieles.push(fin(4)); + + const cfg = { + tipo: v57 ? 'prueba-v57' : 'prueba-v56', + prefijo: P, + series: v57 ? 370 : 140, // piloto (5) + volumen (365 / 135) + tecnicoDesdeUsuario: true, + nombres: { leo: 'Leo Rodríguez', jesus: 'Jesús Romero', gibranlp: 'Gibran Ortega', daniel: 'Daniel Martínez' }, + etiquetaSerie: 'Tarjeta ' + V, + titulo: 'Acta de prueba — EinarBoard ' + V + ' con firmware 0.7.0-pre', + subtitulo: 'Un acta por tarjeta (' + P + '-01 …) · ≈ 1 h con el juego de módulos de banco', + textoOK: 'APROBADA', + borrador: true, + intro: 'Llénala mientras avanzas por el procedimiento ' + + '' + 'V5.6 y V5.7 — prueba y flasheo (0.7.0-pre). ' + + 'Designadores de T43 (los de la serigrafía): SW1 = BOOT0 y SW2 = RESET, al revés que en la V5.5. ' + + 'Si una etapa no pasa, marca «me detengo»: lo que sigue se oculta, llenas el Cierre y envías como FALLA. ' + + 'La serie PRUEBA sirve para practicar.', + secciones: [ + { titulo: '0 · Datos', + items: [ + { tipo: 'fecha', clave: 's00_00_fecha', req: true, guardaEn: 'fecha', txt: 'Fecha' }, + { tipo: 'check', clave: 's00_01_sha', req: true, txt: 'SHA-256 de hbox-tarjetaV56_0.7.0-pre.bin verificado contra SHA256SUMS.txt de Descargas.' }, + { tipo: 'texto', clave: 's00_02_ard', rows: '1', txt: 'simpleRTK2B de banco (ARD-NNN)', ph: 'ARD-004' }, + { tipo: 'texto', clave: 's00_03_rtk', rows: '1', txt: '4G NTRIP Master de banco (RTK-NNNN)', ph: 'RTK-0021' }, + { tipo: 'texto', clave: 's00_04_fuente', rows: '1', txt: 'Fuente de banco (marca y modelo)', ph: 'p.ej. Korad KA3005D' }, + ] }, + { titulo: '1 · Recepción e inspección (sin energía)', + sub: 'Con lupa. Un U14 dudoso no se energiza.', + items: [ + { tipo: 'check', clave: 's01_00_u14', req: true, txt: 'U14 (LTC4040, QFN): sin puentes entre pines ni bolitas de soldadura alrededor.' }, + { tipo: 'foto', clave: 's01_01_f_u14', req: true, etiqueta: 'u14-lupa', txt: 'U14 con lupa (de frente y de lado)' }, + { tipo: 'radio', clave: 's01_02_rx', req: true, txt: 'Radiografía de U14 de JLC', opciones: ['Llegó, sin defectos', 'No llegó', 'Llegó con defectos'] }, + { tipo: 'foto', clave: 's01_03_f_rx', etiqueta: 'u14-rayos-x', txt: 'Radiografía de U14', si: v => empieza(v, 's01_02_rx', 'Llegó') }, + { tipo: 'check', clave: 's01_04_ics', req: true, txt: 'Sin puentes en U3 (MCU), U2 (W5500), U5 (SC16IS752) y U13 (fuente del módem).' }, + { tipo: 'check', clave: 's01_05_pol', req: true, txt: 'Polaridad: «+» de C68, C30, C14, C73 y C1; banda de D2, D4, D8, D9 y D11' + + (v57 ? '; banda de D21 (B560C) y punto de L4.' : '.') }, + { tipo: 'check', clave: 's01_06_jp', req: true, txt: 'Puentes de soldadura de fábrica: JP3 2-3 (LFP), JP5 1-2, JP4 1-2 (3.50 V), ' + + (v57 ? 'JP1 cerrado' : 'JP1 abierto (no se cierra nunca en la V5.6)') + ', JP2 abierto, JP6 abierto.' }, + { tipo: 'check', clave: 's01_07_xtal', req: true, txt: 'Y2 y Y1 25.000; Y3 3.6864 o 36.864; Y4 de 32.768 kHz.' }, + { tipo: 'check', clave: 's01_08_mec', req: true, txt: 'SW1, SW2 y SW3 con clic; J7, J8, J9, J15' + (v57 ? '' : ', J16') + ' asentados; sin piezas faltantes ni quemadas.' }, + fin(1), + ] }, + { titulo: '2 · Cortos a tierra (sin energía)', si: hasta(1), + sub: 'Multímetro en ohms, punta negra en TP1. Lectura fija de 0–20 Ω = corto.', + items: [ + ohm('s02_00_3v3', 'TP2 — 3V3'), + ohm('s02_01_veh', v57 ? 'J3 pin 1 — VEH5V' : 'J16 pin 1 — VEH5V'), + ohm('s02_02_main', 'J2 pin 1 — MAIN5V'), + ohm('s02_03_sys', 'J2 pin 2 — SYS5V'), + ohm('s02_04_in', 'J15 pin 1 — entrada del vehículo', '> 10 kΩ'), + ohm('s02_05_sw5v', 'MOD1 pin 5 — SW_5V (etapa RTK)'), + ohm('s02_06_3v3m', 'J8 pin 1 — 3V3_MODEM'), + ohm('s02_07_bat', 'J5 pin 1 — BAT_PLUS'), + fin(2), + ] }, + { titulo: '3 · Riel de 3.3 V por USB (J7)', si: hasta(2), + sub: 'USB-C en J7. Solo energiza el MCU y la lógica de 3.3 V.', + items: [ + { tipo: 'check', clave: 's03_00_d12', txt: 'D12 (PWR, verde) encendido.' }, + volt('s03_01_tp2', 'TP2 respecto a TP1', '3.23–3.37 V'), + { tipo: 'check', clave: 's03_02_u4', txt: 'U4 tibio tras 1 min (si quema: FALLA).' }, + fin(3), + ] }, + { titulo: '4 · Rieles de 5 V con fuente (MCU virgen)', si: hasta(3), + sub: 'Con el MCU virgen el hardware debe dejar todo apagado: etapa RTK (R8), módem (R57), W5500 (R5) y K1.', + items: rieles }, + { titulo: '5 · Flasheo por USB DFU (J7)', si: hasta(4), + sub: 'Solo el USB en J7. Mantén SW1 (BOOT0), pulsa y suelta SW2 (RESET), suelta SW1 → STM32 BOOTLOADER (0483:DF11). Binario en 0x08000000.', + items: [ + { tipo: 'radio', clave: 's05_00_dfu', req: true, txt: 'Modo DFU', opciones: ['A la primera', 'Al segundo intento o con otro cable'] }, + { tipo: 'radio', clave: 's05_01_herr', req: true, txt: 'Con qué se flasheó', opciones: ['dfu-util', 'STM32CubeProgrammer'] }, + { tipo: 'check', clave: 's05_02_ok', req: true, txt: '«download complete» (o «File download complete») y verificación correcta.' }, + fin(5, 'Pasó — flasheada y verificada'), + ] }, + { titulo: '6 · Autoprueba (consola en J7, 115200)', si: hasta(5), + sub: 'Abre el terminal y pulsa SW2 (RESET); si llegaste tarde, teclea r.', + items: [ + { tipo: 'check', clave: 's06_00_enc', req: true, txt: 'Encabezado hbox-v5-bringup 0.7.0-pre y board=EinarBoard V5.6/V5.7.' }, + { tipo: 'radio', clave: 's06_01_flash', req: true, txt: 'flash= en el encabezado', opciones: ['256KB (RCT6, piloto)', '512KB (RET6)'] }, + { tipo: 'check', clave: 's06_02_efcr', req: true, txt: 'RS-485: EFCR_A de U5 = 0x30 … bus libre.' }, + { tipo: 'check', clave: 's06_03_mdm', req: true, txt: 'modem apagado: LED PC2=0 RTCM PC7=0 (0/0).' }, + { tipo: 'check', clave: 's06_04_leds', req: true, txt: 'D10 y el LED de panel parpadean; D17 → D14 encienden en secuencia una vez.' }, + { tipo: 'medida', clave: 's06_05_temp', modo: 'text', txt: 'TMP102 U12 / TMP102 U8 / SHT40 (°C)', esperado: 'a menos de 5 °C entre sí', ph: '27.5 / 27.8 / 27.9' }, + volt('s06_05b_de', 'U7 pin 3 (DE del RS-485) contra TP1, en reposo', '0 V', '≈ 3.3 V: el transmisor sostiene el bus (E-4): FALLA, avisa a ingeniería.'), + { tipo: 'radio', clave: 's06_06_res', req: true, txt: 'Resultado de la autoprueba', opciones: ['>>> BOARD OK (18 PASS / 0 FAIL)', 'BOARD CHECK FAILED'] }, + { tipo: 'texto', clave: 's06_07_fails', req: true, txt: 'Líneas [FAIL] completas', ph: '[FAIL] ACCEL U1 @0x18 WHO_AM_I=0x00 …', si: v => empieza(v, 's06_06_res', 'BOARD CHECK') }, + { tipo: 'archivo', clave: 's06_08_cons', etiqueta: 'consola-autoprueba', txt: 'Captura de la consola desde el encabezado (opcional)' }, + fin(6, 'Pasó — >>> BOARD OK'), + ] }, + { titulo: '7 · Etapa RTK y módem con el juego de banco', si: hasta(6), + sub: 'Sin energía: simpleRTK2B de banco en MOD1, 4G NTRIP Master de banco en J8/J9, antena GNSS al cielo y 2 antenas LTE. Fuente: ' + + (v57 ? '24.0 V en J15, límite 1.5 A.' : '5.30 V en J16, límite 3 A (o la SD-15B ajustada a 5.30 V).') + ' Puente de banco en J2, USB en J7.', + items: [ + { tipo: 'medida', clave: 's07_00_nmea', txt: 'STACK ON → primera trama NMEA', esperado: '< 2 s', u: 's' }, + { tipo: 'check', clave: 's07_01_on', req: true, txt: 'MODEM ON (nmea) y luego MODEM_RST modem_on … 500 ms en la consola.' }, + { tipo: 'medida', clave: 's07_02_vivo', txt: 'MODEM ON → MODEM VIVO', esperado: '< 60 s (el MCU espera hasta 180 s por escalón)', u: 's' }, + { tipo: 'radio', clave: 's07_03_por', req: true, txt: 'MODEM VIVO por', opciones: ['led', 'rtcm'] }, + { tipo: 'check', clave: 's07_04_k1', req: true, txt: 'MODOB ON: K1 hizo clic.' }, + volt('s07_05_sw5v', 'MOD1 pin 5 (SW_5V)', '5.0–5.4 V'), + volt('s07_06_3v3m', 'J8 pin 1 (3V3_MODEM)', '3.25–3.40 V'), + { tipo: 'medida', clave: 's07_07_rtcm', txt: 'MODEM ON → primer STAT con rtcm > 0', esperado: '< 60 s (registro + NTRIP)', u: 's' }, + { tipo: 'medida', clave: 's07_08_tipo', modo: 'text', txt: 'STAT: tipo= y B/s', ph: '1077 · 320 B/s' }, + { tipo: 'radio', clave: 's07_09_d13', req: true, txt: 'D13 (LED del módem) con el módem vivo', opciones: ['Parpadea', 'Fijo', 'Apagado'] }, + { tipo: 'medida', clave: 's07_10_led', modo: 'text', txt: 'led= de tres STAT seguidos (flancos por 30 s)', ph: '121 / 119 / 120' }, + volt('s07_10b_r48', 'Solo si D13 parpadea y led=0: PC2 en el lado del MCU de R48, con el LED del módem encendido', 'anota (≥ 1.8 V se lee como alto)'), + { tipo: 'medida', clave: 's07_11_fix', txt: 'Encendido → fix=4 (RTK FIX), tecla n', esperado: '< 10 min con cielo', u: 'min' }, + { tipo: 'medida', clave: 's07_12_sats', txt: 'Satélites con fix=4', esperado: '≥ 10', u: 'sat' }, + { tipo: 'check', clave: 's07_13_m', txt: 'Tecla M: pulso de RESET; el módem vuelve a VIVO (normalmente < 60 s).' }, + { tipo: 'check', clave: 's07_14_q', txt: 'Tecla Q: K1 se suelta, MODEM OFF, K1 hace clic 5 s (DIN_4G en 0 V), se suelta, MODEM ON (pwrcyc) y el módem vuelve a VIVO.' }, + volt('s07_14b_q3v3', 'J8 pin 1 durante los 5 s de Q', '< 0.3 V', '≈ 1 V: algo alimenta al módem apagado (E-13): anótalo y avisa a ingeniería.'), + { tipo: 'check', clave: 's07_15_off', txt: 'Tecla P: STACK OFF en orden — K1 suelto, MODEM OFF y luego la etapa.' }, + { tipo: 'medida', clave: 's07_16_i', txt: 'Corriente de la fuente con la etapa y el módem encendidos', esperado: 'anota (se fija con el piloto)', u: 'mA' }, + { tipo: 'check', clave: 's07_17_u13', txt: 'U13 y L2 tibios tras 5 min.' }, + fin(7), + ] }, + { titulo: '8 · Batería y respaldo', si: hasta(7), + sub: 'Con el juego de banco. P apaga la etapa; conecta el paquete en J5 (1 = BAT+, 2 = GND, 3 = NTC); P + Y la enciende.', + items: [ + volt('s08_00_voc', 'Paquete LFP en vacío', '2.8–3.6 V'), + { tipo: 'medida', clave: 's08_01_vbat', modo: 'text', txt: 'STAT vbat / tcel', esperado: 'vbat ≈ paquete; tcel ≈ cuarto (n/c = NTC sin conectar: FALLA)', ph: '3.28 / 25.1' }, + { tipo: 'check', clave: 's08_02_carga', req: true, txt: 'carga=ON ltc=CARGANDO unos 150 s después de STACK ON.' }, + { tipo: 'medida', clave: 's08_03_ichg', txt: 'Corriente de carga (pinza de CD en el cable de J5 pin 1)', esperado: '1.2–1.4 A (paquete abajo de ≈ 3.4 V)', u: 'A' }, + volt('s08_04_tp7', 'V(TP7) con la carga encendida', 'anota'), + { tipo: 'medida', clave: 's08_05_r68', txt: 'V(R68) en sus pads, escala de 200 mV', esperado: '≥ 10 mV', u: 'mV' }, + { tipo: 'medida', clave: 's08_06_kelvin', txt: '(V(TP7) / 32) / V(R68)', esperado: '1.0–1.1', ph: '1.04' }, + { tipo: 'tabla', clave: 's08_07_cortes', txt: 'Respaldo: apaga y prende la fuente (' + (v57 ? 'J15' : 'J16') + ') tres veces, 30 s cada vez', + etiquetaFilas: 'Corte', filas: ['1', '2', '3'], + columnas: [ + { k: 'reset', txt: '¿El MCU reinició?', opciones: ['no', 'sí'] }, + { k: 'modem', txt: 'Módem en batería', opciones: ['VIVO', 'se cayó'] }, + { k: 'nmea', txt: 'nmea= sigue subiendo', opciones: ['sí', 'no'] }, + { k: 'vuelta', txt: 'Al volver los 5 V', opciones: ['sin reset, módem vivo', 'reinició', 'módem mudo'] }, + ] }, + { tipo: 'check', clave: 's08_08_tp6', txt: 'TP6 bajo durante el respaldo (con 10 kΩ a TP2).' }, + fin(8), + ] }, + { titulo: '9 · Ignición y ventilador', si: hasta(8), + sub: 'Ventilador de 5 V en J3' + (v57 ? '' : ' y 24 V en J15 pin 1 para su buck (además de J16)') + '. Segunda fuente (límite 50 mA) entre J15 pin 3 (+) y J15 pin 2 (GND).', + items: [ + { tipo: 'tabla', clave: 's09_00_ign', txt: 'Ignición por ADC: ON a partir de ≈ 6.9 V, OFF abajo de ≈ 4.8 V', + etiquetaFilas: 'J15 pin 3', filas: ['0 V', '12.0 V', '24.0 V', '3.0 V'], + columnas: [ + { k: 'ign', txt: 'STAT ign=', ph: 'ON(12.1V)', ancho: '110px' }, + { k: 'fan', txt: 'Ventilador', opciones: ['gira', 'detenido'] }, + ] }, + { tipo: 'radio', clave: 's09_99_fin', req: true, txt: '¿Pasó esta etapa?', opciones: ['Pasó', NO] }, + ] }, + { titulo: '10 · Cierre', + items: [ + { tipo: 'check', clave: 's10_00_ret', txt: 'Sin energía: paquete y módulos de banco retirados (a sus bolsas «BANCO»); puente de banco fuera de J2.' }, + { tipo: 'check', clave: 's10_01_etq', txt: 'Etiqueta ' + P + '-NN con la fecha cerca de MH3, sin tapar la serigrafía.' }, + { tipo: 'radio', clave: 's10_02_clasif', req: true, guardaEn: 'clasificacion', txt: 'Clasificación', + opciones: ['Pasó todo', 'FALLA: inspección', 'FALLA: cortos', 'FALLA: 3V3 por USB', 'FALLA: rieles de 5 V', 'FALLA: flasheo', + 'FALLA: autoprueba', 'FALLA: etapa o módem', 'FALLA: batería o respaldo', 'FALLA: ignición'] }, + { tipo: 'texto', clave: 's10_03_obs', txt: 'Observaciones (qué falló, valores, lo raro)', ph: 'ninguna / describir' }, + { tipo: 'check', clave: 's10_04_bolsa', txt: 'En bolsa antiestática (FALLA en bolsa aparte, con nota).' }, + ] }, + ], + }; + return cfg; +}; diff --git a/docs/formularios/series.js b/docs/formularios/series.js index aa8ab9d..45d1c47 100644 --- a/docs/formularios/series.js +++ b/docs/formularios/series.js @@ -9,7 +9,9 @@ }); window.SERIES = F.concat( gen('V5', 30, 2, 'Tarjetas EinarBoard V5', 'tarjeta EinarBoard v5'), - gen('ARD', 30, 3, 'Módulos simpleRTK2B Pro', 'módulo ArduSimple'), - gen('RTK', 30, 4, 'Módems 4G NTRIP Master', 'módem 4G') + gen('V56', 10, 2, 'Tarjetas EinarBoard V5.6 (piloto)', 'tarjeta EinarBoard V5.6'), + gen('V57', 10, 2, 'Tarjetas EinarBoard V5.7 (piloto)', 'tarjeta EinarBoard V5.7'), + gen('ARD', 100, 3, 'Módulos simpleRTK2B Pro', 'módulo ArduSimple'), + gen('RTK', 100, 4, 'Módems 4G NTRIP Master', 'módem 4G') ); })(); diff --git a/docs/formularios/v56.html b/docs/formularios/v56.html new file mode 100644 index 0000000..4722c9c --- /dev/null +++ b/docs/formularios/v56.html @@ -0,0 +1,22 @@ + + + + + +Acta de prueba — EinarBoard V5.6 (fw 0.7.0-pre) + + + + + +
+ + + + + diff --git a/docs/formularios/v57.html b/docs/formularios/v57.html new file mode 100644 index 0000000..517abca --- /dev/null +++ b/docs/formularios/v57.html @@ -0,0 +1,22 @@ + + + + + +Acta de prueba — EinarBoard V5.7 (fw 0.7.0-pre) + + + + + +
+ + + + + diff --git a/docs/formularios/ver.html b/docs/formularios/ver.html index cd7bcfb..6057248 100644 --- a/docs/formularios/ver.html +++ b/docs/formularios/ver.html @@ -37,7 +37,7 @@ const qs = new URLSearchParams(location.search); const tipo = qs.get('tipo') || ''; const serie = qs.get('serie') || ''; const cont = document.getElementById('cont'); -const TITULOS = { 'prueba-v5':'Acta de prueba V5', 'prueba-v4':'Acta de prueba V4', 'modulo-ard':'Acta de módulo ArduSimple', 'modulo-4g':'Acta de módulo 4G', 'integracion':'Acta de integración RTK + 4G', 'ensamble':'Acta de ensamble — unidad HBOX' }; +const TITULOS = { 'prueba-v5':'Acta de prueba V5', 'prueba-v4':'Acta de prueba V4', 'modulo-ard':'Acta de módulo ArduSimple', 'modulo-4g':'Acta de módulo 4G', 'integracion':'Acta de integración RTK + 4G', 'ensamble':'Acta de ensamble — unidad HBOX', 'prueba-v56':'Acta de prueba V5.6', 'prueba-v57':'Acta de prueba V5.7', 'banco-piloto':'Acta del banco del piloto V5.6/V5.7' }; const COMP = { einar:'EinarBoard', ard:'simpleRTK2B Pro (ArduSimple)', modem:'4G NTRIP Master' }; function esc(s){ const d=document.createElement('div'); d.textContent=s==null?'':String(s); return d.innerHTML; } diff --git a/docs/procedimientos/v56-v57-ensamble.md b/docs/procedimientos/v56-v57-ensamble.md new file mode 100644 index 0000000..d9cadac --- /dev/null +++ b/docs/procedimientos/v56-v57-ensamble.md @@ -0,0 +1,133 @@ +--- +title: "Unidad HBOX V5.6 y V5.7 — Ensamble y prueba de la unidad (0.7.0-pre)" +tags: [project-drogheda, hardware, hbox, v5.6, v5.7, ensamble, piloto, procedimiento] +date: 2026-10-27 +project: Project Drogheda +author: "Helgen Technologies (redacción: Claude; revisión: Leo y Jesús Romero)" +version: 1.0 +status: "BORRADOR — para las unidades del piloto; se ajusta con la primera unidad real" +audience: técnicos de banco +--- + +# Unidad HBOX V5.6 y V5.7 — Ensamble y prueba de la unidad + +!!! warning "Borrador para el piloto" + Es el [ensamble de la V5.5](v5-ensamble.md) llevado a la V5.6 y la V5.7: designadores de T43 (los de la serigrafía), firmware 0.7.0-pre, paquete LFP y, en la V5.7, sin Mean Well. Lo que no cambia (gabinete, antenas, prensaestopas, etiquetas) sigue como en la V5.5. Las unidades del piloto **no se embarcan** hasta que pasen los [8 criterios del banco del piloto](v56-v57-prueba-y-flasheo.md#10-banco-del-piloto-los-8-criterios-para-liberar-las-135-y-las-365) y salga el firmware de campo. + +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - **Para quién:** técnicos de banco. + - **Cuándo:** con una EinarBoard V56-NN o V57-NN aprobada ([prueba y flasheo](v56-v57-prueba-y-flasheo.md)) y una pareja ARD-NNN + RTK-NNNN aprobada e integrada ([módulos e integración](v5-modulos-integracion.md); los módulos son los mismos de la V5.5). + - **Tiempo:** 60–90 min por unidad. + - **Necesitas:** el material de §1 y el [acta de ensamble V5.6](../formularios/ensamble-v56.html) o el [acta de ensamble V5.7](../formularios/ensamble-v57.html). + +!!! danger "Reglas" + 1. **Primero el acta.** Elige la tarjeta y los dos módulos en el acta y espera a verlos aprobados, con la pareja en «integración OK». Un módulo en rojo o «sin acta» no se ensambla. + 2. **Los módulos del juego de banco** (etiqueta «BANCO») no se ensamblan mientras dure el piloto: sin ellos no se pueden probar las tarjetas que faltan. + 3. **Módulos y batería sin energía**, y la orientación revisada dos veces. El paquete se conecta al final (§6). + 4. **V5.6:** la Mean Well SD-15B-05 se ajusta a 5.30 V **antes** de conectarla a J16. **V5.7:** sin Mean Well; nunca más de 32 V en el GX16. + +## 0. Número de la unidad + +El acta lo compone al elegir las piezas: + +``` +HBOX56 - E03 - A031 - R0029 (HBOX57 en una V5.7) + │ │ │ └── 4G NTRIP Master RTK-0029 + │ │ └────────── simpleRTK2B Pro (ArduSimple) ARD-031 + │ └──────────────── EinarBoard V56-03 + └──────────────────────── producto HBOX, tarjeta V5.6 +``` + +Va en la etiqueta exterior (junto al GX16) y en la interior (tapa). Un módulo pertenece a una sola unidad: el sitio rechaza el acta si ya está en otra. + +## 1. Material + +| Ítem | V5.6 | V5.7 | +|---|---|---| +| EinarBoard aprobada, con 0.7.0-pre | V56-NN | V57-NN | +| simpleRTK2B Pro y 4G NTRIP Master aprobados e integrados | ✔ | ✔ | +| Mean Well SD-15B-05 (24 → 5 V) dentro del HBOX | ✔ | **no** | +| Paquete **LFP-HT 26650 1S4P** con NTC 10 k B3380 (3 hilos → J5) | ✔ | ✔ | +| Ventilador de 5 V (J3), LED de panel (J4), botón de reset (J1), interruptor de corte (J2), LED RGB (J10) si el panel lo lleva | ✔ | ✔ | +| Arnés del GX16-5 → J15 (mismo orden de pines que la V5.5) | ✔ | ✔ | +| Pigtails: GNSS SMA → SMA del simpleRTK2B; 2 × LTE SMA → u.FL del módem | ✔ | ✔ | +| Gabinete HBOX, separadores, tornillería, bridas, fijador de rosca | ✔ | ✔ | +| Fuente de banco 24 V / 1.5 A con límite, multímetro, laptop con terminal | ✔ | ✔ | + +## 2. Tarjeta (sin energía) + +- [ ] Es la V56-NN / V57-NN elegida en el acta (etiqueta cerca de MH3). +- [ ] Puentes de fábrica intactos: JP3 2-3 (LFP), JP5 1-2, JP4 1-2 (flotación 3.50 V); **V5.6: JP1 abierto · V5.7: JP1 cerrado**; JP2 abierto. No se cambian en banco. +- [ ] J2 sin el puente de banco: ahí va el interruptor de corte. +- [ ] Tarjeta fija en la base con **MH1, MH3 y MH6**; MH2, MH4 y MH5 son los separadores del simpleRTK2B. Sin flexión; apriete suave. + +## 3. Módulos (sin energía) + +- [ ] simpleRTK2B ARD-NNN en **MOD1**: el pin «5V» del módulo sobre MOD1 pin 5; las tiras a fondo, ninguna clavija fuera. +- [ ] 4G NTRIP Master RTK-NNNN en **J8/J9** de la EinarBoard (paso 2.00 mm, 3.3 V), con la silueta sobre la serigrafía. No va en el zócalo XBee del simpleRTK2B, y el USB-XBEE del simpleRTK2B no se usa en servicio. +- [ ] SIM puesta. Nada roza la tapa, K1 ni los capacitores altos (C68, C30, C14). + +## 4. Panel y arnés (sin energía) + +| Conector | Qué va | Verifica | +|---|---|---| +| J15 (GX16-5) | 1 = + vehículo · 2 y 4 = GND · 3 = ignición · 5 = sin conexión | Polaridad con multímetro antes de conectar | +| **V5.6:** SD-15B-05 | Entrada del GX16 (24 V); salida → **J16** (pin 1 = +5 V) | Salida a **5.30 V** (5.2–5.4) en banco antes de montarla; cable corto | +| **V5.7:** — | El GX16 entra directo a J15 (9–32 V) | Sin Mean Well; J16 no existe | +| J3 | Ventilador (1 = +5 V, 2 = retorno) | Aire hacia afuera | +| J4 | LED de panel (1 = ánodo, 2 = cátodo) | Asoma por el panel | +| J1 | Botón de reset | Normalmente abierto | +| J2 | Interruptor de corte | ON cierra 1–2 | +| J10 | LED RGB externo (1 = ánodo común) | Solo si el panel lo lleva | +| J5 | **Nada todavía** | §6 | +| GNSS / LTE | Bulkhead SMA → SMA del simpleRTK2B · 2 bulkheads → u.FL del módem | Fijador de rosca; clic en los u.FL; sin dobleces < 10 mm | +| J6 / J11 / J12 | Solo si el panel los lleva ([conexión](v5-prueba-ethernet-serie.md#conexion-en-la-instalacion)) | J12 y J14 nunca al mismo tiempo | + +- [ ] **Largo de los arneses:** los JST del borde norte se movieron respecto a la V5.5 (12–38 mm en la V5.6, hasta 68 mm en la V5.7). Si alguno no alcanza sin tensión, alárgalo y anótalo en el acta. +- [ ] Cables con bridas; nada expuesto cerca de la entrada del vehículo (y de la SD-15B en la V5.6). + +## 5. Energizado desde 24 V y prueba de la unidad (sin batería) + +1. Fuente a 24.0 V, límite 1.5 A, al GX16 (pin 1 = +, pin 2 = −), con la ignición (pin 3) también a 24 V. Interruptor de corte en ON. USB-C en J7, terminal a 115200. +2. Enciende. En modo AUTO la unidad hace sola lo que describe la [prueba por tarjeta, §7](v56-v57-prueba-y-flasheo.md#7-etapa-rtk-y-modem-con-el-juego-de-banco-1015-min): + + | Punto | Esperado | + |---|---| + | Consola | `hbox-v5-bringup 0.7.0-pre`, 18 PASS, `>>> BOARD OK` | + | `STAT v5` | V5.6: 5.20–5.40 V · V5.7: 5.20–5.45 V | + | Secuencia | `STACK ON` → `NMEA primera trama` → `MODEM ON` → `MODEM_RST` → `MODEM VIVO` → `MODOB ON` (K1 hace clic) | + | Correcciones | Primer `STAT` con `rtcm` > 0 a menos de 60 s de `MODEM ON` | + | Ventilador | Gira (5 V + ignición) | + | Tecla `n` | `fix=4` (RTK FIX) en < 10 min con cielo; `sats ≥ 10` | + | Monitor | La unidad aparece con su posición | + +3. Ignición a 0 V: `EVT … IGN OFF` y el ventilador se detiene. Regresa la ignición a 24 V. +4. Anota la corriente a 24 V con la etapa y el módem encendidos. + +## 6. Batería y respaldo + +1. `P` apaga la etapa. Mide el paquete en vacío (**2.8–3.6 V**) y conéctalo en **J5** (1 = BAT+, 2 = GND, 3 = NTC). `P` + `Y` enciende la etapa. +2. `STAT`: `vbat` ≈ el paquete; `tcel` ≈ la temperatura del cuarto (`n/c` = NTC sin conectar: revisa el arnés). +3. Unos 150 s después de `STACK ON`, si el paquete no está lleno: `carga=ON ltc=CARGANDO`. +4. Corta los 24 V tres veces, 30 s cada vez: + + | Punto | Esperado | + |---|---| + | Consola | `V5 PERDIDO` y `BACKUP inicio`, **sin reinicio** | + | `STAT` | `v5=0.00`, `modem=VIVO`, `nmea=` sigue subiendo | + | Al volver los 24 V | `5 V de vuelta tras … s de respaldo: sin reset del MCU (V5.6/V5.7); modem con senal de vida` | + +## 7. Cierre + +- [ ] Etiqueta exterior `HBOX56-…` / `HBOX57-…` junto al GX16; etiqueta interior en la tapa. +- [ ] Interruptor de corte en OFF para almacenar; anótalo en la etiqueta interior. +- [ ] Tapa con su sello, tornillos en cruz, prensaestopas apretados. +- [ ] Acta de ensamble enviada como **APROBADA — UNIDAD LISTA**. + +Siguiente (cuando el piloto pase): [configuración de la unidad](v5-configuracion-unidad.md) (los módulos se configuran igual que en la V5.5). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-10-27 | Primera versión (borrador) para las unidades del piloto V5.6/V5.7. | diff --git a/docs/procedimientos/v56-v57-prueba-y-flasheo.md b/docs/procedimientos/v56-v57-prueba-y-flasheo.md new file mode 100644 index 0000000..f314ea9 --- /dev/null +++ b/docs/procedimientos/v56-v57-prueba-y-flasheo.md @@ -0,0 +1,451 @@ +--- +title: "EinarBoard V5.6 y V5.7 — Prueba y flasheo por tarjeta (0.7.0-pre)" +tags: [project-drogheda, hardware, einarboard, v5.6, v5.7, bringup, testing, flasheo, piloto, procedimiento] +date: 2026-10-27 +project: Project Drogheda +author: "Helgen Technologies (redacción: Claude; revisión: Leo, Jesús Romero y Gibran)" +version: 1.0 +status: "BORRADOR — para el piloto de 5 V5.6 + 5 V5.7; se ajusta con la primera tarjeta real" +audience: técnicos de banco e ingeniería +--- + +# EinarBoard V5.6 y V5.7 — Prueba y flasheo por tarjeta (firmware 0.7.0-pre) + +!!! warning "Borrador: ninguna V5.6 ni V5.7 ha llegado todavía" + Este procedimiento se escribió con los archivos de la tarjeta (designadores de T43, los de la serigrafía), el [documento de diseño de la V5.6](../hardware/diseno-v56.md), el de la [V5.7](../hardware/diseno-v57.md) y el firmware 0.7.0-pre corrido en el simulador. Los valores marcados «a confirmar» se fijan con la primera tarjeta del piloto. Lo revisa Gibran como Hardware Lead antes de que lleguen las tarjetas (pendiente `t-banco-revision-hw`). + +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - **Para quién:** técnicos de banco (Jesús Romero) e ingeniería. + - **Cuándo:** al recibir cada EinarBoard V5.6 o V5.7 desnuda, antes de ensamblarla. Siguiente paso: [ensamble de la unidad V5.6/V5.7](v56-v57-ensamble.md). + - **Tiempo:** 25–30 min por tarjeta (§1 a §6); 30 min más con el juego de módulos de banco (§7 a §9). + - **Necesitas:** + - multímetro con escala de 200 mV (para R68), lupa y la foto de rayos X de U14 si JLC la mandó; + - fuente de banco de 0–32 V con límite de corriente y al menos **3 A**; + - una segunda fuente (o la misma con un interruptor) de 0–24 V para la ignición (§9); + - cable USB-C con datos y laptop con `dfu-util` o STM32CubeProgrammer y un terminal serie a 115200; + - el binario `hbox-tarjetaV56_0.7.0-pre.bin` de [Descargas → prueba](../descargas/index.md) y su SHA-256; + - una resistencia de 10 kΩ con caimanes (para leer TP6); + - el **puente de banco de J2**: un conector JST-XH de 2 pines con los dos cables unidos; + - el **juego de módulos de banco** (abajo), con antena GNSS con vista al cielo y 2 antenas LTE; + - un paquete LFP-HT 26650 1S4P con NTC (cable de 3 hilos a J5) y una pinza amperimétrica de CD o un amperímetro en serie de 2 A; + - el [acta de tarjeta V5.6](../formularios/v56.html) o el [acta de tarjeta V5.7](../formularios/v57.html). + +!!! danger "Reglas" + 1. **Solo `hbox-tarjetaV56_0.7.0-pre.bin`.** Sirve para la V5.6 y para la V5.7 (los 64 pines del MCU son iguales). El 0.6.x no enciende el módem (PC3 es nuevo), lee la NTC en el pin equivocado, usa umbrales de Li-ion y lee la ignición como digital. `hbox-v5-bringup_…` es de la V5.5. + 2. **SW1 y SW2 están al revés que en la V5.5:** en la V5.6 y la V5.7, **SW1 = BOOT0** y **SW2 = RESET**. + 3. **V5.6:** nunca menos de 5.2 V en J16 cuando no hay batería; con menos, el PFI del LTC4040 (4.40 V) queda muy cerca y una ráfaga del módem apaga la tarjeta. **Nunca cierres JP1** en la V5.6: uniría el buck del ventilador con `/VEH5V`. No le pongas más de 28 V a J15 (U15 es un MP1584). + 4. **V5.7:** nunca más de 32 V en J15. El techo lo pone D18 (33 V). + 5. **Fuente siempre con límite de corriente.** Si llega al límite o algo se calienta: apaga, marca FALLA con la sección y el valor, y pasa a la siguiente tarjeta. + 6. **Módulos y batería solo donde se pide** (§7 y §8), y siempre **sin energía** al insertarlos o conectarlos. Un XBee al revés o un simpleRTK2B corrido un pin se destruye al encender. + +## 0. El juego de módulos de banco (faltan ArduSimple) + +Hoy no hay simpleRTK2B Pro ni 4G NTRIP Master para darle un juego a cada tarjeta del piloto. Por eso la tarjeta se prueba **sin módulos propios**: + +- §1 a §6 no usan módulos. +- §7 a §9 usan **un juego de banco**: un simpleRTK2B Pro y un 4G NTRIP Master **ya aprobados** (con su acta ARD-NNN y RTK-NNNN), con SIM, marcados con una etiqueta «BANCO». El mismo juego pasa de tarjeta en tarjeta; se inserta y se retira siempre sin energía. +- Un juego de banco **no se ensambla** en una unidad mientras dure el piloto. En el acta se anota qué ARD y qué RTK se usaron. +- Para el banco del piloto (§10) hacen falta **dos** juegos a la vez (una V5.6 y una V5.7 en pruebas largas). Las 10 unidades completas del piloto esperan a que lleguen módulos: ver el pendiente «Faltan ArduSimple» en el tablero. + +## Referencias en la tarjeta (T43, la serigrafía) + +| Ref. | Qué es | Uso aquí | +|---|---|---| +| J7 | USB-C del MCU, borde oeste, junto a SW1 y SW2 | Alimentar el MCU, flashear (DFU) y consola a 115200 | +| SW1 / SW2 | **BOOT0 / RESET** | DFU y reinicio | +| SW3 | RESET del módem (junto al zócalo XBee) | Reinicio manual del módem | +| TP1 / TP2 | GND / 3V3 (borde norte, junto a J1) | Referencia de todas las mediciones y riel de 3.3 V | +| TP3 / TP5 / TP4 | SWDIO / SWCLK / NRST | Solo si ingeniería pide ST-Link | +| TP6 | PFO del LTC4040 (sin pull-up en la tarjeta) | Con 10 kΩ a TP2: alto = 5 V bien; bajo = respaldo | +| TP7 | CLPROG del LTC4040: V(TP7) = 32 × V(R68) | Corriente de entrada y sensado Kelvin (§8) | +| J16 (solo V5.6) | Entrada de 5 V de la Mean Well SD-15B-05: 1 = +5 V, 2 = GND | Todo sale de aquí en la V5.6 | +| J15 | Clema del GX16-5: 1 = + vehículo, 2 y 4 = GND, 3 = ignición, 5 = sin conexión | V5.6: solo ventilador e ignición · V5.7: 9–32 V para toda la tarjeta | +| J2 | Corte externo: 1 = `/MAIN5V`, 2 = `/SYS5V` (JP2 en paralelo, abierto) | En el banco: puente de banco en J2 | +| J3 | Ventilador: 1 = +5 V, 2 = retorno (lo conmuta Q1) | V5.6: 5 V del buck U15 desde J15 · V5.7: `/VEH5V` por JP1 | +| J5 | Paquete LFP 1S4P: 1 = BAT+, 2 = GND, 3 = NTC | §8 | +| J8 / J9 | Zócalo XBee del 4G NTRIP Master (paso 2.00 mm, 3.3 V) | §7 | +| MOD1 | Conectores UNO del simpleRTK2B Pro; pin 5 = `/SW_5V` | §7 | +| J13 | USB-C del módem (servicio) | No se usa aquí | +| D12 / D10 | LED verde PWR (3.3 V) / LED azul de estado (firmware) | | +| D13 | LED del módem (la misma señal llega al MCU por PC2) | §7 | +| D17 → D14 | Medidor de batería (expansor U11) | Autoprueba | +| K1 | Relevador del modo B; suelto = F9P → módem directo | Hace clic cuando el MCU toma el enlace | +| U14 | LTC4040: cargador y respaldo (QFN de 0.5 mm) | Lupa antes de energizar | +| U15 | **V5.6:** MP1584 del ventilador · **V5.7:** TPS54360B, la fuente principal de 5.32 V | La misma referencia es otra pieza en cada tarjeta | + +Planos: [mapa de designadores de la V5.6](../hardware/diseno-v56.md#96-mapa-de-designadores-t43) · [de la V5.7](../hardware/diseno-v57.md#96-mapa-de-designadores-t43) · [puntos de prueba](../hardware/diseno-v56.md#10-puntos-de-prueba). + +## 1. Recepción e inspección (sin energía, 5 min) + +- [ ] **U14 (LTC4040) con lupa:** sin puentes entre pines ni bolitas de soldadura alrededor del QFN. Foto al acta. Si JLC mandó la radiografía de U14, también al acta. **Un U14 dudoso no se energiza:** FALLA con foto. +- [ ] Sin puentes en U3 (MCU), U2 (W5500), U5 (SC16IS752) y U13 (fuente del módem). +- [ ] Polaridad: el «+» de C68, C30, C14, C73 y C1; la banda de D2, D4, D8, D9 y D11. **V5.7:** la banda de D21 (B560C) y el punto de L4. +- [ ] Puentes de soldadura (cobre de fábrica; no se cambian en banco): + + | Puente | V5.6 | V5.7 | Qué es | + |---|---|---|---| + | JP3 | cerrado **2-3** | cerrado **2-3** | F2 = 0: química LFP | + | JP5 | cerrado 1-2 | cerrado 1-2 | F1 = 0 | + | JP4 | cerrado 1-2 | cerrado 1-2 | F0 = 1 → flotación 3.50 V | + | JP1 | **abierto** | **cerrado** | V5.7: el ventilador cuelga de `/VEH5V` | + | JP2 | abierto | abierto | Puente de J2 (el banco usa el puente de J2, no JP2) | + | JP6 | abierto | abierto | Terminación de 120 Ω del RS-485 | + +- [ ] Cristales: Y2 `25.000` (MCU), Y1 `25.000` (W5500), Y3 `3.6864` o `36.864` (SC16IS752), Y4 el pequeño de 32.768 kHz. +- [ ] SW1, SW2 y SW3 con clic. J7, J8, J9, J15 (y J16 en la V5.6) asentados, sin pines doblados. +- [ ] Sin piezas faltantes ni marcas de quemado. + +## 2. Cortos a tierra (sin energía, 3 min) + +Multímetro en ohms (no en continuidad), punta negra en **TP1**. Unos cientos de ohms que suben es normal (capacitores cargando); una lectura fija de 0–20 Ω es corto. + +| Punto | Riel | Esperado | Si da < 100 Ω fijo | +|---|---|---|---| +| TP2 | `/3V3` | > 1 kΩ | FALLA: corto en 3.3 V | +| **V5.6:** J16 pin 1 · **V5.7:** J3 pin 1 | `/VEH5V` | > 1 kΩ | FALLA: corto en 5 V | +| J2 pin 1 | `/MAIN5V` | > 1 kΩ | FALLA | +| J2 pin 2 | `/SYS5V` | > 1 kΩ | FALLA | +| J15 pin 1 | entrada del vehículo | > 10 kΩ | FALLA: corto en la entrada | +| MOD1 pin 5 | `/SW_5V` (etapa RTK) | > 1 kΩ | FALLA | +| J8 pin 1 | `/3V3_MODEM` | > 1 kΩ | FALLA | +| J5 pin 1 | `/BAT_PLUS` | > 1 kΩ | FALLA: no se conecta paquete | + +## 3. Riel de 3.3 V por USB (J7, 2 min) + +El USB en J7 energiza solo el MCU y la lógica de 3.3 V (por D8 y U4); los 5 V del sistema, el módem, la etapa RTK y el W5500 quedan apagados. + +1. USB-C en J7 a la laptop. +2. Mide: + + | Punto | Esperado | + |---|---| + | D12 | Encendido | + | TP2 contra TP1 | 3.23–3.37 V | + | U4 al tacto tras 1 min | Tibio. Si quema: FALLA | + | D10 | Apagado o fijo (MCU virgen) | + +3. D12 apagado o TP2 < 3.0 V: FALLA (3V3). Desconecta el USB. + +## 4. Rieles de 5 V con fuente (MCU virgen, 5 min) + +Con el MCU virgen sus pines quedan en alta impedancia y el hardware debe dejar **todo apagado**: R8 apaga la etapa RTK, R57 apaga el módem, R5 deja el W5500 en reset y K1 queda suelto. Eso es lo que se verifica aquí. Pon el **puente de banco en J2**. Sin USB. + +### 4a. V5.6: 5 V en J16 + +1. Fuente a **5.30 V**, límite **500 mA**, salida apagada. A J16: pin 1 = +5 V, pin 2 = GND. +2. Enciende y mide contra TP1: + + | Punto | Esperado | + |---|---| + | Corriente | < 300 mA (típico 100–250 mA, a confirmar) | + | J2 pin 1 (`/MAIN5V`) | 5.20–5.35 V (J16 menos ≈ 20 mV) | + | J2 pin 2 (`/SYS5V`) | igual que J2 pin 1 | + | TP2 (`/3V3`) | 3.23–3.37 V | + | MOD1 pin 5 (`/SW_5V`) | **0 V**. Con 5 V: FALLA (la etapa RTK no arranca apagada) | + | J8 pin 1 (`/3V3_MODEM`) | **0 V**. Con 3.3 V: FALLA (el módem no arranca apagado) | + | TP6 con 10 kΩ a TP2 | Alto (≈ 3.3 V): `/VEH5V` arriba del PFI | + | U14, U9 al tacto | Fríos o tibios | + | K1 | Sin clic | + +3. Apaga la fuente. + +### 4b. V5.6: 24 V en J15 (buck del ventilador) + +En la V5.6 el 24 V del vehículo solo alimenta el buck del ventilador (U15) y la ignición. + +1. Fuente a **24.0 V**, límite **200 mA**. A J15: pin 1 = +, pin 2 = GND. Pin 3 (ignición) sin conectar. J16 sin fuente. +2. Mide: + + | Punto | Esperado | + |---|---| + | Corriente | < 50 mA (sin ventilador) | + | J3 pin 1 contra TP1 | 4.85–5.15 V. No midas contra J3 pin 2: es el lado conmutado | + | D12 | **Apagado** (sin J16 ni USB la tarjeta no tiene 5 V: correcto) | + | U15 al tacto | Frío o tibio | + +3. Apaga la fuente. + +### 4a. V5.7: 24 V en J15 (fuente a bordo) + +1. Fuente a **24.0 V**, límite **300 mA**, salida apagada. A J15: pin 1 = +, pin 2 = GND. Pin 3 (ignición) sin conectar. +2. Enciende y mide contra TP1: + + | Punto | Esperado | + |---|---| + | Corriente a 24 V | < 100 mA (típico 30–60 mA, a confirmar) | + | J3 pin 1 (`/VEH5V` por JP1) | 5.20–5.45 V (nominal 5.32 V) | + | J2 pin 1 (`/MAIN5V`) y J2 pin 2 (`/SYS5V`) | J3 pin 1 menos ≈ 20 mV | + | TP2 (`/3V3`) | 3.23–3.37 V | + | MOD1 pin 5 (`/SW_5V`) | **0 V** (si no: FALLA) | + | J8 pin 1 (`/3V3_MODEM`) | **0 V** (si no: FALLA) | + | TP6 con 10 kΩ a TP2 | Alto | + | U15, D21, L4 al tacto | Fríos o tibios | + | K1 | Sin clic | + +3. A **12.0 V**: J3 pin 1 sigue en 5.20–5.45 V. Apaga la fuente. + +El barrido completo (9/12/24/32 V con carga, temperatura de U15 y D21, polaridad invertida) es del banco del piloto (§10.2), no de cada tarjeta. + +## 5. Flasheo por USB DFU (J7, 5 min) + +Solo tarjetas que pasaron §1 a §4. Antes, verifica el SHA-256 del binario contra `SHA256SUMS.txt` de [Descargas](../descargas/index.md). + +### 5a. Modo DFU + +1. Solo el USB en J7 (nada en J15 ni en J16). +2. **Mantén SW1 (BOOT0).** +3. **Pulsa y suelta SW2 (RESET).** +4. Suelta SW1. +5. La laptop ve `STM32 BOOTLOADER` (ID `0483:DF11`). + +Si no aparece: otro cable (muchos son solo de carga) y repite, con SW1 todavía apretado al soltar SW2. + +### 5b. Cargar el binario + +=== "dfu-util (macOS / Linux)" + + ```bash + dfu-util -l # debe listar [0483:df11] + dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV56_0.7.0-pre.bin + ``` + +=== "STM32CubeProgrammer" + + 1. Conexión: USB → Connect. + 2. Erasing & Programming: el `.bin`, dirección de inicio `0x08000000`. + 3. Marca *Verify programming* y *Run after programming* → Start Programming. + 4. Espera «File download complete» y «Verify… successful». Disconnect. + +El piloto trae el **STM32F411RCT6** (256 KB, T47). El binario mide menos de 128 KB y guarda sus ajustes (modo AUTO/MANUAL) en el sector 5 (`0x08020000`), que el flasheo normal no borra; un borrado completo (*mass erase*) los regresa a AUTO. + +## 6. Autoprueba (consola en J7, 3 min) + +1. Abre el terminal a 115200 (CoolTerm, `screen` o el monitor de Arduino) y pulsa **SW2 (RESET)**. Si lo abriste tarde, teclea `r`. +2. En los primeros 5 s: + + | Punto | Esperado | + |---|---| + | D10 y el LED de panel (J4) | Parpadean | + | D17 → D14 | Encienden en secuencia una vez y se apagan; luego R, G, B en J10 si hay LED RGB | + | Laptop | Puerto serie nuevo (`usbmodem…` / `STMicroelectronics Virtual COM Port`) | + | Terminal | `hbox-v5-bringup 0.7.0-pre` y `board=EinarBoard V5.6/V5.7` | + +3. El encabezado y el reporte esperados (con solo el USB): + + ``` + hbox-v5-bringup 0.7.0-pre built … + board=EinarBoard V5.6/V5.7 (HBOX v5) mcu=STM32F411RCT6/RET6 LQFP64 + reset=PIN uid=… flash=256KB ← RCT6 del piloto + safe state: stack OFF, modem OFF (PC3), charge OFF, fan OFF, K1 released, W5500 in reset + U3 con 256 KB (RCT6, piloto T47): este binario corre; el FOTA A/B necesita el RET6 (D-22-6) + RS-485: EFCR_A de U5 = 0x30 (RTS automatico: DE de U7 bajo salvo al transmitir; bus libre) + … + [PASS] CLOCK_HSE SYSCLK=96000000 Hz HSE_RDY=1 PLL_SRC=HSE ← Y2 + [PASS] LSE_Y4 Y4 32.768k LSERDY=1 (hal=0) ← Y4 (E-12) + [PASS] RTC_BKP BKP19R escribe y lee + [PASS] I2C PCF8574 U11 @0x20 ACK + [PASS] I2C SHT40 U6 @0x44 ACK + [PASS] I2C TMP102 U12 @0x48 ACK + [PASS] I2C TMP102 U8 @0x49 ACK + [PASS] I2C SC16IS752 U5 @0x4D ACK + [PASS] I2C LIS2DH12 U1 @0x18 ACK + [PASS] TMP102_U12 TMP102 U12 27.50 C ← junto al cargador + [PASS] TMP102_U8 TMP102 U8 27.75 C ← junto al módem + [PASS] SHT40 SHT40 27.80 C 45.0 %RH + [PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60 + [PASS] RS485_EFCR EFCR_A=0x30 (exp 30: DE de U7 bajo salvo al transmitir) + [PASS] ACCEL U1 @0x18 WHO_AM_I=0x33 (LIS2DH12 = 33; SC7A20 = 11) + [PASS] GAUGE_WALK visual — technician confirms ← confirmas que viste D17→D14 + [PASS] ADC vbat=0.00 v5=0.00 tcel=n/c ign=0.00V(0.0V) mcu=..C + [PASS] DIN chrg=1 fault=1 ser_irq=1 eth_int=. acc_int1=. + modem apagado: LED PC2=0 RTCM PC7=0 (esperado 0/0; 1 = algo alimenta al modem apagado) + ---- RESULT: 18 PASS / 0 FAIL ---- + >>> BOARD OK + ``` + +4. Revisa también: + + | Línea | Esperado | Si no | + |---|---|---| + | `flash=` | `256KB` (RCT6) o `512KB` (RET6, las 2 del FOTA) | Anota | + | `RS-485: EFCR_A … = 0x30` | `bus libre` | «NO SE PUDO ESCRIBIR»: U5 no responde; FALLA | + | `modem apagado: LED PC2=0 RTCM PC7=0` | `0/0` | Un 1: algo alimenta al módem apagado; FALLA (avisa a ingeniería) | + | Las dos TMP102 contra el SHT40 | a menos de 5 °C entre sí en reposo | «colgado o dañado»: FALLA | + | **U7 pin 3** (DE del RS-485) contra TP1, con el multímetro | **0 V** en reposo (EFCR = 0x30: U5 solo lo sube al transmitir) | ≈ 3.3 V: el transmisor sostiene el bus (E-4); FALLA (avisa a ingeniería) | + +5. Cualquier `[FAIL]`: anota la línea completa y marca FALLA (POST). D10 sin parpadear: repite §5 una vez; si vuelve a fallar, FALLA (FLASH). + +Después sale una línea `STAT …` cada 5 s. Con solo USB, `v5=0.00` y la etapa no enciende (el modo AUTO espera 5 V). La leyenda de cada campo sale con la tecla `l`; los puntos de medición de la etapa y el módem, con `v`. + +## 7. Etapa RTK y módem con el juego de banco (10–15 min) + +1. **Todo apagado.** Inserta el simpleRTK2B de banco en **MOD1** (el pin «5V» del módulo sobre el pin 5 de MOD1, las tiras a fondo) y el 4G NTRIP Master de banco en **J8/J9** (silueta sobre la serigrafía; paso 2.00 mm). Antena GNSS con vista al cielo; 2 antenas LTE en los u.FL del módem **antes** de energizar. +2. Fuente: **V5.6:** 5.30 V en J16, límite **3 A** (o la Mean Well SD-15B-05 ajustada a 5.30 V) · **V5.7:** 24.0 V en J15, límite **1.5 A**. Puente de banco en J2. USB en J7, terminal abierto. +3. Enciende. En modo AUTO (de fábrica) la tarjeta hace sola, en este orden (tiempos del simulador; anota los reales): + + | t (s) | Consola | Qué pasa | + |---|---|---| + | 0 | encabezado y 18 PASS | `inputs at boot: v5=5.2–5.4V(ok)` | + | ≈ 3 | `EVT … STACK ON reason=auto` | PA1 alto: la etapa RTK enciende (MOD1 pin 5 ≈ 5 V) | + | < 2 s después | `EVT … NMEA primera trama en PA3` | El F9P habla (**criterio: < 2 s**) | + | + 2 | `EVT … MODEM ON (nmea): PC3 alto` | J8 pin 1 sube a 3.33 V | + | + 1 | `EVT … MODEM_RST modem_on: … a GND 500 ms` | Pulso de RESET de rutina (E-13) | + | + 8–60 | `EVT … MODEM VIVO por led` (o `por rtcm`) | El MCU vio 4 flancos del LED del módem en 10 s (D13 parpadeando) o una trama RTCM3 válida. Sin señal de vida en **3 min**, da otro pulso de RESET (hasta 2) y luego un reinicio de alimentación: nunca en lazo rápido | + | + 0.2 | `EVT … MODOB ON: K1 conmutado` | **K1 hace clic**; el MCU manda NMEA + `$PHLG` al módem | + +4. Mide contra TP1: + + | Punto | Esperado | + |---|---| + | MOD1 pin 5 (`/SW_5V`) | 5.0–5.4 V | + | J8 pin 1 (`/3V3_MODEM`) | 3.25–3.40 V | + | J8 pin 5 (RESET del módem) | ≈ 3.3 V (alto), salvo durante el pulso | + | D13 | Parpadea con el módem vivo | + | Corriente de la fuente | Anota (a confirmar con la primera tarjeta) | + | U13 y L2 al tacto tras 5 min | Tibios (L2 de 3.3 µH desde T47: se revisa en el piloto) | + +5. **Correcciones y registro.** En las líneas `STAT` de los primeros 2 min: + + | Campo | Esperado | + |---|---| + | `modem=` | `VIVO` | + | `rtcm=` (después de `modem=`) | Crece: tramas RTCM3 válidas que el módem le entrega al F9P | + | `tipo=` | 1005, 1077, 1087… (mensajes del caster) | + | `edad=` | 0–2 s | + | `t_on=` del primer `STAT` con `rtcm` > 0 | **< 60 s** desde `MODEM ON` (criterio de registro del módem) | + +6. **Calibración del LED (solo piloto).** Anota `led=` de tres `STAT` seguidos (el número de flancos de la última ventana de 30 s; se actualiza cada 30 s): al arrancar, registrado y con correcciones. Si `led=0` con `rtcm` creciendo, el MCU no ve el LED de ese módem: la vigilancia se queda solo con las tramas RTCM, y sin RTCM el MCU da **un solo pulso de RESET por hora** (puede ser el caster, no el módem). Anótalo y avisa a ingeniería. + - **Si D13 parpadea pero `led=0`:** mide PC2 en el lado del MCU de **R48** (10 k), contra TP1, con el LED del módem encendido. La salida del LED del módem es de 1.8 V y el MCU la lee como alto a partir de ≈ 1.8 V: anota el valor (menos de 1.7 V = el MCU no la ve; es un dato para el firmware de campo, no una FALLA de la tarjeta). +7. **RTK.** Teclea `n` (monitor NMEA 20 s): `fix=1` al minuto, **`fix=4`** (RTK FIX) en < 10 min con cielo, `sats ≥ 10`. Anota el tiempo. +8. **Recuperación del módem:** + - `M` → `EVT … MODEM_RST operador`: D13 se apaga y el módem vuelve a `VIVO`, normalmente en < 60 s (el MCU espera hasta 3 min antes del siguiente escalón). + - `Q` → reinicio de alimentación: K1 se suelta, `MODEM OFF` y **K1 vuelve a hacer clic durante los 5 s** (con PA9 en bajo sostiene DIN_4G, J8 pin 3, en 0 V para que nada alimente al módem apagado, E-13). En esos 5 s **J8 pin 1 < 0.3 V** (≈ 1 V = algo alimenta al módem: anótalo y avisa a ingeniería). Luego K1 se suelta, `MODEM ON (pwrcyc)`, el módem vuelve a `VIVO` y K1 conmuta otra vez con `MODOB ON`. + - `SW3` (el botón): igual que `M`. +9. **Apagado ordenado.** `P` → `STACK OFF` (apagar no pide confirmación; en AUTO queda en pausa hasta `P` + `Y`). El orden debe ser: K1 se suelta, `MODEM OFF` (J8 pin 1 a 0 V) y luego la etapa (MOD1 pin 5 a 0 V). `P` + `Y` la vuelve a encender. + +`n` sin tramas: el simpleRTK2B no tiene la configuración Helgen (UART1 a 115200) o MOD1 está corrido un pin. Apaga antes de tocar. `EVT … MODEM sigue apagado: sin NMEA … PA10 en bajo`: el F9P no tiene alimentación (F1, Q4 o el módulo mal asentado en MOD1); el MCU no enciende el módem para que DOUT_4G no lo alimente por RX2. `modem=` se queda en `ARRANQUE` y luego `PWRCYC`/`LIMP`: el módem no da señal de vida; revisa SIM, antenas y su configuración ([módulos §2](v5-modulos-integracion.md)). Para observarlo sin que el MCU lo reinicie, `D` apaga las acciones automáticas (solo vigila). + +## 8. Batería y respaldo (10 min) + +Con el juego de banco puesto y la fuente de §7. + +1. Mide el paquete en vacío: **2.8–3.6 V** (LFP). Fuera de rango: no lo uses. +2. `P` → `STACK OFF`. **Conecta el paquete en J5** (1 = BAT+, 2 = GND, 3 = NTC). `P` + `Y` → `STACK ON`. +3. En `STAT`: `vbat` ≈ el paquete; **`tcel`** ≈ la temperatura del cuarto (es la NTC del paquete; `n/c` con 5 V presente = NTC sin conectar: FALLA del arnés); `tchg` (U12) y `tmdm` (U8). +4. **Carga.** Unos 150 s después de `STACK ON` (`carga=HOLDOFF`, luego `PROVING`), el gobernador la permite: `carga=ON ltc=CARGANDO`. + + | Medición | Esperado | + |---|---| + | Corriente del paquete (pinza de CD en el cable de J5.1) | **1.2–1.4 A** si el paquete está abajo de ≈ 3.4 V | + | V(TP7) | 32 × V(R68) | + | V(R68), en los pads de R68, con la escala de 200 mV | ≈ 10 mV por cada 1 A de entrada | + | (V(TP7) / 32) / V(R68), con la carga encendida (V(R68) ≥ 10 mV, es decir ≥ 1 A de entrada) | **1.0–1.1** (sensado Kelvin bien) | + +5. **Respaldo.** Apaga la fuente (V5.6: J16 · V5.7: J15): + + | Punto | Esperado | + |---|---| + | Consola | `EVT … V5 PERDIDO` y `BACKUP inicio`; **sin reinicio** (el encabezado no se reimprime) | + | `STAT` | `v5=0.00`, `vbat` del paquete, `modem=VIVO`, `nmea=` sigue subiendo | + | TP6 (con 10 kΩ a TP2) | Bajo | + | D13 | Sigue parpadeando | + +6. Enciende la fuente: `EVT … V5 PRESENTE` y `5 V de vuelta tras … s de respaldo: sin reset del MCU (V5.6/V5.7); modem con senal de vida`. Sin reinicio. +7. Repite el corte **3 veces** (20 en las tarjetas del banco del piloto, §10). Anota cualquier reinicio con su `reset=`. + +## 9. Ignición y ventilador (5 min) + +La ignición entra por J15 pin 3 y el MCU la lee por ADC con histéresis: **ON a partir de ≈ 6.9 V, OFF abajo de ≈ 4.8 V**. Con 5 V presentes y la ignición en ON, el ventilador gira (política v3.0.3). + +1. Ventilador de 5 V en J3. **V5.6:** 24 V en J15 pin 1 para el buck del ventilador, además de J16. **V5.7:** basta J15 pin 1. +2. Segunda fuente (límite 50 mA) entre J15 pin 3 (+) y J15 pin 2/4 (GND): + + | J15 pin 3 | `STAT ign=` | Consola | Ventilador | + |---|---|---|---| + | 0 V (o al aire) | `OFF` | — | Detenido (el termostato lo enciende a 48 °C y lo apaga abajo de 45 °C) | + | 12.0 V | `ON(12.0V)` ± 0.5 V | `EVT … IGN ON (PA5 1.38 V = 12.0 V en J15.3 …)` | Gira | + | 24.0 V | `ON(24.0V)` ± 0.8 V | — | Gira | + | 3.0 V | `OFF` | `EVT … IGN OFF` | Se detiene | + +3. Regresa J15 pin 3 a 0 V. + +## 10. Banco del piloto: los 8 criterios para liberar las 135 y las 365 + +Las 10 tarjetas del piloto (5 V5.6 + 5 V5.7) pasan §1 a §9. Además, en las tarjetas que dice la tabla, se corren las pruebas largas. **Con los 8 criterios en verde se liberan las 135 V5.6 y las 365 V5.7** ([auditoría final, §7](../hardware/auditoria-final-22oct.md#7-el-pedido-de-hoy-40-min-y-el-camino-a-las-108-322), en la numeración de T43). Se registra en el [acta del banco del piloto](../formularios/piloto.html). + +| # | Criterio | En cuántas | Firmware | Hoy | +|---|---|---|---|---| +| 1 | U14 con lupa (y rayos X) + autoprueba 18 PASS | 10 | 0.7.0-pre | ✅ se puede | +| 2 | Con 24 V: NMEA < 2 s · primera RTCM < 60 s · Kelvin (TP7 ÷ 32) / V(R68) = 1.0–1.1 con ≈ 1.0 A · carga 1.2–1.4 A | 10 | 0.7.0-pre | ✅ se puede | +| 3 | 20 ciclos de 10 min en batería con el paquete al 20 % y 45 °C · piso dormido < 100 mW (PPK2) · `/SYS5V` > 4.3 V en las ráfagas | 1 V5.6 + 1 V5.7 | **F-2** | ⏳ con 0.7.0-pre solo el respaldo continuo | +| 4 | 20 cortes 24 V ↔ batería sin reinicio, con el módem vivo | 10 | 0.7.0-pre | ✅ se puede | +| 5 | RS-485 y RS-232 en lazo · Ethernet 24 h | 1 + 1 | **F-3** y build `-eth` | ⏳ hoy: presencia y niveles | +| 6 | V5.7: 9/12/24/32 V con 2.8 A · polaridad invertida · U15 < 110 °C y D21 < 100 °C a 32 V | 2 V5.7 | cualquiera | ✅ se puede (§10.2) | +| 7 | Temperatura de U14 y L3 cargando a 1.4 A a 45 °C, y de L2 con el módem | 1 V5.6 + 1 V5.7 | 0.7.0-pre | ✅ se puede | +| 8 | Arneses (los JST del borde norte se movieron 12–38 mm en la V5.6 y hasta 68 mm en la V5.7), tapa (en la V5.7 el medidor D17–D14 quedó en la orilla derecha) y barrenos MH1/MH3/MH6 en la base del HBOX | 1 de cada una | — | ✅ se puede | + +También se revisan en el piloto los cambios de T47 que nunca se han fabricado: arranque suave de U13 (AP64352Q, C61) y rizo con L2 de 3.3 µH; en la V5.7, rizo de `/VEH5V` con L4 de 15 µH. Y que con el módem apagado J8 pin 1 quede en 0 V, no en ≈ 1 V (E-13): se mide en §4 (MCU virgen) y en los 5 s de la tecla `Q` (§7.8). + +### 10.1 Pruebas largas con 0.7.0-pre + +- **20 cortes (criterio 4).** §8.5–6 veinte veces, con al menos 30 s entre corte y regreso. Cuenta los reinicios (debe ser 0) y si el módem volvió `VIVO` cada vez. +- **Respaldo continuo a 45 °C (adelanto del criterio 3).** Paquete cargado, cámara a 45 °C, 24 V fuera: anota cuánto dura hasta `-> SLEEP` (2.95 V) y el `v5min` más bajo (`/SYS5V` > 4.3 V). El ciclo de 10 min y el piso dormido esperan a F-2. +- **Temperaturas (criterio 7).** Paquete al 20 %, cámara a 45 °C, carga a 1.4 A: termopar o cámara térmica en U14, L3 y L2 cada 10 min por 1 h. Anota también `tchg` (U12) y `tmdm` (U8). El firmware inhibe la carga con la celda a 55 °C o la tarjeta a 70 °C. +- **Umbral de SLEEP (opcional).** Fuente de banco en J5 en lugar del paquete (límite 3 A), con 10 kΩ entre J5 pin 3 y GND como NTC y **la carga vetada con `C`** (una fuente no recibe corriente). En respaldo, bájala de 3.30 V a 2.90 V: `-> SLEEP` a 2.95 V (media de 200 ms). Súbela a 3.25 V: `SLEEP fin` arriba de 3.20 V. + +### 10.2 V5.7: la fuente a bordo (criterio 6) + +Necesitas carga electrónica de 3 A, osciloscopio con punta de tierra corta (resorte) y cámara térmica o termopar. + +1. **Carga:** la carga electrónica entre **J3 pin 1 (+)** y **TP1 o J15 pin 2 (−)**. J3 pin 1 es `/VEH5V` por JP1. No la conectes a J3 pin 2 (es el lado conmutado del ventilador). +2. **Barrido.** A 9, 12, 24 y 32 V, con 0 A, 1.0 A y 2.5 A en la carga (más ≈ 0.3 A de la tarjeta = 2.8 A): + + | Medición | Esperado | + |---|---| + | J3 pin 1 | 5.20–5.45 V en todos los puntos | + | Corriente de entrada | Anota (eficiencia) | + | Nodo SW de U15 y su VIN, con la punta de tierra corta, al encender y con 2.5 A | Anota el sobretiro y la oscilación (D-21-2) | + +3. **Temperatura.** 32 V y 2.8 A por 10 min: **U15 < 110 °C** y **D21 < 100 °C**. A 9 V y 1.9 A: cámara térmica en las dos vías de entrada (E-10). +4. **Polaridad invertida.** Fuente a 24 V con límite de 200 mA, **al revés** en J15 (pin 1 = −, pin 2 = +) por 5 s: corriente < 5 mA y nada se calienta (Q6 bloquea; D18 es bidireccional). Al conectarla bien, J3 pin 1 vuelve a 5.32 V: F2 no se abrió. + +## 11. Cierre + +- [ ] Sin energía: retira el paquete, el simpleRTK2B y el 4G NTRIP Master de banco (sin doblar pines) y regrésalos a sus bolsas «BANCO». +- [ ] Retira el puente de banco de J2. +- [ ] Etiqueta la tarjeta con su serie (**V56-NN** o **V57-NN**) y la fecha, cerca de MH3, sin tapar la serigrafía. +- [ ] Llena el [acta de tarjeta V5.6](../formularios/v56.html) o el [acta de tarjeta V5.7](../formularios/v57.html), con la ARD y la RTK de banco que usaste. +- [ ] Bolsa antiestática. Las FALLA en bolsa aparte, con una nota del punto que falló. + +La tarjeta se queda con 0.7.0-pre: es el firmware del piloto. No se embarca ninguna unidad V5.6/V5.7 hasta que pasen los 8 criterios y salga el firmware de campo. + +## Hoja de respaldo en papel + +| Tarjeta | 1 Visual | 2 Cortos | 3 USB | 4 Rieles | 5 Flash | 6 POST | 7 Módem | 8 Batería | 9 Ign. | OK / FALLA | Técnico | Fecha | +|---|---|---|---|---|---|---|---|---|---|---|---|---| +| V56-01 | | | | | | | | | | | | | +| V56-02 | | | | | | | | | | | | | +| V56-03 | | | | | | | | | | | | | +| V56-04 | | | | | | | | | | | | | +| V56-05 | | | | | | | | | | | | | +| V57-01 | | | | | | | | | | | | | +| V57-02 | | | | | | | | | | | | | +| V57-03 | | | | | | | | | | | | | +| V57-04 | | | | | | | | | | | | | +| V57-05 | | | | | | | | | | | | | + +## Anexo — notas de ingeniería + +- **Arranque seguro por hardware:** R8 (a `/SYS5V`) apaga la etapa RTK, R57 (a GND) apaga U13, R5 deja el W5500 en reset y R32 deja K1 suelto. 0.7.0-pre lo respeta: PC3, PA1, PB5, PA15, PA6 y PB0 en bajo; PA2 como entrada hasta encender la etapa; PC1 en drenador abierto (nunca alto); lo primero que escribe en U5 es EFCR = 0x30 (E-4). +- **Módem (0.7.0-pre, F-1):** etapa ON → NMEA (o 30 s sin NMEA, solo si PA10 está en alto: el F9P tiene alimentación) → 2 s → MODEM_EN (PC3) → 1 s → pulso de RESET (PC1, 500 ms). Vivo = **4 flancos del LED (PC2, con 20 ms de antirrebote)** o una trama RTCM3 con CRC-24Q válido (PC7) en 10 s. Sin vida **180 s**: pulso (máx. 2), luego MODEM_EN abajo 5 s con DIN_4G en 0 V (K1 + PA9 en bajo; máx. 2), luego LIMP (otra escalera cada 30 min). Vivo y luego 3 min sin LED ni RTCM = oscuro → la misma escalera; la quinta en una hora = LIMP. Si el LED nunca se vio (vida solo por RTCM), sin RTCM solo un pulso por hora y sin escalera (puede ser el caster). La escalera se rearma tras 3 min de VIVO seguido. El modo B espera al módem vivo (o 60 s). Al apagar (también con `R`): K1 suelto → MODEM_EN abajo → PA1 abajo (F-8). Revisión independiente del 27-oct + 27 escenarios del simulador. +- **Batería LFP:** SLEEP en respaldo a 2.95 V (media de 200 ms), rearme a 3.20 V; medidor D17–D14 a 3.00/3.20/3.30/3.40 V; carga inhibida con la celda ≥ 55 °C o la tarjeta ≥ 70 °C; etapa apagada con la celda ≥ 60 °C o la tarjeta ≥ 75 °C (rearme 55/70). `tcel` = NTC del paquete por PC5 (× 0.5455), válida solo con `/VEH5V` presente (E-14); en batería se ve `n/c` y cuidan U12 y U8. +- **En respaldo no hay ciclos** (eso es F-2): la etapa y el módem siguen encendidos desde el refuerzo del LTC4040 (4.79 V); al volver los 5 V el MCU no se reinicia y solo pulsa el RESET del módem si no dio señal de vida en el último minuto, si la escalera no lo está atendiendo y si no hubo un pulso en los últimos 3 min (un 5 V que rebota no lo reinicia en lazo). +- **Ignición:** J15.3 → R15 22 k / (R16 22 k ∥ R6 3.3 k) = × 0.1154 → PA5, con D2 BAT54 a 3V3. ON ≥ 0.80 V en el pin (≈ 6.9 V), OFF < 0.55 V (≈ 4.8 V). +- **Telemetría:** `$PHLG` en banda de 24 campos (versión `0.7.0p`, para no pasar el largo que deja el módem); campo 17 `tbat` = la celda; campo 21 `tntc` = la más caliente de U12/U8. +- Compilación: `GENERIC_F411RCTX`, `-DHBOX_BOARD_V56 -DFLASH_DATA_SECTOR=5 -DFLASH_BASE_ADDRESS=0x08020000UL`, `upload.maximum_size=131072` (README del firmware). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-10-27 | Primera versión (borrador): prueba por tarjeta con 0.7.0-pre en la numeración de T43, juego de módulos de banco, los 8 criterios del piloto y la fuente de la V5.7. Incluye la revisión independiente del firmware (vida = 4 flancos, 180 s entre escalones, DIN_4G en 0 V en el reinicio de alimentación, DE de U7 y R48 en banco). | diff --git a/docs/produccion/index.md b/docs/produccion/index.md index d142a78..f20538d 100644 --- a/docs/produccion/index.md +++ b/docs/produccion/index.md @@ -6,17 +6,30 @@ title: "Producción" De la tarjeta desnuda a la unidad lista para embarcar. Una unidad a la vez; cada paso deja su acta y la unidad no avanza si falla un paso. Plan y avance real: [Tablero de producción](../tableros/produccion.md). Existencias: [Inventario](../tableros/inventario.md). -## Plan de 570 unidades (13-oct-2026) +## Plan de 560 unidades (27-oct-2026) -| Versión | Cantidad | Fuente de 5 V | Tarjeta | Estado del diseño | +| Versión | Cantidad | Fuente de 5 V | Tarjeta | Estado | |---|---|---|---|---| -| V5.6 | **113** | Mean Well SD-15B-05 externa (×113) | `hbox-watchdog-v5` | En layout — pasada 2; no se pide todavía | -| V5.7 | **327** | A bordo (U15) | `hbox-watchdog-v57` | En diseño — se pide después del banco de V5.6 | -| v6 | **130** + reemplazos | A bordo (U22) | `hbox-watchdog-v6` | En diseño — PCB sin corregir | +| V5.6 | **135** + 5 del piloto | Mean Well SD-15B-05 externa | `hbox-watchdog-v5` | Piloto de 5 listo para pedir (T46, T47); las 135 esperan el banco del piloto | +| V5.7 | **365** + 5 del piloto | A bordo (U15, 9–32 V) | `hbox-watchdog-v57` | Igual que la V5.6 | +| v6 | **60** | A bordo | `hbox-watchdog-v6` | Piloto de 20 con el paquete G1 | -Hoy se producen unidades con las **15 tarjetas V5.5** y se prueban las **V4**. Los procedimientos de abajo valen para V5.5 y V5.6 (la V5.6 cambia el firmware a 0.7.0 y el paquete a LFP-HT; se marcará en cada página cuando llegue el lote). Paquetes de fabricación V5.6/V5.7/v6: los prepara ingeniería ([Tarjetas y hardware](../hardware/index.md)). +Hoy se producen unidades con las **15 tarjetas V5.5** y se prueban las **V4**. La V5.6 y la V5.7 tienen su propio camino mientras dura el piloto (abajo): otros designadores (T43, los de su serigrafía), firmware 0.7.0-pre y paquete LFP-HT. Paquetes de fabricación: [Tarjetas y hardware](../hardware/index.md). -## Pipeline — paso, procedimiento, acta +!!! warning "Faltan ArduSimple (27-oct)" + No alcanzan los simpleRTK2B Pro ni los 4G NTRIP Master para las 10 unidades del piloto ni para el volumen. Las tarjetas del piloto se prueban con un **juego de módulos de banco** que pasa de tarjeta en tarjeta ([prueba y flasheo §0](../procedimientos/v56-v57-prueba-y-flasheo.md#0-el-juego-de-modulos-de-banco-faltan-ardusimple)); las unidades completas esperan a que lleguen módulos. Seguimiento: el pendiente «Faltan ArduSimple» del [tablero](../tableros/pendientes.md). + +## Piloto V5.6 / V5.7 (5 + 5 tarjetas) + +| Paso | Qué entra → qué sale | Procedimiento | Acta | +|---|---|---|---| +| P1 | Tarjeta desnuda V56-NN / V57-NN → tarjeta aprobada con 0.7.0-pre | [Prueba y flasheo V5.6/V5.7](../procedimientos/v56-v57-prueba-y-flasheo.md) | [Tarjeta V5.6](../formularios/v56.html) · [Tarjeta V5.7](../formularios/v57.html) | +| P2 | Las 10 tarjetas → los 8 criterios que liberan las 135 y las 365 | [§10, banco del piloto](../procedimientos/v56-v57-prueba-y-flasheo.md#10-banco-del-piloto-los-8-criterios-para-liberar-las-135-y-las-365) | [Banco del piloto](../formularios/piloto.html) | +| P3 | Tarjeta + pareja aprobada → unidad `HBOX56-…` / `HBOX57-…` probada | [Ensamble V5.6/V5.7](../procedimientos/v56-v57-ensamble.md) | [Ensamble V5.6](../formularios/ensamble-v56.html) · [Ensamble V5.7](../formularios/ensamble-v57.html) | + +Los módulos se prueban e integran igual que en la V5.5 (paso 2 de abajo). Una unidad del piloto no se embarca hasta que pasen los 8 criterios y salga el firmware de campo. + +## Pipeline V5.5 — paso, procedimiento, acta | Paso | Qué entra → qué sale | Procedimiento | Acta | |---|---|---|---| @@ -36,10 +49,10 @@ La V4 no entra al pipeline de unidades V5; se prepara y prueba en [Taller](../ta ## Dónde ver el avance -- [Tablero de producción](../tableros/produccion.md): plan 113 / 327 / 130 contra las unidades reales por etapa; bloqueos. -- [Estado de actas](../tableros/actas.md): qué tarjeta, módulo y unidad pasó cada paso (series V5-NN, ARD-NNN, RTK-NNNN). +- [Tablero de producción](../tableros/produccion.md): plan 135 / 365 / 60 contra las unidades reales por etapa; bloqueos. +- [Estado de actas](../tableros/actas.md): qué tarjeta, módulo y unidad pasó cada paso (series V5-NN, V56-NN, V57-NN, ARD-NNN, RTK-NNNN). - [Expediente de una unidad](../tableros/unidad.md): la historia completa de una serie. - [Inventario](../inventario/index.md): tarjetas, módulos, gabinetes, cajas, paquetes, fuentes; mínimos y alertas. - [Pendientes](../tableros/pendientes.md): tareas de la pista Producción y Compras. -- [Descargas](../descargas/index.md): firmware vigente por tarjeta y SHA-256. Hoy: 0.6.0 CAMPO; 0.6.3 solo banco. +- [Descargas](../descargas/index.md): firmware vigente por tarjeta y SHA-256. Hoy: 0.6.0 CAMPO; 0.6.3 solo banco; 0.7.0-pre (V5.6/V5.7) solo banco. - [Índice de actas](../actas/index.md): cómo se llenan y qué registra cada una. diff --git a/docs/tableros/actas.md b/docs/tableros/actas.md index b2d816c..7876c8e 100644 --- a/docs/tableros/actas.md +++ b/docs/tableros/actas.md @@ -19,13 +19,16 @@ hide: (function () { const STREAMS = [ { tipo:'prueba-v5', prefijo:'V5', desde:1, n:30, pad:2, titulo:'Tarjetas EinarBoard — V5', form:'/formularios/v5.html' }, - { tipo:'modulo-ard', prefijo:'ARD', desde:1, n:30, pad:3, titulo:'Módulos simpleRTK2B Pro — ARD', form:'/formularios/ardusimple.html', usoClave:'ard' }, - { tipo:'modulo-4g', prefijo:'RTK', desde:1, n:30, pad:4, titulo:'Módems 4G NTRIP Master — RTK', form:'/formularios/modem4g.html', usoClave:'modem' }, + { tipo:'prueba-v56', prefijo:'V56', desde:1, n:5, pad:2, titulo:'Tarjetas EinarBoard — V5.6 (piloto, 0.7.0-pre)', form:'/formularios/v56.html' }, + { tipo:'prueba-v57', prefijo:'V57', desde:1, n:5, pad:2, titulo:'Tarjetas EinarBoard — V5.7 (piloto, 0.7.0-pre)', form:'/formularios/v57.html' }, + { tipo:'banco-piloto', prefijo:'PILOTO-V5', desde:6, n:2, pad:1, titulo:'Banco del piloto — PILOTO-V5-6 (V5.6) y PILOTO-V5-7 (V5.7)', form:'/formularios/piloto.html' }, + { tipo:'modulo-ard', prefijo:'ARD', desde:1, n:40, pad:3, titulo:'Módulos simpleRTK2B Pro — ARD', form:'/formularios/ardusimple.html', usoClave:'ard' }, + { tipo:'modulo-4g', prefijo:'RTK', desde:1, n:40, pad:4, titulo:'Módems 4G NTRIP Master — RTK', form:'/formularios/modem4g.html', usoClave:'modem' }, { tipo:'prueba-v4', prefijo:'V4', desde:1, n:15, pad:2, titulo:'Tarjetas EinarBoard — V4 (fw 0.6.x)', form:'/formularios/v4.html' }, ]; const TABLAS = [ { tipo:'integracion', titulo:'Integración ArduSimple + 4G (parejas)', form:'/formularios/integracion.html', cols:[['ard','ArduSimple'],['modem','4G (RTK-)']] }, - { tipo:'ensamble', titulo:'Unidades ensambladas — HBOX v5', form:'/formularios/ensamble.html', cols:[['einar','EinarBoard'],['ard','ArduSimple'],['modem','4G (RTK-)']], unidad:true }, + { tipo:'ensamble', titulo:'Unidades ensambladas — HBOX (V5.5, V5.6, V5.7)', form:'/formularios/ensamble.html', cols:[['einar','EinarBoard'],['ard','ArduSimple'],['modem','4G (RTK-)']], unidad:true }, ]; const ICON = { apro: Kanban.icono('ok'), falla: Kanban.icono('cerrar'), pend: '·', ens: Kanban.icono('unidad') }; const cont = document.getElementById('cont'); @@ -115,6 +118,7 @@ function render(actas){ const kpis=document.createElement('div'); kpis.className='kpis'; const kpi=(n,l)=>{ const d=document.createElement('div'); d.className='kpi'; d.innerHTML='
'+n+'
'+l+'
'; return d; }; kpis.append(kpi(okN(v5),'EinarBoard V5 aprobadas')); + kpis.append(kpi(okN(actas.filter(a=>a.tipo==='prueba-v56'))+' / '+okN(actas.filter(a=>a.tipo==='prueba-v57')),'V5.6 / V5.7 aprobadas (piloto)')); kpis.append(kpi(okN(rtk),'ArduSimple aprobados')); kpis.append(kpi(okN(g4),'Módems 4G aprobados')); kpis.append(kpi(okN(integ),'Parejas integradas')); diff --git a/docs/tableros/actividad.js b/docs/tableros/actividad.js index b42a22a..9a7a7c4 100644 --- a/docs/tableros/actividad.js +++ b/docs/tableros/actividad.js @@ -7,7 +7,7 @@ (function () { const ESTADOS = { 'por-hacer': 'Por hacer', 'en-curso': 'En curso', 'bloqueado': 'Bloqueado', 'hecho': 'Hecho' }; const ACTAS = { - 'prueba-v5': 'tarjeta V5', 'prueba-v4': 'tarjeta V4', 'modulo-ard': 'ArduSimple', 'modulo-4g': 'módem 4G', + 'prueba-v5': 'tarjeta V5', 'prueba-v56': 'tarjeta V5.6', 'prueba-v57': 'tarjeta V5.7', 'banco-piloto': 'banco del piloto', 'prueba-v4': 'tarjeta V4', 'modulo-ard': 'ArduSimple', 'modulo-4g': 'módem 4G', 'integracion': 'integración', 'ensamble': 'ensamble', 'reflasheo': 'reflasheo', 'prueba-ethernet-serie': 'Ethernet y serie', 'envio': 'envío', 'recepcion': 'recepción', 'instalacion-campo': 'instalación', 'diagnostico-campo': 'diagnóstico en campo', 'diagnostico-banco': 'diagnóstico en banco', 'dano': 'daño', 'prueba-bateria-modem': 'prueba de batería del módem', 'prueba-sitio': 'prueba en sitio' diff --git a/docs/tableros/produccion.md b/docs/tableros/produccion.md index c7fefe3..8e7136c 100644 --- a/docs/tableros/produccion.md +++ b/docs/tableros/produccion.md @@ -36,7 +36,7 @@ const fmt = iso => (iso || '').replace('T', ' ').slice(0, 16); const esPrueba = s => String(s || '').toUpperCase().includes('PRUEBA'); const esUnidad = s => /^HBOX/i.test(String(s || '')); const BADGE = { 'V5.5': 'badge-v55', 'V5.6': 'badge-v56', 'V5.7': 'badge-v57', 'v6': 'badge-v6' }; -const FORM = { 'prueba-v5': '/formularios/v5.html', 'prueba-v4': '/formularios/v4.html', 'modulo-ard': '/formularios/ardusimple.html', 'modulo-4g': '/formularios/modem4g.html', +const FORM = { 'prueba-v5': '/formularios/v5.html', 'prueba-v56': '/formularios/v56.html', 'prueba-v57': '/formularios/v57.html', 'banco-piloto': '/formularios/piloto.html', 'prueba-v4': '/formularios/v4.html', 'modulo-ard': '/formularios/ardusimple.html', 'modulo-4g': '/formularios/modem4g.html', 'integracion': '/formularios/integracion.html', 'ensamble': '/formularios/ensamble.html', 'reflasheo': '/formularios/reflasheo.html', 'prueba-ethernet-serie': '/formularios/ethernet-serie.html', 'envio': '/formularios/envio.html', 'instalacion-campo': '/formularios/instalacion.html' }; const PISTAS = { produccion: 'Producción', mecanica: 'Mecánica', compras: 'Compras', ingenieria: 'Ingeniería', campo: 'Campo' }; diff --git a/docs/tableros/unidad.md b/docs/tableros/unidad.md index a54732a..7114e8e 100644 --- a/docs/tableros/unidad.md +++ b/docs/tableros/unidad.md @@ -33,7 +33,7 @@ const kb=n=>n>1048576?(n/1048576).toFixed(1)+' MB':Math.max(1,Math.round(n/1024) const NOMBRE={'diagnostico-campo':['Diagnóstico en campo','campo'],'diagnostico-banco':['Diagnóstico en banco','banco'], 'reflasheo':['Reflasheo','flash'],'instalacion-campo':['Instalación en sitio','campo'],'prueba-sitio':['Prueba en sitio','campo'], 'dano':['Daño o incidente','falla'],'envio':['Envío','prod'],'recepcion':['Recepción','prod'], - 'prueba-v5':['Prueba de tarjeta V5','prod'],'prueba-v4':['Prueba de tarjeta V4','prod'], + 'prueba-v5':['Prueba de tarjeta V5','prod'],'prueba-v56':['Prueba de tarjeta V5.6','prod'],'prueba-v57':['Prueba de tarjeta V5.7','prod'],'banco-piloto':['Banco del piloto','prod'],'prueba-v4':['Prueba de tarjeta V4','prod'], 'modulo-ard':['Módulo ArduSimple','prod'],'modulo-4g':['Módem 4G','prod'], 'integracion':['Integración RTK + 4G','prod'],'ensamble':['Ensamble de unidad','prod']}; @@ -208,11 +208,13 @@ function trazabilidad(j){ const ens=ultima(A,['ensamble']); let comp=(ens&&ens.componentes)||{}; // sin acta de ensamble, los módulos se deducen del número de unidad: HBOX5-E02-A002-R0002 → V5-02 · ARD-002 · RTK-0002 - const mSer=!comp.einar && j.serie.match(/^HBOX5-E(\d+)-A(\d+)-R(\d+)$/i); - if(mSer) comp={einar:'V5-'+mSer[1].padStart(2,'0'), ard:'ARD-'+mSer[2].padStart(3,'0'), modem:'RTK-'+mSer[3].padStart(4,'0')}; + // V5.6/V5.7 (27-oct): HBOX56-E03-A031-R0029 → V56-03 (acta prueba-v56) · ARD-031 · RTK-0029 + const v5x=(j.serie.match(/^HBOX5([67])-/i)||[,''])[1]; + const mSer=!comp.einar && j.serie.match(/^HBOX5[67]?-E(\d+)-A(\d+)-R(\d+)$/i); + if(mSer) comp={einar:'V5'+v5x+'-'+mSer[1].padStart(2,'0'), ard:'ARD-'+mSer[2].padStart(3,'0'), modem:'RTK-'+mSer[3].padStart(4,'0')}; if(esHbox){ // módulos: se consultan por su serie - const m=[['Tarjeta EinarBoard','prueba-v5',comp.einar],['ArduSimple','modulo-ard',comp.ard],['Módem 4G','modulo-4g',comp.modem]]; + const m=[['Tarjeta EinarBoard','prueba-v5'+v5x,comp.einar],['ArduSimple','modulo-ard',comp.ard],['Módem 4G','modulo-4g',comp.modem]]; const ph={}; m.forEach(([n,,s])=>{ const p=paso(n,'pend',s?'consultando…':'sin ensamble', s?''+s+'':''); ph[n]=p; prod.append(p); }); const integ=paso('Integración','pend',comp.ard&&comp.modem?'consultando…':'—'); prod.append(integ); (async()=>{ @@ -235,7 +237,7 @@ function trazabilidad(j){ prod.append(pasoActa('Configuración / pruebas',ultima(A,['reflasheo','prueba-ethernet-serie','prueba-bateria-modem']),null,'sin acta')); } else { // pieza suelta: su propia acta de prueba, y en qué unidad quedó - prod.append(pasoActa('Acta de la pieza',ultima(A,['prueba-v5','prueba-v4','modulo-ard','modulo-4g']))); + prod.append(pasoActa('Acta de la pieza',ultima(A,['prueba-v5','prueba-v56','prueba-v57','prueba-v4','modulo-ard','modulo-4g']))); const integ=j.relacionadas.find(r=>r.tipo==='integracion'), ensR=j.relacionadas.find(r=>r.tipo==='ensamble'); prod.append(integ?paso('Integración',integ.resultado==='FALLA'?'falla':'ok',integ.resultado==='FALLA'?'Falla':'En pareja',''+integ.serie+''):paso('Integración','pend','sin acta')); prod.append(ensR?paso('Ensamble',ensR.resultado==='FALLA'?'falla':'info',ensR.resultado==='FALLA'?'Falla':'Montada en unidad',''+ensR.serie+''):paso('Ensamble','pend','libre (no está en una unidad)')); diff --git a/mkdocs.yml b/mkdocs.yml index 61e685f..7e2b8d7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -107,6 +107,14 @@ nav: - Guía del ingeniero: guia-ingeniero.md - Producción: - produccion/index.md + - Piloto V5.6 / V5.7: + - Prueba y flasheo: procedimientos/v56-v57-prueba-y-flasheo.md + - Acta de tarjeta V5.6: formularios/v56.html + - Acta de tarjeta V5.7: formularios/v57.html + - Acta del banco del piloto: formularios/piloto.html + - Ensamble: procedimientos/v56-v57-ensamble.md + - Acta de ensamble V5.6: formularios/ensamble-v56.html + - Acta de ensamble V5.7: formularios/ensamble-v57.html - Prueba de tarjetas: - Procedimiento: procedimientos/v5-prueba-y-flasheo.md - Acta de tarjeta V5: formularios/v5.html diff --git a/scripts/sync-docs.sh b/scripts/sync-docs.sh index e1868a4..275d063 100755 --- a/scripts/sync-docs.sh +++ b/scripts/sync-docs.sh @@ -14,6 +14,8 @@ declare -a MAP=( "06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Modulos-e-Integracion_ES_v1.0.md|docs/procedimientos/v5-modulos-integracion.md" "06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Procedimiento-Ensamble_ES_v1.0.md|docs/procedimientos/v5-ensamble.md" "06-Testing-Validation/2026-09-18_Drogheda_HBOX-v5_Prueba-Final-Unidad-FW-0.4.0_ES_v1.0.md|docs/procedimientos/v5-prueba-final-unidad.md" + "06-Testing-Validation/2026-10-27_Drogheda_EinarBoard-V5.6-V5.7_Prueba-y-Flasheo_ES_v1.0.md|docs/procedimientos/v56-v57-prueba-y-flasheo.md" + "06-Testing-Validation/2026-10-27_Drogheda_HBOX-V5.6-V5.7_Procedimiento-Ensamble_ES_v1.0.md|docs/procedimientos/v56-v57-ensamble.md" "06-Testing-Validation/2026-07-08_Drogheda_EinarBoard-1.0_BringUp-Runbook_v1.0.md|docs/procedimientos/einarboard-1.0-bringup.md" "06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md|docs/procedimientos/fan-policy-bench-test.md" "03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md|docs/procedimientos/historico-proto-bench-v3.md" @@ -31,6 +33,8 @@ declare -a MAP=( # docs/descargas/, la vigente anterior a superseded/, y se corrigen estas líneas. "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.3.bin|docs/descargas/prueba/hbox-v5-bringup_0.6.3.bin" "04-Source-Code/firmware/release/hbox-tarjetaV4_0.6.3.bin|docs/descargas/prueba/hbox-tarjetaV4_0.6.3.bin" + # 2026-10-27: 0.7.0-pre, banco del piloto V5.6/V5.7 (un binario para las dos; solo banco) + "04-Source-Code/firmware/release/hbox-tarjetaV56_0.7.0-pre.bin|docs/descargas/prueba/hbox-tarjetaV56_0.7.0-pre.bin" "04-Source-Code/firmware/tools/phtst_report.py|docs/descargas/prueba/phtst_report.py" "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.0.bin|docs/descargas/hbox-v5-bringup_0.6.0.bin" "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.2.bin|docs/descargas/superseded/hbox-v5-bringup_0.6.2.bin"