Firmware 0.7.0-pre2 (banco V5.6/V5.7) y auditoría del firmware del 29-oct (V5.6/V5.7 y v6)
- 04-Source-Code/firmware → 82905a6 (0.7.0-pre2: F-2 ciclo de batería con STOP + RTC, F-3, F-5, E-3 y 33 hallazgos de la auditoría corregidos; simulador 118/118; builds reproducibles). - 02-Architecture-Software/2026-10-29_Drogheda_Auditoria-Firmware-0.7.0_V5.6-V5.7-v6_ES_v1.0.md: revisiones A y C (V5.6/V5.7) y B (v6); decisiones D-29-1 y D-29-2 para Leo. - Prueba y flasheo V5.6/V5.7 1.2 y ensamble 1.1 al día con 0.7.0-pre2. - CLAUDE.md: entrada del 29-oct y el documento en la tabla de 02. - hbox-docs → 044900b (descargas, notas, actas, auditoría, bitácora, lote). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QCy5VHMVLkAmftYM6swWmx
This commit is contained in:
parent
22a80dae85
commit
bb0306265b
@ -0,0 +1,258 @@
|
||||
---
|
||||
title: "Firmware 0.7.0: auditoría para V5.6/V5.7 y compatibilidad con la v6 (29-oct)"
|
||||
tags: [project-drogheda, firmware, auditoria, v5.6, v5.7, v6, stm32f411, stop, rtc, sc16is752, lis2dh12, w5500, fota]
|
||||
date: 2026-10-29
|
||||
project: Project Drogheda
|
||||
author: "Helgen Technologies (auditoría: tres revisiones independientes de Claude; integración: Claude; para: Leo)"
|
||||
version: 1.0
|
||||
status: "Publicado con 0.7.0-pre2 (solo banco)"
|
||||
audience: ingeniería
|
||||
---
|
||||
|
||||
# Firmware 0.7.0: auditoría para V5.6/V5.7 y compatibilidad con la v6
|
||||
|
||||
!!! abstract "En una línea"
|
||||
**0.7.0-pre2 sirve para el banco del piloto de la V5.6 y la V5.7 (un solo binario).** Las tres revisiones no encontraron bloqueantes para el banco; el único bloqueante para campo (A-01) y 32 hallazgos más quedaron corregidos, y lo que falta se decide con mediciones del banco. **La v6 no puede correr este binario:** reutiliza ≈ 85 % del código pero necesita un enlace nuevo en el MCU (≈ 46 días-ingeniero) y dos decisiones de Leo (D-29-1 y D-29-2).
|
||||
|
||||
## 1. Qué se pidió y cómo se revisó
|
||||
|
||||
Leo (29-oct, 08:11): auditar a fondo el firmware 0.7.0, que debe servir para la V5.6 y la V5.7 y, ojalá, para la v6. Tres revisiones, cada una por un agente que no escribió el código que revisaba:
|
||||
|
||||
| Revisión | Qué | Contra qué |
|
||||
|---|---|---|
|
||||
| **A** | El 0.7.0-pre publicado el 27-oct (`hbox-firmware` `001d3d2`) en la V5.6 y la V5.7, completo | Los netlists de la V5.6 y la V5.7 (pin por pin), las hojas de datos, el *core* de STM32duino 3.0.0, los invariantes del proyecto y escenarios adversos nuevos en el simulador |
|
||||
| **B** | El 0.7.0 en la v6: qué corre, qué falta y cómo llegar a un solo código | El netlist de la v6 del 28-oct (después de T48, T49 y T41) y un `board_v6.h` de borrador compilado en la Mac |
|
||||
| **C** | Lo nuevo de 0.7.0-pre2 (ciclo de batería con STOP + RTC, driver del SC16IS752, acelerómetro, W5500 en *power-down*, robustez), que A no vio | Manual de referencia del STM32F411 (RM0383), HAL, hojas de datos del SC16IS752, LIS2DH12 y W5500, y el simulador |
|
||||
|
||||
Mientras A y B trabajaban, Claude escribió las piezas que faltaban para el banco del piloto (F-2, F-3, F-5, E-3) y una revisión propia de robustez; C revisó ese código.
|
||||
|
||||
## 2. Resultado
|
||||
|
||||
| Pregunta | Respuesta |
|
||||
|---|---|
|
||||
| ¿El 0.7.0 sirve en la V5.6 y la V5.7? | **Sí, el mismo binario en las dos** (los 64 pines del MCU son iguales; solo cambia la entrada de energía). **Banco sí; campo no** hasta que el piloto pase sus 8 criterios y se cierre A-02 |
|
||||
| ¿Hubo bloqueantes? | Uno para campo: **A-01**, un reloj que a los 24.86 días convertía a un módem sano en «oscuro» y lo reiniciaba cada 0.6 s. Corregido. Ninguno para el banco |
|
||||
| ¿Qué se corrigió? | **33 hallazgos:** 17 de los 23 de la revisión A (§3) y 16 de los 19 de la revisión C (§4), entre ellos los dos de severidad alta de la C (el STOP con la USB desconectada y el acelerómetro que no se reconfiguraba) |
|
||||
| ¿Qué queda? | A-02 (vida del módem con el caster caído) y la A/B del W5500 se deciden con mediciones del banco; A-09, A-13/A-14, A-20 y A-21 tienen dueño (§6). La flash del RCT6 va al 97–98 % |
|
||||
| ¿Y la v6? | **El binario de la V5.6 no corre en la v6** (PC3, PC10, F9P a 38 400, EFCR 0x10). Se reutiliza ≈ 85 % del código; faltan 45–60 KB de enlace propio (A7670, NTRIP, UDP, F9P desnudo, aprovisionamiento, FOTA): ≈ 39–53 días-ingeniero. Un solo código, dos binarios (§5) |
|
||||
| ¿Qué tiene que decidir Leo? | **D-29-1** (seis cambios de hardware de la v6 antes de G1) y **D-29-2** (ruta del RTCM, contrato con htracker, ID de tarjeta, secretos, banco de evaluación y la fecha de G2) |
|
||||
|
||||
## 3. La V5.6 y la V5.7 (revisión A, sobre 0.7.0-pre)
|
||||
|
||||
**Veredicto: banco SÍ, con condiciones; campo NO** hasta cerrar la lista de abajo. No hay ningún bloqueante eléctrico para el banco: el arranque seguro es correcto, las reglas de la etapa, el módem y K1 se cumplen en cada escritura de pin, el analizador de RTCM rechaza la basura, el gobernador de carga corta en una vuelta del lazo y ningún camino bloqueante se acerca al watchdog. Los binarios publicados el 27-oct se reconstruyen **byte por byte** en la Mac con el mismo `SOURCE_DATE_EPOCH`. Los 14 arreglos de la revisión del 27-oct están en el código (dos incompletos: A-01 y A-02). **Sin credenciales** en las fuentes ni en los binarios.
|
||||
|
||||
Los 64 pines del MCU son idénticos en la V5.6 y la V5.7 (netlist, pin por pin) y cada red coincide con `board_v56.h`; las direcciones I²C coinciden con los *straps*. Lo único distinto entre las dos tarjetas es la entrada de energía (J16 externo en la V5.6, U15 TPS54360B en la V5.7): el mismo binario sirve.
|
||||
|
||||
### 3.1 Hallazgos y cómo quedaron en 0.7.0-pre2
|
||||
|
||||
| ID | Severidad | Qué pasaba | En 0.7.0-pre2 |
|
||||
|---|---|---|---|
|
||||
| A-01 | **Bloqueante para campo** | A los 24.86 días de encendido, un flanco del LED o una trama RTCM viejos ganaban las comparaciones con signo y contaban como la evidencia más nueva: OSCURO falso, **pulsos de RESET cada 0.6 s, 91 174 `$PHEV` y cero `$PHLG` en 20 min** (simulador). La unidad desaparecía | ✅ La evidencia de más de 1 día se olvida. Los 4 escenarios del volteo pasan |
|
||||
| A-02 | Alta | Con el caster caído, un módem sano sin LED visible (1.8 V contra un VIH de 1.79–2.31 V) o con el LED fijo recibe pulsos y reinicios de alimentación: 20 pulsos y 4 reinicios en 2 h | ⏳ **Abierto.** El banco caracteriza el LED en cada estado (§7.6) y con eso se decide (leer PC2 por ADC, o no escalar cuando solo falta el RTCM). Mientras: caster de Helgen y anotar `rst=`/`pwrcyc=` |
|
||||
| A-03 | Alta | Sin los TMP102 la protección térmica se abría (−99 = «frío»): tras un corte a 78 °C la etapa se rearmaba a ciegas. El SHT40 muerto se quedaba con su último valor; sin recuperación del bus en marcha | ✅ Protección con el sensor del MCU, **sin rearme** si faltan U12 y U8 (`TEMP_NOREARM`), recuperación del bus I²C en marcha, SHT40 en n/c y con CRC |
|
||||
| A-04 | Alta | Un reset (IWDG, BOR, botón) en batería dejaba la unidad muda hasta que volvía el 24 V | ✅ El ciclo de batería vuelve a abrir la ventana; desde el tercer reset seguido espera 10 min (nunca un lazo) |
|
||||
| A-05 | Media | «5 V presente» (4.20/3.80 V) quedaba debajo del PFI del LTC4040 (4.40/4.51 V): entre 3.8 y 4.4 V la tarjeta corría del paquete sin respaldo ni SLEEP | ✅ Presente > 4.60 V, perdido < 4.45 V (en el archivo de la tarjeta) |
|
||||
| A-06 | Media (banco) | `-eth`: tras un corte de 24 V o la tecla `E`, el W5500 se colgaba en SPI hasta el watchdog | ✅ `SPI.begin()` antes de cada init |
|
||||
| A-07 | Media | Con las banderas de flash solo en C++, el binario enlazaba con la EEPROM en 0x0807E000 (no existe en el RCT6): se caía al arrancar | ✅ `flash_guard.c`: así ya no enlaza (probado en la Mac) |
|
||||
| A-08 | Media | Cristal de 25 MHz muerto = `while(1)` antes del watchdog | ✅ Arranca con el HSI a 96 MHz (CSS queda pendiente: con el HSI y el IWDG basta para el banco) |
|
||||
| A-09 | Media | El BOR nunca se programa (de fábrica: apagado) | ℹ️ La autoprueba lo informa; **programarlo en nivel 3 es un paso de fábrica** (pendiente de decidir dónde) |
|
||||
| A-10 | Media | `A` guardaba MANUAL en flash con una tecla (sobrevive un reflasheo); los bloqueos del operador no vencían | ✅ `A` pide `Y`; `modo=MAN` en `$PHEV BOOT`; los bloqueos vencen a las 2 h sin USB; §11 revisa `modo=AUTO` |
|
||||
| A-11 | Baja | `$PHLG` en banda sin tope: 106–107 caracteres en una unidad estresada | ✅ Contadores con tope y segunda pasada si pasa de 105 |
|
||||
| A-12 | Baja | `g` e `i` bloqueaban con K1 puesto (se perdían bytes del F9P al módem) | ✅ Sueltan K1 antes |
|
||||
| A-13 / A-14 | Baja (hardware) | Base de Q3 sin *pull-down* mientras PA1 está en alta impedancia; el cargador queda encendido por defecto si el MCU no corre | 📝 Para la siguiente revisión de la tarjeta |
|
||||
| A-15 | Info | En batería el ventilador no tiene alimentación, pero el log decía «termostato» | ✅ En batería se apaga y lo dice |
|
||||
| A-16 / A-17 | Info / Baja | Orden de lectura de dos bytes sin especificar; CRC del SHT40 ignorado | ✅ Lecturas en orden; CRC revisado |
|
||||
| A-18 | Baja | El binario solo se reproduce con el mismo `SOURCE_DATE_EPOCH` | ✅ Se publica con el valor anotado en el CHANGELOG |
|
||||
| A-19 | Baja | Tres de las «18 PASS» no podían fallar y la prueba del módem apagado no era veredicto | ✅ `ADC` con rangos y `MODEM_APAGADO` son veredictos |
|
||||
| A-20 | Baja | `$PHEV` sin límite por código | ⏳ Se coordina con el servidor (Gibran): el monitor usa pares de eventos |
|
||||
| A-21 | Baja (sin verificar) | El reinicio de 5 s del módem supone que 3V3_MODEM baja al nivel de reset | ⏳ Osciloscopio en J8.1 con `Q` (§7.8) |
|
||||
| A-22 | Info | En SLEEP el MCU seguía a 96 MHz | ✅ Con el ciclo de 0.7.0-pre2, en SLEEP también hay STOP |
|
||||
| A-23 | Info | Comentarios del LSE, de la vida del módem y de PC2 desactualizados | ✅ Al día |
|
||||
|
||||
### 3.2 Condiciones para el banco (ya están en el procedimiento 1.2)
|
||||
|
||||
1. El build `-eth` solo para las 24 h de Ethernet; al final, un corte de 24 V de 30 s debe pasar sin reinicio (confirma A-06 en hardware). El criterio 4 (20 cortes) siempre con el binario sin `-eth`.
|
||||
2. Caster de Helgen, no rtk2go; `rst=` y `pwrcyc=` al final de cada prueba (A-02).
|
||||
3. §7.6: osciloscopio en J9.8 y PC2 en cada estado del módem (decide A-02).
|
||||
4. §7.8: osciloscopio en J8.1 con `Q` (A-21).
|
||||
5. Pruebas térmicas siempre con alguien presente.
|
||||
6. §11: `modo=AUTO` antes de guardar la tarjeta (A-10).
|
||||
|
||||
### 3.3 Espacio en flash
|
||||
|
||||
En el RCT6 el binario no puede pasar de 128 KB (la EEPROM emulada ocupa el sector 5). El Ethernet de campo (F-4) cuesta ≈ 17 KB: con todo lo demás **no cabe en la misma imagen** del RCT6. Para recuperar espacio, en orden: mover la EEPROM emulada a un sector de 16 KB (libera hasta ≈ 240 KB), quitar el `printf` de punto flotante (≈ 10 KB) y dejar la ayuda y la leyenda fuera de los builds de campo (≈ 17 KB de texto). El FOTA A/B no cabe en el RCT6 en ningún arreglo: necesita el RET6 (D-22-6, ya decidido).
|
||||
|
||||
## 4. Lo nuevo de 0.7.0-pre2 (revisión C)
|
||||
|
||||
**Veredicto: sin bloqueantes; apto para un banco supervisado** con los dos arreglos que pidió y que ya están en el código: el STOP con la USB desconectada (H1) y el procedimiento 1.2 (M4). El código nuevo no pone en riesgo el hardware y mantiene al watchdog alimentado: en un modelo donde el SysTick se detiene en STOP, la recarga más espaciada del IWDG es de 5.0 s. La mecánica del STOP con el RTC es correcta: los despertares caen a los 900, 1500 y 2100 s, `millis()` se desvía menos de 0.1 s en unas 400 siestas y el 5 V que vuelve se ve en ≤ 5 s. El enlace del bloque STOP/RTC y del respaldo con HSI se comprobó con el *core* 3.0.0 en la Mac.
|
||||
|
||||
### 4.1 Qué trae 0.7.0-pre2 para el banco del piloto
|
||||
|
||||
| Pieza | Qué hace | Criterio |
|
||||
|---|---|---|
|
||||
| F-2 · ciclo de batería | Al perder el 5 V la ventana en curso sigue y cierra con ≥ 120 s, fix y 2 `$PHLG` después de la primera RTCM (el enlace probado); sin RTCM, a los 180 s. Luego todo apagado en orden y el MCU en STOP: despierta cada 5 s y a los 10 min del inicio de la ventana anterior. Un episodio de movimiento abre una ventana a los 5 min de la anterior (o ya). Con la USB conectada no hay STOP | 3 |
|
||||
| F-3 · puertos serie | Driver del SC16IS752; tecla `S` (RS-232 con un puente en J12 y RS-485 contra otra tarjeta en eco, `U`); autoprueba `SER_B_LAZO` con el tiempo del cristal Y3 | 5 |
|
||||
| F-5 · acelerómetro | LIS2DH12 a 10 Hz, movimiento por INT1, `$PHEV MOTION` en banda sin 5 V o sin ignición; autoprueba `ACCEL_1G` | — |
|
||||
| E-3 · W5500 | Fuera del build `-eth`, el PHY en *power-down*, verificado cada minuto; tecla `W` para comparar con el reset | 3 |
|
||||
| Robustez | Y2 muerto → HSI; bus I²C colgado → se libera solo; sin TMP102 → sensor del MCU y sin rearme térmico; imagen que invade el sector 5 → aviso y `A` no escribe | — |
|
||||
|
||||
### 4.2 Hallazgos y cómo quedaron
|
||||
|
||||
| ID | Severidad | Qué pasaba | En 0.7.0-pre2 |
|
||||
|---|---|---|---|
|
||||
| H1 | **Alta** | El STOP dependía de `CON.dtr()`. En el *core* 3.0.0 solo lo escribe `SET_CONTROL_LINE_STATE` y no hay detección de VBUS: al desconectar el cable se queda en 1. Siguiendo la propia ayuda («el piso se mide sin USB») nunca había STOP y el criterio 3 habría medido un MCU despierto. Con la USB conectada y la terminal cerrada, el STOP tumbaba el USB | ✅ Decide el estado del dispositivo USB: CONFIGURED = sin STOP; desconectado (SUSPENDED) = STOP. Compila y enlaza con el *core* 3.0.0 |
|
||||
| H2 | **Alta** | Si el bus seguía caído en la única recuperación, el LIS2DH12 quedaba sin configurar para siempre; el primer movimiento enclavaba INT1 y bloqueaba el STOP hasta reiniciar | ✅ Reintento cada 5 s; sin driver, `accIrq` nunca se queda arriba |
|
||||
| M1 | Media | Sin U12/U8 (o dañados) «bus caído» se cumplía siempre: una recuperación por minuto para siempre, U5 despertado y el divisor escrito en *sleep*, y `I2C_RECOVER` llenando la cola en banda | ✅ «Bus caído» exige que callen también el PCF8574 y U5; `I2C_RECOVER` en banda máx. 1 por hora; EFCR_A revisado cada minuto |
|
||||
| M2 | Media | U5 solo se dormía al cerrar una ventana: no tras un corte por SLEEP, por temperatura ni al arrancar en batería (justo el caso del paquete bajo) | ✅ Se duerme en todo reposo, con la FIFO de RX vaciada antes |
|
||||
| M3 | Media | Una vez en *power-down*, el W5500 no se volvía a revisar: si `/3V3_ETH` caía y volvía, regresaba en autonegociación (~75 mA) sin que nadie lo notara | ✅ Verificación cada 60 s; si no cuadra, reset y *power-down* otra vez |
|
||||
| M4 | Media | El procedimiento seguía en 0.7.0-pre | ✅ Procedimiento 1.2 y actas |
|
||||
| M5 | Media | `SER_B_LAZO` pasaba con cualquier cristal que oscilara y decía «3.6864 MHz» | ✅ 32 bytes a 9600 medidos contra el reloj del MCU: 33.3 ms (PASS con 30–38 ms) |
|
||||
| L1 | Baja | Un episodio de movimiento que empezaba antes de los 5 min de la ventana anterior se perdía | ✅ Queda pendiente: la ventana abre a los 5 min de la anterior |
|
||||
| L2 / L3 | Baja | Sin una línea que sense `/3V3_ETH`, el firmware le maneja pines a un W5500 sin alimentación al probarlo; y no se sabe si gasta menos en reset o en *power-down* | ⏳ Acotado: tras 3 intentos sin respuesta, uno por hora. La tecla `W` deja a U2 en reset para medir los dos pisos con el PPK2; el menor decide |
|
||||
| L4 | Baja | El divisor se escribía con U5 en *sleep* (la hoja de datos lo prohíbe) | ✅ Primero se despierta |
|
||||
| L5 | Baja | El canal B quedaba a 115 200 tras la autoprueba | ✅ A 9600 |
|
||||
| L6 | Baja | Si Y2 no rearrancaba al salir de un STOP, nadie lo decía | ✅ `$PHEV CLOCK hse_fail_stop` |
|
||||
| L7 | Baja | Con el LSI el texto prometía ±10 %; la hoja de datos da 17–47 kHz | ✅ Texto corregido (siestas de 3.4–9.4 s, ciclo de ~7–19 min). Con el LSE sano no aplica: un Y4 que no arranca es FALLA en la autoprueba |
|
||||
| L8 | Baja | Con el *option byte* nRST_STOP en 0 cada STOP sería un reset | ✅ Sin STOP en ese caso |
|
||||
| L9 | Baja | El eco de banco (`U`) pasaba a la batería con U5 despierto | ✅ Se apaga al entrar en batería |
|
||||
| L10 | Baja | Al cerrar una ventana, MODEM_EN y PA1 bajaban a microsegundos uno del otro | ✅ 20 ms entre los dos, como en el reset por software |
|
||||
| L11 | Baja | El bus se daba por libre con SDA arriba aunque SCL siguiera abajo | ✅ Se revisan los dos |
|
||||
| L12 | Info | La ventana de 180 s es igual al tiempo sin vida del módem: en batería nunca pasa del primer pulso | ℹ️ Por diseño: cada ventana es un arranque en frío del módem. Para la revisión del módem |
|
||||
|
||||
### 4.3 Lo que solo dice el banco
|
||||
|
||||
El simulador no tiene modelo de corriente ni de USB. En el banco se mide: el piso con el PPK2 (W5500 en *power-down* contra reset, U5 con J11 al aire contra terminado, el MCU en STOP), el primer STOP en silicio, qué pasa al conectar la USB en reposo (la consola debe aparecer al terminar la siesta, ≤ 5 s) y un Y3 de valor equivocado. Todo está en el §10.1 del procedimiento 1.2.
|
||||
|
||||
## 5. La v6: qué del 0.7.0 sirve y qué falta
|
||||
|
||||
Revisión independiente (agente B, 29-oct) contra el netlist de la v6 del 28-oct (después de T48, T49 y T41), con los pines leídos del netlist y no de los documentos. Compiló el 0.7.0 y un `board_v6.h` de borrador en la Mac.
|
||||
|
||||
### 5.1 Veredicto
|
||||
|
||||
**El binario de la V5.6/V5.7 no corre en la v6, y la mitad del firmware que hace de la v6 un producto todavía no existe.**
|
||||
|
||||
En una v6, el 0.7.0 de hoy:
|
||||
|
||||
- nunca enciende el módem: en la v6 el enable es **PC10** y el 0.7.0 no lo toca;
|
||||
- maneja **PC3** como MODEM_EN, pero en la v6 PC3 es la salida *push-pull* `RTK_STAT` del F9P: lo sostiene en bajo contra el alto del F9P los primeros 30 s de cada encendido del GNSS y 5 s dos veces por escalera;
|
||||
- abre el F9P a 115 200 cuando un F9P de fábrica habla a 38 400: no ve NMEA, cicla el riel del GNSS 3 veces en ≈ 15 min y queda en LIMP;
|
||||
- escribe EFCR = 0x30 lo primero, y el inversor U11 de la v6 lo convierte en «transmisor RS-485 encendido en reposo»: toma el bus (en la v6 el valor correcto es 0x10).
|
||||
|
||||
Una unidad así nunca reporta y castiga a PC3. **Hay que evitar que un técnico flashee el binario de la V5.6 en una v6** (abajo, cambios de hardware 2).
|
||||
|
||||
### 5.2 Cuánto se reutiliza
|
||||
|
||||
Cerca del **85 % del código** (≈ 57 de ≈ 67 KB): gobernador de carga, umbrales LFP, NTC del paquete, ADC calibrado con VREFINT, política térmica y de respaldo, el analizador de NMEA, `$PHLG`/`$PHCG`/`$PHEV` y su cola, la consola y la autoprueba, los sensores I²C, el código del W5500, el IWDG, el motivo de reset en BKP16–19 y el simulador. Una cuarta parte de eso necesita constantes o pines de la tarjeta. Lo que solo existe en la V5.x (≈ 15 %: el modo B con K1, la inyección en banda, PHTST, la vida por el LED) se queda fuera del build de la v6.
|
||||
|
||||
Lo que trae 0.7.0-pre2 también sirve en la v6, con los valores de su archivo de tarjeta: el driver del SC16IS752 con `SC16IS_EFCR_RS485 = 0x10`, el acelerómetro con `ACC_WHOAMI = 0x11` (SC7A20; el driver de movimiento falta para ese chip) y el STOP + RTC del ciclo de batería.
|
||||
|
||||
### 5.3 Lo que la v6 necesita y no existe
|
||||
|
||||
Todo lo que hoy hacen solos los dos módulos de ArduSimple:
|
||||
|
||||
| Pieza | Qué es |
|
||||
|---|---|
|
||||
| Módem A7670SA | Encendido (PC10, PWRKEY en PC8, STATUS en PC9, RESET en PC11), driver AT, SIM, registro y PDP |
|
||||
| NTRIP | Cliente NTRIP, entrega de RTCM al F9P, GGA al caster |
|
||||
| Enlace al servidor | NMEA y `$PHLG` por UDP a htracker, con la línea de identidad que hoy pone el módem (`$GPTXT … H00xx`) |
|
||||
| F9P desnudo | Configuración y persistencia del ZED-F9P (de fábrica a 38 400) |
|
||||
| Aprovisionamiento | SIM, APN, usuario NTRIP y estación: un registro de configuración por unidad, escrito en la fábrica |
|
||||
| FOTA | Por el módem (D-22-6) |
|
||||
|
||||
Son **45–60 KB de código nuevo** y ninguno existe (documento de diseño de la v6, §13.4). El código que se reutiliza será cerca de la mitad de la imagen final.
|
||||
|
||||
### 5.4 Una sola línea de firmware
|
||||
|
||||
**Un solo código, nunca un solo binario.** Módulos compartidos, archivos de tarjeta con banderas de capacidad y dos «backends» de enlace (ArduSimple/K1 para la V5.x, A7670 para la v6). Salen `hbox-tarjetaV56_x.y.z.bin` y `hbox-tarjetaV6_x.y.z.bin`. Una revisión de la tarjeta al arrancar y el ID de tarjeta en el manifiesto del FOTA impiden que una imagen equivocada maneje los pines.
|
||||
|
||||
### 5.5 Plan y esfuerzo
|
||||
|
||||
| Paquete | Contenido | Días-ingeniero |
|
||||
|---|---|---:|
|
||||
| WP0 | Decisiones (abajo) | 0.5 |
|
||||
| WP1 | Separar el 0.7.0 en módulos + archivos de tarjeta, **sin cambiar el comportamiento en la V5.x** (los escenarios del simulador en verde) | 3–4 |
|
||||
| WP2 | `board_v6.h`, arranque seguro, revisión de la tarjeta, reglas de pines de la v6, autoprueba | 1.5–2 |
|
||||
| WP3 | UART con DMA (USART2/6/1) | 1.5–2 |
|
||||
| WP4 | Motor UBX y configuración del F9P | 3–4 |
|
||||
| WP5 | A7670: encendido, motor AT, SIM/registro/PDP, escalera | 5–6 |
|
||||
| WP6 | Cliente NTRIP, reenvío de RTCM, GGA, estadísticas | 3–4 |
|
||||
| WP7 | Enlace UDP compatible con lo de hoy + identidad (con Gibran en htracker) | 2–3 (+1–2) |
|
||||
| WP8 | Invariantes de la v6: escaleras, guarda contra lazos de arranque, PFO, modo batería, térmicos | 3–4 |
|
||||
| WP9 | Aprovisionamiento y registro de configuración (nunca en la imagen) | 1.5–2 |
|
||||
| WP10 | Simulador de la v6: A7670 por AT, caster, F9P por UBX, servidor UDP, invariantes de la v6, ≈ 35 escenarios | 5–7 |
|
||||
| WP11 | Puertos, sensores y Ethernet de la v6 (EFCR 0x10, SC7A20, PD2) | 2–3 |
|
||||
| WP12 | FOTA de la v6 sobre el cargador compartido (F1) | 2–3 (+ F1 y F4 compartidos, 7–9) |
|
||||
| WP13 | Arranque y banco de la v6 (rieles, aislamiento, desensibilización del GNSS, 24 h de NTRIP, batería, térmico) | 5–7 |
|
||||
| WP14 | u-center y AT por la USB | 1 |
|
||||
| **Total de la v6** | | **≈ 39–53 (centro ≈ 46)** |
|
||||
|
||||
Cerca del 60 % es código (Claude lo comprime); el 40 % es banco (no se comprime).
|
||||
|
||||
| Hito | Fecha | Qué |
|
||||
|---|---|---|
|
||||
| M0 | 6-nov | WP0–WP2, esqueleto del simulador, piezas de banco en mano |
|
||||
| M1 · MVP en banco de evaluación | ≈ 20-nov | F9P de fábrica configurado por el MCU, A7670 en línea, NTRIP → RTK ≥ 4, NMEA + `$PHLG` en htracker con identidad, escalera básica, 24 h |
|
||||
| M2 · arranque de la v6 | desde ≈ 23-nov | Las 20 tarjetas del pedido del 2-nov |
|
||||
| M3 · candidato de campo | mediados a finales de diciembre | Escaleras completas, puertos, Ethernet, aprovisionamiento, FOTA, matriz F4 en la v6 |
|
||||
|
||||
**G2 tal como está escrito (≈ 22-nov, «las 20 pasan el banco») no se alcanza con firmware de campo.** Propuesta: G2 = las tarjetas del piloto corriendo el MVP en banco a principios de diciembre, e imagen de fábrica con FOTA (D-22-6) a mediados o finales de diciembre.
|
||||
|
||||
**Banco de evaluación (≈ US$100–150), para empezar antes de que existan las tarjetas:** NUCLEO-F411RE (el mismo STM32F411RET6 en LQFP64: todos los pines de la v6 existen), una tarjeta de evaluación del A7670SA **del mismo sufijo (-LASC)**, adaptadores 74LVC2T45, una nano-SIM de Vectro, un simpleRTK2B de repuesto como F9P y un punto de montaje de prueba en HelgenSRV.
|
||||
|
||||
### 5.6 Decisiones antes de escribir el enlace (para Leo)
|
||||
|
||||
1. **Ruta del RTCM.** El documento de diseño (§2/§3) lo manda por hardware (módem → U9 → U23 → RXD2 del F9P); el §13.4 y el estudio de FOTA piden un socket no transparente. En la práctica se excluyen. **Recomendación: el MCU reenvía el RTCM con su CRC revisado al F9P por USART2, y las entradas del UART2 del F9P se apagan.**
|
||||
2. **Contrato del enlace con htracker** (con Gibran): UDP, los mismos formatos de línea y una línea de identidad equivalente al `$GPTXT … H00xx …` del módem de hoy.
|
||||
3. **ID de la tarjeta.** Sin cambiar el BOM, la prueba de PC12 distingue V5.x de v6. Para el hardware: un divisor en **PC4** (libre desde T49) que codifique la revisión. El *strap* de PA9 de D-v6-1 también funciona, pero solo dice «v6 sí o no».
|
||||
4. **Secretos por unidad** (APN, usuario NTRIP, estación): en un registro de configuración del MCU escrito en la fábrica; nunca en el repositorio ni en una imagen de FOTA (invariante 6).
|
||||
|
||||
### 5.7 Cambios de hardware de la v6 que valen antes de G1 (2-nov)
|
||||
|
||||
| # | Qué | Por qué el firmware no lo arregla | Cambio propuesto |
|
||||
|---:|---|---|---|
|
||||
| 1 | **La única SIM va en un portatarjetas *push-push*** (J11, JAE SF72S006; T48 quitó la eSIM). Su detector (CSW/DSW) no está conectado | En maquinaria de puerto una SIM que se sale desaparece la unidad; el firmware solo puede notarlo (`AT+CPIN?`) | Retención mecánica (cinta Kapton, tapa o espuma que la presione, o un portatarjetas con bisagra o seguro) y una prueba de vibración en el banco del piloto. Opcional: CSW/DSW a un pin libre |
|
||||
| 2 | **Sin ID de tarjeta, y `/GNSS_RTK_STAT` (salida *push-pull* del F9P) llega directo a PC3**, el pin que los builds de la V5.x manejan como MODEM_EN | El manifiesto del FOTA solo protege lo que llega por aire; el accidente probable es un flasheo DFU en el taller | (a) **1 kΩ en serie en `/GNSS_RTK_STAT` junto a U3.11** (limita el choque a ≈ 3.3 mA). (b) **Divisor de ID en PC4** (dos resistencias 0402) |
|
||||
| 3 | La corriente de entrada y de carga no se ven (CLPROG solo va a TP11) | El gobernador sigue infiriendo por la caída del riel | **CLPROG → PB1 con 1 MΩ + 100 nF** (era la intención original de D-10; faltó pin). CLPROG no tiene buffer interno: hay que aislarlo |
|
||||
| 4 | DTR (U6.3) y RI (U6.4) del A7670 sin conectar | Sin DTR no hay `AT+CSCLK=1` ni despertar por URC | **DTR sin costo de BOM:** el canal 2 de U5 ya traduce MCU → módem; U5.6 a **PB5** (libre al quitar K1) con **100 kΩ a GND** y U5.3 a U6.3. RI es opcional |
|
||||
| 5 | La huella de K1 sigue en la tarjeta (DNP) | Si alguien monta K1 con R8 puesta, su contacto NC une dos salidas *push-pull* | Quitar K1, Q4, D3, R48 y R49 (D-v6-3) |
|
||||
| 6 | `/DOUT_4G` flota con el módem apagado | El *pull-up* interno de PC7 lo cubre | Opcional: 100 kΩ a `/3V3` |
|
||||
|
||||
Revisado y correcto: PWRKEY, RESET y STATUS del módem; los traductores de nivel (U5, U9, U23, con Ioff); el banco de capacitores de VBAT del módem (≈ 507 µF); el límite de corriente de la antena (TPS2552); el arranque seguro por hardware (módem, F9P, W5500 y cargador apagados); RTS/CTS sin conectar no es defecto (el A7670 no soporta control de flujo).
|
||||
|
||||
### 5.8 Errores de documentación encontrados (contra el netlist del 28-oct)
|
||||
|
||||
- **`pinmap-v6.md` (v1.2):** su tabla principal es la del 28-sep. Siguen mal aun con sus notas: PB1 y PC4 como NTC (sin conexión desde T49); PA9 «sin conexión» (es `/USART1_TX` a TP3: el USART1 vuelve a ser dúplex); PC6 y PB5 todavía con el modo B de K1 (K1, Q4, D3, R48 y R49 van DNP y R8 = 0 Ω une PC6 con `/DIN_4G`); PA5 con R17 de 3.3 kΩ (es **2.2 kΩ: razón 0.0833**, 12 V → 1.00 V); «sin TMP102 en la v6» (U19 en 0x48 y U2 en 0x49 están montados); los pines libres son PB1 y PC4; U20 es un TPS7A2033, no un AP2112K. Su `board_v6.h` de borrador queda reemplazado por el del agente B.
|
||||
- **Documento de diseño de la v6 (v1.3):** dice «GSM 900/1800»; el A7670SA es **GSM de cuatro bandas 850/900/1800/1900** + LTE B1/2/3/4/5/7/8/28/66 (el GSM de México va en 850/1900). El cuerpo todavía describe las NTC externas que quitó T49. El §2/§3 y el §13.4 se contradicen sobre la ruta del RTCM (decisión 1). La rampa de VCC del F9P: el símbolo dice «≤ 20 µs/V», las notas del proyecto dicen una ventana de 20–8000 µs/V; **sin verificar** (la hoja de u-blox no se pudo abrir): se mide antes de fabricar.
|
||||
- **Estudio de FOTA:** cuenta los arranques de prueba en BKP12–13, que con VBAT = `/3V3` se borran en un corte completo: una imagen que tumba la tarjeta nunca se contaría. El contador va también en el sector de metadatos.
|
||||
- Con los umbrales de pin de la V5.6, la ignición de la v6 diría ON a 9.6 V y OFF a 6.6 V: los umbrales van en voltios del vehículo en el archivo de cada tarjeta.
|
||||
|
||||
## 6. Lo que queda abierto
|
||||
|
||||
| # | Qué | Quién / cuándo |
|
||||
|---|---|---|
|
||||
| A-02 | Con el caster caído, un módem sano con el LED invisible o fijo todavía recibe pulsos y reinicios | Banco del piloto: §7.6 caracteriza el LED; luego se decide en el firmware de campo. Mientras: caster de Helgen y anotar `rst=`/`pwrcyc=` |
|
||||
| L2/L3 | W5500: reset o *power-down* en el reposo | Banco del piloto: A/B del piso con la tecla `W` (§10.1.5) |
|
||||
| A-21 | Si el reinicio de 5 s baja `/3V3_MODEM` al nivel de reset del módem | Banco: osciloscopio en J8.1 con `Q` (§7.8) |
|
||||
| A-09 | El BOR nunca se programa (de fábrica: apagado) | Decidir dónde se programa en nivel 3 en el volumen (paso de fábrica) |
|
||||
| A-13 / A-14 | Base de Q3 sin *pull-down*; cargador encendido por defecto con el MCU sin correr | Siguiente revisión de la tarjeta |
|
||||
| A-20 | `$PHEV` sin límite por código | Con Gibran: el monitor usa pares de eventos |
|
||||
| L12 | Ventana de 180 s = tiempo sin vida del módem | Revisión del módem |
|
||||
| Flash | El RCT6 va al 97 % (base) y 98 % (`-eth`): F-4 (Ethernet de campo) no cabe junto al ciclo de batería | Antes de F-4: mover la EEPROM emulada a un sector de 16 KB, quitar el `printf` de punto flotante y dejar la ayuda fuera de los builds de campo (§3.3) |
|
||||
| v6 | Decisiones D-29-1 (hardware antes de G1) y D-29-2 (plan del firmware) | Leo, en el tablero |
|
||||
|
||||
## 7. Cómo se verificó
|
||||
|
||||
- **Simulador** (`tools/hostsim_v5`): **118 escenarios en PASS** (54 de V5.5/V4 y 64 de V5.6/V5.7: 42 propios, 11 de la revisión A, 7 de la revisión C y 4 escritos después de la C), 876 comprobaciones. Cuatro abiertos se corren y se muestran sin contar: A-02 ×2 y L2/L3 ×2. Nuevo en el modelo: `micros()`, el cristal de U5, la alimentación del W5500, el estado del USB, el IWDG y un SysTick que se detiene en STOP.
|
||||
- **Compilación en la Mac** (*core* STM32duino 3.0.0, `GENERIC_F411RCTX`, ventana de 128 KB): base **128 204 B** y `-eth` **129 304 B**; con `SOURCE_DATE_EPOCH=1793295000` dos compilaciones limpias dan el mismo SHA-256. Los builds de la V5.5 y la V4 compilan.
|
||||
- **Lo que no se verificó:** nada corrió todavía en una V5.6 o V5.7 real (no han llegado). El banco del piloto es la prueba.
|
||||
|
||||
| Archivo | SHA-256 |
|
||||
|---|---|
|
||||
| `hbox-tarjetaV56_0.7.0-pre2.bin` | `43aeabcfdb7055c106b7702682f099fdd5b83499f28cfcfab43a2fa41b1ea6a2` |
|
||||
| `hbox-tarjetaV56_0.7.0-pre2-eth.bin` | `051af1b2c7596c169069b030123c748ab7c2378a8b2f877453ad85f9ae3bdfca` |
|
||||
|
||||
## Historial de revisiones
|
||||
|
||||
| Versión | Fecha | Cambios |
|
||||
|---|---|---|
|
||||
| 1.0 | 2026-10-29 | Primera versión: revisiones A (0.7.0-pre en V5.6/V5.7), B (v6) y C (lo nuevo de 0.7.0-pre2), y lo que se corrigió en 0.7.0-pre2. |
|
||||
@ -1 +1 @@
|
||||
Subproject commit 001d3d2ce6f30dc9b740a865f504026964f23708
|
||||
Subproject commit 82905a61f2cb2b49c7a2049072ddb1012f7a1947
|
||||
@ -1,18 +1,18 @@
|
||||
---
|
||||
title: "EinarBoard V5.6 y V5.7 — Prueba y flasheo por tarjeta (0.7.0-pre)"
|
||||
title: "EinarBoard V5.6 y V5.7 — Prueba y flasheo por tarjeta (0.7.0-pre2)"
|
||||
tags: [project-drogheda, hardware, einarboard, v5.6, v5.7, bringup, testing, flasheo, piloto, procedimiento]
|
||||
date: 2026-10-27
|
||||
date: 2026-10-29
|
||||
project: Project Drogheda
|
||||
author: "Helgen Technologies (redacción: Claude; revisión: Leo, Jesús Romero y Gibran)"
|
||||
version: 1.1
|
||||
version: 1.2
|
||||
status: "BORRADOR — para el piloto de 5 V5.6 + 5 V5.7 (actas aprobadas por Leo el 27-oct); 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)
|
||||
# EinarBoard V5.6 y V5.7 — Prueba y flasheo por tarjeta (firmware 0.7.0-pre2)
|
||||
|
||||
!!! 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`). **Las actas ya están aprobadas** (Leo, 27-oct): lo que se registre en ellas cuenta.
|
||||
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-pre2 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`). **Las actas ya están aprobadas** (Leo, 27-oct): lo que se registre en ellas cuenta.
|
||||
|
||||
!!! abstract "Para quién · Cuándo · Tiempo · Necesitas"
|
||||
- **Para quién:** técnicos de banco (Jesús Romero) e ingeniería.
|
||||
@ -23,15 +23,16 @@ audience: técnicos de banco e ingeniería
|
||||
- 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;
|
||||
- el binario `hbox-tarjetaV56_0.7.0-pre2.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).
|
||||
- el [acta de tarjeta V5.6](../formularios/v56.html) o el [acta de tarjeta V5.7](../formularios/v57.html);
|
||||
- solo para el banco del piloto (§10.1): un cable de puente para J12 (pin 1 ↔ pin 2), un cable de 3 hilos J11 ↔ J11 hacia una segunda tarjeta ya probada, un PPK2 (o Joulescope) con un interruptor en paralelo y un osciloscopio.
|
||||
|
||||
!!! danger "Reglas"
|
||||
1. **Solo `hbox-tarjetaV56_0.7.0-pre.bin`** (y `hbox-tarjetaV56_0.7.0-pre-eth.bin` solo para la prueba de Ethernet del §10.1). 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.
|
||||
1. **Solo `hbox-tarjetaV56_0.7.0-pre2.bin`** (y `hbox-tarjetaV56_0.7.0-pre2-eth.bin` solo para la prueba de Ethernet del §10.1). Sirve para la V5.6 y para la V5.7 (los 64 pines del MCU son iguales). El `0.7.0-pre` del 27-oct queda reemplazado (no trae el ciclo de batería ni la prueba serie): una tarjeta que lo tenga se reflashea. 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).
|
||||
@ -206,7 +207,7 @@ Si no aparece: otro cable (muchos son solo de carga) y repite, con SW1 todavía
|
||||
|
||||
```bash
|
||||
dfu-util -l # debe listar [0483:df11]
|
||||
dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV56_0.7.0-pre.bin
|
||||
dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV56_0.7.0-pre2.bin
|
||||
```
|
||||
|
||||
=== "STM32CubeProgrammer"
|
||||
@ -228,39 +229,46 @@ El piloto trae el **STM32F411RCT6** (256 KB, T47). El binario mide menos de 128
|
||||
| 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` |
|
||||
| Terminal | `hbox-v5-bringup 0.7.0-pre2` 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 …
|
||||
hbox-v5-bringup 0.7.0-pre2 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
|
||||
safe state: stack OFF, modem OFF (PC3), charge OFF, fan OFF, K1 released, W5500 in reset (luego su PHY en power-down, E-3)
|
||||
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
|
||||
BOR (option byte): APAGADO (de fabrica: solo POR/PDR) — para el volumen: nivel 3 (auditoria 29-oct, A-09)
|
||||
[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
|
||||
i2c scan: 0x18 0x20 0x44 0x48 0x49 0x4D
|
||||
[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] RS485_EFCR EFCR_A=0x32 (bits 5:4 = 0x30: RTS automatico, DE de U7 bajo salvo al transmitir)
|
||||
[PASS] SER_B_LAZO lazo B 115200: 16/16 iguales; 32 B a 9600 en 33.3 ms (33.3 = Y3 3.6864 MHz)
|
||||
W5500 U2: sin /SYS5V (solo USB, sin paquete): no se prueba ni se apaga su PHY
|
||||
[PASS] ACCEL U1 @0x18 WHO_AM_I=0x33 (LIS2DH12 = 33; SC7A20 = 11)
|
||||
[PASS] ACCEL_1G U1 x=0.01 y=-0.02 z=1.00 g, |a|=1.00 g (0.80-1.20) ← tarjeta quieta
|
||||
gauge walk: D17->D14 then R,G,B on J10 (watch the LEDs)
|
||||
[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] ADC vbat=0.00 v5=0.00 tcel=n/c ign=0.00V(0.0V) mcu=..C vdda=3.300
|
||||
[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 ----
|
||||
[PASS] MODEM_APAGADO LED PC2=0 RTCM PC7=0 (esperado 0/0; 1 = algo alimenta al modem apagado, E-13)
|
||||
---- RESULT: 21 PASS / 0 FAIL ----
|
||||
>>> BOARD OK
|
||||
RTC: LSE Y4 32.768 kHz (ciclo de 10 min exacto)
|
||||
```
|
||||
|
||||
4. Revisa también:
|
||||
@ -269,13 +277,19 @@ El piloto trae el **STM32F411RCT6** (256 KB, T47). El binario mide menos de 128
|
||||
|---|---|---|
|
||||
| `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) |
|
||||
| `ADC` | `[PASS]`: cada lectura en su rango o en «no hay» (vbat 0 o 2.40–3.80 V, v5 0 o 4.60–5.60 V, ign 0 o 5–33 V, vdda 3.20–3.40 V) | `FUERA DE RANGO`: un divisor mal soldado o una resistencia equivocada; FALLA con la línea completa |
|
||||
| `MODEM_APAGADO` | `LED PC2=0 RTCM PC7=0` | `[FAIL]` con un 1: algo alimenta al módem apagado (E-13); FALLA (avisa a ingeniería) |
|
||||
| `SER_B_LAZO` | `16/16 iguales` y **30.0–38.0 ms** (33.3 con el Y3 de 3.6864 MHz) | ≈ 3.3 ms: Y3 de 36.864 MHz (pieza equivocada) · otro tiempo: Y3, C del cristal o U5; FALLA (Y3) |
|
||||
| `BOR (option byte)` | `APAGADO` en el piloto (de fábrica) | Solo se anota: el volumen lo programa en nivel 3 (A-09) |
|
||||
| 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) |
|
||||
| **U7 pin 3** (DE del RS-485) contra TP1, con el multímetro | **0 V** en reposo (U5 solo lo sube al transmitir) | ≈ 3.3 V: el transmisor sostiene el bus (E-4); FALLA (avisa a ingeniería) |
|
||||
| `RTC:` (después de `BOARD OK`) | `LSE Y4 32.768 kHz` | `LSI …` (con `LSE_Y4` en FAIL): Y4 no arrancó; FALLA (Y4). `NO arranco`: FALLA (avisa a ingeniería) |
|
||||
|
||||
El encabezado dice `EFCR_A … = 0x30` (la primera escritura a U5, E-4) y la autoprueba `EFCR_A=0x32`: es el mismo modo de RTS automático más el receptor apagado (F-3: sin función de campo todavía). Las dos están bien.
|
||||
|
||||
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`.
|
||||
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); `w55=?` (el W5500 se apaga en cuanto hay `/SYS5V`; con 5 V, `w55=pd`). La leyenda de cada campo sale con la tecla `l`; los puntos de medición de la etapa y el módem, con `v`. Con 5 V presentes (§7) la autoprueba hace además `W5500_PHY` (`U2 VERSIONR=0x04 (exp 04) PHYCFGR=0xF0: PHY en power-down (E-3)`): **22 PASS**.
|
||||
|
||||
## 7. Etapa RTK y módem con el juego de banco (10–15 min)
|
||||
|
||||
@ -285,7 +299,7 @@ Después sale una línea `STAT …` cada 5 s. Con solo USB, `v5=0.00` y la etapa
|
||||
|
||||
| t (s) | Consola | Qué pasa |
|
||||
|---|---|---|
|
||||
| 0 | encabezado y 18 PASS | `inputs at boot: v5=5.2–5.4V(ok)` |
|
||||
| 0 | encabezado y **22 PASS** (con 5 V entra `W5500_PHY`) | `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 |
|
||||
@ -304,7 +318,7 @@ Después sale una línea `STAT …` cada 5 s. Con solo USB, `v5=0.00` y la etapa
|
||||
| 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:
|
||||
5. **Correcciones y registro.** Usa el caster de Helgen (no rtk2go): con un caster caído el firmware todavía puede dar pulsos y reinicios de alimentación a un módem sano (auditoría 29-oct, A-02). Al final de cada prueba anota `rst=` y `pwrcyc=` de `STAT`. En las líneas `STAT` de los primeros 2 min:
|
||||
|
||||
| Campo | Esperado |
|
||||
|---|---|
|
||||
@ -314,12 +328,12 @@ Después sale una línea `STAT …` cada 5 s. Con solo USB, `v5=0.00` y la etapa
|
||||
| `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.
|
||||
6. **Calibración del LED (solo piloto).** Con osciloscopio, mira **J9 pin 8** (la salida del LED del módem) y **PC2** (el lado del MCU de R48) en cada estado del módem: al arrancar, buscando red, registrado, con NTRIP y con el caster caído (desconecta la antena GNSS de la base o detén el *mountpoint* 20 min). Anota si parpadea, si queda fijo o si nunca pasa de ≈ 1.8 V: la salida es de 1.8 V y el MCU la lee como alto a partir de 1.79–2.31 V (A-02). Con eso se decide cómo leerla en el firmware de campo. Anota también `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`.
|
||||
- `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). En el piloto, con osciloscopio en J8 pin 1: anota cuánto tarda en bajar de 0.3 V (el reinicio de 5 s solo sirve si el riel llega al nivel de reset del módem; A-21). 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.
|
||||
|
||||
@ -341,16 +355,16 @@ Con el juego de banco puesto y la fuente de §7.
|
||||
| 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):
|
||||
5. **Respaldo.** Apaga la fuente (V5.6: J16 · V5.7: J15) y regrésala **antes de 60 s** (con 0.7.0-pre2, a partir de los 120 s en batería la ventana puede cerrar y la etapa se apaga: es el ciclo de 10 min del §10.1):
|
||||
|
||||
| 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 |
|
||||
| `STAT` | `v5=0.00`, `vbat` del paquete, `modem=VIVO`, `nmea=` sigue subiendo, `duty=VENTANA <s>` |
|
||||
| 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.
|
||||
6. Enciende la fuente: `EVT … V5 PRESENTE`, `DUTY fin: 5 V volvio — 0 ventanas, 0 omitidas; operacion continua` 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)
|
||||
@ -375,24 +389,45 @@ Las 10 tarjetas del piloto (5 V5.6 + 5 V5.7) pasan §1 a §9. Además, en las ta
|
||||
|
||||
| # | 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 | Ethernet: `0.7.0-pre-eth` · serie: **F-3** | Ethernet ✅ se puede (§10.1) · serie ⏳ F-3 (hoy: presencia y niveles) |
|
||||
| 1 | U14 con lupa (y rayos X) + autoprueba 21 PASS por USB (22 con 5 V) | 10 | 0.7.0-pre2 | ✅ 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-pre2 | ✅ 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 | 0.7.0-pre2 (F-2) | ✅ se puede (§10.1). Primer STOP en silicio: anota todo |
|
||||
| 4 | 20 cortes 24 V ↔ batería sin reinicio, con el módem vivo | 10 | 0.7.0-pre2 | ✅ se puede |
|
||||
| 5 | RS-485 y RS-232 en lazo · Ethernet 24 h | 1 + 1 | serie: 0.7.0-pre2 (tecla `S`) · Ethernet: `0.7.0-pre2-eth` | ✅ se puede (§10.1) |
|
||||
| 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 |
|
||||
| 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-pre2 | ✅ 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
|
||||
### 10.1 Pruebas largas con 0.7.0-pre2 { #101-pruebas-largas-con-070-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.
|
||||
- **Ethernet 24 h (criterio 5, la parte Ethernet).** En 1 V5.6 y 1 V5.7. Flashea `hbox-tarjetaV56_0.7.0-pre-eth.bin` (§5; solo para esta prueba) y verifica su SHA-256. Cable de **J6** directo a una laptop con IP fija `192.168.7.1/24` (o a un switch con DHCP); en la laptop, `nc -lk 5010 > eth-V56-NN.log`. Con 24 V, en la consola: `ETH W5500 OK en SPI2 … ip_estatica=192.168.7.2`, `ETH enlace ARRIBA` y `ETH conectado a 192.168.7.1:5010`; en J6, LINK (verde) fijo y ACT (amarillo) parpadeando. Déjala **24 h**. Al final: en `STAT`, `eth=CONECTADO` y `drop=` en 0 (o casi); cuenta los `ETH servidor desconectado` de la consola; en el `.log`, NMEA, `$PHLG`/`$PHCG` cada 30 s, los `$PHEV` y un `$PHID` cada 5 min. `ETH W5500 NO responde … revisa 3V3_ETH (U9) y U2`: mide `/3V3_ETH` (3.25–3.40 V) y revisa U2. Al terminar, vuelve a flashear `hbox-tarjetaV56_0.7.0-pre.bin`. El lazo RS-485/RS-232 (J11/J12) espera F-3: en el RCT6 no caben F-3 y Ethernet en la misma imagen (el `-eth` ya usa el 98 %).
|
||||
- **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.
|
||||
- **20 cortes (criterio 4).** Con `hbox-tarjetaV56_0.7.0-pre2.bin` (nunca el `-eth`). §8.5–6 veinte veces, con 30–60 s entre corte y regreso (con más de 2 min la ventana de batería cierra y la etapa se apaga: eso es el criterio 3). Cuenta los reinicios (debe ser 0) y si el módem volvió `VIVO` cada vez. En 1 V5.6 y 1 V5.7, además: (a) un conector que «chisporrotea» (5 cortes de 200 ms seguidos): 0 reinicios y a lo sumo un pulso de RESET del módem, nunca dos a menos de 3 min; (b) una rampa lenta de la fuente hasta 4.30 V, 60 s, con el paquete cerca de 3.0 V: con TP6 (10 kΩ a TP2) en bajo, la consola dice `V5 PERDIDO` (desde 0.7.0-pre2 el 5 V se da por perdido abajo de 4.45 V, arriba del PFI del LTC4040) y entra el respaldo; con el paquete bajo, `-> SLEEP` (A-05); (c) con osciloscopio, el orden de `P` (K1 → MODEM_EN → PA1) y la rampa de 20 ms de PA1 al encender la etapa en batería (`/SW_5V` y la caída de VSYS, E-16).
|
||||
- **Ciclo de 10 min en batería (criterio 3).** En 1 V5.6 y 1 V5.7, con el juego de banco (SIM, antenas, cielo). Es la primera vez que el STOP del MCU corre en una tarjeta real: anota todo lo que no cuadre.
|
||||
1. *Un ciclo con la consola, para ver la secuencia (15 min).* Con 24 V y `modem=VIVO`, apaga la fuente. La ventana en curso sigue; en la consola sale `DUTY enlace: primera RTCM a los … s de la ventana` y, a partir de los 120 s con fix y 2 `$PHLG` en banda después de esa RTCM, `DUTY reposo: ventana …s fix=… phlg_aire=… vbat=… -> etapa OFF, despierta en …s`. Sin ninguna RTCM la ventana cierra a los 180 s. El orden: K1 se suelta (clic), `MODEM OFF` y `STACK OFF`. En `STAT`: `duty=REPOSO despierta_en=…s` y **`stop=no`** (con la USB conectada no hay STOP: correcto). A los 10 min del **inicio** de la ventana anterior: `DUTY despertar #1 vbat=… -> etapa ON` y la etapa, el módem y el modo B vuelven solos. Si mueves la tarjeta en reposo: con la ventana anterior empezada hace ≥ 5 min, `DUTY: movimiento en reposo -> ventana ahora`; si no, la ventana abre a los 5 min del inicio de la anterior. Un movimiento cuenta una vez por episodio (moverla otra vez antes de 5 min quieta no abre otra). Regresa la fuente: `DUTY fin: 5 V volvio — 1 ventanas, 0 omitidas; operacion continua`, sin reinicio.
|
||||
2. *Los 20 ciclos (3 h 20 min).* Paquete al 20 % y cámara a 45 °C. Arranca con 24 V y USB, espera `modem=VIVO`, **desconecta el USB** (sin consola sí hay STOP) y apaga la fuente. Las ventanas se cuentan en el monitor del servidor (cada una manda `$PHEV DUTY_WAKE` y `DUTY_SLEEP` con `fix=`, `phlg=` y `vbat=`) o al final: conecta el USB (sin reiniciar) y en `STAT` lee `ventanas=20 omitidas=0`, `naps=` (unas 90 por ciclo) y `dormido=`; `up=` sin reinicio. La consola aparece cuando termina la siesta en curso (≤ 5 s); si la laptop no reconoce el puerto, desconecta y conecta otra vez después del destello del LED azul. Cada `DUTY_SLEEP` con `phlg=` ≥ 2 es una ventana completa.
|
||||
3. *`/SYS5V` en las ráfagas.* Osciloscopio en **J2 pin 2** (`/SYS5V`) contra TP1, disparo por flanco de bajada en 4.5 V, durante una ventana (registro LTE y envío de `$PHLG`): mínimo **> 4.3 V**. El `v5min` de `STAT` no sirve aquí: mide `/VEH5V` (PA4), que en batería está en 0 V.
|
||||
4. *Reset en batería.* Durante el respaldo pulsa SW2 (RESET): `BACKUP tras reset PIN sin 5 V: … ventana en 60 s` y la ventana abre sola (antes de 0.7.0-pre2 la unidad quedaba muda hasta que volvía el 24 V; A-04). Desde el tercer reset seguido en batería la ventana espera los 10 min del ciclo (`$PHEV WARM_LOOP`): nunca un lazo.
|
||||
5. *Piso dormido (PPK2).* PPK2 en modo amperímetro en serie con el cable de **J5 pin 1** (BAT+), con un interruptor en paralelo al PPK2 **cerrado** durante las ventanas (las ráfagas del módem pasan de 1 A, el límite del PPK2). Sin USB. Con la etapa en reposo (K1 suelto, D13 apagado; en la traza del PPK2 un pico cada 5 s: las siestas del STOP), abre el interruptor y registra 60 s: **piso = corriente media × voltaje del paquete < 100 mW**. Ciérralo antes de la siguiente ventana (10 min después del inicio de la anterior). Para comparar: con la consola, `Z` (STOP bloqueado), desconecta la USB y repite la medición; la diferencia es lo que ahorra el STOP. **A/B del W5500 (revisión C, L3):** con la consola, `W` (`W5500 U2 en RESET`, `STAT … w55=rst(W)`), desconecta la USB y repite la medición; anota los dos pisos: el menor decide qué hace el firmware de campo con U2. `W` otra vez lo regresa a *power-down* (y si se queda así, vence solo a las 2 h sin USB, como `Z`).
|
||||
6. *W5500 tras un corte de `/SYS5V` (opcional, revisión C, M3).* Con la etapa apagada (`P`) y la USB conectada, quita el puente de banco de J2 30 s y regrésalo: en ≤ 60 s sale `W5500 U2: VERSIONR=0x00 … -> queda en reset` y, ya con `/SYS5V`, `W5500 U2: PHY en power-down (E-3)`; `STAT … w55=pd`.
|
||||
- **Temperaturas (criterio 7).** Siempre con alguien presente. 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), y compáralos con el termopar. El firmware inhibe la carga con la celda a 55 °C o la tarjeta a 70 °C. En una tarjeta, caliente, une SDA (PB7) con GND 5 s: `TEMP: sin TMP102 … sensor interno del MCU`, una recuperación del bus (`$PHEV I2C_RECOVER`) y, si ya hubo corte, **no hay rearme** sin U12 ni U8 (`TEMP_NOREARM`; A-03); al soltar, el bus vuelve solo y `i2cerr` deja de crecer; mueve la tarjeta: `mov=` sube (el acelerómetro se reconfigura solo, revisión C, H2).
|
||||
- **Ethernet 24 h (criterio 5, la parte Ethernet).** En 1 V5.6 y 1 V5.7. Flashea `hbox-tarjetaV56_0.7.0-pre2-eth.bin` (§5; solo para esta prueba) y verifica su SHA-256. Cable de **J6** directo a una laptop con IP fija `192.168.7.1/24` (o a un switch con DHCP); en la laptop, `nc -lk 5010 > eth-V56-NN.log`. Con 24 V, en la consola: `ETH W5500 OK en SPI2 … ip_estatica=192.168.7.2`, `ETH enlace ARRIBA` y `ETH conectado a 192.168.7.1:5010`; en J6, LINK (verde) fijo y ACT (amarillo) parpadeando. Déjala **24 h**. Al final: en `STAT`, `eth=CONECTADO` y `drop=` en 0 (o casi); cuenta los `ETH servidor desconectado` de la consola; en el `.log`, NMEA, `$PHLG`/`$PHCG` cada 30 s, los `$PHEV` y un `$PHID` cada 5 min. `ETH W5500 NO responde … revisa 3V3_ETH (U9) y U2`: mide `/3V3_ETH` (3.25–3.40 V) y revisa U2. Al final, un corte de 24 V de 30 s y regreso: sin reinicio y `ETH conectado` otra vez (con 0.7.0-pre el W5500 se colgaba al reiniciarse tras un corte y el watchdog reiniciaba la tarjeta; A-06, corregido). Al terminar, vuelve a flashear `hbox-tarjetaV56_0.7.0-pre2.bin`. El build `-eth` no trae el ciclo de batería (F-2) ni la prueba serie (`S`/`U`): en el RCT6 no caben con Ethernet en la misma imagen.
|
||||
- **Puertos serie (criterio 5, la parte serie).** En 1 V5.6 y 1 V5.7 (si hay tiempo, en todas: se anota en observaciones). Basta el USB.
|
||||
1. **Tarjeta de eco:** otra tarjeta ya probada, con 0.7.0-pre2, por USB. Teclea `U`: `ECO RS-485 ENCENDIDO (9600 baud, J11): esta tarjeta devuelve cada $SERT,A como $SERE,A. U otra vez = apagar`.
|
||||
2. Cable de 3 hilos **J11 ↔ J11**: pin 1 (A) con pin 1, pin 2 (B) con pin 2, pin 3 (GND) con pin 3. JP6 abierto en las dos (el cable de banco es corto: sin terminación).
|
||||
3. En la tarjeta bajo prueba, un puente entre **J12 pin 1 (TX) y J12 pin 2 (RX)**.
|
||||
4. Teclea `S` en la tarjeta bajo prueba. Esperado:
|
||||
|
||||
```
|
||||
---- PRUEBA SERIE (F-3) ----
|
||||
[PASS] RS232_LAZO J12 TX->RX: 9600 3/3, 115200 3/3
|
||||
[PASS] RS485_ECO J11 a la otra tarjeta: 9600 baud 5/5
|
||||
EVT … PRUEBA SERIE: RS-232 PASS (3+3/6) · RS-485 PASS (5/5)
|
||||
```
|
||||
|
||||
En la de eco, `STAT … eco485=5`. El bus RS-485 no tiene polarización (el SP3485 no es *fail-safe*): en reposo llega basura y las tramas se buscan con su suma de verificación. Con el modo B activo, `S` suelta K1 unos segundos y lo regresa solo.
|
||||
5. `RS232_LAZO` en FAIL: el puente de J12, U10 (TRS3232E) y sus capacitores. `RS485_ECO` en FAIL: la otra en eco (`U`), A con A y B con B (no A con B), U7 y JP6. Al terminar, `U` en la de eco la apaga. J14 (TTL) solo sirve para transmitir: R1OUT de U10 maneja `/SER_RXB` siempre (la v6 lo corrige con R73); no se prueba aquí.
|
||||
- **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 y con la ventana abierta (etapa encendida), 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. Con la etapa en reposo, un despertar con el paquete bajo se omite: `DUTY despertar omitido (bateria baja)`.
|
||||
|
||||
### 10.2 V5.7: la fuente a bordo (criterio 6)
|
||||
|
||||
@ -408,17 +443,19 @@ Necesitas carga electrónica de 3 A, osciloscopio con punta de tierra corta (res
|
||||
| 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ó.
|
||||
4. **Arranque del motor.** Caídas de 24 → 8 V por 200 ms y de 12 → 6 V por 500 ms con la etapa encendida: anota `/VEH5V` contra el PFI, los `V5 PERDIDO`/`PRESENTE` y los `IGN` de la consola (A-05).
|
||||
5. **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.
|
||||
- [ ] Con la consola abierta, en `STAT`: `modo=AUTO` (o `AUTO(pausa)`). `A` guarda MANUAL en flash (desde 0.7.0-pre2 pide `Y`) y un reflasheo no lo borra; una unidad en MANUAL no enciende sola en campo (A-10).
|
||||
- [ ] 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.
|
||||
La tarjeta se queda con 0.7.0-pre2: 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
|
||||
|
||||
@ -437,12 +474,16 @@ La tarjeta se queda con 0.7.0-pre: es el firmware del piloto. No se embarca ning
|
||||
|
||||
## 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.
|
||||
- **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-pre2 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) y después configura los dos canales (8N1, FIFOs, receptores apagados: EFCR_A = 0x32).
|
||||
- **Módem (F-1, desde 0.7.0-pre):** 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).
|
||||
- **Batería (F-2, 0.7.0-pre2):** al perder el 5 V en AUTO la ventana en curso sigue desde el refuerzo del LTC4040 (4.79 V); cierra con ≥ 120 s, fix y 2 `$PHLG` en banda después de la primera RTCM de la ventana (el enlace probado); sin RTCM, a los 180 s. Al probarse el enlace la siguiente `$PHLG` sale en 2 s. Cierre ordenado (K1 → MODEM_EN → PA1, F-8), U5 dormido, el PHY del W5500 en *power-down* y el MCU en STOP: el RTC (LSE de Y4; si no arranca, LSI de 17–47 kHz: siestas de 3.4–9.4 s y ciclo de ~7–19 min, `$PHEV RTC lsi`) lo despierta cada 5 s (IWDG, 5 V que vuelve, destello) y a los 10 min del inicio de la ventana anterior; `millis()` se corrige con el calendario del RTC. Un episodio de movimiento en reposo (INT1 del LIS2DH12) abre una ventana a los 5 min del inicio de la anterior, o en ese momento si ya pasaron (uno por episodio). Con la USB conectada a una computadora no hay STOP (desconectada sí, aunque la terminal haya quedado abierta: revisión C, H1); `Z` lo bloquea. Al volver los 5 V el MCU no se reinicia (`DUTY fin`); 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). `-DENABLE_DUTY=0` vuelve al respaldo continuo de 0.7.0-pre.
|
||||
- **Puertos serie (F-3):** driver del SC16IS752 (cristal Y3 de 3.6864 MHz, divisor = 230 400 / baud), los dos canales en 8N1 a 9600 con FIFOs y receptores apagados hasta que haya función de campo. `S` prueba RS-232 en lazo por J12 y RS-485 contra otra tarjeta en eco (`U`); `SER_B_LAZO` usa el lazo interno del canal B (MCR[4]) sin tocar el bus. U5 duerme (IER[4]) entre ventanas de batería.
|
||||
- **Acelerómetro (F-5):** LIS2DH12 a 10 Hz, ±2 g, pasa-altas en INT1 (PB9), umbral 96 mg, enclavado hasta leer INT1_SRC. Episodio = el primer movimiento tras 5 min quieta: EVT siempre; `$PHEV MOTION` en banda solo sin 5 V o sin ignición. La SC7A20 (antes de T47) da WHO_AM_I = 0x11: sin prueba de 1 g ni movimiento.
|
||||
- **W5500 (E-3):** fuera del build `-eth`, con `/SYS5V` presente, U2 sale del reset y su PHY va a *power-down* (PHYCFGR = 0xF0, 13 mA según la hoja de datos) por SPI de software; VERSIONR = 0x04 lo comprueba antes. Si no responde, queda en reset y se reintenta cada 60 s; tras 3 intentos sin respuesta (sin U2, o sin `/SYS5V`), uno por hora. En *power-down* se verifica cada 60 s (si `/3V3_ETH` cayó y volvió, se reinicia y se apaga otra vez). `W` = U2 en reset para la A/B del piso. `STAT … w55=pd|no|rst(W)`.
|
||||
- **Robustez (auditoría del 29-oct):** Y2 muerto → arranca con HSI a los mismos 96 MHz (`RELOJ: …`, `$PHEV CLOCK hse_fail`, `CLOCK_HSE` en FAIL; antes la tarjeta quedaba muda). Bus I²C colgado → hasta 9 relojes + STOP antes de `Wire.begin()`, y en marcha, si no contestan las dos TMP102, el PCF8574 ni U5 por 3 s, se reinicia el bus y se reescribe lo que vive en los dispositivos (EFCR primero), máx. 1 por minuto (`$PHEV I2C_RECOVER` en banda, máx. 1 por hora). EFCR_A se revisa cada minuto. El acelerómetro que no se pudo configurar se reintenta cada 5 s. Sin TMP102 la protección térmica de la tarjeta usa el sensor interno del MCU (`$PHEV TEMP_SRC mcu`).
|
||||
- **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.
|
||||
- **Telemetría:** `$PHLG` en banda de 24 campos (versión `0.7.0p2`, 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 (−127 sin TMP102). Eventos nuevos en banda: `DUTY_WAKE`, `DUTY_SLEEP`, `DUTY_SKIP`, `DUTY_END`, `MOTION`, `I2C_RECOVER`, `TEMP_SRC`, `TEMP_NOREARM`, `WARM_LOOP`, `OVR_EXPIRE`, `CLOCK` (`hse_fail`, `hse_fail_stop`), `RTC`.
|
||||
- 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
|
||||
@ -451,3 +492,4 @@ La tarjeta se queda con 0.7.0-pre: es el firmware del piloto. No se embarca ning
|
||||
|---|---|---|
|
||||
| 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). |
|
||||
| 1.1 | 2026-10-27 | Actas aprobadas por Leo. Prueba de Ethernet 24 h por J6 (criterio 5) con el build de banco `0.7.0-pre-eth`. |
|
||||
| 1.2 | 2026-10-29 | Firmware **0.7.0-pre2**: ciclo de 10 min en batería con STOP + RTC (F-2), prueba serie con `S`/`U` (F-3), acelerómetro (F-5) y PHY del W5500 en *power-down* (E-3). Autoprueba: 21 PASS por USB, 22 con 5 V (`SER_B_LAZO` con el tiempo de Y3, `ACCEL_1G`, `W5500_PHY`; `ADC` y `MODEM_APAGADO` son veredictos); línea `RTC:`. Criterios 3 y 5 ya se pueden (§10.1: ciclo, piso dormido con PPK2, `/SYS5V` con osciloscopio, puertos serie). Corrección: `/SYS5V` en las ráfagas se mide con osciloscopio en J2 pin 2 (`v5min` es `/VEH5V`). Auditoría del firmware del 29-oct (revisiones A y C): STOP solo con la USB desconectada, A/B del W5500 con `W`, `A` + `Y`, reset en batería sin lazo. |
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
---
|
||||
title: "Unidad HBOX V5.6 y V5.7 — Ensamble y prueba de la unidad (0.7.0-pre)"
|
||||
title: "Unidad HBOX V5.6 y V5.7 — Ensamble y prueba de la unidad (0.7.0-pre2)"
|
||||
tags: [project-drogheda, hardware, hbox, v5.6, v5.7, ensamble, piloto, procedimiento]
|
||||
date: 2026-10-27
|
||||
date: 2026-10-29
|
||||
project: Project Drogheda
|
||||
author: "Helgen Technologies (redacción: Claude; revisión: Leo y Jesús Romero)"
|
||||
version: 1.0
|
||||
version: 1.1
|
||||
status: "BORRADOR — para las unidades del piloto; se ajusta con la primera unidad real"
|
||||
audience: técnicos de banco
|
||||
---
|
||||
@ -12,7 +12,7 @@ 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.
|
||||
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-pre2, 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.
|
||||
@ -44,7 +44,7 @@ Va en la etiqueta exterior (junto al GX16) y en la interior (tapa). Un módulo p
|
||||
|
||||
| Ítem | V5.6 | V5.7 |
|
||||
|---|---|---|
|
||||
| EinarBoard aprobada, con 0.7.0-pre | V56-NN | V57-NN |
|
||||
| EinarBoard aprobada, con 0.7.0-pre2 | 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) | ✔ | ✔ |
|
||||
@ -93,7 +93,7 @@ Va en la etiqueta exterior (junto al GX16) y en la interior (tapa). Un módulo p
|
||||
|
||||
| Punto | Esperado |
|
||||
|---|---|
|
||||
| Consola | `hbox-v5-bringup 0.7.0-pre`, 18 PASS, `>>> BOARD OK` |
|
||||
| Consola | `hbox-v5-bringup 0.7.0-pre2`, 22 PASS (con 24 V entra `W5500_PHY`), `>>> 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` |
|
||||
@ -131,3 +131,4 @@ Siguiente (cuando el piloto pase): [configuración de la unidad](v5-configuracio
|
||||
| Versión | Fecha | Cambios |
|
||||
|---|---|---|
|
||||
| 1.0 | 2026-10-27 | Primera versión (borrador) para las unidades del piloto V5.6/V5.7. |
|
||||
| 1.1 | 2026-10-29 | Firmware 0.7.0-pre2: la autoprueba con 24 V da 22 PASS. |
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit a25b62544845a0db8da27a9eac781843acb87782
|
||||
Subproject commit 044900bd7affadbb31d19256cd0b57272630d93f
|
||||
Loading…
Reference in New Issue
Block a user