diff --git a/00-Project-Management/2026-09-29_Drogheda_Guia-Ingeniero-Sitio_ES_v1.0.md b/00-Project-Management/2026-09-29_Drogheda_Guia-Ingeniero-Sitio_ES_v1.0.md index db66773..d04fc02 100644 --- a/00-Project-Management/2026-09-29_Drogheda_Guia-Ingeniero-Sitio_ES_v1.0.md +++ b/00-Project-Management/2026-09-29_Drogheda_Guia-Ingeniero-Sitio_ES_v1.0.md @@ -1,61 +1,46 @@ --- -title: Guía para el ingeniero — qué hacer en drogheda.helgen.online +title: "Guía del ingeniero" project: Project Drogheda date: 2026-09-29 +version: "1.1" tags: [project-drogheda, procedimientos, sitio, ingeniero] --- -# Guía para el ingeniero — qué hacer en drogheda.helgen.online +# Guía del ingeniero -El sitio es el **puesto de trabajo documental** del HBOX: ahí están los procedimientos, los binarios de firmware, los manuales de cada tarjeta y las **actas** que dejan constancia de cada trabajo. Nada se hace "de memoria": cada tarjeta, módulo o unidad que pasa por tus manos termina con un acta guardada en el sitio. +Acceso: usuario y contraseña te los da Leo; cámbiala la primera vez en [Mi cuenta](cuenta.html). El sitio es interno: no compartas ligas ni descargas fuera de Helgen. -!!! note "Acceso" - Usuario y contraseña te los entrega Leo. Cámbiala la primera vez en **👤 Mi cuenta**. El sitio es interno: no compartas ligas ni descargas fuera de Helgen. +## Reglas -## 1. Regla de oro +1. Antes de tocar una unidad, abre su [expediente](unidad.html) (H00xx o serie) y lee las actas anteriores. +2. Sigue el procedimiento completo y en orden. Una tarjeta o unidad que falla un paso no avanza al siguiente. +3. Al terminar, llena el acta del procedimiento. Sin acta, el trabajo no existe ([cómo se usan](actas/index.md)). +4. Anota toda medición fuera de rango con su valor, no solo "FALLA". +5. Si algo no cuadra con el documento (valor fuera de rango, paso imposible, la tarjeta no coincide), no improvises: detente, anótalo en Observaciones y avisa a Leo. +6. No edites procedimientos. Si un paso está mal, escríbele a Leo con la página, el número de paso, qué esperabas y qué encontraste. Las páginas se corrigen en el repositorio `Drogheda`; tú no tocas Git. -1. **Antes de tocar** una unidad, abre su expediente en **🗂 Expediente de una unidad** (escribe el H00xx) y lee las actas anteriores. -2. **Sigue el procedimiento** de la sección que corresponda (abajo). No cambies el orden de los pasos. -3. **Al terminar, llena el acta** (▶) del procedimiento que hiciste. Sin acta, el trabajo no existe. -4. Si algo no cuadra con el procedimiento (valor fuera de rango, paso imposible), **no improvises**: anótalo en "Observaciones" del acta y avisa a Leo. +## Qué abrir -## 2. Qué abrir según la situación +- [Producción](produccion/index.md): de la tarjeta nueva a la unidad lista para embarcar. +- [Taller](taller/index.md): unidad o tarjeta en la mesa. +- [Campo](campo/index.md): unidad en la máquina, envíos, recepciones y daños. +- [Tarjetas y hardware](hardware/index.md): pinout, hoja de datos, manuales por tarjeta. +- [Descargas](descargas/index.md): firmware por tarjeta y SHA-256. -| Situación | Sección del sitio | Qué haces | Acta | -|---|---|---|---| -| Llegan tarjetas nuevas de JLC (lote V5.6) | 🏭 Producción — lote v5 → **1 · Prueba y flasheo** | Inspección, flasheo con el binario de **📥 Descargas** (verifica el SHA-256), autoprueba PASS | ▶ Acta de tarjeta V5 | -| Montar simpleRTK2B y módem 4G | Producción → **2 · Módulos RTK y 4G** | Configurar módulos, verificar fix RTK y registro 4G | ▶ Acta ArduSimple · ▶ Acta módem 4G · ▶ Acta de integración | -| Armar la unidad en el gabinete | Producción → **3 · Ensamble** | Arneses según **🔩 Pinout de arneses** (V5.6: **Pinout de conectores V5.6** en 🛠 Hardware), paquete de batería de la química correcta (JP2) | ▶ Acta de ensamble | -| Dejarla lista para embarcar | Producción → **4 · Prueba final** y **5 · Configuración de la unidad** | Parámetros 4G/NTRIP (plantilla, nunca credenciales en el sitio), identidad H00xx en el monitor, Ethernet y puertos serie **solo si el cliente los usa** | ▶ Acta de tarjeta / integración | -| El cliente usa Ethernet o RS-485/RS-232 | 🔬 Taller → **🔌 Prueba: Ethernet y puertos serie** | Prueba de banco con el binario `-eth`, cable directo a la laptop, `nc -lk 5010` | ▶ Acta: Ethernet y puertos serie | -| Enviar o recibir unidades | 📦 Ciclo de vida | Acta de envío al salir; acta de recepción **por cada caja** antes de ir al puerto | ▶ Envío · ▶ Recepción · ▶ Daño | -| Instalar en el puerto | Producción → **6 · Checklist de puesta en marcha** + 📕 **Manual del cliente (PDF)** | Montaje, antenas, 24 V, LEDs, aparece en el monitor, prueba de 5 min en batería; entrega el PDF al cliente | ▶ Acta de diagnóstico en campo (tipo instalación) | -| Una unidad falla en la máquina | 🚜 Campo → **Cómo se diagnostica en campo** | Diagnóstico por LEDs y monitor; no abras la tarjeta en sitio | ▶ Acta de diagnóstico en campo | -| La unidad llega al taller | 🔬 Taller → **Cómo se diagnostica en banco** → **Reflasheo** → **Prueba: módem 4G en batería** | Banco con fuente ≥ 5.2 V o paquete conectado; reflasheo con SHA-256 verificado; prueba de batería si el reporte es "se apaga en batería" | ▶ Acta de banco · ▶ Acta de reflasheo · ▶ Acta de prueba de batería | -| Necesitas un pinout, un voltaje, un jumper, una dirección I²C | 🛠 **Hardware** → Hoja de datos EinarBoard V5.6 · Pinout V5.6 / 📘 **Manuales por tarjeta** | Consulta; no adivines valores | — | -| Tienes una V3 o V4 en la mesa | 📘 Manuales por tarjeta → V3 / V4 | Firmware correcto por tarjeta (`hbox-tarjetaV3_4.0.0`, `hbox-tarjetaV4_0.6.0`): **nunca** cruces binarios entre tarjetas | ▶ Acta de prueba V4 / reflasheo | +## Reglas que se rompen seguido -## 3. Descargas: cómo usarlas bien +Cada una vive en la página donde se aplica: -- Usa **solo** los binarios de la tabla verde de **📥 Descargas**. La carpeta `superseded/` es histórico: no se instala en unidades. -- Antes de flashear, compara el SHA-256 del archivo con el de `SHA256SUMS.txt` (el procedimiento de reflasheo dice cómo). -- El archivo de parámetros 4G del sitio es una **plantilla**. Las credenciales reales (APN, caster) las carga Leo o están en el servidor; nunca las escribas en un acta ni en el sitio. +- Firmware por tarjeta, nunca por número de versión; `superseded/` no se instala: [Descargas](descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta). +- SHA-256 antes de flashear: [Descargas](descargas/index.md#verifica-el-sha-256). +- Credenciales del módem (APN, caster) nunca en un acta ni en el sitio: [Descargas](descargas/index.md#parametros-del-modem-4g-ntrip-master). +- Química del paquete = JP2: [Ensamble §2](procedimientos/v5-ensamble.md#2-tarjeta-sin-energia). +- JP5 solo en los extremos del bus RS-485: [Ethernet y serie](procedimientos/v5-prueba-ethernet-serie.md#conexion-en-la-instalacion). +- En banco, 5 V ≥ 5.2 V o paquete conectado: [Reglas de banco](procedimientos/diagnostico-banco.md#reglas-de-banco). +- En campo, nada se reinicia antes de capturar la evidencia: [Diagnóstico en campo](diagnostico/procedimiento-diagnostico-campo.md). +- En V5.5 no se apaga y prende la etapa RTK en batería "para ver si vuelve": el módem queda oscuro hasta RESET 4G o 24 V ([Módem en batería](procedimientos/prueba-bateria-modem.md#3-hallazgos-2527-sep)). -## 4. Lo que no se hace - -- No cambies la química del paquete (Li-ion 18650 en V5.5, LFP-HT 26650 en V5.6) sin verificar el puente **JP2** de la tarjeta: química y puente cruzados es una falla, no una opción. -- No cierres **JP5** (terminación RS-485) en las dos puntas del mismo bus. -- No pruebes Ethernet ni el módem con la tarjeta solo en batería en el banco: fuente de 5 V ≥ 5.2 V o paquete conectado. -- No apagues y prendas el stack RTK con la unidad en batería "para ver si vuelve": en V5.5 el módem se queda a oscuras (solo RESET 4G o 24 V lo reviven). Está en el procedimiento de banco. -- No edites procedimientos por tu cuenta: si un paso está mal, díselo a Leo con el número de paso. - -## 5. Cuando algo falta en el sitio - -Escríbele a Leo con: la página, el paso, qué esperabas y qué encontraste. Las páginas se corrigen en el repositorio `Drogheda` y se vuelven a publicar; tú no necesitas tocar Git. - ---- - -## Anexo (solo quien publica el sitio — Leo) +## Anexo — publicar el sitio (Leo) ```bash cd ~/Documents/Claude/Projects/Drogheda/hbox-docs @@ -65,9 +50,14 @@ mkdocs build --strict # tiene que terminar sin WARNING # nuevos tipos de acta: actualizar ACTAS_REPETIBLES en /etc/systemd/system/actas-hbox.service # (ya incluye prueba-ethernet-serie en backend/actas-hbox.service y DESPLIEGUE.md), luego # sudo systemctl daemon-reload && sudo systemctl restart actas-hbox -git add -A && git commit -m "docs: manuales por tarjeta, datasheet V5.6, configuración/Ethernet/serie, manual de cliente v2.0, guía del ingeniero" && git push +git add -A && git commit -m "docs: ..." && git push ``` -| Versión | Fecha | Cambio | +## Historial de revisiones + +| Versión | Fecha | Cambios | |---|---|---| -| 1.0 | 2026-09-29 | Primera versión (sitio con manuales por tarjeta, hoja de datos V5.6 y procedimientos 5/6). | +| 1.0 | 2026-09-29 | Primera versión. | +| 1.1 | 2026-09-29 | Edición breve; recibe las reglas de la portada; la tabla por situación queda en las portadas de sección. | + +Versiones anteriores en git. diff --git a/03-Architecture-Hardware/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md b/03-Architecture-Hardware/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md index 8455f47..e0c3bca 100644 --- a/03-Architecture-Hardware/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md +++ b/03-Architecture-Hardware/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md @@ -1,37 +1,46 @@ +--- +title: "EinarBoard V5.6 — ECO (orden de cambio de ingeniería) para el siguiente lote" +tags: [project-drogheda, hardware, einarboard, v5.6, eco, requisitos] +date: 2026-09-27 +project: Project Drogheda +author: Helgen Technologies +--- + # EinarBoard V5.6 — ECO (orden de cambio de ingeniería) para el siguiente lote -!!! info "Tarjeta: EinarBoard **V5.6** — proyecto KiCad `hbox-watchdog-v5` (lote en pedido, sep-2026)" +!!! note "EinarBoard V5.6 (`hbox-watchdog-v5`), lote en pedido" Esta tarjeta es la evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). **No es la v6** (GNSS y 4G soldados a bordo, `hbox-watchdog-v6`, en diseño): la v6 tiene su propia sección en el sitio. Cuando este documento dice «copiado de v6» se refiere solo al origen de un valor de componente. +Fecha: 2026-09-27 · Base: `hbox-watchdog-v5` (V5.5, 15 pzas 22-ago, netlist verificada) · Autor: Helgen Technologies (elaborado con asistencia de Claude) para Leo / Michelle (PCB) · Estado: propuesta para aprobar antes de pedir esta semana. -**Fecha:** 2026-09-27 · **Base:** `hbox-watchdog-v5` (V5.5, 15 pzas 22-ago, netlist verificada) · **Autor:** Claude para Leo / Michelle (PCB) · **Estado:** propuesta para aprobar **antes de pedir** esta semana. +Documentos relacionados: [Informe de cambios al esquemático](v56-cambios-esquematico.md) (lo que se aplicó de esta ECO) · [Instrucciones de layout](v56-layout-instrucciones.md) · [Hoja de datos V5.6](v56-datasheet.md) · [Pinout V5.6](v56-pinout.md). -Arquitectura que NO cambia: simpleRTK2B en zócalo UNO (MOD1) + 4G NTRIP Master en zócalo XBee (J7/J8), STM32F411RET6, LTC4040 con paquete 1S4P, W5500, SC16IS752, mismo contorno 140×100 mm, mismo stackup S-G-P-S. +Arquitectura que no cambia: simpleRTK2B en zócalo UNO (MOD1) + 4G NTRIP Master en zócalo XBee (J7/J8), STM32F411RET6, LTC4040 con paquete 1S4P, W5500, SC16IS752, mismo contorno 140×100 mm, mismo stackup S-G-P-S. ## 0. Qué tiene que poder hacer la V5.6 que la V5.5 no puede | # | Requisito | Por qué la V5.5 no lo hace (evidencia de banco 26/27-sep) | |---|---|---| -| R1 | **Ciclo de 10 min en batería**: apagar todo, despertar, registrar el módem, reportar, apagar | El módem no arranca en frío sobre el boost: F9P y módem arrancan juntos por Q1 sobre 4.6 V; U7 MP1584 (mín. 4.5 V) cae en UVLO con la ráfaga de arranque; el PMIC del módem aborta sin reintentar. Solo SW4G1 lo revive. | -| R2 | **Control del módem desde el MCU**: encender/apagar, resetear, saber si está vivo | `MODEM_RST` solo llega a SW4G1; `MODEM_LED` solo a D4G1; el MCU no ve nada del módem. | -| R3 | **Cargar la batería con la fuente SD-15B (3 A)** sin bucles de brown-out | `RS1` 8 mΩ → límite de entrada 3.1 A > 3 A de la fuente; `R50` 825 Ω → 2.4 A de carga. La fuente se pliega antes de que el LTC4040 recorte al cargador (incidente 10-ago; hoy lo tapa el gobernador 0.6.0 por firmware). | -| R4 | **Gestión térmica** en puertos a ~45 °C | Ventana de carga del LTC4040 con `RNTB` 10 k pausa en caliente a ~40–42 °C: el paquete no se llena de día. Cobre del boost (`SW_BAT` 0.3 mm) se calienta. Sin temperatura del módem en telemetría. | -| R5 | **Lista EMC del segundo lote** (auditoría 22-ago) | `SW_BAT` 0.3 mm, `BAT_PLUS` 0.3–0.5 mm, lazos Cin 5–8.5 mm, divisor FB del ventilador a 25 mm, ESD DFU a 41 mm de J11, J9 sin ESD. | +| R1 | **Ciclo de 10 min en batería**: apagar todo, despertar, registrar el módem, reportar, apagar | El módem no arranca en frío sobre el boost: F9P y módem arrancan juntos por Q1 sobre 4.6 V; U7 MP1584 (mín. 4.5 V) cae en UVLO con la ráfaga de arranque; el PMIC del módem aborta sin reintentar. Solo SW4G1 lo revive. | +| R2 | Control del módem desde el MCU: encender/apagar, resetear, saber si está vivo | `MODEM_RST` solo llega a SW4G1; `MODEM_LED` solo a D4G1; el MCU no ve nada del módem. | +| R3 | **Cargar la batería con la fuente SD-15B (3 A)** sin bucles de brown-out | `RS1` 8 mΩ → límite de entrada 3.1 A > 3 A de la fuente; `R50` 825 Ω → 2.4 A de carga. La fuente se pliega antes de que el LTC4040 recorte al cargador (incidente 10-ago; hoy lo tapa el gobernador 0.6.0 por firmware). | +| R4 | Gestión térmica en puertos a ~45 °C | Ventana de carga del LTC4040 con `RNTB` 10 k pausa en caliente a ~40–42 °C: el paquete no se llena de día. Cobre del boost (`SW_BAT` 0.3 mm) se calienta. Sin temperatura del módem en telemetría. | +| R5 | Lista EMC del segundo lote (auditoría 22-ago) | `SW_BAT` 0.3 mm, `BAT_PLUS` 0.3–0.5 mm, lazos Cin 5–8.5 mm, divisor FB del ventilador a 25 mm, ESD DFU a 41 mm de J11, J9 sin ESD. | ## A. Alimentación del módem — riel propio con margen y enable desde el MCU (R1) | Cambio | Detalle | |---|---| -| **U7: MP1584EN → AP64350SP-13** | Buck 3.5 A, **Vin 3.8–40 V** (UVLO 1 V por debajo del riel de batería, contra 0.1 V hoy), SO-8-EP (mismo tamaño que el MP1584, **otro pinout** → re-layout del bloque). LCSC **C2071691** (~US$0.90, 14 900 en stock). FB = 0.8 V igual que el MP1584 → **R60 100k / R61 31.6k se quedan** (3.33 V). | -| **Entrada de U7: de `SW_5V` a `SYS5V`** | El módem ya no cuelga de Q1 ni de F1: tiene su propio interruptor (EN). Sigue detrás de P11 (cable de corte) para que el corte físico siga apagando todo. Cin: 2 × 22 µF 0805 + 10 µF 1206 pegados a VIN (lazo < 3 mm). | +| **U7: MP1584EN → AP64350SP-13** | Buck 3.5 A, **Vin 3.8–40 V** (UVLO 1 V por debajo del riel de batería, contra 0.1 V hoy), SO-8-EP (mismo tamaño que el MP1584, otro pinout → re-layout del bloque). LCSC **C2071691** (~US$0.90, 14 900 en stock). FB = 0.8 V igual que el MP1584 → **R60 100k / R61 31.6k se quedan** (3.33 V). | +| **Entrada de U7: de `SW_5V` a `SYS5V`** | El módem ya no cuelga de Q1 ni de F1: tiene su propio interruptor (EN). Sigue detrás de P11 (cable de corte) para que el corte físico siga apagando todo. Cin: 2 × 22 µF 0805 + 10 µF 1206 pegados a VIN (lazo < 3 mm). | | **EN de U7 = `MODEM_EN` (MCU PC3, pad 11)** | 10 k en serie desde PC3; **100 k a GND** en el pin EN para que el módem esté APAGADO con el MCU en reset/DFU (mismo criterio que PWR_CTRL). | -| **Salida 3V3_MODEM** | 2 × 22 µF 0805 (C41 + 1 nuevo) + **C43 100 µF electrolítico → 220 µF/16 V polímero 6.3×7.7** (LCSC **C881921**, mismo can): las ráfagas LTE de 2 A las absorbe el condensador, no el riel. | -| **L7 10 µH/2 A → 4.7 µH, Isat ≥ 4 A**, misma huella 8×8 (Bourns SRU8028-4R7Y o equiv.) | Con 2 A de ráfaga el 10 µH/2 A satura. | -| **C3 47 µF electrolítico (SW_5V) → 220 µF/16 V polímero** (C881921) | Riel del F9P: más colchón al arrancar sobre el boost. | -| Opcional **R53 499k → 511k** (LCSC C188257) → boost 4.79 → **4.89 V** | LTC4040 permite 3.5–5.0 V (datasheet confirmada 27-sep). No es necesario con el AP64350; dejar 499k salvo que el banco muestre caídas. **No subir a 523k** (4.98 V, tolerancia del 0.8 V ±2.5 % roza el máximo). | +| **Salida 3V3_MODEM** | 2 × 22 µF 0805 (C41 + 1 nuevo) + **C43 100 µF electrolítico → 220 µF/16 V polímero 6.3×7.7** (LCSC **C881921**, mismo can): las ráfagas LTE de 2 A las absorbe el condensador, no el riel. | +| **L7 10 µH/2 A → 4.7 µH, Isat ≥ 4 A**, misma huella 8×8 (Bourns SRU8028-4R7Y o equiv.) | Con 2 A de ráfaga el 10 µH/2 A satura. | +| **C3 47 µF electrolítico (SW_5V) → 220 µF/16 V polímero** (C881921) | Riel del F9P: más colchón al arrancar sobre el boost. | +| Opcional **R53 499k → 511k** (LCSC C188257) → boost 4.79 → **4.89 V** | LTC4040 permite 3.5–5.0 V (datasheet confirmada 27-sep). No es necesario con el AP64350; dejar 499k salvo que el banco muestre caídas. **No subir a 523k** (4.98 V, tolerancia del 0.8 V ±2.5 % roza el máximo). | | Opcional U12 (buck 3V3_ETH, también MP1584 desde SYS5V) → AP64350 | Mismo problema de UVLO, pero Ethernet no se usa en batería. Solo si se quiere una sola referencia de buck. | -**Secuencia que habilita esto (firmware V5.6):** despertar → `PWR_CTRL` alto (F9P arranca, riel se asienta) → 3–5 s → `MODEM_EN` alto (el módem arranca solo, sobre riel estable, con 1 V de margen de UVLO) → registro/NTRIP → reporte → `MODEM_EN` bajo → `PWR_CTRL` bajo. El módem se puede apagar y encender **solo**, sin tocar al F9P: eso es también el «reset duro del módem» que hoy no existe. +**Secuencia que habilita esto (firmware V5.6):** despertar → `PWR_CTRL` alto (F9P arranca, riel se asienta) → 3–5 s → `MODEM_EN` alto (el módem arranca solo, sobre riel estable, con 1 V de margen de UVLO) → registro/NTRIP → reporte → `MODEM_EN` bajo → `PWR_CTRL` bajo. El módem se puede apagar y encender solo, sin tocar al F9P: eso es también el «reset duro del módem» que hoy no existe. ## B. Líneas del módem al MCU (R2) @@ -40,94 +49,94 @@ Pines libres del F411 (netlist V5: pads sin conexión): PC1 (9), PC2 (10), PC3 ( | Neta nueva | MCU | Desde | Resistencia | Uso | |---|---|---|---|---| | `MODEM_EN` | **PC3** (pad 11) | U7 EN | 10 k serie + 100 k a GND en EN | Encender/apagar el módem (A). | -| `MODEM_RST_MCU` | **PC1** (pad 9) | `MODEM_RST` (J7.5, con SW4G1 en paralelo) | **1 k** serie | MCU en open-drain: baja 500 ms = pulsar SW4G1. SW4G1 se queda. | +| `MODEM_RST_MCU` | **PC1** (pad 9) | `MODEM_RST` (J7.5, con SW4G1 en paralelo) | **1 k** serie | MCU en open-drain: baja 500 ms = pulsar SW4G1. SW4G1 se queda. | | `MODEM_LED_MCU` | **PC2** (pad 10) | `MODEM_LED` (J8.8, antes de Rmled1) | 10 k serie | Leer el patrón del LED del módem (fijo = arrancando, rápido = normal, lento = comandos, irregular = conectando) → «módem vivo» sin adivinar. D4G1 se queda. | -| `MODEM_ON_SLEEP` | **PC4** (pad 24) | J8.3 (XBee pin 13) | 10 k serie, **DNP** si el módulo no lo usa | Seguro barato: si ArduSimple saca ON/SLEEP, lo tenemos. | -| `MODEM_ASSOC` | **PC5** (pad 25) | J8.5 (XBee pin 15) | 10 k serie, **DNP** | Ídem (ASSOC). | -| `RTCM_TAP` | **PC7 = USART6_RX** (pad 38) | `DOUT_4G` (J7.2 → MOD1.17, TX del módem hacia el F9P) | **1 k** serie | El MCU **cuenta bytes RTCM** que el módem entrega al F9P: «módem registrado y NTRIP fluyendo» medido, no inferido. Solo escucha (entrada alta impedancia en paralelo con RX2 del F9P). | +| `MODEM_ON_SLEEP` | **PC4** (pad 24) | J8.3 (XBee pin 13) | 10 k serie, DNP si el módulo no lo usa | Seguro barato: si ArduSimple saca ON/SLEEP, lo tenemos. | +| `MODEM_ASSOC` | **PC5** (pad 25) | J8.5 (XBee pin 15) | 10 k serie, DNP | Ídem (ASSOC). | +| `RTCM_TAP` | **PC7 = USART6_RX** (pad 38) | `DOUT_4G` (J7.2 → MOD1.17, TX del módem hacia el F9P) | **1 k** serie | El MCU cuenta bytes RTCM que el módem entrega al F9P: «módem registrado y NTRIP fluyendo» medido, no inferido. Solo escucha (entrada alta impedancia en paralelo con RX2 del F9P). | -Todas son nets nuevas de señal 3.3 V, sin condensadores; ruteo corto por Top/In2. `MODEM_RST` y `MODEM_LED` ya existen como nets: solo se les cuelga la resistencia hacia el MCU. +Todas son nets nuevas de señal 3.3 V, sin condensadores; ruteo corto por Top/In2. `MODEM_RST` y `MODEM_LED` ya existen como nets: solo se les cuelga la resistencia hacia el MCU. ## C. Cargador con la SD-15B (R3) | Cambio | Valor | Efecto | |---|---|---| -| **RS1 8 mΩ → 10 mΩ** 1206 1 W 1 % (LCSC **C105362**, FMF06FTHR010) | Límite de entrada 25 mV / 10 mΩ = **2.5 A** | Queda **por debajo** de los 3 A de la fuente: el LTC4040 recorta al cargador antes de que la SD-15B se pliegue. Fin del bucle 10-ago por hardware; el gobernador 0.6.0 queda como segunda capa. | -| **R50 825 Ω → 1.5 kΩ** 0603 1 % (LCSC **C22843**, básica) | I_chg = 2000 / 1500 = **1.33 A** | 12 Ah se llena en un turno (~9 h desde vacío) sin pedirle 2.4 A a una fuente de 3 A que además alimenta la etapa. El safety timer (4.25 h Li-ion) se rearma por firmware (pulso 0.6.0). | -| P2 / SD-15B | Sin cambio (5.3 V) | Con 2.5 A de límite y 1.33 A de carga, la fuente ya no se satura ni con ráfaga LTE. | +| **RS1 8 mΩ → 10 mΩ** 1206 1 W 1 % (LCSC **C105362**, FMF06FTHR010) | Límite de entrada 25 mV / 10 mΩ = **2.5 A** | Queda por debajo de los 3 A de la fuente: el LTC4040 recorta al cargador antes de que la SD-15B se pliegue. Fin del bucle 10-ago por hardware; el gobernador 0.6.0 queda como segunda capa. | +| **R50 825 Ω → 1.5 kΩ** 0603 1 % (LCSC **C22843**, básica) | I_chg = 2000 / 1500 = **1.33 A** | 12 Ah se llena en un turno (~9 h desde vacío) sin pedirle 2.4 A a una fuente de 3 A que además alimenta la etapa. El safety timer (4.25 h Li-ion) se rearma por firmware (pulso 0.6.0). | +| P2 / SD-15B | Sin cambio (5.3 V) | Con 2.5 A de límite y 1.33 A de carga, la fuente ya no se satura ni con ráfaga LTE. | ## D. Temperatura (R4) | Cambio | Detalle | Decisión de Leo | |---|---|---| -| **D1 — Ventana de carga del LTC4040 (`RNTB`)** | Con `RNTB` 10 k y NTC 10 k B3380/B3950 el LTC4040 **pausa la carga por encima de ~40–42 °C** (umbral caliente 34.9 % de Vin). En puerto a 45 °C el paquete no se llena de día. Dos caminos: **(a)** paquete **LiFePO4 alta temperatura 26650** (carga 0…+60 °C, ≥2000 ciclos) + `JP2` puenteado 2-3 (F2 bajo = LFP, flotación 3.50 V) + **`RNTB` 5.6 k** con NTC **B3380** (ventana +10…+60 °C); **(b)** seguir con Li-ion 18650 y aceptar la pausa (o `RNTB` 6.6 k = pausa a 55 °C, que castiga la celda). | **Hay que decidir la química**: la PCB no cambia (JP2 es puente de soldadura, RNTB es valor de BOM), pero el paquete 26650 cambia caja y BOM mecánica. Recomendación: **(a)**. Si no se decide esta semana, pedir la PCB igual y fijar RNTB/JP2 en ensamble. | -| **D2 — Cobre del boost** (= EMC #1 y #2) | `SW_BAT` ≥ 2 mm polígono, `BAT_PLUS` ≥ 1.5 mm + granja de vías, EP de U6 con ≥ 9 vías térmicas a In1. | Obligatorio. | +| **D1 — Ventana de carga del LTC4040 (`RNTB`)** | Con `RNTB` 10 k y NTC 10 k B3380/B3950 el LTC4040 **pausa la carga por encima de ~40–42 °C** (umbral caliente 34.9 % de Vin). En puerto a 45 °C el paquete no se llena de día. Dos caminos: (a) paquete **LiFePO4 alta temperatura 26650** (carga 0…+60 °C, ≥2000 ciclos) + `JP2` puenteado 2-3 (F2 bajo = LFP, flotación 3.50 V) + **`RNTB` 5.6 k con NTC B3380** (ventana +10…+60 °C); **(b)** seguir con Li-ion 18650 y aceptar la pausa (o `RNTB` 6.6 k = pausa a 55 °C, que castiga la celda). | Hay que decidir la química: la PCB no cambia (JP2 es puente de soldadura, RNTB es valor de BOM), pero el paquete 26650 cambia caja y BOM mecánica. Recomendación: (a). Si no se decide esta semana, pedir la PCB igual y fijar RNTB/JP2 en ensamble. | +| **D2 — Cobre del boost** (= EMC #1 y #2) | `SW_BAT` ≥ 2 mm polígono, `BAT_PLUS` ≥ 1.5 mm + granja de vías, EP de U6 con ≥ 9 vías térmicas a In1. | Obligatorio. | | **D3 — Sensor de temperatura del módem: U4b TMP102 (0x49)** | Segundo TMP102 SOT-563 (misma pieza que U4), ADD0 a 3V3 → dirección 0x49, colocado entre J7/J8 y el módem. El módem es la fuente de calor que sube con la ráfaga LTE; hoy `tair` (SHT40) está en la tarjeta, lejos. | Recomendado (US$0.50). Firmware: campo nuevo en `$PHLG` (append). | -| **D4 — Ventilador** | Sin cambio de hardware (2 hilos, Q2 en PA6 = TIM3_CH1: el PWM real es firmware). El buck del ventilador U2 es solo de 24 V: en batería no hay ventilador — con el ciclo de 10 min el calor en batería es bajo. | Firmware. | +| **D4 — Ventilador** | Sin cambio de hardware (2 hilos, Q2 en PA6 = TIM3_CH1: el PWM real es firmware). El buck del ventilador U2 es solo de 24 V: en batería no hay ventilador — con el ciclo de 10 min el calor en batería es bajo. | Firmware. | | **D5 — `P12` NTC (PB1)** | Dos tarjetas con termistor conectado leen `n/c` (pendiente desde 19-sep). Antes de rediseñar, medir V en P12-1 con el NTC puesto; si el divisor R(10k a 3V3) está bien, es cable/conector. | Verificar en banco antes del pedido. | ## E. Lista EMC del segundo lote (auditoría 22-ago) (R5) -1. 🔴 `SW_BAT` U6-SW → L6: polígono ≥ 2 mm F.Cu (hoy 0.3 mm × 15 mm, ~4 A en respaldo). -2. 🔴 `BAT_PLUS` últimos 20 mm a U6: ≥ 1.5 mm + vías (hoy 0.3–0.5 mm). -3. 🟠 Divisor FB del buck del ventilador (R20/R21) al pin 4 de U2 (hoy a 25 mm, `FB_FAN` 60 mm y rozando `SW_FAN`). -4. 🟠 Lazos Cin de los bucks < 3 mm (U2→C11 6.3, U7→Cin nuevo, U12→C101 8.5). -5. 🟠 ESD DFU D14/D15/D16 junto a J11 (hoy a 41 mm, en el MCU). **J9 (USB del módem): añadir USBLC6-2SC6** en el conector. -6. 🟡 Cristales ≤ 5 mm de sus ICs (Y2 del SC16IS752, Y3/Y4 del MCU); par RX Ethernet acoplado; rellenar las 8 celdas de 20 mm sin vías de costura (bajo MOD1). +1. 🔴 `SW_BAT` U6-SW → L6: polígono ≥ 2 mm F.Cu (hoy 0.3 mm × 15 mm, ~4 A en respaldo). +2. 🔴 `BAT_PLUS` últimos 20 mm a U6: ≥ 1.5 mm + vías (hoy 0.3–0.5 mm). +3. 🟠 Divisor FB del buck del ventilador (R20/R21) al pin 4 de U2 (hoy a 25 mm, `FB_FAN` 60 mm y rozando `SW_FAN`). +4. 🟠 Lazos Cin de los bucks < 3 mm (U2→C11 6.3, U7→Cin nuevo, U12→C101 8.5). +5. 🟠 ESD DFU D14/D15/D16 junto a J11 (hoy a 41 mm, en el MCU). **J9 (USB del módem): añadir USBLC6-2SC6** en el conector. +6. 🟡 Cristales ≤ 5 mm de sus ICs (Y2 del SC16IS752, Y3/Y4 del MCU); par RX Ethernet acoplado; rellenar las 8 celdas de 20 mm sin vías de costura (bajo MOD1). ## F. Varios de robustez (hallazgos 26/27-sep) | Cambio | Por qué | |---|---| -| **F1 PPTC 3 A 1812 → PPTC de menor resistencia** (≥ 4 A hold, ≤ 20 mΩ, p. ej. 1812 6 A) o **0 Ω + protección en Q1** | Con 3 A de hold el PPTC mete 50–100 mΩ en serie con el riel del F9P: 100–200 mV de caída en cada ráfaga, justo sobre el boost. El módem ya no pasa por F1 (A). | +| **F1 PPTC 3 A 1812 → PPTC de menor resistencia** (≥ 4 A hold, ≤ 20 mΩ, p. ej. 1812 6 A) o **0 Ω + protección en Q1** | Con 3 A de hold el PPTC mete 50–100 mΩ en serie con el riel del F9P: 100–200 mV de caída en cada ráfaga, justo sobre el boost. El módem ya no pasa por F1 (A). | | **P11 con puente de soldadura en paralelo** (`JP_CUT`, abierto por defecto) | Unidades sin cable de corte no dependen de un puente volante en el JST. | | Serigrafía: `SW4G1 = RESET MÓDEM`, `SW1 = RESET MCU`, `JP2 = F2 (Li-ion / LFP)` | Confusiones de banco esta semana. | -| `ETH_RST` (PA15) con **pull-down 100 k** | Hoy flota cuando el MCU está en reset: el W5500 sale de reset y gasta 130 mA en batería durante los ~4 s del reset. | +| `ETH_RST` (PA15) con **pull-down 100 k** | Hoy flota cuando el MCU está en reset: el W5500 sale de reset y gasta 130 mA en batería durante los ~4 s del reset. | ## G. Tabla BOM delta | Ref | V5.5 | V5.6 | LCSC | Nota | |---|---|---|---|---| | U7 | MP1584EN | **AP64350SP-13** | C2071691 | SO-8-EP, re-layout | -| L7 | 10 µH/2 A SRU8028 | **4.7 µH ≥ 4 A**, huella 8×8 | (elegir en JLC DB) | | -| C43 | 100 µF/6.3 V elco | **220 µF/16 V polímero** 6.3×7.7 | C881921 | | -| C3 | 47 µF elco | **220 µF/16 V polímero** 6.3×7.7 | C881921 | | -| Cin U7 | C40 22 µF (en SW_5V) | 2 × 22 µF 0805 + 10 µF 1206 **en SYS5V** junto a U7 | C86817 (22 µF ya en BOM) | C40 pasa a ser Cin | +| L7 | 10 µH/2 A SRU8028 | **4.7 µH ≥ 4 A**, huella 8×8 | (elegir en JLC DB) | | +| C43 | 100 µF/6.3 V elco | **220 µF/16 V polímero** 6.3×7.7 | C881921 | | +| C3 | 47 µF elco | **220 µF/16 V polímero** 6.3×7.7 | C881921 | | +| Cin U7 | C40 22 µF (en SW_5V) | 2 × 22 µF 0805 + 10 µF 1206 **en SYS5V** junto a U7 | C86817 (22 µF ya en BOM) | C40 pasa a ser Cin | | R_EN | — | 10 k 0603 (PC3→EN) + 100 k 0603 (EN→GND) | básicas | | | R_RSTM | — | 1 k 0603 (PC1→MODEM_RST) | básica | | | R_LEDM | — | 10 k 0603 (MODEM_LED→PC2) | básica | | -| R_ONS, R_ASC | — | 10 k 0603 ×2 (J8.3→PC4, J8.5→PC5) | básicas, **DNP** | | +| R_ONS, R_ASC | — | 10 k 0603 ×2 (J8.3→PC4, J8.5→PC5) | básicas, DNP | | | R_TAP | — | 1 k 0603 (DOUT_4G→PC7) | básica | | | R_ETHPD | — | 100 k 0603 (ETH_RST→GND) | básica | | -| RS1 | 8 mΩ 1206 | **10 mΩ 1206 1 W** | C105362 | | -| R50 | 825 Ω | **1.5 kΩ** | C22843 | | +| RS1 | 8 mΩ 1206 | **10 mΩ 1206 1 W** | C105362 | | +| R50 | 825 Ω | **1.5 kΩ** | C22843 | | | RNTB | 10 k | 10 k (Li-ion) / **5.6 k** (LFP B3380) | básica | ver D1 | | R53 | 499k | 499k (opcional 511k) | C188257 | ver A | | U4b | — | TMP102 SOT-563, ADD0→3V3 | = U4 | D3 | | D_J9 | — | USBLC6-2SC6 | C7519 | E5 | -| F1 | PPTC 3 A 1812 | PPTC ≥ 4 A / ≤ 20 mΩ | (elegir) | F | +| F1 | PPTC 3 A 1812 | PPTC ≥ 4 A / ≤ 20 mΩ | (elegir) | F | | JP_CUT | — | puente de soldadura 2 pads, abierto | — | F | ## H. Firmware para V5.6 (0.7.0, sobre 0.6.0) — lo que desbloquea el hardware - `board_v56.h`: `PIN_MODEM_EN PC3`, `PIN_MODEM_RST PC1`, `PIN_MODEM_LED PC2`, `PIN_MODEM_ONSLP PC4`, `PIN_MODEM_ASSOC PC5`, `RTCM_TAP` = USART6 RX PC7. -- `ENABLE_DUTY 1` de fábrica en V5.6: ventana = `PWR_CTRL` → 4 s → `MODEM_EN` → registro (LED del módem en «rápido» o primeros bytes RTCM en PC7) → ≥ 2 `$PHLG` con `pwr=BATT` + fix fresco → `MODEM_EN` bajo → `PWR_CTRL` bajo → 10 min. Sin la ceguera actual: el fin de ventana lo decide `RTCM_TAP`/LED, no un temporizador. -- Módem oscuro en 24 V: `MODEM_RST` 500 ms; si no vuelve, `MODEM_EN` OFF 5 s / ON (reset de alimentación real, sin tocar al F9P). El «modem watch» 0.5.9 pasa de diagnóstico a acción con señales reales. -- Cargador: gobernador 0.6.0 sin cambios (con RS1/R50 nuevos casi nunca corta); umbral térmico de celda según química (Li-ion 45 °C / LFP 55–60 °C) y `SLEEP`/rearme por voltaje re-derivados si LFP (curva plana ~3.2 V). +- `ENABLE_DUTY 1` de fábrica en V5.6: ventana = `PWR_CTRL` → 4 s → `MODEM_EN` → registro (LED del módem en «rápido» o primeros bytes RTCM en PC7) → ≥ 2 `$PHLG` con `pwr=BATT` + fix fresco → `MODEM_EN` bajo → `PWR_CTRL` bajo → 10 min. Sin la ceguera actual: el fin de ventana lo decide `RTCM_TAP`/LED, no un temporizador. +- Módem oscuro en 24 V: `MODEM_RST` 500 ms; si no vuelve, `MODEM_EN` OFF 5 s / ON (reset de alimentación real, sin tocar al F9P). El «modem watch» 0.5.9 pasa de diagnóstico a acción con señales reales. +- Cargador: gobernador 0.6.0 sin cambios (con RS1/R50 nuevos casi nunca corta); umbral térmico de celda según química (Li-ion 45 °C / LFP 55–60 °C) y `SLEEP`/rearme por voltaje re-derivados si LFP (curva plana ~3.2 V). - `$PHLG`: campos append `tmodem` (U4b), `rtcm_bps`, `modem_led`. ## I. Validación del primer lote V5.6 (banco, 1 unidad, 1 día) -1. Riel del módem: `3V3_MODEM` estable con `MODEM_EN`; osciloscopio en VIN de U7 durante el arranque del módem **en batería a 3.5 V**: sin caída bajo 3.8 V. Módem arranca 10/10 en batería (`P`+`Y` con 24 V quitado). -2. Ciclo 10 min en batería 20 ciclos seguidos (módem registra cada vez; `RTCM_TAP` cuenta bytes; posición en el monitor cada 10 min). -3. Carga: paquete a 3.4 V, 24 V con etapa ON: `ltc=CARGANDO`, corriente de entrada en P2 ≤ 2.5 A con ráfagas LTE (pinza), `cortes=0` en 2 h, safety timer rearma. -4. Térmico: cámara/horno a 45 °C: carga sigue (solo LFP+5.6 k); `tmodem` en `$PHLG`; ventilador por firmware. -5. EMC rápido: caída en `SW_BAT` a 2.5 A en respaldo < 50 mV; temperatura de L6/U6 en respaldo continuo 1 h. +1. Riel del módem: `3V3_MODEM` estable con `MODEM_EN`; osciloscopio en VIN de U7 durante el arranque del módem **en batería a 3.5 V**: sin caída bajo 3.8 V. Módem arranca 10/10 en batería (`P`+`Y` con 24 V quitado). +2. Ciclo 10 min en batería 20 ciclos seguidos (módem registra cada vez; `RTCM_TAP` cuenta bytes; posición en el monitor cada 10 min). +3. Carga: paquete a 3.4 V, 24 V con etapa ON: `ltc=CARGANDO`, corriente de entrada en P2 ≤ 2.5 A con ráfagas LTE (pinza), `cortes=0` en 2 h, safety timer rearma. +4. Térmico: cámara/horno a 45 °C: carga sigue (solo LFP+5.6 k); `tmodem` en `$PHLG`; ventilador por firmware. +5. EMC rápido: caída en `SW_BAT` a 2.5 A en respaldo < 50 mV; temperatura de L6/U6 en respaldo continuo 1 h. ## J. Para pedir esta semana — lista de decisiones -1. **Química del paquete** (D1): LFP-HT 26650 + JP2 2-3 + RNTB 5.6 k/B3380 — sí/no. (Afecta caja y BOM del paquete, no la PCB.) -2. **Tamaño del lote** V5.6 y si va con ensamble JLC (todo LCSC arriba) — partes «Extended» nuevas: AP64350, polímero 220 µF, RS1, USBLC6 (US$3 c/u de setup). +1. Química del paquete (D1): LFP-HT 26650 + JP2 2-3 + RNTB 5.6 k/B3380 — sí/no. (Afecta caja y BOM del paquete, no la PCB.) +2. Tamaño del lote V5.6 y si va con ensamble JLC (todo LCSC arriba) — partes «Extended» nuevas: AP64350, polímero 220 µF, RS1, USBLC6 (US$3 c/u de setup). 3. **R53** se queda en 499k (recomendado). 4. **U12 → AP64350** (opcional, uniformidad) — sí/no. 5. Congelar V5.5 como registro «as-fabbed»: copiar `hbox-watchdog-v5.*` → `hbox-watchdog-v55-PROD.*` (como se hizo con v3-PROD) y editar `hbox-watchdog-v5` como V5.6. @@ -137,7 +146,14 @@ Todas son nets nuevas de señal 3.3 V, sin condensadores; ruteo corto por Top/In | Día | Quién | Qué | |---|---|---| | L | Leo | Decisiones J1–J5. Congelar V5.5. | -| L–M | Claude (script, con diff y backup) + Leo (revisión en KiCad) | Esquemático: bloque U7 nuevo (AP64350, Cin/Cout, EN), 7 resistencias y nets a PC1–PC5/PC7, U4b, D_J9, JP_CUT, valores RS1/R50/RNTB/C3/C43/L7/F1. ERC 0. | +| L–M | Ingeniería (script con diff y respaldo) + Leo (revisión en KiCad) | Esquemático: bloque U7 nuevo (AP64350, Cin/Cout, EN), 7 resistencias y nets a PC1–PC5/PC7, U4b, D_J9, JP_CUT, valores RS1/R50/RNTB/C3/C43/L7/F1. ERC 0. | | M–J | Michelle / Leo | PCB: re-layout bloque módem, polígonos SW_BAT/BAT_PLUS, mover FB del ventilador y ESD DFU, 7 pistas nuevas, costura. DRC 0. | -| J | Claude | Auditoría pad-a-pad de la netlist V5.6 contra `board_v56.h` (como el 15-sep) + BOM/CPL. | +| J | Ingeniería | Auditoría pad-a-pad de la netlist V5.6 contra `board_v56.h` (como el 15-sep) + BOM/CPL. | | V | Leo | Gerbers + BOM + CPL a JLC. | + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-27 | Propuesta de ECO (requisitos R1–R5, secciones A–J). | +| 1.1 | 2026-09-29 | Enlaces a los documentos que la implementan; sin cambios técnicos. Lo aplicado y las decisiones cerradas están en el informe de cambios §9–§10. | diff --git a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md index e9a29f2..63c5775 100644 --- a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md +++ b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md @@ -1,17 +1,24 @@ -# EinarBoard V5.6 — Informe de cambios al esquemático (v1.0) +--- +title: "EinarBoard V5.6 — Informe de cambios al esquemático" +tags: [project-drogheda, hardware, einarboard, v5.6, esquematico, eco, kicad] +date: 2026-09-28 +project: Project Drogheda +author: Helgen Technologies +--- -!!! info "Tarjeta: EinarBoard **V5.6** — proyecto KiCad `hbox-watchdog-v5` (lote en pedido, sep-2026)" +# EinarBoard V5.6 — Informe de cambios al esquemático + +!!! note "EinarBoard V5.6 (`hbox-watchdog-v5`), lote en pedido" Esta tarjeta es la evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). **No es la v6** (GNSS y 4G soldados a bordo, `hbox-watchdog-v6`, en diseño): la v6 tiene su propia sección en el sitio. Cuando este documento dice «copiado de v6» se refiere solo al origen de un valor de componente. - -**Fecha:** 2026-09-28 · **Base:** `hbox-watchdog-v5` (V5.5 as-fabbed, intacto) · **Proyecto:** `kicad/hbox-watchdog-v5.*` (la copia `-v56` de la mañana se fusionó en el proyecto v5 por la tarde, ver §9) · **ECO implementada:** `2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md` secciones A, B, C, D3, E5, F · **Autor:** Claude (edición por KiCad MCP + script con respaldo y verificación de UUID) · **Estado:** listo para revisión de Leo en KiCad; **no** se ha ejecutado *Update PCB from Schematic* ni se ha tocado el layout. +Fecha: 2026-09-28 · Base: `hbox-watchdog-v5` (V5.5 as-fabbed, intacto) · Proyecto: `kicad/hbox-watchdog-v5.*` (la copia `-v56` de la mañana se fusionó en el proyecto v5 por la tarde, ver §9) · ECO implementada: `2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md` secciones A, B, C, D3, E5, F · Autor: Helgen Technologies (elaborado con asistencia de Claude) · Estado: listo para revisión de Leo en KiCad; **no** se ha ejecutado *Update PCB from Schematic* ni se ha tocado el layout. ## 0. Resumen | Ítem | Resultado | |---|---| | Proyecto V5.6 | `hbox-watchdog-v56.kicad_sch/.kicad_pro/.kicad_pcb/.kicad_prl/.kicad_dru` (copia de v5; `.kicad_pro/.kicad_prl` apuntan a los nombres v56). Librerías `sym-lib-table`/`fp-lib-table` sin cambio (ya incluían `Drogheda-v6`). | -| V5.5 as-fabbed | **Byte-idéntico**: sha256 de los 5 archivos `hbox-watchdog-v5.*` iguales antes y después (tabla §7). | +| V5.5 as-fabbed | Byte-idéntico: SHA-256 de los 5 archivos `hbox-watchdog-v5.*` iguales antes y después (§7). | | ERC (kicad-cli) | **1 error, 27 warnings — todos preexistentes** en V5.5 (línea base: 1 error, 33 warnings). La ECO no introduce ninguna violación. Detalle en §5. | | Netlist | Exportada con kicad-cli (`_to_delete/v56-work-20260928/hbox-watchdog-v56-netlist.xml`). Diff pin-a-pin contra la netlist de V5.5: **58 diferencias, todas las previstas por la ECO, ninguna otra** (§4). | | Refs nuevas | C119 C120 C121 C122 C123 C124 · R105 R106 R107 R108 R109 R110 R111 R112 · U18 · D19 · JP6 (17 componentes). | @@ -19,7 +26,7 @@ | PCB | `hbox-watchdog-v56.kicad_pcb` es copia byte-a-byte de v5; los footprints nuevos entran con *Update PCB* (§8). | | PDF | `03-Architecture-Hardware/hbox-watchdog-v56-schematic.pdf` (exportado con kicad-cli para revisión rápida). | -Nombres del ECO → refdes reales asignados: `R_EN` → **R105** (10 k serie) + **R106** (100 k a GND) · `R_RSTM` → **R107** · `R_LEDM` → **R108** · `R_ONS` → **R109** (DNP) · `R_ASC` → **R110** (DNP) · `R_TAP` → **R111** · `R_ETHPD` → **R112** · `Cin U7` → **C119/C120** (22 µF 0805) + **C121** (10 µF 1206) · 22 µF extra en 3V3_MODEM → **C122** · `U4b` → **U18** · `D_J9` → **D19** · `JP_CUT` → **JP6** · 47 pF de COMP → **C123** · desacoplo de U18 → **C124**. (KiCad exige que la referencia termine en número, por eso no se usó «U4b».) +Nombres del ECO → refdes reales asignados: `R_EN` → **R105** (10 k serie) + **R106** (100 k a GND) · `R_RSTM` → **R107** · `R_LEDM` → **R108** · `R_ONS` → **R109** (DNP) · `R_ASC` → **R110** (DNP) · `R_TAP` → **R111** · `R_ETHPD` → **R112** · `Cin U7` → **C119/C120** (22 µF 0805) + **C121** (10 µF 1206) · 22 µF extra en 3V3_MODEM → **C122** · `U4b` → **U18** · `D_J9` → **D19** · `JP_CUT` → **JP6** · 47 pF de COMP → **C123** · desacoplo de U18 → **C124**. (KiCad exige que la referencia termine en número, por eso no se usó «U4b».) ## 1. Cambios en componentes existentes (antes → después) @@ -28,47 +35,47 @@ Nombres del ECO → refdes reales asignados: `R_EN` → **R105** (10 k serie) + | **U7** | MP1584EN, `Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm`, LCSC C15051 | **AP64350SP-13**, `Drogheda-v6:SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP` (mismo footprint que U20 de v6) | **C2071691** | Mismo UUID de símbolo que en v5 (`56a2435b-…`) → *Update PCB* sustituye el footprint en su sitio. Pinout nuevo: 1 BST, 2 VIN, 3 EN, 4 RT/CLK, 5 FB, 6 COMP, 7 GND, 8 SW, 9 EP. | | U7 VIN | `SW_5V` (pines 2 y 7) | **`SYS5V`** (pin 2) | | El módem ya no cuelga de Q1/F1. `SW_5V` queda solo con C3, C40, MOD1.5, Q1.3, PF5 (verificado §4). | | U7 EN | `SW_5V` | **`MODEM_EN_U7`** (R105 10 k desde `MODEM_EN`/PC3, R106 100 k a GND) | | Módem apagado con el MCU en reset/DFU. | -| Cbst2 | 10 nF (BST3↔SW3_NODE) | **100 nF** | C14663 | Cap de bootstrap del AP64350 (v6 usa 100 nF). | +| Cbst2 | 10 nF (BST3↔SW3_NODE) | **100 nF** | C14663 | Cap de bootstrap del AP64350 (v6 usa 100 nF). | | Rcomp2 | 40.2 k (COMP3→COMP3_C) | **14 k** | C22803 | Compensación copiada de U20 v6 (R116). | -| Ccomp2 | 2.2 nF (COMP3_C→GND) | **3.3 nF** | C1613 | Copiada de U20 v6 (C141). | +| Ccomp2 | 2.2 nF (COMP3_C→GND) | **3.3 nF** | C1613 | Copiada de U20 v6 (C141). | | Rfreq2 | 100 k (FREQ3→GND, pin FREQ del MP1584) | **200 k/1 %** (misma net `FREQ3`, ahora al pin 4 **RT/CLK**) | C25811 | Copiada de U20 v6 (R117). La net conserva el nombre `FREQ3`. | -| Dbk2 | SS34 (SW3_NODE→GND, diodo de recirculación) | SS34 **DNP** (`dnp yes`) | C8678 | El AP64350 es síncrono; se deja el footprint por si se vuelve al MP1584. | -| L7 | 10 µH/2 A, LCSC C17700171 | **4.7uH/4A** | **C17700167** | Sunlord MWSA0804S-4R7MT (misma familia 8.8×8.2 mm que la pieza actual; igual que L20 de v6). Footprint sin cambio. | +| Dbk2 | SS34 (SW3_NODE→GND, diodo de recirculación) | SS34 DNP (`dnp yes`) | C8678 | El AP64350 es síncrono; se deja el footprint por si se vuelve al MP1584. | +| L7 | 10 µH/2 A, LCSC C17700171 | **4.7uH/4A** | **C17700167** | Sunlord MWSA0804S-4R7MT (misma familia 8.8×8.2 mm que la pieza actual; igual que L20 de v6). Footprint sin cambio. | | C43 | 100uF/6.3V elco 6.3×7.7 (3V3_MODEM) | **220uF/16V polymer** | **C881921** | Lelon OVZ221M1CTR-0608, mismo can. | | C3 | 47uF elco 6.3×7.7 (SW_5V) | **220uF/16V polymer** | **C881921** | | -| RS1 | 8mR/1% 1206 | **10mR/1%/1W** | **C105362** | Límite de entrada 2.5 A. | -| R50 | 825R/1% | **1.5k/1%** | **C22843** | I_chg 1.33 A. | -| F1 | PPTC 3A 1812 (C20627123) | **PPTC 4A/1812 low-R** | **TBD** | Solo nota: elegir ≥ 4 A hold / ≤ 20 mΩ (o 0 Ω + protección en Q1). Footprint 1812 sin cambio. | +| RS1 | 8mR/1% 1206 | **10mR/1%/1W** | **C105362** | Límite de entrada 2.5 A. | +| R50 | 825R/1% | **1.5k/1%** | **C22843** | I_chg 1.33 A. | +| F1 | PPTC 3A 1812 (C20627123) | **PPTC 4A/1812 low-R** | TBD | Solo nota: elegir ≥ 4 A hold / ≤ 20 mΩ (o 0 Ω + protección en Q1). Footprint 1812 sin cambio. | | R53 | 499k | 499k (sin cambio) | | Decisión J3 del ECO. | | RNTB | 10k | 10k (sin cambio) | | Solo BOM; depende de la química (D1). | -| R60/R61 | 100k / 31.6k | sin cambio | | FB 0.8 V → 3.33 V, igual en AP64350. | -| C40, C41 | 22 µF (SW_5V / 3V3_MODEM) | sin cambio | | Ver §6 (decisión pendiente sobre C40). | +| R60/R61 | 100k / 31.6k | sin cambio | | FB 0.8 V → 3.33 V, igual en AP64350. | +| C40, C41 | 22 µF (SW_5V / 3V3_MODEM) | sin cambio | | Ver §6 (decisión pendiente sobre C40). | Cada componente tocado lleva una propiedad `Note` que empieza por «V5.6:» y la propiedad `LCSC` actualizada (mismo campo que ya usaba la BOM del proyecto). ## 2. Componentes nuevos -Colocados en la zona libre inferior-izquierda de la hoja A1 (x 80–205 mm, y 380–520 mm), en cuatro filas con un texto de cabecera «V5.6 ECO (2026-09-28)». Todo va por etiquetas locales (net labels), igual que el resto del esquemático, así que Leo puede moverlos a su bloque sin rehacer conexiones. +Colocados en la zona libre inferior-izquierda de la hoja A1 (x 80–205 mm, y 380–520 mm), en cuatro filas con un texto de cabecera «V5.6 ECO (2026-09-28)». Todo va por etiquetas locales (net labels), igual que el resto del esquemático, así que Leo puede moverlos a su bloque sin rehacer conexiones. | Ref | Valor | Footprint | LCSC | Conexión (pin 1 / pin 2) | ECO | |---|---|---|---|---|---| -| C119 | 22uF | C_0805 | C86817 | SYS5V / GND — Cin de U7, < 3 mm de VIN | A | +| C119 | 22uF | C_0805 | C86817 | SYS5V / GND — Cin de U7, < 3 mm de VIN | A | | C120 | 22uF | C_0805 | C86817 | SYS5V / GND — Cin de U7 | A | | C121 | 10uF/25V | C_1206 | C14860 | SYS5V / GND — Cin bulk de U7 | A | -| C122 | 22uF | C_0805 | C86817 | 3V3_MODEM / GND — segundo 22 µF de salida | A | +| C122 | 22uF | C_0805 | C86817 | 3V3_MODEM / GND — segundo 22 µF de salida | A | | C123 | 47pF | C_0603 | C1671 | COMP3 / GND — parte del lazo de compensación (v6 C142) | A | | R105 | 10k | R_0603 | C25804 | MODEM_EN (PC3) / MODEM_EN_U7 | A/B | | R106 | 100k | R_0603 | C103211 | MODEM_EN_U7 / GND | A/B | | R107 | 1k | R_0603 | C14676 | MODEM_RST_MCU (PC1) / MODEM_RST | B | | R108 | 10k | R_0603 | C25804 | MODEM_LED_MCU (PC2) / MODEM_LED | B | -| R109 | 10k **DNP** | R_0603 | C25804 | MODEM_ON_SLEEP (PC4) / XBEE_ONSLP (J8.3) | B | -| R110 | 10k **DNP** | R_0603 | C25804 | MODEM_ASSOC (PC5) / XBEE_ASSOC (J8.5) | B | +| R109 | 10k DNP | R_0603 | C25804 | MODEM_ON_SLEEP (PC4) / XBEE_ONSLP (J8.3) | B | +| R110 | 10k DNP | R_0603 | C25804 | MODEM_ASSOC (PC5) / XBEE_ASSOC (J8.5) | B | | R111 | 1k | R_0603 | C14676 | RTCM_TAP (PC7 = USART6_RX) / DOUT_4G | B | | R112 | 100k | R_0603 | C103211 | ETH_RST / GND | F | -| U18 | TMP102 (`Sensor_Temperature:TMP102xxDRL`) | SOT-563 | C99269 | 1 SCL→I2C_SCL, 2 GND, 3 ALERT n/c, 4 **ADD0→3V3 (0x49)**, 5 V+→3V3, 6 SDA→I2C_SDA | D3 («U4b») | +| U18 | TMP102 (`Sensor_Temperature:TMP102xxDRL`) | SOT-563 | C99269 | 1 SCL→I2C_SCL, 2 GND, 3 ALERT n/c, 4 **ADD0→3V3 (0x49)**, 5 V+→3V3, 6 SDA→I2C_SDA | D3 («U4b») | | C124 | 100nF | C_0603 | C14663 | 3V3 / GND — desacoplo de U18 | D3 | | D19 | USBLC6-2SC6 (`Power_Protection:USBLC6-2SC6`) | `Package_TO_SOT_SMD:SOT-23-6` | C7519 | 1,6 I/O1→USB_DM · 3,4 I/O2→USB_DP · 5 VBUS→USB_VBUS · 2 GND | E5 («D_J9») | -| JP6 | JP_CUT (`Jumper:SolderJumper_2_Open`) | `Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` | — | MAIN5V / SYS5V, en paralelo con P11, **abierto** | F («JP_CUT») | +| JP6 | JP_CUT (`Jumper:SolderJumper_2_Open`) | `Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` | — | MAIN5V / SYS5V, en paralelo con P11, abierto | F («JP_CUT») | Nets nuevas de señal (J8.3 y J8.5 estaban sin conexión; se les quitó la bandera *no-connect*): `XBEE_ONSLP` (J8.3 = XBee pin 13) y `XBEE_ASSOC` (J8.5 = XBee pin 15). @@ -125,7 +132,7 @@ Volcado pad→net completo de todos los componentes nuevos y modificados: `kicad ## 5. ERC (kicad-cli, `hbox-watchdog-v56.kicad_sch`) -**Resultado: 1 error, 27 warnings.** Línea base V5.5 (misma herramienta, antes de tocar nada): 1 error, 33 warnings. +**Resultado: 1 error, 27 avisos.** Línea base V5.5 (misma herramienta, antes de tocar nada): 1 error, 33 warnings. Preexistentes en V5.5 (no son de la ECO, se dejan tal cual): @@ -141,41 +148,30 @@ Warnings que desaparecieron respecto a la línea base (limpieza colateral, sin e ## 6. Lo que no se hizo / decisiones abiertas -1. **Compensación y frecuencia del AP64350 copiadas de v6 (U20)** — Rcomp2 14 k, Ccomp2 3.3 nF, C123 47 pF, Rfreq2 200 k, Cbst2 100 nF. En v6 esa red se diseñó para 3.8 V con Cout distinto; aquí la salida es 3.33 V con L = 4.7 µH y Cout ≈ 2×22 µF cerámico + 220 µF polímero (baja ESR). **Comprobar contra la tabla de aplicación del datasheet AP64350** (Diodes, «Typical Application» 3.3 V) antes de pedir; son 0603 y se cambian sin re-layout. -2. **C40 sigue en `SW_5V`.** El ECO dice «C40 pasa a ser Cin»; el brief de ejecución pedía *añadir* 2×22 µF + 10 µF con refs nuevas en SYS5V. Se hizo lo segundo (C119/C120/C121) y C40 se dejó en SW_5V como cerámico del riel del F9P. Si Leo prefiere el texto del ECO: marcar C40 DNP o moverlo a SYS5V en layout (una sola etiqueta). -3. **F1**: valor «PPTC 4A/1812 low-R», LCSC = `TBD`. Elegir la pieza (o 0 Ω) antes de la BOM. -4. **L7 LCSC C17700167** = Sunlord MWSA0804S-4R7MT (8.8×8.2 mm, Extended). La pieza actual (C17700171) es de la misma familia sobre el footprint `L_Bourns-SRU8028_8.0x8.0mm`; confirmar que el 4R7 tiene la misma huella (o cambiar por SRU8028-4R7Y). +1. **Compensación y frecuencia del AP64350 copiadas de v6 (U20)** — Rcomp2 14 k, Ccomp2 3.3 nF, C123 47 pF, Rfreq2 200 k, Cbst2 100 nF. En v6 esa red se diseñó para 3.8 V con Cout distinto; aquí la salida es 3.33 V con L = 4.7 µH y Cout ≈ 2×22 µF cerámico + 220 µF polímero (baja ESR). **Comprobar contra la tabla de aplicación del datasheet AP64350** (Diodes, «Typical Application» 3.3 V) antes de pedir; son 0603 y se cambian sin re-layout. +2. **C40 sigue en `SW_5V`.** El ECO dice «C40 pasa a ser Cin»; el brief de ejecución pedía *añadir* 2×22 µF + 10 µF con refs nuevas en SYS5V. Se hizo lo segundo (C119/C120/C121) y C40 se dejó en SW_5V como cerámico del riel del F9P. Si Leo prefiere el texto del ECO: marcar C40 DNP o moverlo a SYS5V en layout (una sola etiqueta). +3. **F1**: valor «PPTC 4A/1812 low-R», LCSC = `TBD`. Elegir la pieza (o 0 Ω) antes de la BOM. +4. **L7 LCSC C17700167** = Sunlord MWSA0804S-4R7MT (8.8×8.2 mm, Extended). La pieza actual (C17700171) es de la misma familia sobre el footprint `L_Bourns-SRU8028_8.0x8.0mm`; confirmar que el 4R7 tiene la misma huella (o cambiar por SRU8028-4R7Y). 5. **U12 (buck 3V3_ETH)** no se cambió (opcional J4 del ECO). 6. **RNTB / JP2** sin cambio (decisión de química D1 pendiente). -7. **Serigrafía** (SW4G1 = RESET MÓDEM, SW1 = RESET MCU, JP2 = F2) y toda la sección **E de EMC** son de PCB: no se tocaron. -8. **Error ERC preexistente** (etiqueta GND suelta en 50.8, 25.146) se dejó tal cual por estar fuera de la ECO; borrar esa etiqueta en KiCad cuesta un clic si se quiere ERC = 0 errores. -9. **Formato del archivo**: las herramientas KiCad-MCP reescriben `hbox-watchdog-v56.kicad_sch` en formato compacto (una línea por elemento, 657 kB frente a 813 kB). Es válido para KiCad 10 (kicad-cli lo lee para ERC/netlist/PDF) y al guardar desde eeschema vuelve al formato canónico; solo afecta a la legibilidad del diff en git. Las 238 instancias `(project …)` se renombraron de `hbox-watchdog-v5` a `hbox-watchdog-v56` (lo que haría *Save As*). -10. Incidente detectado y corregido durante el trabajo: la herramienta MCP `replace_schematic_component` eliminó la unión (junction) en (39.37, 76.2) — Rig2.1 quedaba sin `IGN_SENSE`. Se detectó con el diff de netlist, se restauró la junction con su UUID original y el diff final es limpio. La misma herramienta añadió 5 junctions en cruces de cables ya conectados (722.63,130.81 · 722.63,69.85 · 699.77,240.03 · 446.786,301.498 · 509.524,287.02); se verificó que no alteran ninguna net. +7. Serigrafía (SW4G1 = RESET MÓDEM, SW1 = RESET MCU, JP2 = F2) y toda la sección E de EMC son de PCB: no se tocaron. +8. Error ERC preexistente (etiqueta GND suelta en 50.8, 25.146) se dejó tal cual por estar fuera de la ECO; borrar esa etiqueta en KiCad cuesta un clic si se quiere ERC = 0 errores. -## 7. Integridad de V5.5 (sha256 antes = después) +## 7. Integridad de V5.5 -``` -8e4d3a7ba7a209367c2dda2394ca7809b5b68078a388f74b8052ddda2aab518c hbox-watchdog-v5.kicad_dru -6f7ca0e414cc2af321c4909ac3491ee71300f6fa61507e179a46e945eb5c39b0 hbox-watchdog-v5.kicad_pcb -8f0158affbf93516649a1317572a687f330ad7f009cd4f4d8345324d8506c04c hbox-watchdog-v5.kicad_prl -8253ad14bea362c534bdb0895477899863bd3c843173751b0af3d253448a8fe3 hbox-watchdog-v5.kicad_pro -8926a7c0ec4785f9accaf6d005ae7a57b43099dd5d772b945782fdc3751c843f hbox-watchdog-v5.kicad_sch -``` -`hbox-watchdog-v56.kicad_sch` final: `08219316517f636564fd0ae0804a30213d10fbc048b6446dd61216b312f81d2e`. - -Respaldos de cada estado intermedio (nada se borró): `kicad/_to_delete/v56-work-20260928/` — `00-copied-from-v5`, `01-nc-removed-renamed`, `02-u7-replaced`, `03-values`, `04-new-parts`, `05-metadata`, `06-junction-nc-pintypes`, `07-final` (`.kicad_sch`), netlists `v55-baseline.xml`, `v6-reference.xml`, `step02/04/06.xml`, `hbox-watchdog-v56-netlist.xml`, y `padnet-dump.txt`. No se ejecutó `git` en la carpeta. +El estado as-fabbed V5.5 quedó byte-idéntico: los cinco archivos `hbox-watchdog-v5.*` tienen el mismo SHA-256 antes y después del trabajo (hashes y respaldos intermedios en el anexo de trazabilidad, al final de la página). No se ejecutó `git` en la carpeta. ## 8. Siguientes pasos para Leo / Michelle 1. **Abrir `hbox-watchdog-v56.kicad_pro` en KiCad 10**, revisar el bloque U7 (x≈433–475, y≈185–210) y el bloque «V5.6 ECO» (x 70–210, y 362–530); mover los componentes nuevos junto a sus bloques si se quiere (todo es por etiquetas). Guardar → KiCad reescribe el archivo en formato canónico. 2. Opcional: borrar la etiqueta `GND` suelta en (50.8, 25.146) para ERC = 0 errores. 3. Revisar punto 6.1 (compensación AP64350) y 6.2 (C40); fijar F1 (6.3). -4. **Update PCB from Schematic** (F8) sobre `hbox-watchdog-v56.kicad_pcb`: sustituye U7 (mismo UUID, footprint `Drogheda-v6:SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP`, pinout distinto → hay que re-rutear el bloque) y añade 17 footprints nuevos (C119–C124, R105–R112, U18 SOT-563, D19 SOT-23-6, JP6). Dbk2, R109, R110 quedan DNP. +4. Update PCB from Schematic (F8) sobre `hbox-watchdog-v56.kicad_pcb`: sustituye U7 (mismo UUID, footprint `Drogheda-v6:SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP`, pinout distinto → hay que re-rutear el bloque) y añade 17 footprints nuevos (C119–C124, R105–R112, U18 SOT-563, D19 SOT-23-6, JP6). Dbk2, R109, R110 quedan DNP. 5. Layout (sección E del ECO + notas de A/D): - - U7: lazo Cin (C119/C120/C121) < 3 mm de VIN; BST (Cbst2) pegado a pines 1/8; C123/Rcomp2/Ccomp2 y Rfreq2 junto a pines 4/6 con retorno a GND corto; EP con vías térmicas. - - `SW_BAT` polígono ≥ 2 mm; `BAT_PLUS` ≥ 1.5 mm + vías; EP de U6 ≥ 9 vías térmicas. + - U7: lazo Cin (C119/C120/C121) < 3 mm de VIN; BST (Cbst2) pegado a pines 1/8; C123/Rcomp2/Ccomp2 y Rfreq2 junto a pines 4/6 con retorno a GND corto; EP con vías térmicas. + - `SW_BAT` polígono ≥ 2 mm; `BAT_PLUS` ≥ 1.5 mm + vías; EP de U6 ≥ 9 vías térmicas. - Divisor FB del ventilador (R20/R21) junto al pin 4 de U2; ESD DFU (D14/D15/D16) junto a J11; **D19 en J9**, en la salida de las líneas D+/D− del conector. - - Cristales ≤ 5 mm de sus ICs; costura de vías bajo MOD1. + - Cristales ≤ 5 mm de sus ICs; costura de vías bajo MOD1. - **U18** entre J7/J8 y el módem (fuente de calor); C124 al lado. - JP6 junto a P11; R112 junto a U11 (pin 37); R107/R108 cerca de J7/J8; R111 cerca de J7.2. - Serigrafía: `SW4G1 = RESET MÓDEM`, `SW1 = RESET MCU`, `JP2 = F2 (Li-ion / LFP)`, `JP6 = CUTOFF BYPASS (abierto)`. @@ -189,16 +185,16 @@ Decisiones §6 cerradas y aplicadas en el esquemático (script por referencia, r | Ref | Antes | Ahora | LCSC | Razón | |---|---|---|---|---| -| Rcomp2 | 14k (fila 5 V del datasheet, copiada de v6) | **9.1k** | C23260 (básica) | Fila 3.3 V del AP64350 (9.31k); fc ≈ 2.4 kHz con Cout ≈ 250 µF (2×22 µF + 220 µF polímero) | -| Ccomp2 | 3.3nF | **10nF** | C57112 (básica) | Con Cout 250 µF el cero a 5.3 kHz quedaba por encima del cruce → MF 25–40°; a 1.75 kHz → MF 55–70° | -| C123 | 47pF | **68pF** | C1680 | Fila 3.3 V; polo ≈ 260 kHz contra el rizado de 500 kHz | -| F1 | PPTC 3 A (C20627123) / «TBD» | **BSMD1812-400-12V** 4 A hold / 8 A trip, 25 mΩ máx | C18164540 | ≤ 60 mV a 2.5 A; hold ≈ 3 A a 45 °C; mismo 1812 | -| C40 | 22 µF en SW_5V | sin cambio | — | U7 ya tiene C119–C121 como Cin; C40 sigue desacoplando el F9P | +| Rcomp2 | 14k (fila 5 V del datasheet, copiada de v6) | **9.1k** | C23260 (básica) | Fila 3.3 V del AP64350 (9.31k); fc ≈ 2.4 kHz con Cout ≈ 250 µF (2×22 µF + 220 µF polímero) | +| Ccomp2 | 3.3nF | **10nF** | C57112 (básica) | Con Cout 250 µF el cero a 5.3 kHz quedaba por encima del cruce → MF 25–40°; a 1.75 kHz → MF 55–70° | +| C123 | 47pF | **68pF** | C1680 | Fila 3.3 V; polo ≈ 260 kHz contra el rizado de 500 kHz | +| F1 | PPTC 3 A (C20627123) / «TBD» | **BSMD1812-400-12V** 4 A hold / 8 A trip, 25 mΩ máx | C18164540 | ≤ 60 mV a 2.5 A; hold ≈ 3 A a 45 °C; mismo 1812 | +| C40 | 22 µF en SW_5V | sin cambio | — | U7 ya tiene C119–C121 como Cin; C40 sigue desacoplando el F9P | | L7 | — | C17700167 confirmado | — | Misma familia MWSA0804S, mismo encapsulado 8.8×8.2 → misma huella | -| **R55 (= RNTB)** | 10k/1% (C25804) | **5.6k/1%** | C23189 (básica) | Química **LFP-HT 26650**: ventana de carga +10…+60 °C con NTC B3380 en el paquete (P4.3) | +| **R55 (= RNTB)** | 10k/1% (C25804) | **5.6k/1%** | C23189 (básica) | Química **LFP-HT 26650**: ventana de carga +10…+60 °C con NTC B3380 en el paquete (P4.3) | | **JP2** | `SolderJumper_3_Bridged12` «F2:Li-ion» | **`SolderJumper_3_Bridged23`** «F2:LFP (2-3)», huella `…_Bridged23_…` | — | F2 = bajo → flotación LiFePO4 del LTC4040. Símbolo Bridged23 añadido a `lib_symbols` (derivado del Bridged12: puente entre pads 2-3) | -Pendiente de Leo: tamaño del lote; el paquete 26650 LFP-HT con NTC **B3380** (caja/BOM mecánica). Validación de banco en la primera tarjeta: escalón de carga 0→2 A en 3V3_MODEM (< 150 mV, sin oscilación); carga LFP a 45 °C en horno sin pausa NTC. +Pendiente de Leo: tamaño del lote; el paquete 26650 LFP-HT con NTC **B3380** (caja/BOM mecánica). Validación de banco en la primera tarjeta: escalón de carga 0→2 A en 3V3_MODEM (< 150 mV, sin oscilación); carga LFP a 45 °C en horno sin pausa NTC. ## 10. Addendum 28-sep (noche) — hallazgos de la auditoría v6 aplicados a V5.6 + chequeo de stock JLC @@ -206,15 +202,53 @@ Fuente: `2026-09-28_EinarBoard-v6_Full-Audit` (E-02, H-01, A-03, H-02, H-02b, A- | Ref | Antes | Ahora | LCSC | Razón | |---|---|---|---|---| -| **R112** (ETH_RST → GND) | 100k | **4.7k** | C23162 (básica) | E-02: el W5500 tiene pull-up interno de 62–112 k en RSTn y PA15 arranca como JTDI con pull-up de 30–50 k → con 100 k el nodo queda en 2.75 V (ALTO). Con 4.7 k: 0.62 V peor caso (BAJO). 0.7 mA cuando el firmware lo pone en alto. | +| **R112** (ETH_RST → GND) | 100k | **4.7k** | C23162 (básica) | E-02: el W5500 tiene pull-up interno de 62–112 k en RSTn y PA15 arranca como JTDI con pull-up de 30–50 k → con 100 k el nodo queda en 2.75 V (ALTO). Con 4.7 k: 0.62 V peor caso (BAJO). 0.7 mA cuando el firmware lo pone en alto. | | **U15** MAX3232ESE | huella `SOIC-16W_7.5x10.3mm` (campo obsoleto; la PCB V5.5 ya usa la angosta) | **`Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`** | C15846 | H-01: el ESE es SO-16 angosto. Corregido en el esquemático para que *Update PCB* no cambie la huella buena de la PCB. (U13 PCF8574T sí es ancho: correcto.) | -| **R50** | 1.5k | **1.43k/1%** | C22840 | A-03: I_chg = 2000/R ±5 % → 1.316–1.483 A (con 1.5 k el mínimo es 1.254 A < 1.3 A). Mismo valor en v6 (comunalidad). | +| **R50** | 1.5k | **1.43k/1%** | C22840 | A-03: I_chg = 2000/R ±5 % → 1.316–1.483 A (con 1.5 k el mínimo es 1.254 A < 1.3 A). Mismo valor en v6 (comunalidad). | | **U10** | C729142 (SC16IS762, **15 en stock**) | mismo valor SC16IS752IPW | **C57156** (2 670) | H-02: por debajo del mínimo de 20 de JLC. Pin-compatible, modo I²C idéntico, mitad de precio. | | **R53** 499k | C131054 (**6 en stock**) | mismo valor | **C177479** (26 862) | H-02: fija el voltaje del boost de respaldo; sin ella no hay respaldo. | -| 100k ×9 (Rgs1, R87, R20, R56, Ren1, Rfreq1, R85…) y 100k/1% ×3 (R60, R52, R54) | C103211 (5 %, 702 en stock) / C14675 | mismos valores | **C25803** (1 %, básica, 10.8 M) | H-02b: 2.3× de cobertura para 30 tarjetas y una bobina Extended menos. | -| **U17** | AMS1117-3.3 (C6186) | **TLV1117LV33DCYR** (mismo SOT-223, pin 1 GND / 2 OUT / 3 IN) | C15578 | A-08: en batería LDO_IN = VSYS 4.60–4.99 V − D12 ≈ 4.25–4.65 V y el AMS1117 necesita ≈ 4.3 V (dropout 1.0–1.3 V) → 3V3 marginal justo en respaldo; Iq 5–11 mA vs 0.1 mA. Vin máx 5.5 V ≥ SD-15B 5.57 − D12. Comprobar ≥ 10 µF cerámico en 3V3 (C23 22 µF). | -| **C78** (VEH5V bulk) | 220uF/10V electrolítico 85 °C (C2827940) | **220 µF/16 V polímero** | C881921 | A-09: 2 000 h @ 85 °C ≈ 1 año en gabinete de puerto; mismo can 6.3×7.7. | +| 100k ×9 (Rgs1, R87, R20, R56, Ren1, Rfreq1, R85…) y 100k/1% ×3 (R60, R52, R54) | C103211 (5 %, 702 en stock) / C14675 | mismos valores | **C25803** (1 %, básica, 10.8 M) | H-02b: 2.3× de cobertura para 30 tarjetas y una bobina Extended menos. | +| **U17** | AMS1117-3.3 (C6186) | **TLV1117LV33DCYR** (mismo SOT-223, pin 1 GND / 2 OUT / 3 IN) | C15578 | A-08: en batería LDO_IN = VSYS 4.60–4.99 V − D12 ≈ 4.25–4.65 V y el AMS1117 necesita ≈ 4.3 V (dropout 1.0–1.3 V) → 3V3 marginal justo en respaldo; Iq 5–11 mA vs 0.1 mA. Vin máx 5.5 V ≥ SD-15B 5.57 − D12. Comprobar ≥ 10 µF cerámico en 3V3 (C23 22 µF). | +| **C78** (VEH5V bulk) | 220uF/10V electrolítico 85 °C (C2827940) | **220 µF/16 V polímero** | C881921 | A-09: 2 000 h @ 85 °C ≈ 1 año en gabinete de puerto; mismo can 6.3×7.7. | No aplicados a V5.6 (decisión de Leo, o v6.1): A-11 (R56 a 3V3 → cargador OFF por defecto sin MCU; es un cambio de red), D-09 (100 k en la base de Q5), crystales Y1/Y3 HC-49 (E-03/D-02, V5.5 funciona en campo), A-13 (PFO al MCU: no hay pin libre en V5). -Añadido (Ethernet, E-04, respaldo `11-before-eth-caps`): **C90** (TOCAP, U11.20) 10 µF → **4.7 µF** (C1779) y **C91** (1V2O, U11.22) 4.7 µF → **10 nF** (C1710, básica), ambos 0805 sin cambio de huella — valores que exige el datasheet W5500 v1.0.2 («must be connected to a 4.7uF / 10nF capacitor»). Y1/C95/C96 (E-03) se dejan: el diseño de referencia de WIZnet usa las mismas cargas de 18 pF; sólo verificar con frecuencímetro si el enlace falla. +Añadido (Ethernet, E-04, respaldo `11-before-eth-caps`): **C90** (TOCAP, U11.20) 10 µF → **4.7 µF** (C1779) y **C91** (1V2O, U11.22) 4.7 µF → **10 nF** (C1710, básica), ambos 0805 sin cambio de huella — valores que exige el datasheet W5500 v1.0.2 («must be connected to a 4.7uF / 10nF capacitor»). Y1/C95/C96 (E-03) se dejan: el diseño de referencia de WIZnet usa las mismas cargas de 18 pF; sólo verificar con frecuencímetro si el enlace falla. + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-28 | Informe de la ECO aplicada al esquemático; addenda tarde (fusión en `hbox-watchdog-v5`, decisiones cerradas) y noche (hallazgos de la auditoría v6, stock JLC). | +| 1.1 | 2026-09-29 | Hashes, respaldos e incidentes de herramienta movidos al anexo de trazabilidad. Sin cambios técnicos. | + +??? note "Anexo técnico — trazabilidad" + **SHA-256 de V5.5 as-fabbed (antes = después):** + + ``` + 8e4d3a7ba7a209367c2dda2394ca7809b5b68078a388f74b8052ddda2aab518c hbox-watchdog-v5.kicad_dru + 6f7ca0e414cc2af321c4909ac3491ee71300f6fa61507e179a46e945eb5c39b0 hbox-watchdog-v5.kicad_pcb + 8f0158affbf93516649a1317572a687f330ad7f009cd4f4d8345324d8506c04c hbox-watchdog-v5.kicad_prl + 8253ad14bea362c534bdb0895477899863bd3c843173751b0af3d253448a8fe3 hbox-watchdog-v5.kicad_pro + 8926a7c0ec4785f9accaf6d005ae7a57b43099dd5d772b945782fdc3751c843f hbox-watchdog-v5.kicad_sch + ``` + + `hbox-watchdog-v56.kicad_sch` final: `08219316517f636564fd0ae0804a30213d10fbc048b6446dd61216b312f81d2e`. + + Respaldos intermedios. Respaldos de cada estado intermedio (nada se borró): `kicad/_to_delete/v56-work-20260928/` — `00-copied-from-v5`, `01-nc-removed-renamed`, `02-u7-replaced`, `03-values`, `04-new-parts`, `05-metadata`, `06-junction-nc-pintypes`, `07-final` (`.kicad_sch`), netlists `v55-baseline.xml`, `v6-reference.xml`, `step02/04/06.xml`, `hbox-watchdog-v56-netlist.xml`, y `padnet-dump.txt`. No se ejecutó `git` en la carpeta. + + **Notas de proceso (antes §6.9–6.10):** + + 9. Formato del archivo: las herramientas KiCad-MCP reescriben `hbox-watchdog-v56.kicad_sch` en formato compacto (una línea por elemento, 657 kB frente a 813 kB). Es válido para KiCad 10 (kicad-cli lo lee para ERC/netlist/PDF) y al guardar desde eeschema vuelve al formato canónico; solo afecta a la legibilidad del diff en git. Las 238 instancias `(project …)` se renombraron de `hbox-watchdog-v5` a `hbox-watchdog-v56` (lo que haría *Save As*). + 10. Incidente detectado y corregido durante el trabajo: la herramienta MCP `replace_schematic_component` eliminó la unión (junction) en (39.37, 76.2) — Rig2.1 quedaba sin `IGN_SENSE`. Se detectó con el diff de netlist, se restauró la junction con su UUID original y el diff final es limpio. La misma herramienta añadió 5 junctions en cruces de cables ya conectados (722.63,130.81 · 722.63,69.85 · 699.77,240.03 · 446.786,301.498 · 509.524,287.02); se verificó que no alteran ninguna net. + +## 11. Addendum 29-sep — correcciones para que *Update PCB* funcione en cualquier máquina + +| Problema | Corrección | +|---|---| +| JP2 apuntaba a `Jumper:SolderJumper-3_P1.3mm_Bridged23_RoundedPad1.0x1.5mm`, que **no existe** en la librería estándar de KiCad → *Update PCB* no podía cargar la huella. | Nueva huella de proyecto `Drogheda:SolderJumper-3_P1.3mm_Bridged23_RoundedPad1.0x1.5mm` (copia de la Bridged12 con el puente de cobre en 2-3 y `net_tie_pad_groups "2,3"`); JP2 la usa. | +| `sym-lib-table` tenía la ruta absoluta `/Users/leo/…/Drogheda-sym.kicad_sym` → en otra máquina la librería no aparece. | Ruta relativa `${KIPRJMOD}/Drogheda-sym.kicad_sym`. | +| P15/P16 con huella `…MC_1,5_3-G-3.5…_Vertical` (no existe) y J10 con el apodo `Connector_RJ45` (no configurado): en la PCB ya estaban `…_Horizontal` y `Connector_RJ:`. | Esquemático igualado a la PCB. | +| R85 (100 k, ETH_FREQ de U12) tenía LCSC `C15051` (el MP1584EN) — error de la sustitución masiva. | R85 → `C25803`. | + +Verificación: ERC 1 error / 28 avisos, todos preexistentes (ninguno de huella no encontrada en piezas nuevas); netlist contra V5.5 = exactamente los 65 pines previstos; *Update PCB* de prueba sobre una copia: las 19 huellas nuevas cargan, 0 sin resolver. diff --git a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md index c0b0dde..73332c7 100644 --- a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md +++ b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md @@ -1,279 +1,292 @@ -# EinarBoard v6 — Full pre-fab audit (v1.0) - -!!! warning "Tarjeta: EinarBoard **v6** — proyecto KiCad `hbox-watchdog-v6` (EN DISEÑO, no se pide todavía) / Board: v6, in design" - Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios. - - -**Owner:** Leo (Helgen Technologies) · **Date:** 2026-09-28 · **Version:** 1.0 · **Author:** Claude for Leo (four block auditors, two independent verifiers, one editor) · **Scope:** read-only audit of `03-Architecture-Hardware/kicad/hbox-watchdog-v6.*`; no KiCad file was modified · **Brief:** `2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_Agent-Brief_v1.0.md` · **Companion:** `pinmap-v6.md` - -**Design snapshot (KiCad 10.0.4, board file version 20260206).** Hashes identical at the start and end of evidence collection (20:22–20:58 UTC). - -| File | sha256 | mtime (UTC) | -|---|---|---| -| `hbox-watchdog-v6.kicad_sch` | `ecee9fed851f02e74074340bf8361bced7c385b2502b19c368861b9851c2f04a` | 2026-09-25 20:27:58 | -| `hbox-watchdog-v6.kicad_pcb` | `6ddec80d1c15f79e69dff6c1a850b28345a5d826389f79cee8c61998240b36bf` | 2026-09-28 17:36:06 | -| `hbox-watchdog-v6.kicad_pro` | `25c57f3936b96a4e31cb5947668c172d318189258d6a5d2fa34d230df8958028` | 2026-09-28 20:16:16 | -| `hbox-watchdog-v6.kicad_dru` | `47538e6cfadc0c53421ff59dadabc0e7f0ad5f11d9e2250618728788080aca1a` | 2026-09-25 18:57:05 | - -Board: 4 layers, 140.0 × 100.0 mm, 312 footprints, 1999 track segments, 210 vias, 205/205 multi-pad nets routed. Schematic: one flat sheet, 328 netlist symbols. - +--- +title: "EinarBoard v6 — Auditoría completa pre-fabricación" +tags: [project-drogheda, hardware, einarboard, v6, auditoria, kicad, pcb] +date: 2026-09-28 +project: Project Drogheda +author: Helgen Technologies --- -## Resumen ejecutivo (ES) +# EinarBoard v6 — Auditoría completa pre-fabricación -1. **¿Listo para ordenar? NO.** Condiciones para ordenar: (a) cerrar los **10 Blockers** (valores y campos de BOM, dos piezas nuevas —TPS2552 con sus 2 resistencias y un SMBJ33A—, reglas de diseño y layout); (b) Leo confirma el patrón de agujeros de la placa base (**G-01** es Blocker si se reutilizan los standoffs de la V5.5); (c) DRC limpio con las reglas corregidas de **F-01** como puerta de salida; (d) los **19 Major** hechos o con razón escrita (escala del brief: «deben cambiar antes de pedir salvo razón escrita»). Ningún hallazgo cambia la arquitectura de la v6. -2. **Conteo tras fusiones** (81 hallazgos activos; 36 IDs absorbidos en su hallazgo primario; mapa completo en el Apéndice D): +!!! warning "EinarBoard v6 (`hbox-watchdog-v6`): en diseño, no se pide" + Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios. + +Responsable: Leo (Helgen Technologies) · Fecha: 2026-09-28 · Versión: 1.0 · Autor: Helgen Technologies (elaborado con asistencia de Claude) · Alcance: auditoría de solo lectura de `03-Architecture-Hardware/kicad/hbox-watchdog-v6.*`; no se modificó ningún archivo de KiCad · Brief: `2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_Agent-Brief_v1.0.md` · Documento compañero: [Pin map MCU v6](v6-pinmap.md) · Lo que se aplicó de esta auditoría: [Informe de cambios al esquemático v6](v6-cambios-esquematico.md) + +**Snapshot del diseño (KiCad 10.0.4, versión de archivo de tarjeta 20260206).** Tarjeta: 4 capas, 140.0 × 100.0 mm, 312 huellas, 1999 segmentos de pista, 210 vías, 205/205 nets multi-pad ruteadas. Esquemático: una hoja plana, 328 símbolos en la netlist. Hashes de los archivos en el anexo de trazabilidad. + +## Resumen ejecutivo + +1. ¿Listo para ordenar? NO. Condiciones para ordenar: (a) cerrar los **10 Bloqueantes** (valores y campos de BOM, dos piezas nuevas —TPS2552 con sus 2 resistencias y un SMBJ33A—, reglas de diseño y layout); (b) Leo confirma el patrón de agujeros de la placa base (**G-01** es Bloqueante si se reutilizan los standoffs de la V5.5); (c) DRC limpio con las reglas corregidas de **F-01** como puerta de salida; (d) los **19 Mayor** hechos o con razón escrita (escala del brief: «deben cambiar antes de pedir salvo razón escrita»). Ningún hallazgo cambia la arquitectura de la v6. +2. Conteo tras fusiones (81 hallazgos activos; 36 IDs absorbidos en su hallazgo primario; mapa completo en el Apéndice D): | Severidad | Número | |---|---| - | Blocker | **10 + 1 condicional** (G-01) | - | Major | **19** (incluye V1-01, nuevo del verificador 1, y H-02b, separado de H-02) | - | Minor | **30** | - | Note | **21** | + | Bloqueante | **10 + 1 condicional** (G-01) | + | Mayor | **19** (incluye V1-01, nuevo del verificador 1, y H-02b, separado de H-02) | + | Menor | **30** | + | Nota | **21** | -3. **Blockers**, una línea cada uno (orden de riesgo): - 1. **A-01** — La rama `/24V` sin fusible alimenta U20 y U2; **D21** (Schottky 30 V) ve 23.5 V inversos con el bus cargando a 28.8 V y 30.7 V a 36 V → fuga con riesgo de embalamiento térmico a 45–60 °C; un D21 en corto pone 24 V sin fusible en `MAIN5V`. Arreglo: U20 solo desde `MAIN5V` (sin D20/D21), ventilador desde `VEH5V` (bloque U2 DNP), **F2 3 A (C206912) delante de D10**. - 2. **F-02** — La ignición cruda `/IGN_IN` (9–36 V) corre **106.5 mm en In2 a 0.221 mm de `/VEH5V`**: la geometría del corto del 23-jul otra vez, en el mismo par de redes. Arreglo: Rig1 a ≤ 3 mm de cobre de P1.3 + SMBJ33A (C224019). - 3. **F-01** — Netclasses rotas (solo `/24V_IN` resuelve a HV24) y una regla de 0.15 mm que anula todas las demás: el «DRC 0 errores» no puede ver ningún espaciado de 24 V. Arreglo: tabla de netclasses + `.kicad_dru` corregido por verify_2 (incluye la regla HV24↔HV24). - 4. **H-04** — U25 lleva `LCSC Part` = C2071691 (AP64350, 40 V) además de `LCSC` = C524806; Fabrication Toolkit lee `LCSC Part` primero → se ensamblaría un buck de 40 V detrás de un clamp de 53 V. Arreglo: borrar el campo en la tarjeta y en la huella de librería. - 5. **C-01** — El bias de la antena GNSS no tiene limitador (u-blox exige ≥ 10 Ω); un coaxial en corto supera los 300 mA abs. máx. de VCC_RF y los 400 mA de L21. Arreglo: **TPS2552DBVR (C46506)**, 75 mA, ANT_OFF → EN̅, FAULT̅ → ANT_SHORT_N. - 6. **B-03** — La ESD de la antena LTE (D28 ESD9L5.0, unidireccional 5 V) conduce en cada semiciclo negativo (−0.6 V) y avalancha en GSM (14.1 V pico). Arreglo: **PESD0402-240 (C1975527)**, bidireccional 24 V, o DNP (la PGB1010402KR propuesta solo aguanta 12 VDC). - 7. **A-02** — Cobre y placement del LTC4040 repiten la lección F5: `/SW_BAT` 0.5 mm × 11.9 mm con cuellos de 0.25/0.30 mm, EP de U6 sin vías, L6 a 8.65 mm, C30/C31 a 7.2/6.2 mm, sensor más cercano a 71.4 mm. Arreglo: layout (pour ≥ 2 mm, 9 vías en el EP, re-agrupar). - 8. **A-03** — R50 = 825 Ω programa 2.42 A (2.28–2.57 A; la esquina alta supera los 2.5 A máx. del LTC4040). Arreglo: **1.43 kΩ (C22840)** → ≥ 1.316 A en todas las esquinas (1.5 k de la ECO da 1.254 A mínimo). - 9. **H-01** — U15 MAX3232**ESE** (SO-16 angosto) sobre huella SOIC-16W (filas a 9.3 mm): no se puede soldar. Es una **regresión de la v6** (la V5.5 se fabricó con la huella angosta). Arreglo: `SOIC-16_3.9x9.9mm` en esquemático y PCB, mantener C15846. +3. Bloqueantes, una línea cada uno (orden de riesgo): + 1. **A-01** — La rama `/24V` sin fusible alimenta U20 y U2; **D21** (Schottky 30 V) ve 23.5 V inversos con el bus cargando a 28.8 V y 30.7 V a 36 V → fuga con riesgo de embalamiento térmico a 45–60 °C; un D21 en corto pone 24 V sin fusible en `MAIN5V`. Arreglo: U20 solo desde `MAIN5V` (sin D20/D21), ventilador desde `VEH5V` (bloque U2 DNP), **F2 3 A (C206912) delante de D10**. + 2. **F-02** — La ignición cruda `/IGN_IN` (9–36 V) corre **106.5 mm en In2 a 0.221 mm de `/VEH5V`**: la geometría del corto del 23-jul otra vez, en el mismo par de redes. Arreglo: Rig1 a ≤ 3 mm de cobre de P1.3 + SMBJ33A (C224019). + 3. **F-01** — Netclasses rotas (solo `/24V_IN` resuelve a HV24) y una regla de 0.15 mm que anula todas las demás: el «DRC 0 errores» no puede ver ningún espaciado de 24 V. Arreglo: tabla de netclasses + `.kicad_dru` corregido por verify_2 (incluye la regla HV24↔HV24). + 4. **H-04** — U25 lleva `LCSC Part` = C2071691 (AP64350, 40 V) además de `LCSC` = C524806; Fabrication Toolkit lee `LCSC Part` primero → se ensamblaría un buck de 40 V detrás de un clamp de 53 V. Arreglo: borrar el campo en la tarjeta y en la huella de librería. + 5. **C-01** — El bias de la antena GNSS no tiene limitador (u-blox exige ≥ 10 Ω); un coaxial en corto supera los 300 mA abs. máx. de VCC_RF y los 400 mA de L21. Arreglo: **TPS2552DBVR (C46506)**, 75 mA, ANT_OFF → EN̅, FAULT̅ → ANT_SHORT_N. + 6. **B-03** — La ESD de la antena LTE (D28 ESD9L5.0, unidireccional 5 V) conduce en cada semiciclo negativo (−0.6 V) y avalancha en GSM (14.1 V pico). Arreglo: **PESD0402-240 (C1975527)**, bidireccional 24 V, o DNP (la PGB1010402KR propuesta solo aguanta 12 VDC). + 7. **A-02** — Cobre y placement del LTC4040 repiten la lección F5: `/SW_BAT` 0.5 mm × 11.9 mm con cuellos de 0.25/0.30 mm, EP de U6 sin vías, L6 a 8.65 mm, C30/C31 a 7.2/6.2 mm, sensor más cercano a 71.4 mm. Arreglo: layout (pour ≥ 2 mm, 9 vías en el EP, re-agrupar). + 8. **A-03** — R50 = 825 Ω programa 2.42 A (2.28–2.57 A; la esquina alta supera los 2.5 A máx. del LTC4040). Arreglo: **1.43 kΩ (C22840)** → ≥ 1.316 A en todas las esquinas (1.5 k de la ECO da 1.254 A mínimo). + 9. **H-01** — U15 MAX3232ESE (SO-16 angosto) sobre huella SOIC-16W (filas a 9.3 mm): no se puede soldar. Es una **regresión de la v6** (la V5.5 se fabricó con la huella angosta). Arreglo: `SOIC-16_3.9x9.9mm` en esquemático y PCB, mantener C15846. 10. **H-02** — Sin stock para ningún pedido: U10 (15 pzas) y R53 (6 pzas, mínimo JLC 20). R53 fija el voltaje del boost de respaldo. Arreglo: U10 → **C57156** (SC16IS752, idéntico en I²C), R53 → **C177479**. - 11. *(condicional)* **G-01** — Falta el agujero MH4 de la V5.5 en (193.2, 90.3) (L6 queda encima) y los agujeros de la abrazadera del disipador (MH11 + pareja). Blocker si la placa base de la V5.5 se reutiliza; si se re-taladra, pasa a documentación. -4. **Majors (19):** V1-01 polaridad inversa derrota a D10 (F2 primero) · A-04 R121 57.6 k (5.32 V) · F-12 vías de tierra/EP/módulos/costura (69 vías vs ≥ 400) · F-03 lazos calientes de U25/U20/U12 · B-02 bulk de VBAT_MODEM → polímero + compensación 113 k/6.8 nF/56 pF · D-01 U24 retro-alimenta al F9P apagado · E-01 3V3_ETH conmutable (PD2) · F-51 sin temperatura de cargador ni de celda en el MCU · A-05 presupuesto en batería + CSYS · A-07 cuellos del camino de 5 V en capas internas · F-06 líneas RF (LTE 22 mm en In1) · F-05 In1 no es plano (19 % vacío, 1572 mm de pistas) · C-04 Q1 del F9P a 9 mm de la antena LTE · G-02 J9 sin ESD · A-08 AMS1117 → TLV1117LV33 · A-09 C78 electrolítico 85 °C → polímero · C-02 rampa de VCC del F9P → TPS7A2033 · E-02 ETH_RST 4.7 k · H-02b stock a verificar el día del pedido. -5. **Qué puede esperar a v6.1:** los 30 Minor y los 21 Note (§5 parte 3), más lo que los hallazgos difieren explícitamente: K1 → enlace directo PC6 → DIN_4G (B-13), PoE (E-07), U12 → AP64350 (A-20a), P3 → JST-XH-5 si se rehace el arnés (G-07). Ningún Major está marcado como diferible; E-02 baja a Minor si se adopta E-01. -6. **Firmware (FW 0.7.x, `board_v6.h`), lo más importante:** (1) `board_v6.h` desde `pinmap-v6.md`; un binario V5.6 en v6 choca en PC3 contra RTK_STAT; (2) primeras líneas de `setup()`: PC10, PC8, PC11, PA1, PB5, **PA15**, PA6, PB0 en LOW; (3) secuencia de ventana: F9P asentado → BAT ≥ 3.4 V → W5500 apagado → `MODEM_PWR_EN` → PWRKEY → STATUS; **nunca PC10 alto con PA1 bajo** hasta tener D-01 en hardware; (4) en batería: **solo LTE** (`AT+CNMP=38`), `ETH_PWR_EN` = 0, K1 solo en la ventana TX; (5) `V5_PFI` 4.60 → **4.40 V**, VDDA desde VREFINT, ignición por ADC con umbrales; (6) `$PHID` (UID 96 bits) por el enlace del módem al conectar y cada 5 min; (7) inhibición térmica con `tcell` (PC5) y `tchg` (TMP102 0x48), campos nuevos al final de `$PHLG`. -7. **Costo:** BOM ≈ **US$131.98 por tarjeta (20 pzas) / US$124.40 (100 pzas)**, **+US$91.30 / +US$90.14 vs V5.6**; el 94 % del delta es ZED-F9P + A7670SA, que sustituyen al simpleRTK2B y al 4G NTRIP Master externos, así que el costo de sistema casi seguro baja (precios pendientes de Leo). 79 partes Extended = US$237 de setup por pedido. Los arreglos agregan pocas piezas; U10 → SC16IS752 ahorra US$3.52 y U2 DNP retira el MP1584 (US$2.21 a 100 pzas). + 11. *(condicional)* **G-01** — Falta el agujero MH4 de la V5.5 en (193.2, 90.3) (L6 queda encima) y los agujeros de la abrazadera del disipador (MH11 + pareja). Bloqueante si la placa base de la V5.5 se reutiliza; si se re-taladra, pasa a documentación. +4. **Mayores (19):** V1-01 polaridad inversa derrota a D10 (F2 primero) · A-04 R121 57.6 k (5.32 V) · F-12 vías de tierra/EP/módulos/costura (69 vías vs ≥ 400) · F-03 lazos calientes de U25/U20/U12 · B-02 bulk de VBAT_MODEM → polímero + compensación 113 k/6.8 nF/56 pF · D-01 U24 retro-alimenta al F9P apagado · E-01 3V3_ETH conmutable (PD2) · F-51 sin temperatura de cargador ni de celda en el MCU · A-05 presupuesto en batería + CSYS · A-07 cuellos del camino de 5 V en capas internas · F-06 líneas RF (LTE 22 mm en In1) · F-05 In1 no es plano (19 % vacío, 1572 mm de pistas) · C-04 Q1 del F9P a 9 mm de la antena LTE · G-02 J9 sin ESD · A-08 AMS1117 → TLV1117LV33 · A-09 C78 electrolítico 85 °C → polímero · C-02 rampa de VCC del F9P → TPS7A2033 · E-02 ETH_RST 4.7 k · H-02b stock a verificar el día del pedido. +5. **Qué puede esperar a v6.1:** los 30 Menor y los 21 Nota (§5 parte 3), más lo que los hallazgos difieren explícitamente: K1 → enlace directo PC6 → DIN_4G (B-13), PoE (E-07), U12 → AP64350 (A-20a), P3 → JST-XH-5 si se rehace el arnés (G-07). Ningún Mayor está marcado como diferible; E-02 baja a Menor si se adopta E-01. +6. **Firmware (FW 0.7.x, `board_v6.h`), lo más importante:** (1) `board_v6.h` desde `pinmap-v6.md`; un binario V5.6 en v6 choca en PC3 contra RTK_STAT; (2) primeras líneas de `setup()`: PC10, PC8, PC11, PA1, PB5, **PA15**, PA6, PB0 en LOW; (3) secuencia de ventana: F9P asentado → BAT ≥ 3.4 V → W5500 apagado → `MODEM_PWR_EN` → PWRKEY → STATUS; **nunca PC10 alto con PA1 bajo** hasta tener D-01 en hardware; (4) en batería: **solo LTE** (`AT+CNMP=38`), `ETH_PWR_EN` = 0, K1 solo en la ventana TX; (5) `V5_PFI` 4.60 → **4.40 V**, VDDA desde VREFINT, ignición por ADC con umbrales; (6) `$PHID` (UID 96 bits) por el enlace del módem al conectar y cada 5 min; (7) inhibición térmica con `tcell` (PC5) y `tchg` (TMP102 0x48), campos nuevos al final de `$PHLG`. +7. Costo: BOM ≈ **US$131.98 por tarjeta (20 pzas) / US$124.40 (100 pzas)**, **+US$91.30 / +US$90.14 vs V5.6**; el 94 % del delta es ZED-F9P + A7670SA, que sustituyen al simpleRTK2B y al 4G NTRIP Master externos, así que el costo de sistema casi seguro baja (precios pendientes de Leo). 79 partes Extended = US$237 de setup por pedido. Los arreglos agregan pocas piezas; U10 → SC16IS752 ahorra US$3.52 y U2 DNP retira el MP1584 (US$2.21 a 100 pzas). + +## Índice del cuerpo del informe + +El cuerpo del informe está en inglés (documento de ingeniería de 1 500 líneas). Vocabulario: *Blocker* = Bloqueante · *Major* = Mayor · *Minor* = Menor · *Note* = Nota · *finding* = hallazgo · *footprint* = huella · *track* = pista · *via* = vía · *pour* = vertido de cobre · *EP* = pad térmico. + +| Sección | Qué contiene | +|---|---| +| [1. Method and evidence](#1-method-and-evidence) | Cómo se verificó cada hallazgo (verificado / verificado con corrección / no verificado de forma independiente), convenciones de medida y formato de los hallazgos. | +| [2. Findings and pass/fail by block](#2-findings-and-passfail-by-block-brief-4-a-4-j) | Los 81 hallazgos activos, por bloque: 4-A árbol de potencia, 4-B módem, 4-C GNSS, 4-D MCU, 4-E Ethernet, 4-F layout/EMC, 4-G conectores, 4-H BOM, 4-I requisitos, 4-J ERC/DRC. Cada uno con evidencia, consecuencia, corrección (valor + LCSC o instrucción de layout) y esfuerzo. | +| [3. Requirements traceability](#3-4-i-requirements-traceability-r1r5-eco-0) | Trazabilidad contra los requisitos R1–R5 de la ECO: qué cumple la v6 tal como está dibujada y qué necesita cambios. | +| [4. Pin map (condensed)](#4-4-d-pin-map-condensed-6464-pins) | Los 64 pines del MCU en forma condensada; la versión completa es el [pin map v6](v6-pinmap.md). | +| [5. Ranked change list](#5-ranked-change-list) | Los cambios ordenados por riesgo: Bloqueantes, Mayores y lo que puede esperar a v6.1. | +| [6. Layout instruction list for Michelle](#6-layout-instruction-list-for-michelle) | Instrucciones de layout numeradas (L-1 … L-33) con distancias y anchos. | +| [7. Schematic change list](#7-schematic-change-list-for-the-apply-phase-brief-7) | Lista de cambios de esquemático por severidad; es lo que aplicó el [informe de cambios v6](v6-cambios-esquematico.md). | +| [8. Firmware requirements](#8-firmware-requirements-board_v6h-fw-07x) | Requisitos para `board_v6.h` / FW 0.7.x: pines, secuencias, umbrales, telemetría. | +| [9. Verdict](#9-verdict) | Veredicto: condiciones para ordenar. | +| [10. Inputs needed from Leo](#10-inputs-needed-from-leo) | Decisiones pendientes de Leo. | +| [11. Appendices](#11-appendices) | Apéndice A resumen de ERC y B resumen de DRC. (Índice de evidencia y mapa de IDs: anexo de trazabilidad al final.) | + +## Cuerpo del informe (inglés) ---- ## 1. Method and evidence -- **Evidence pack** (read-only, built 2026-09-28 20:22–21:00 UTC): on the Mac at `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/` (KiCad exports) with the parsed tree under `evidence/pack/`; container copy `/home/claude/v6audit/`. It holds kicad-cli netlists (v6, V5.6, V5.5 as-fabbed), ERC (166 items) and DRC (283 items) outputs, BOM, CPL, IPC-D-356, per-layer PDF/SVG plots, pad/track/via/zone tables parsed from the board file, 64-pin MCU table, per-IC pin tables, 24 V clearance sweep, schematic↔PCB sync report and the firmware pin/constant tables. Self-checks: parsed pads match KiCad's IPC-356 on 1191/1191 pads (worst Δ 1.77 µm, 0 net mismatches); counts match KiCad on every table. Index in Appendix C. -- **Attachments kept with this report** (tracked in the repo, unlike the gitignored evidence folder): `03-Architecture-Hardware/2026-09-28_v6-audit-attachments/`. It holds `erc_summary.md`, `drc_summary.md`, `ercdrc_classified.csv` (all 166 ERC + 283 DRC items with their classification), `bom_check.csv` (152 BOM lines: stock, package, rating), the two verification files `verify_1.md` / `verify_2.md`, and the four block findings files these IDs come from. -- **Audit:** four block auditors, each writing one findings file: power + temperature/fan (A-xx, F-51…F-53), modem/GNSS/Ethernet (B-, C-, E-xx), MCU pin map + connectors (D-, G-xx, plus `pinmap-v6.md`), layout/EMC + BOM + ERC/DRC (F-, H-, J-xx, plus `bom_check.csv` and `ercdrc_classified.csv`). - **Verification:** two independent verifiers re-derived every item the auditors rated Blocker or Major (plus D-02) from primary sources with their own scripts: verify_1 = power and RF (24 items), verify_2 = layout, BOM, MCU and connectors (22 items). Outcome: 0 refuted; 13 confirmed with corrections; 6 severity changes; 1 new Major (V1-01). **Where auditor and verifier disagree, this report uses the verifier.** Where the two verifiers merged overlapping items differently, the merge is reconciled into one item and the choice is stated (§2 per item, Appendix D). Minor and Note items outside that list are marked *not independently verified*. -- **Tools:** KiCad 10.0.4 through the KiCad MCP server on Leo's Mac (kicad-cli ERC, DRC, netlist, BOM, CPL, IPC-356, courtyard check, zone query); Python `sexpdata` S-expression parsers (`scripts/kisexp.py`; no numeric regex on KiCad files); `shapely` for pad-edge distances, copper islands, plane voids and clearances; a 2-D finite-difference field solver and closed-form (Hammerstad–Jensen, Wadell CPWG) impedance checks; an averaged current-mode model of U20 for burst droop (verify_1 `vbat_sim.py`); JLC parts DB snapshot (`get_jlcpcb_part`, `search_jlcpcb_parts`) for stock, package and price; the Fabrication-Toolkit source (GitHub) for BOM field priority; manufacturer datasheets cited per finding (LTC4040 Rev B, TPS54360B, AP64350 DS41976 Rev 5-2, MP1584, AMS1117, PMEG3050EP, SIMCom A7672X/A7670X HD V1.03 and A7670 HD V1.00, u-blox ZED-F9P-04B DS UBX-21044850 R05 and IM UBX-18010802, AP2112, TPS7A20, TPS2552, W5500 v1.0.2, ST DS10314 Rev 7 / RM0383, Maxim MAX3232 19-0273 Rev 10, Sunlord MWSA, Nexperia 74LVC1G125, IPC-2221B, ISO 7637-2 / ISO 16750-2 levels via TI TIDUC41). -- **Conventions:** "edge" = pad copper to pad copper; "ctr" = pad centre. Stackup for impedance and inner-layer current: JLC04161H-7628 (L1–L2 prepreg 0.2104 mm, εr 4.4; outer 1 oz; inner 0.5 oz by default), because the board file carries the generic 3 × 0.48 mm stack. Island and void analysis uses the zone fills stored in the file; refill before fab and re-check. +- **Conventions:** "edge" = pad copper to pad copper; "ctr" = pad centre. Stackup for impedance and inner-layer current: JLC04161H-7628 (L1–L2 prepreg 0.2104 mm, εr 4.4; outer 1 oz; inner 0.5 oz by default), because the board file carries the generic 3 × 0.48 mm stack. Island and void analysis uses the zone fills stored in the file; refill before fab and re-check. - **Finding format:** ID · severity · block; *Absorbs* (merged IDs); *Status* (verified / verified-with-correction / not independently verified); Evidence; Consequence; Fix (value + LCSC, or layout instruction with numbers); Effort (schematic-only / layout / both / firmware-only). Original working-file IDs are kept. **V1-01** is the new Major raised by verify_1; **H-02b** is the part of H-02 that verify_2 re-rated Major. +--- + --- ## 2. Findings and pass/fail by block (brief §4-A … §4-J) -### 4-A Power tree (24 V → 5 V → rails), lessons F4 / F5 / F7 +### 4-A Power tree (24 V → 5 V → rails), lessons F4 / F5 / F7 #### (a) Findings -##### A-01 · Blocker · Unfused `/24V` branch feeds U20 and U2; D21 (30 V Schottky) reverse-stressed toward thermal runaway -*Absorbs:* B-01, H-05, F-53, F-08, A-06 (U2 row). *Status:* verified-with-correction (verify_1: the Blocker rests on D21 and the unfused branch, not on U2; ISO 7637-2:2011 pulse 2a is +50 V, not +112 V; D32 also clamps `/24V` for fast transients). +##### A-01 · Blocker · Unfused `/24V` branch feeds U20 and U2; D21 (30 V Schottky) reverse-stressed toward thermal runaway +*Absorbs:* B-01, H-05, F-53, F-08, A-06 (U2 row). *Status:* verified-with-correction (verify_1: the Blocker rests on D21 and the unfused branch, not on U2; ISO 7637-2:2011 pulse 2a is +50 V, not +112 V; D32 also clamps `/24V` for fast transients). - **Evidence:** - - Netlist: `/24V_IN` = {P1.1, D10, F2.1, Q10.D}. Fused branch F2 (0154002.DR 2 A, C206910) → `/VIN_FUSED` → Q23 → `/VIN_PROT` = {D32 SMCJ33A, C149–C151, U25.2, R124}. **Unfused branch** Q10.S → `/24V` = {C10, C11, C22, Ren1, U2.7, D20.A, DzG1.K}. `/VIN_MODEM` = {D20.K, D21.K, C127, C128, U20.2}; D21.A = `/MAIN5V` (LTC4040 VSYS, after RS1 and Q7). - - Clamping (verify_1): for µs–ms transients `/24V` is clamped by D10 and by D32 through Q10 (65 mΩ) → F2 (≈ 0.05 Ω) → Q23 (65 mΩ), ≈ 0.2 Ω. Neither TVS conducts at 36 V DC (VBR 36.7–40.6 V). "Outside the D32 clamp" holds only for DC and for fusing. - - Ratings: D21 PMEG3050EP VR 30 V, IR 2.6 mA typ / 8 mA max at 30 V, 25 °C, datasheet thermal-runaway warning, Rth(j-a) 60–200 K/W. U2 MP1584 VIN 4.5–28 V, **30 V abs max**, EN abs max 6 V (EN = 24V·20k/120k = 6.0 V at 36 V). U20 AP64350 42 V DC / 45 V for 400 ms. D20/Dbk1 SS34 40 V. - - Stress: 28.8 V charging bus → D21 VR = **23.5 V** (78 % VRRM), U2 0.8 V over its operating max. 36 V / 60 min (ISO 16750-2) → D21 VR **30.7 V > 30 V**, U2 6 V over abs max. Pulse 2a (+50 V, 2 Ω) → D10 ∥ D32 clamp ≈ 42–45 V: U20 at its 45 V/400 ms limit, D21 ≈ 37–40 V reverse (avalanche for 50 µs). Suppressed load dump 58 V: everything on `/24V` over rating (A-19). - - D21 runaway (verify_1): IR ≈ 1.8 mA at 23.5 V/25 °C; stability needs PR < 0.12 W at 120 K/W (0.24 W at 60 K/W). 45 °C board → IR ≈ 7 mA, PR ≈ 0.17 W; 60 °C → ≈ 20 mA, 0.48 W. **Runaway is plausible at port-box temperatures.** - - Layout: the `/24V` 1.5 mm track runs on In1 at 0.15 mm from the In1 GND pour, and a `/24V` via sits 0.15 mm from the B.Cu `/3V3` pour (`clearance_24v.md`). - - Field weighting: on V5.x P1 = 24 V fed only U2 and no U2 failure is recorded, so U2 alone would rate Major. D21, U20/D20 on the unfused branch and the D21-short mode are new on v6. -- **Consequence:** a D21 that fails short puts `/24V` onto `/MAIN5V` with no fuse (LTC4040 VSYS 6 V abs max, U21, U17, F9P, MCU). A short of C10/C22/U2/U20/D22 draws vehicle-fuse current through 0.3–1.5 mm board copper (fire and harness risk). + - Netlist: `/24V_IN` = {P1.1, D10, F2.1, Q10.D}. Fused branch F2 (0154002.DR 2 A, C206910) → `/VIN_FUSED` → Q23 → `/VIN_PROT` = {D32 SMCJ33A, C149–C151, U25.2, R124}. **Unfused branch** Q10.S → `/24V` = {C10, C11, C22, Ren1, U2.7, D20.A, DzG1.K}. `/VIN_MODEM` = {D20.K, D21.K, C127, C128, U20.2}; D21.A = `/MAIN5V` (LTC4040 VSYS, after RS1 and Q7). + - Clamping (verify_1): for µs–ms transients `/24V` is clamped by D10 and by D32 through Q10 (65 mΩ) → F2 (≈ 0.05 Ω) → Q23 (65 mΩ), ≈ 0.2 Ω. Neither TVS conducts at 36 V DC (VBR 36.7–40.6 V). "Outside the D32 clamp" holds only for DC and for fusing. + - Ratings: D21 PMEG3050EP VR 30 V, IR 2.6 mA typ / 8 mA max at 30 V, 25 °C, datasheet thermal-runaway warning, Rth(j-a) 60–200 K/W. U2 MP1584 VIN 4.5–28 V, **30 V abs max**, EN abs max 6 V (EN = 24V·20k/120k = 6.0 V at 36 V). U20 AP64350 42 V DC / 45 V for 400 ms. D20/Dbk1 SS34 40 V. + - Stress: 28.8 V charging bus → D21 VR = **23.5 V** (78 % VRRM), U2 0.8 V over its operating max. 36 V / 60 min (ISO 16750-2) → D21 VR **30.7 V > 30 V**, U2 6 V over abs max. Pulse 2a (+50 V, 2 Ω) → D10 ∥ D32 clamp ≈ 42–45 V: U20 at its 45 V/400 ms limit, D21 ≈ 37–40 V reverse (avalanche for 50 µs). Suppressed load dump 58 V: everything on `/24V` over rating (A-19). + - D21 runaway (verify_1): IR ≈ 1.8 mA at 23.5 V/25 °C; stability needs PR < 0.12 W at 120 K/W (0.24 W at 60 K/W). 45 °C board → IR ≈ 7 mA, PR ≈ 0.17 W; 60 °C → ≈ 20 mA, 0.48 W. **Runaway is plausible at port-box temperatures.** + - Layout: the `/24V` 1.5 mm track runs on In1 at 0.15 mm from the In1 GND pour, and a `/24V` via sits 0.15 mm from the B.Cu `/3V3` pour (`clearance_24v.md`). + - Field weighting: on V5.x P1 = 24 V fed only U2 and no U2 failure is recorded, so U2 alone would rate Major. D21, U20/D20 on the unfused branch and the D21-short mode are new on v6. +- **Consequence:** a D21 that fails short puts `/24V` onto `/MAIN5V` with no fuse (LTC4040 VSYS 6 V abs max, U21, U17, F9P, MCU). A short of C10/C22/U2/U20/D22 draws vehicle-fuse current through 0.3–1.5 mm board copper (fire and harness risk). - **Fix (single topology, verify_1 conflict (a)):** - 1. U20 from `/MAIN5V` only: delete D20 and the 48 mm `/VIN_MODEM` run; merge `/VIN_MODEM` into `/MAIN5V` in copper (no D21). - 2. Fan from `/VEH5V`: DNP U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21; bridge JP1 by changing its footprint to `Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm` (no BOM part; A-01's 0 Ω 0805 alternative has no LCSC in the findings). Fan stays dark on battery, as today (ECO D4). + 1. U20 from `/MAIN5V` only: delete D20 and the 48 mm `/VIN_MODEM` run; merge `/VIN_MODEM` into `/MAIN5V` in copper (no D21). + 2. Fan from `/VEH5V`: DNP U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21; bridge JP1 by changing its footprint to `Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm` (no BOM part; A-01's 0 Ω 0805 alternative has no LCSC in the findings). Fan stays dark on battery, as today (ECO D4). 3. `/24V` then has no loads: DNP Q10, DzG1, Rrp1, C10, C11, C22. Q23 remains the single reverse-polarity FET. - 4. **F2 → 3 A 0154003.DR, LCSC C206912** (stock 2217), placed electrically **ahead of D10** (V1-01). 4 A C206914 (stock 778) only if sustained 9 V operation is required. - 5. Prerequisites: A-07 (widen `/VEH5V`, `/VIN_SW`, `/MAIN5V`), A-04 (R121 57.6 k), A-05 (CSYS), F-03 (U20 Cin 2 × 22 µF C86817 + 1 × 220 µF C881921 at U20.2). - - Numbers with the fix (verify_1): U20 input at MAIN5V ≈ 5.25 V, η 0.9: LTE 23 dBm 0.54 A, GSM 2 A **1.61 A**, 2.8 A peak 2.25 A. RS1 path while charging at 1.43 k plus LTE TX: 0.35 + 0.54 + 1.19 = **2.08 A** (< 2.35–2.65 A limit); during a GSM burst the charger is throttled to 0.4–0.7 A (system load has priority, LTC4040 DS p.16). U25 ≤ 2.65 A + 0.3 A fan = **2.95 A** vs 3.5 A rating; overshoot inductor peak ≈ 3.8 A < 4.5 A switch limit. D34 ≈ 0.8 W (≈ 1.0 W as-is). On battery VIN(U20) rises 4.42 → 4.72 V and MAIN5V current at 2 A GSM falls to ≈ 2.0–2.13 A. F2 current 0.74 A at 24 V, 1.48 A at 12 V, 1.97 A at 9 V. PFI margin with 57.6 k: 5.176 V − ≈ 0.2 V droop = 4.98 V vs 4.54 V PFI max (0.44 V; 0.13 V as-is). - - Rejected: D20 → `/VIN_PROT` with a 60 V Schottky (PMEG6045ETPX C552943) keeps U20 at 0–3 V margin to the pulse-2a clamp and costs ≈ 0.15 V of battery headroom. The JSMSEMI clone C53114006 (H-05) has unknown leakage. + 4. **F2 → 3 A 0154003.DR, LCSC C206912** (stock 2217), placed electrically **ahead of D10** (V1-01). 4 A C206914 (stock 778) only if sustained 9 V operation is required. + 5. Prerequisites: A-07 (widen `/VEH5V`, `/VIN_SW`, `/MAIN5V`), A-04 (R121 57.6 k), A-05 (CSYS), F-03 (U20 Cin 2 × 22 µF C86817 + 1 × 220 µF C881921 at U20.2). + - Numbers with the fix (verify_1): U20 input at MAIN5V ≈ 5.25 V, η 0.9: LTE 23 dBm 0.54 A, GSM 2 A **1.61 A**, 2.8 A peak 2.25 A. RS1 path while charging at 1.43 k plus LTE TX: 0.35 + 0.54 + 1.19 = **2.08 A** (< 2.35–2.65 A limit); during a GSM burst the charger is throttled to 0.4–0.7 A (system load has priority, LTC4040 DS p.16). U25 ≤ 2.65 A + 0.3 A fan = **2.95 A** vs 3.5 A rating; overshoot inductor peak ≈ 3.8 A < 4.5 A switch limit. D34 ≈ 0.8 W (≈ 1.0 W as-is). On battery VIN(U20) rises 4.42 → 4.72 V and MAIN5V current at 2 A GSM falls to ≈ 2.0–2.13 A. F2 current 0.74 A at 24 V, 1.48 A at 12 V, 1.97 A at 9 V. PFI margin with 57.6 k: 5.176 V − ≈ 0.2 V droop = 4.98 V vs 4.54 V PFI max (0.44 V; 0.13 V as-is). + - Rejected: D20 → `/VIN_PROT` with a 60 V Schottky (PMEG6045ETPX C552943) keeps U20 at 0–3 V margin to the pulse-2a clamp and costs ≈ 0.15 V of battery headroom. The JSMSEMI clone C53114006 (H-05) has unknown leakage. - Record for Leo: U20 then sits upstream of the P5 cutoff. The ECO §A intent ("the cutoff switches everything off") still holds functionally, because cutting SYS5V unpowers the MCU and R113 holds U20 EN low (µA shutdown current). - **Effort:** both. ##### A-02 · Blocker · LTC4040 (U6) copper, EP vias and placement repeat lesson F5 -*Absorbs:* F-13 (U6 EP part), the In1-under-U6 part of A-14. *Status:* verified (verify_1 re-measured edge-to-edge; caveat: the H0008 thermal-cycling causality is weak, because the ≈ 1.3 A is inferred from an OCV slope and 0.75 W at bench ambient needs θJA > 150 °C/W to reach OT. The Blocker stands on lesson F5, ECO D2 "Obligatorio" and the datasheet layout guidance). +*Absorbs:* F-13 (U6 EP part), the In1-under-U6 part of A-14. *Status:* verified (verify_1 re-measured edge-to-edge; caveat: the H0008 thermal-cycling causality is weak, because the ≈ 1.3 A is inferred from an OCV slope and 0.75 W at bench ambient needs θJA > 150 °C/W to reach OT. The Blocker stands on lesson F5, ECO D2 "Obligatorio" and the datasheet layout guidance). - **Evidence (verify_1):** | Item | v6 | Target (ECO D2) | |---|---|---| - | `/SW_BAT` U6.21/22 → L6.1 | 6 F.Cu segments, **0.5 mm × 11.89 mm** + 0.25 mm and 0.30 mm necks (0.50 mm long) at the pins, 0 vias; ≈ 12.2 mΩ | ≥ 2 mm polygon | - | `/BAT_PLUS` P3 → L6.2 | 1.0 mm × 21.27 mm | ≥ 1.5 mm + vias | - | `/BAT_PLUS` L6.2 → U6.23 | 1.0 mm, then 0.5 mm × 10.49 mm, then 0.25 mm × 5.38 mm | Kelvin from L6.2/CBAT | - | U6 EP (2.65 × 3.65 mm) | **0 vias**; nearest GND via 3.04 mm edge at (191.6, 104.3) | ≥ 9 vias | - | L6.1 ↔ U6.21/22 | **8.65 mm** | ≤ 5 mm | - | C30 / C31 → U6.6 (VIN) | **7.20 / 6.18 mm** | ≤ 3 mm | - | C32 / C33 / C34 → U6.1 (VSYS) | 3.90 / 3.44 / 4.74 mm, behind 0.30 mm pin necks | ≤ 2 mm, pour | - | C35 (CBAT) → L6.2 | 20.2 mm edge | at L6.2 / BAT pin | + | `/SW_BAT` U6.21/22 → L6.1 | 6 F.Cu segments, **0.5 mm × 11.89 mm** + 0.25 mm and 0.30 mm necks (0.50 mm long) at the pins, 0 vias; ≈ 12.2 mΩ | ≥ 2 mm polygon | + | `/BAT_PLUS` P3 → L6.2 | 1.0 mm × 21.27 mm | ≥ 1.5 mm + vias | + | `/BAT_PLUS` L6.2 → U6.23 | 1.0 mm, then 0.5 mm × 10.49 mm, then 0.25 mm × 5.38 mm | Kelvin from L6.2/CBAT | + | U6 EP (2.65 × 3.65 mm) | **0 vias**; nearest GND via 3.04 mm edge at (191.6, 104.3) | ≥ 9 vias | + | L6.1 ↔ U6.21/22 | **8.65 mm** | ≤ 5 mm | + | C30 / C31 → U6.6 (VIN) | **7.20 / 6.18 mm** | ≤ 3 mm | + | C32 / C33 / C34 → U6.1 (VSYS) | 3.90 / 3.44 / 4.74 mm, behind 0.30 mm pin necks | ≤ 2 mm, pour | + | C35 (CBAT) → L6.2 | 20.2 mm edge | at L6.2 / BAT pin | | GND clusters | U6 EP, C32, C30/C31, C35 on a 252 mm² F.Cu cluster with 5 vias; C33 on the 3611 mm² cluster | one solid EP island | - | In1 under U6 | split by 7 `/VFB_BST` segments + `/IGATE` + `/CHRG_*` | solid ≥ 5 mm around U6/L6 | - | Temperature sensor ≤ 10 mm | none; U3 SHT40 at **71.4 mm** | ≤ 10 mm (F-51) | + | In1 under U6 | split by 7 `/VFB_BST` segments + `/IGATE` + `/CHRG_*` | solid ≥ 5 mm around U6/L6 | + | Temperature sensor ≤ 10 mm | none; U3 SHT40 at **71.4 mm** | ≤ 10 mm (F-51) | - - IPC-2221 external rise: `/SW_BAT` 0.5 mm → **+32 °C at 2.42 A**, **+80 °C at 3.6 A** backup battery current; `/BAT_PLUS` 1.0 mm → +25 °C at 3.6 A. The same current at 2.0 mm gives +8 °C. - - LTC4040 has over-temperature shutdown only, no charge-current thermal regulation (DS p.5 Note 2). IC loss ≈ 0.75 W at 2.42 A; as-built θJA ≈ 60–70 °C/W (the 43 °C/W datasheet figure assumes a via array). -- **Consequence:** R5 (≥ 1.3 A without thermal cycling) is not met by layout; in continuous backup the boost node and the VSYS necks run hot. This repeats V5.5 lesson F5 (ECO D2 / EMC 🔴 #1, #2). -- **Fix (layout, Michelle; §6 L-11 … L-16):** L6 pad 1 ≤ 5 mm from U6.21/22; C32/C33/C34 ≤ 2 mm from VSYS pins 1/24 with GND on the EP copper; C30/C31 ≤ 3 mm from pin 6; C35 (or an extra 22 µF 0805, C86817) at L6.2 next to BAT pin 23. `/SW_BAT` F.Cu polygon ≥ 2 mm wide, starting after the combined pin 21+22 fan-out (QFN 0.5 mm pitch), kept compact. `/BAT_PLUS` P3 → L6.2 ≥ 1.5 mm F.Cu or pour (≥ 4 vias per transition if routed inner). `/MAIN5V` pour from pins 1/24 over C32–C34 to the Q7 drain, ≥ 2 mm, no 0.3/0.5 mm necks. EP: **≥ 9 vias, 3 × 3 at 0.9 × 1.2 mm pitch, 0.3/0.6 mm** (fit checked by verify_2; A-02 proposed 3 × 4 = 12 at 0.9 mm), pad `zone_connect` solid. In1/In2 GND solid for ≥ 5 mm around U6/L6 (reroute `/VFB_BST`, `/IGATE`, see A-14). Place the F-51 TMP102 between U6 and L6. + - IPC-2221 external rise: `/SW_BAT` 0.5 mm → **+32 °C at 2.42 A**, **+80 °C at 3.6 A** backup battery current; `/BAT_PLUS` 1.0 mm → +25 °C at 3.6 A. The same current at 2.0 mm gives +8 °C. + - LTC4040 has over-temperature shutdown only, no charge-current thermal regulation (DS p.5 Note 2). IC loss ≈ 0.75 W at 2.42 A; as-built θJA ≈ 60–70 °C/W (the 43 °C/W datasheet figure assumes a via array). +- **Consequence:** R5 (≥ 1.3 A without thermal cycling) is not met by layout; in continuous backup the boost node and the VSYS necks run hot. This repeats V5.5 lesson F5 (ECO D2 / EMC 🔴 #1, #2). +- **Fix (layout, Michelle; §6 L-11 … L-16):** L6 pad 1 ≤ 5 mm from U6.21/22; C32/C33/C34 ≤ 2 mm from VSYS pins 1/24 with GND on the EP copper; C30/C31 ≤ 3 mm from pin 6; C35 (or an extra 22 µF 0805, C86817) at L6.2 next to BAT pin 23. `/SW_BAT` F.Cu polygon ≥ 2 mm wide, starting after the combined pin 21+22 fan-out (QFN 0.5 mm pitch), kept compact. `/BAT_PLUS` P3 → L6.2 ≥ 1.5 mm F.Cu or pour (≥ 4 vias per transition if routed inner). `/MAIN5V` pour from pins 1/24 over C32–C34 to the Q7 drain, ≥ 2 mm, no 0.3/0.5 mm necks. EP: **≥ 9 vias, 3 × 3 at 0.9 × 1.2 mm pitch, 0.3/0.6 mm** (fit checked by verify_2; A-02 proposed 3 × 4 = 12 at 0.9 mm), pad `zone_connect` solid. In1/In2 GND solid for ≥ 5 mm around U6/L6 (reroute `/VFB_BST`, `/IGATE`, see A-14). Place the F-51 TMP102 between U6 and L6. - **Effort:** layout. -##### A-03 · Blocker · R50 = 825 Ω programs 2.42 A; set 1.43 kΩ to hold ≥ 1.3 A at every corner +##### A-03 · Blocker · R50 = 825 Ω programs 2.42 A; set 1.43 kΩ to hold ≥ 1.3 A at every corner *Status:* verified (verify_1). Lesson F4; ECO §C; R5. -- **Evidence:** RPROG = 2000 V / ICHG (hPROG 2500, VPROG 0.8 V), ±5 % (950/1000/1050 mA at 2 k), maximum charge current 2.5 A (LTC4040 DS p.3, 10, 18). +- **Evidence:** RPROG = 2000 V / ICHG (hPROG 2500, VPROG 0.8 V), ±5 % (950/1000/1050 mA at 2 k), maximum charge current 2.5 A (LTC4040 DS p.3, 10, 18). - | R50 (1 %) | ICHG min | nom | max | + | R50 (1 %) | ICHG min | nom | max | |---|---|---|---| - | 825 Ω (as-is, C50214) | 2.280 A | 2.424 A | **2.571 A** (above the 2.5 A maximum) | - | **1.43 kΩ** | **1.316 A** | 1.399 A | 1.483 A | - | 1.47 kΩ | 1.280 A | 1.361 A | 1.443 A | - | 1.5 kΩ (ECO C, C22843) | 1.254 A | 1.333 A | 1.414 A | + | 825 Ω (as-is, C50214) | 2.280 A | 2.424 A | **2.571 A** (above the 2.5 A maximum) | + | **1.43 kΩ** | **1.316 A** | 1.399 A | 1.483 A | + | 1.47 kΩ | 1.280 A | 1.361 A | 1.443 A | + | 1.5 kΩ (ECO C, C22843) | 1.254 A | 1.333 A | 1.414 A | - - H0008 (V5.5, same R50): ≈ 1.3 A average, 8.5 h to termination, pulsed charge. At 1.4 A the IC loss drops ≈ 3× ((2.42/1.4)²). Input side at 1.4 A: 1.4·4.0/(0.9·5.3) ≈ 1.17 A + 0.35 A logic = 1.52 A < RS1 limit, so the charger stops being input-limited. The Li-ion safety timer (4.25 h) counts in CV only. -- **Consequence:** at 825 Ω v6 repeats the H0008 behaviour, runs U25 at the RS1 limit (≈ 2.5 A) whenever charging, and exceeds the IC's 2.5 A maximum at the top corner. -- **Fix:** **R50 → 1.43 kΩ 1 % 0603, LCSC C22840** (Extended, stock 4965). 1.43 k is the largest E96 value with a worst-case minimum ≥ 1.3 A; it costs ≈ 10 % more I²R than 1.5 k. 1.5 kΩ (C22843, Basic) keeps V5.6 commonality but meets R5 only nominally. + - H0008 (V5.5, same R50): ≈ 1.3 A average, 8.5 h to termination, pulsed charge. At 1.4 A the IC loss drops ≈ 3× ((2.42/1.4)²). Input side at 1.4 A: 1.4·4.0/(0.9·5.3) ≈ 1.17 A + 0.35 A logic = 1.52 A < RS1 limit, so the charger stops being input-limited. The Li-ion safety timer (4.25 h) counts in CV only. +- **Consequence:** at 825 Ω v6 repeats the H0008 behaviour, runs U25 at the RS1 limit (≈ 2.5 A) whenever charging, and exceeds the IC's 2.5 A maximum at the top corner. +- **Fix:** **R50 → 1.43 kΩ 1 % 0603, LCSC C22840** (Extended, stock 4965). 1.43 k is the largest E96 value with a worst-case minimum ≥ 1.3 A; it costs ≈ 10 % more I²R than 1.5 k. 1.5 kΩ (C22843, Basic) keeps V5.6 commonality but meets R5 only nominally. - **Effort:** schematic-only. ##### V1-01 · Major · Reverse polarity is defeated by the D10 position (new) *Status:* raised by verify_1 ("Anything else" #1); not cross-checked by a second verifier. - **Evidence:** D10 (C224019, SMBJ33A) and D32 (C699039, SMCJ33A) are unidirectional parts drawn with a bidirectional A1/A2 symbol, pad 1 (cathode) on the + rail. D10 sits on `/24V_IN`, ahead of F2 and ahead of the Q10/Q23 reverse-polarity FETs. - **Consequence:** a reversed P1 forward-biases D10 straight across the harness with no board fuse; the SMB part carries harness-fuse current until it fails, typically short. -- **Fix:** F2 electrically first: **P1 → F2 → D10 ∥ Q23** (D10 moves from `/24V_IN` to the F2 output). A reversed connection then blows the socketed Nano2 fuse. ISO 7637-2 pulse 1 (24 V: −600 V, 50 Ω, 1 ms, ≈ 12 A, I²t ≈ 0.07 A²s) is ≈ 7 % of a 3 A Nano2's I²t. A-01 listed this as optional; verify_1 makes it mandatory. Same F2 part as A-01 (C206912). +- **Fix:** F2 electrically first: **P1 → F2 → D10 ∥ Q23** (D10 moves from `/24V_IN` to the F2 output). A reversed connection then blows the socketed Nano2 fuse. ISO 7637-2 pulse 1 (24 V: −600 V, 50 Ω, 1 ms, ≈ 12 A, I²t ≈ 0.07 A²s) is ≈ 7 % of a 3 A Nano2's I²t. A-01 listed this as optional; verify_1 makes it mandatory. Same F2 part as A-01 (C206912). - **Effort:** both. -##### A-04 · Major · U25 set-point 5.00 V (4.87–5.14 V) sits below the charge governor's start line; set R121 = 57.6 k +##### A-04 · Major · U25 set-point 5.00 V (4.87–5.14 V) sits below the charge governor's start line; set R121 = 57.6 k *Status:* verified (verify_1). Lesson F7; ECO §A/§C. -- **Evidence:** Vout = Vref·(1 + R121/R122), TPS54360B Vref 0.792/0.800/0.808 V (−40…150 °C), 1 % resistors, R122 = 10.2 k. +- **Evidence:** Vout = Vref·(1 + R121/R122), TPS54360B Vref 0.792/0.800/0.808 V (−40…150 °C), 1 % resistors, R122 = 10.2 k. - | R121 | min | nom | max | vs CHG_RAIL_ON 5.05 V | vs LTC4040 VIN max 5.5 V | + | R121 | min | nom | max | vs CHG_RAIL_ON 5.05 V | vs LTC4040 VIN max 5.5 V | |---|---|---|---|---|---| | 53.6 k (as-is) | **4.871** | **5.004** | 5.140 | nominal below the start line | ok | - | 56.2 k | 5.069 | 5.208 | 5.350 | low corner +0.02 V | ok | - | **57.6 k** | **5.176** | **5.318** | **5.463** | ≥ 0.13 V above | 37 mV margin | - | 57.6 k, 0.1 % | 5.256 | 5.318 | 5.380 | ok | 120 mV margin | + | 56.2 k | 5.069 | 5.208 | 5.350 | low corner +0.02 V | ok | + | **57.6 k** | **5.176** | **5.318** | **5.463** | ≥ 0.13 V above | 37 mV margin | + | 57.6 k, 0.1 % | 5.256 | 5.318 | 5.380 | ok | 120 mV margin | - - LTC4040 PFI (R51 270 k / R52 100 k, 1.17/1.19/1.21 V, +30 mV hysteresis): **falling 4.27 / 4.40 / 4.54 V, rising 4.38 / 4.51 / 4.66 V**. Firmware `V5_PFI` 4.60 V is stale (it came from the old 287 k). - - ADC reads 5V_SENSE (R7/R8 10 k/10 k) against VDDA = the 3V3 LDO (±1.5 %, lower on battery, A-08): thresholds carry ±2–3 % unless calibrated with VREFINT. + - LTC4040 PFI (R51 270 k / R52 100 k, 1.17/1.19/1.21 V, +30 mV hysteresis): **falling 4.27 / 4.40 / 4.54 V, rising 4.38 / 4.51 / 4.66 V**. Firmware `V5_PFI` 4.60 V is stale (it came from the old 287 k). + - ADC reads 5V_SENSE (R7/R8 10 k/10 k) against VDDA = the 3V3 LDO (±1.5 %, lower on battery, A-08): thresholds carry ±2–3 % unless calibrated with VREFINT. - **Consequence:** with FW 0.6.0 thresholds most v6 units never start charging (R5 fails); margins are thin under modem bursts once the modem moves to MAIN5V (A-01). -- **Fix:** **R121 → 57.6 k 1 % 0603, LCSC C23082** (Extended, stock 3673). Top corner 5.463 V is 37 mV under the 5.5 V VIN operating maximum; load-release overshoot is brief and far below abs max (verify_1). 0.1 % parts optional (no 0.1 % LCSC found in the DB). Firmware: `V5_PFI` = 4.40 V, VREFINT calibration. +- **Fix:** **R121 → 57.6 k 1 % 0603, LCSC C23082** (Extended, stock 3673). Top corner 5.463 V is 37 mV under the 5.5 V VIN operating maximum; load-release overshoot is brief and far below abs max (verify_1). 0.1 % parts optional (no 0.1 % LCSC found in the DB). Firmware: `V5_PFI` = 4.40 V, VREFINT calibration. - **Effort:** schematic-only (+ firmware constants). -##### A-05 · Major · Battery-mode budget: 2.25–2.33 A on MAIN5V during a GSM burst; CSYS ≈ 57–69 µF effective -*Absorbs:* nothing (its fix 1 is E-01, fix 3 is in F-03, fix 4 is A-01). *Status:* verified-with-correction (verify_1: the 93–97 % is against the datasheet's guaranteed 2.5 A from ≥ 3.2 V; the hard limit is ILIM(BST) ≥ 5.5 A, which leaves ≈ 30–40 % switch headroom at 3.5 V; a 2.8 A GSM peak at a 3.2 V battery reaches ≈ 5.4 A, i.e. the limit). -- **Evidence:** what stays alive on battery: BAT → L6 → U6 boost → `/MAIN5V` (VSYS 0.8·(1 + 499k/100k) = **4.60 / 4.79 / 4.99 V**); from MAIN5V: D21 → U20 → modem (ahead of P5; EN held low by R113 when the MCU is unpowered), and P5 → `/SYS5V` → D12 → U17 (3V3), U12 (3V3_ETH, EN tied to VIN = always on), F1 → Q1 → U21 → F9P, K1 coil. CSYS = C32/C33 47 µF 16 V X7R 1210 + C34 10 µF 50 V = 104 µF nominal, **≈ 57–69 µF effective** at 4.8 V, below the 75 µF transient guidance (DS p.21). Worst-case budget below (assumptions: logic 90/120 mA, F9P 100/85 mA, W5500 132 mA at 3.3 V via U12 η 0.85, K1 30 mA, modem 2.0 A GSM peak / 0.7 A LTE / 20 mA idle, U20 η 0.88, boost η 0.88, battery 3.5 V). -- **Consequence:** as-is, a cold modem registration or a GSM burst with everything else on sits at 91–97 % of the guaranteed boost rating with no allowance for > 2 A bursts or an aged pack. Hitting the limit droops VSYS: U17 drops out first (A-08), then VBAT_MODEM < 3.4 V, the V5.5 "modem dark on battery" symptom by another mechanism. R1/R3 need the fixes plus firmware sequencing. -- **Fix:** add **2 × 47 µF 16 V X7R 1210, LCSC C5440143**, at U6 VSYS pins 1/24 (≈ 113 µF effective). Plus: E-01 (gate 3V3_ETH), A-01 (no D21, +0.30 V at U20), A-07 (MAIN5V ≥ 1.5–2 mm to U20), F-03 (U20 Cin), and mandatory firmware sequencing (§8: LTE-only on battery, W5500 off, F9P settled before the modem, refuse modem cold start below VBAT ≈ 3.4 V). +##### A-05 · Major · Battery-mode budget: 2.25–2.33 A on MAIN5V during a GSM burst; CSYS ≈ 57–69 µF effective +*Absorbs:* nothing (its fix 1 is E-01, fix 3 is in F-03, fix 4 is A-01). *Status:* verified-with-correction (verify_1: the 93–97 % is against the datasheet's guaranteed 2.5 A from ≥ 3.2 V; the hard limit is ILIM(BST) ≥ 5.5 A, which leaves ≈ 30–40 % switch headroom at 3.5 V; a 2.8 A GSM peak at a 3.2 V battery reaches ≈ 5.4 A, i.e. the limit). +- **Evidence:** what stays alive on battery: BAT → L6 → U6 boost → `/MAIN5V` (VSYS 0.8·(1 + 499k/100k) = **4.60 / 4.79 / 4.99 V**); from MAIN5V: D21 → U20 → modem (ahead of P5; EN held low by R113 when the MCU is unpowered), and P5 → `/SYS5V` → D12 → U17 (3V3), U12 (3V3_ETH, EN tied to VIN = always on), F1 → Q1 → U21 → F9P, K1 coil. CSYS = C32/C33 47 µF 16 V X7R 1210 + C34 10 µF 50 V = 104 µF nominal, **≈ 57–69 µF effective** at 4.8 V, below the 75 µF transient guidance (DS p.21). Worst-case budget below (assumptions: logic 90/120 mA, F9P 100/85 mA, W5500 132 mA at 3.3 V via U12 η 0.85, K1 30 mA, modem 2.0 A GSM peak / 0.7 A LTE / 20 mA idle, U20 η 0.88, boost η 0.88, battery 3.5 V). +- **Consequence:** as-is, a cold modem registration or a GSM burst with everything else on sits at 91–97 % of the guaranteed boost rating with no allowance for > 2 A bursts or an aged pack. Hitting the limit droops VSYS: U17 drops out first (A-08), then VBAT_MODEM < 3.4 V, the V5.5 "modem dark on battery" symptom by another mechanism. R1/R3 need the fixes plus firmware sequencing. +- **Fix:** add **2 × 47 µF 16 V X7R 1210, LCSC C5440143**, at U6 VSYS pins 1/24 (≈ 113 µF effective). Plus: E-01 (gate 3V3_ETH), A-01 (no D21, +0.30 V at U20), A-07 (MAIN5V ≥ 1.5–2 mm to U20), F-03 (U20 Cin), and mandatory firmware sequencing (§8: LTE-only on battery, W5500 off, F9P settled before the modem, refuse modem cold start below VBAT ≈ 3.4 V). - **Effort:** both. -**Worst-case current budget (A-05, reproduced by verify_1).** On 24 V, as-is topology, charging with R50 825 Ω / with 1.43 k: +**Worst-case current budget (A-05, reproduced by verify_1).** On 24 V, as-is topology, charging with R50 825 Ω / with 1.43 k: | Rail | Cold start | Steady | Modem TX burst | |---|---|---|---| -| /3V3 (U17 out) | 0.120 A | 0.090 A | 0.090 A | -| /3V3_GNSS | 0.100 A | 0.085 A | 0.085 A | -| /3V3_ETH | 0.132 A | 0.132 A | 0.132 A | -| /VBAT_MODEM | 2.0 A pk (0.3 A avg) | 0.024 A | 2.0 A pk | -| /VIN_MODEM @ 23.5 V (from /24V) | 0.37 A pk | 0.005 A | 0.37 A pk | -| /SYS5V | 0.35 A | 0.31 A | 0.31 A | -| /VEH5V (U25 out; charger held off 120 s at boot) | 0.36 A | **2.50 A (RS1-limited) / 1.48 A** | 2.50 / 1.48 A | -| P1 total @ 24 V | 0.50 A | 0.65 / 0.43 A | **1.02 / 0.80 A** | -| P1 total @ 9 V | — | 1.73 / 1.1 A | **2.8 / 2.2 A** | +| /3V3 (U17 out) | 0.120 A | 0.090 A | 0.090 A | +| /3V3_GNSS | 0.100 A | 0.085 A | 0.085 A | +| /3V3_ETH | 0.132 A | 0.132 A | 0.132 A | +| /VBAT_MODEM | 2.0 A pk (0.3 A avg) | 0.024 A | 2.0 A pk | +| /VIN_MODEM @ 23.5 V (from /24V) | 0.37 A pk | 0.005 A | 0.37 A pk | +| /SYS5V | 0.35 A | 0.31 A | 0.31 A | +| /VEH5V (U25 out; charger held off 120 s at boot) | 0.36 A | **2.50 A (RS1-limited) / 1.48 A** | 2.50 / 1.48 A | +| P1 total @ 24 V | 0.50 A | 0.65 / 0.43 A | **1.02 / 0.80 A** | +| P1 total @ 9 V | — | 1.73 / 1.1 A | **2.8 / 2.2 A** | -On battery, as-is topology (VSYS 4.79 V, VIN_MODEM ≈ 4.4 V after D21): +On battery, as-is topology (VSYS 4.79 V, VIN_MODEM ≈ 4.4 V after D21): | Rail | Cold start (all on, modem registering) | Steady (idle) | GSM TX burst | LTE TX | |---|---|---|---|---| -| /VIN_MODEM | 1.96 A pk | 0.024 A | 1.96 A pk | 0.69 A | -| /SYS5V (logic + F9P + W5500 + K1) | 0.36 A | 0.32 A | 0.32 A | 0.32 A | -| **/MAIN5V = boost load** | **2.33 A (93 % of 2.5 A)** | 0.34 A | **2.28 A (91 %)** | 1.01 A (40 %) | -| same at VSYS low corner 4.60 V | **2.43 A (97 %)** | 0.34 A | 2.38 A (95 %) | 1.04 A | -| Battery current (3.5 V, η 0.88) | 3.62 A | 0.53 A | 3.55 A | 1.57 A | -| with fixes + FW sequencing (W5500 off, K1 off, F9P deferred, D21 bridged) | **1.95 A (78 %)** | 0.15 A | 1.95 A | 0.85 A | -| with fixes + LTE-only on battery | ≈ 1.2 A (48 %) | 0.15 A | — | 0.85 A | +| /VIN_MODEM | 1.96 A pk | 0.024 A | 1.96 A pk | 0.69 A | +| /SYS5V (logic + F9P + W5500 + K1) | 0.36 A | 0.32 A | 0.32 A | 0.32 A | +| **/MAIN5V = boost load** | **2.33 A (93 % of 2.5 A)** | 0.34 A | **2.28 A (91 %)** | 1.01 A (40 %) | +| same at VSYS low corner 4.60 V | **2.43 A (97 %)** | 0.34 A | 2.38 A (95 %) | 1.04 A | +| Battery current (3.5 V, η 0.88) | 3.62 A | 0.53 A | 3.55 A | 1.57 A | +| with fixes + FW sequencing (W5500 off, K1 off, F9P deferred, D21 bridged) | **1.95 A (78 %)** | 0.15 A | 1.95 A | 0.85 A | +| with fixes + LTE-only on battery | ≈ 1.2 A (48 %) | 0.15 A | — | 0.85 A | -verify_1 reproduction: MAIN5V **2.25 A** during a 2 A GSM burst (modem 1.89 A at 4.42 V input, SYS5V ≈ 0.36 A); battery **3.42 A at 3.5 V**, 3.24 A at 3.7 V. Cold-start statement for the modem: B-16 (§4-B). +verify_1 reproduction: MAIN5V **2.25 A** during a 2 A GSM burst (modem 1.89 A at 4.42 V input, SYS5V ≈ 0.36 A); battery **3.42 A at 3.5 V**, 3.24 A at 3.7 V. Cold-start statement for the modem: B-16 (§4-B). -##### A-07 · Major · 5 V power path runs the full LTC4040 input current through inner 0.5/0.8 mm tracks -*Absorbs:* J-02 copper on `/VEH5V`, `/VIN_SW`, `/MAIN5V` (J-02 residual stays Minor). *Status:* verified (verify_1; verify_2 adds that JLC04161H inner copper is 0.5 oz by default, which makes the inner runs worse: R ≈ 27 mΩ, 0.17 W over 13.6 mm). -- **Evidence (widest-path bottlenecks):** `/VEH5V` L22.2 → RS1.1: **In1 0.5 mm × 13.6 mm** (+ In2 1.0 mm × 66.6 mm), 2.5 A while charging → IPC-2221 internal +168 °C (IPC-2152 ≈ half). `/VIN_SW` RS1.2 → Q7: **In2 0.8 mm × 23.6 mm**, +77 °C at 2.5 A. `/MAIN5V` Q7 → U6.24/C32: F.Cu 0.5 mm × 13.3/6.6 mm, +26/+32 °C; U6.1 → C32 0.30 mm neck (A-02). `/MAIN5V` Q7 → D21: 1.0 mm, 40 mm. RS1 Kelvin: CLN sense (U6.7) taps 1.66 mm down the 0.8 mm trace from RS1.2 (+1.0 mΩ) → effective input limit 2.14–2.41 A instead of 2.35–2.65 A (conservative, unintended). verify_2 J-02: under-capacity length `/MAIN5V` 111 mm, `/VEH5V` 102 mm, `/VIN_SW` 26 mm. +##### A-07 · Major · 5 V power path runs the full LTC4040 input current through inner 0.5/0.8 mm tracks +*Absorbs:* J-02 copper on `/VEH5V`, `/VIN_SW`, `/MAIN5V` (J-02 residual stays Minor). *Status:* verified (verify_1; verify_2 adds that JLC04161H inner copper is 0.5 oz by default, which makes the inner runs worse: R ≈ 27 mΩ, 0.17 W over 13.6 mm). +- **Evidence (widest-path bottlenecks):** `/VEH5V` L22.2 → RS1.1: **In1 0.5 mm × 13.6 mm** (+ In2 1.0 mm × 66.6 mm), 2.5 A while charging → IPC-2221 internal +168 °C (IPC-2152 ≈ half). `/VIN_SW` RS1.2 → Q7: **In2 0.8 mm × 23.6 mm**, +77 °C at 2.5 A. `/MAIN5V` Q7 → U6.24/C32: F.Cu 0.5 mm × 13.3/6.6 mm, +26/+32 °C; U6.1 → C32 0.30 mm neck (A-02). `/MAIN5V` Q7 → D21: 1.0 mm, 40 mm. RS1 Kelvin: CLN sense (U6.7) taps 1.66 mm down the 0.8 mm trace from RS1.2 (+1.0 mΩ) → effective input limit 2.14–2.41 A instead of 2.35–2.65 A (conservative, unintended). verify_2 J-02: under-capacity length `/MAIN5V` 111 mm, `/VEH5V` 102 mm, `/VIN_SW` 26 mm. - **Consequence:** hot inner copper under U6/Q7 at charge current, extra drop, heat shared with the U6 area. A-01 adds more hours at the RS1 limit, so A-07 is a prerequisite of A-01. -- **Fix (layout):** `/VEH5V` L22.2 → RS1.1 on F.Cu ≥ 2 mm or a pour (move L22/C153/C154 toward RS1), or ≥ 2 mm inner with ≥ 4 vias per transition. `/VIN_SW` on F.Cu ≥ 2 mm, Q7 ≤ 5 mm from RS1/U6. `/MAIN5V` per A-02, and ≥ 1.5 mm all the way to U20. Route U6.7 (CLN) and U6.6 (VIN) sense from the inner edges of the RS1 pads (Kelvin). Either order 1 oz inner copper or widen inner runs by 1.65× (verify_2). +- **Fix (layout):** `/VEH5V` L22.2 → RS1.1 on F.Cu ≥ 2 mm or a pour (move L22/C153/C154 toward RS1), or ≥ 2 mm inner with ≥ 4 vias per transition. `/VIN_SW` on F.Cu ≥ 2 mm, Q7 ≤ 5 mm from RS1/U6. `/MAIN5V` per A-02, and ≥ 1.5 mm all the way to U20. Route U6.7 (CLN) and U6.6 (VIN) sense from the inner edges of the RS1 pads (Kelvin). Either order 1 oz inner copper or widen inner runs by 1.65× (verify_2). - **Effort:** layout. -##### A-08 · Major · U17 AMS1117-3.3 drops out on battery and sets a 25–55 mW sleep floor +##### A-08 · Major · U17 AMS1117-3.3 drops out on battery and sets a 25–55 mW sleep floor *Status:* verified (verify_1). -- **Evidence:** LDO_IN on battery = VSYS 4.60–4.99 V − D12 (≈ 0.3 V) = **4.27–4.67 V**; AMS1117 dropout ≈ 1.0 V at 0.1 A (1.1 V typ / 1.3 V max at 0.8 A) → needs ≈ 4.3 V. Ground current 5 mA typ / 11 mA max → 27–60 mW referred to the battery (boost η 0.88), against the 20–50 mW duty-cycle floor (`drogheda-backup-lowpower`). VDDA = 3V3 via R104 10 Ω while firmware assumes 3.30 V → BAT_SENSE/5V_SENSE read up to +4 % high; the 3.40 V low-battery cut trips at ≈ 3.27 V real. Datasheet asks for 22 µF tantalum; /3V3 is all ceramic. +- **Evidence:** LDO_IN on battery = VSYS 4.60–4.99 V − D12 (≈ 0.3 V) = **4.27–4.67 V**; AMS1117 dropout ≈ 1.0 V at 0.1 A (1.1 V typ / 1.3 V max at 0.8 A) → needs ≈ 4.3 V. Ground current 5 mA typ / 11 mA max → 27–60 mW referred to the battery (boost η 0.88), against the 20–50 mW duty-cycle floor (`drogheda-backup-lowpower`). VDDA = 3V3 via R104 10 Ω while firmware assumes 3.30 V → BAT_SENSE/5V_SENSE read up to +4 % high; the 3.40 V low-battery cut trips at ≈ 3.27 V real. Datasheet asks for 22 µF tantalum; /3V3 is all ceramic. - **Consequence:** degraded 3V3 exactly on battery, wrong battery telemetry, and a sleep floor as large as the whole target. -- **Fix:** **U17 → TI TLV1117LV33DCYR, LCSC C15578** (SOT-223, same 1-GND / 2-OUT / 3-IN pinout, 1 A, 455 mV at 1 A, ≈ 100 µA Iq, ceramic-stable, VIN max 5.5 V vs LDO_IN max ≈ 5.21 V with 57.6 k; stock 26 999). Do **not** use C48937499 (same MPN listed, wrong die: 1.2 V dropout, 12 V). Firmware: VREFINT calibration. +- **Fix:** **U17 → TI TLV1117LV33DCYR, LCSC C15578** (SOT-223, same 1-GND / 2-OUT / 3-IN pinout, 1 A, 455 mV at 1 A, ≈ 100 µA Iq, ceramic-stable, VIN max 5.5 V vs LDO_IN max ≈ 5.21 V with 57.6 k; stock 26 999). Do **not** use C48937499 (same MPN listed, wrong die: 1.2 V dropout, 12 V). Firmware: VREFINT calibration. - **Effort:** schematic-only. -##### A-09 · Major · C78 is an 85 °C / 2000 h general-purpose electrolytic on the 5 V rail (≈ 1-year life in a port box) +##### A-09 · Major · C78 is an 85 °C / 2000 h general-purpose electrolytic on the 5 V rail (≈ 1-year life in a port box) *C130/C131 moved to B-02.* *Status:* verified (verify_1). -- **Evidence:** C78 (VEH5V bulk) = C2827940 SamYoung MVG 16 V 220 µF, −40…+85 °C, 2000 h @ 85 °C, 130 mA ripple. 10 °C-rule life at 65 °C local (assumption): MVG ≈ 8 000 h (0.9 y 24/7). Others: C10 MVK 105 °C/1000 h (removed by A-01), C3/C103 Rubycon TZV 105 °C/2000 h, C151 Nichicon UUD 105 °C/5000 h ✅. +- **Evidence:** C78 (VEH5V bulk) = C2827940 SamYoung MVG 16 V 220 µF, −40…+85 °C, 2000 h @ 85 °C, 130 mA ripple. 10 °C-rule life at 65 °C local (assumption): MVG ≈ 8 000 h (0.9 y 24/7). Others: C10 MVK 105 °C/1000 h (removed by A-01), C3/C103 Rubycon TZV 105 °C/2000 h, C151 Nichicon UUD 105 °C/5000 h ✅. - **Consequence:** bulk capacitance and ESR drift within the first year, affecting U25 transient response. -- **Fix:** **C78 → Lelon OVZ221M1CTR-0608 220 µF 16 V polymer, LCSC C881921** (same 6.3 × 7.7 can, 105 °C/2000 h, stock 2442). Effect on the U25 loop is benign: fc ≈ 4.4 kHz with 276 µF against the 1.8 kHz compensation zero → PM ≈ 68° (verify_1). +- **Fix:** **C78 → Lelon OVZ221M1CTR-0608 220 µF 16 V polymer, LCSC C881921** (same 6.3 × 7.7 can, 105 °C/2000 h, stock 2442). Effect on the U25 loop is benign: fc ≈ 4.4 kHz with 276 µF against the 1.8 kHz compensation zero → PM ≈ 68° (verify_1). - **Effort:** schematic-only. ##### Minor (A) -- **A-10 · Minor · No over-voltage protection on VEH5V** (not independently verified). U6.16 OVSNS tied straight to `/VEH5V` (OVP unused). A TPS54360B high-side short puts `/VIN_PROT` (24–36 V) on VEH5V (LTC4040 VIN abs max 6 V steady / 7 V transient) and through Q7 onto MAIN5V → SYS5V. V5 used the isolated SD-15B, so v6 adds this failure mode. *Fix (pick one):* (a) LTC4040 OVP arrangement per the datasheet application (OVSNS via 6.2 kΩ + series N-FET ≥ 40 V; verify the topology against the datasheet figure before committing), or (b) a 1.5 kW 5 V TVS (SMCJ5.0A class) as a crowbar to open F2 (imperfect). No LCSC selected in the findings. *Effort:* both. -- **A-11 · Minor · CHGOFF (PA8) has a pull-down: charger runs at full current whenever the MCU is not driving the pin** (not independently verified). R56 100 k `/CHRG_EN` → GND; during reset, DFU, boot loops and unflashed boards the charger is enabled with no governor (2.42 A as-is). *Fix:* R56 100 k (C25803) re-netted to `/3V3` → default charge OFF; polarity unchanged. *Effort:* schematic + one track. -- **A-13 · Minor · PFO goes only to TP2: no hardware power-fail interrupt** — *absorbs D-10* (not independently verified; pin allocation per verify_1 (h)). `/PFO_TP` = {U6.20, TP2}; firmware detects backup by polling 5V_SENSE (V5_OFF 3.80 V) although the LTC4040 has switched at PFI 4.40 V; tens of ms late to shed loads. `/CLPROG_TP` = {U6.3, TP1} (V = 32·(VIN − CLN), 0.32 V/A with RS1 10 mΩ). *Fix:* PFO → **PB10** (pad 29, EXTI10) with **100 k C25803 pull-up to /3V3**. D-10's CLPROG → PC5 is dropped because PC5 goes to F-51; CLPROG stays on TP1. *Effort:* both (two tracks). -- **A-14 · Minor · BSTFB divider 21–24 mm from U6; IGATE 43 mm unguarded** — *absorbs F-10* (not independently verified; the In1-cut part is in A-02). R53.2 → U6.18 21.4 mm, R54.1 24.0 mm; `/VFB_BST` F.Cu 16.8 mm + In1 24.4 mm, 5 vias, 41.2 mm total (83 kΩ Thevenin node); `/IGATE` F.Cu 6.0 + In1 37.0 mm, Q7.4 ↔ U6.15 23.2 mm. Switch-node overlap (F-10): `/SW_PWRIN` over In1 `/MAIN5V` 2.41 mm², `/SW_5V` 2.91 mm², `/VFB_BST` 1.14 mm² (≈ 0.095 pF → ≈ 0.23 mA spikes at 24 V/10 ns); `/SW_BAT` over In1 `/SW_5V` 1.39 mm². *Consequence:* backup set-point noise (the mode R1/R3 rely on); µA-class IGATE drive exposed to humid-box leakage (Q7 body diode ≈ 1.2 W at 2.5 A if partially off). *Fix:* R53/R54 ≤ 3 mm from pins 18/10, top leg Kelvin-tapped at the CSYS pads, net on F.Cu; Q7 ≤ 5 mm from U6.15, IGATE ≤ 8 mm on F.Cu flanked by MAIN5V copper; In1 solid under all switch nodes (F-05). *Effort:* layout. -- *(D-09, absorbing A-12, is in §4-D; F-51/F-52 are in §4-F; F-01/F-02 (24 V clearance) are in §4-F.)* +- **A-10 · Minor · No over-voltage protection on VEH5V** (not independently verified). U6.16 OVSNS tied straight to `/VEH5V` (OVP unused). A TPS54360B high-side short puts `/VIN_PROT` (24–36 V) on VEH5V (LTC4040 VIN abs max 6 V steady / 7 V transient) and through Q7 onto MAIN5V → SYS5V. V5 used the isolated SD-15B, so v6 adds this failure mode. *Fix (pick one):* (a) LTC4040 OVP arrangement per the datasheet application (OVSNS via 6.2 kΩ + series N-FET ≥ 40 V; verify the topology against the datasheet figure before committing), or (b) a 1.5 kW 5 V TVS (SMCJ5.0A class) as a crowbar to open F2 (imperfect). No LCSC selected in the findings. *Effort:* both. +- **A-11 · Minor · CHGOFF (PA8) has a pull-down: charger runs at full current whenever the MCU is not driving the pin** (not independently verified). R56 100 k `/CHRG_EN` → GND; during reset, DFU, boot loops and unflashed boards the charger is enabled with no governor (2.42 A as-is). *Fix:* R56 100 k (C25803) re-netted to `/3V3` → default charge OFF; polarity unchanged. *Effort:* schematic + one track. +- **A-13 · Minor · PFO goes only to TP2: no hardware power-fail interrupt** — *absorbs D-10* (not independently verified; pin allocation per verify_1 (h)). `/PFO_TP` = {U6.20, TP2}; firmware detects backup by polling 5V_SENSE (V5_OFF 3.80 V) although the LTC4040 has switched at PFI 4.40 V; tens of ms late to shed loads. `/CLPROG_TP` = {U6.3, TP1} (V = 32·(VIN − CLN), 0.32 V/A with RS1 10 mΩ). *Fix:* PFO → **PB10** (pad 29, EXTI10) with **100 k C25803 pull-up to /3V3**. D-10's CLPROG → PC5 is dropped because PC5 goes to F-51; CLPROG stays on TP1. *Effort:* both (two tracks). +- **A-14 · Minor · BSTFB divider 21–24 mm from U6; IGATE 43 mm unguarded** — *absorbs F-10* (not independently verified; the In1-cut part is in A-02). R53.2 → U6.18 21.4 mm, R54.1 24.0 mm; `/VFB_BST` F.Cu 16.8 mm + In1 24.4 mm, 5 vias, 41.2 mm total (83 kΩ Thevenin node); `/IGATE` F.Cu 6.0 + In1 37.0 mm, Q7.4 ↔ U6.15 23.2 mm. Switch-node overlap (F-10): `/SW_PWRIN` over In1 `/MAIN5V` 2.41 mm², `/SW_5V` 2.91 mm², `/VFB_BST` 1.14 mm² (≈ 0.095 pF → ≈ 0.23 mA spikes at 24 V/10 ns); `/SW_BAT` over In1 `/SW_5V` 1.39 mm². *Consequence:* backup set-point noise (the mode R1/R3 rely on); µA-class IGATE drive exposed to humid-box leakage (Q7 body diode ≈ 1.2 W at 2.5 A if partially off). *Fix:* R53/R54 ≤ 3 mm from pins 18/10, top leg Kelvin-tapped at the CSYS pads, net on F.Cu; Q7 ≤ 5 mm from U6.15, IGATE ≤ 8 mm on F.Cu flanked by MAIN5V copper; In1 solid under all switch nodes (F-05). *Effort:* layout. +- *(D-09, absorbing A-12, is in §4-D; F-51/F-52 are in §4-F; F-01/F-02 (24 V clearance) are in §4-F.)* ##### Notes (A) — not independently verified unless stated | ID | Observation | Action | |---|---|---| -| A-16 | U25 EN/UVLO divider R124 523 k / R125 84.5 k DNP → internal UVLO 4.1–4.3 V; between ≈ 4.3 V and 5.8 V input VEH5V is in dropout inside the PFI band (12 V vehicles under crank only). | Optional: populate R124/R125 (start ≈ 8.0 V, stop ≈ 5.5 V) if 12 V machines are in scope; LCSC to be picked in sourcing. | -| A-18 | U25 compensation = TPS54360B datasheet example (13 k / 6.8 nF / 39 pF) for 8.2 µH + 58 µF; v6 has 10 µH + ≈ 56 µF ceramic + bulk; fco ≈ 4–6 kHz, PM > 60° (estimate); ≈ 0.16 V dip for a 1.8 A step. | None required; optional R123 → 24 k after A-01/A-09; bench 0.3 → 2.5 A step. | -| A-19 | SMCJ33A/SMBJ33A survive 36 V/60 min and ISO 7637-2 fast pulses but not an ISO 16750-2 Test B suppressed load dump (58 V, 100–350 ms, ≈ 10 A); the TVS would fail short and F2 then opens (after A-01). | Confirm alternator load-dump suppression in the fleet (§10). Keep SMCJ33A; do not raise the TVS voltage (U25 65 V abs max). | -| A-20 | (a) U12 MP1584EN (C15051, $2.21 @100, −20…+85 °C): gate EN (E-01); optional swap to AP64350 C2071691 ($0.58, re-layout). (b) F1 3 A PPTC now protects only the F9P LDO branch: harmless, not protective; keep. (c) P2 bench jack has no reverse protection (VEH5V −0.3 V abs max): state on silkscreen. (d) JP_CUT → G-04. (e) C22 value text 22 µF vs 10 µF part → H-08. (f) K1 G5V-1 rated −40…+70 °C. (g) R112 1 k VBAT_MODEM bleeder 3.8 mA / 14 mW: fine. | As listed. | +| A-16 | U25 EN/UVLO divider R124 523 k / R125 84.5 k DNP → internal UVLO 4.1–4.3 V; between ≈ 4.3 V and 5.8 V input VEH5V is in dropout inside the PFI band (12 V vehicles under crank only). | Optional: populate R124/R125 (start ≈ 8.0 V, stop ≈ 5.5 V) if 12 V machines are in scope; LCSC to be picked in sourcing. | +| A-18 | U25 compensation = TPS54360B datasheet example (13 k / 6.8 nF / 39 pF) for 8.2 µH + 58 µF; v6 has 10 µH + ≈ 56 µF ceramic + bulk; fco ≈ 4–6 kHz, PM > 60° (estimate); ≈ 0.16 V dip for a 1.8 A step. | None required; optional R123 → 24 k after A-01/A-09; bench 0.3 → 2.5 A step. | +| A-19 | SMCJ33A/SMBJ33A survive 36 V/60 min and ISO 7637-2 fast pulses but not an ISO 16750-2 Test B suppressed load dump (58 V, 100–350 ms, ≈ 10 A); the TVS would fail short and F2 then opens (after A-01). | Confirm alternator load-dump suppression in the fleet (§10). Keep SMCJ33A; do not raise the TVS voltage (U25 65 V abs max). | +| A-20 | (a) U12 MP1584EN (C15051, $2.21 @100, −20…+85 °C): gate EN (E-01); optional swap to AP64350 C2071691 ($0.58, re-layout). (b) F1 3 A PPTC now protects only the F9P LDO branch: harmless, not protective; keep. (c) P2 bench jack has no reverse protection (VEH5V −0.3 V abs max): state on silkscreen. (d) JP_CUT → G-04. (e) C22 value text 22 µF vs 10 µF part → H-08. (f) K1 G5V-1 rated −40…+70 °C. (g) R112 1 k VBAT_MODEM bleeder 3.8 mA / 14 mW: fine. | As listed. | -*F-53 (fan block) is absorbed into A-01 and not counted as a Note:* U2 5V_FAN 4.99 V (4.76–5.23 V); FB divider R20/R21 0.67/1.48 mm from U2.4 (ECO E3 fixed); PA6 → Rg1 100 Ω → Q2 with Rgs1 100 k (default OFF), D2 flyback; 2-wire fan, no tach. A-01 moves the fan to VEH5V; firmware adds the NTC to `thermalCtlTemp()`. +*F-53 (fan block) is absorbed into A-01 and not counted as a Note:* U2 5V_FAN 4.99 V (4.76–5.23 V); FB divider R20/R21 0.67/1.48 mm from U2.4 (ECO E3 fixed); PA6 → Rg1 100 Ω → Q2 with Rgs1 100 k (default OFF), D2 flyback; 2-wire fan, no tach. A-01 moves the fan to VEH5V; firmware adds the NTC to `thermalCtlTemp()`. #### (b) Pass/fail — §4-A | Check | Evidence (one line) | Result | |---|---|---| -| U25 output formula / tolerance | 0.8·(1 + 53.6/10.2) = 5.004 V; Vref 0.792–0.808 → 4.87–5.14 V | ❌ set-point (A-04) | -| U25 RT / fsw / min on-time | 162 k → 600 kHz; tON at 36 V = 244 ns ≥ 135 ns | ✅ | -| U25 inductor L22 | 10 µH ≥ Lmin 7.2 µH (36 V); SRP1265A Isat 15.5 A vs peak 3.1–3.4 A | ✅ | -| U25 current capability | ≤ RS1 limit 2.14–2.41 A (+0.3 A fan with A-01) vs 3.5 A rating, 4.5 A min switch limit | ✅ | -| U25 Cout / ripple | 2 × 47 µF X7R 1210 (≈ 56 µF eff) + 220 µF; ΔI 0.69 A, ΔV ≈ 3 mV | ✅ value / ❌ C78 life (A-09) | -| U25 compensation | datasheet example; fco ≈ 4–6 kHz, PM > 60° (estimate) | ✅ (A-18 Note) | -| U25 BOOT cap C152 | 100 nF, 1.49 mm edge | ✅ | -| U25 Cin value | 2 × 2.2 µF/100 V X7R ≈ 3.4–3.8 µF eff ≥ TI 3 µF | ✅ value / ❌ loop (F-03) | -| U25 soft start / inrush | 1024 cycles / 600 kHz = 1.7 ms; ≈ 0.9 A into ≈ 280 µF | ✅ | -| U25 EN / UVLO | EN floats → on; internal UVLO 4.1–4.3 V | ✅ (A-16 Note) | -| Vehicle-voltage exposure of other parts | U2 30 V abs max, D21 30 V, U20 42 V on unfused `/24V` | ❌ A-01 | -| Reverse polarity | Q23/Q10 IRFR5305 −55 V/65 mΩ, gate clamps D33/DzG1 ✅; but D10 ahead of F2 conducts on reversal | ❌ V1-01 | +| U25 output formula / tolerance | 0.8·(1 + 53.6/10.2) = 5.004 V; Vref 0.792–0.808 → 4.87–5.14 V | ❌ set-point (A-04) | +| U25 RT / fsw / min on-time | 162 k → 600 kHz; tON at 36 V = 244 ns ≥ 135 ns | ✅ | +| U25 inductor L22 | 10 µH ≥ Lmin 7.2 µH (36 V); SRP1265A Isat 15.5 A vs peak 3.1–3.4 A | ✅ | +| U25 current capability | ≤ RS1 limit 2.14–2.41 A (+0.3 A fan with A-01) vs 3.5 A rating, 4.5 A min switch limit | ✅ | +| U25 Cout / ripple | 2 × 47 µF X7R 1210 (≈ 56 µF eff) + 220 µF; ΔI 0.69 A, ΔV ≈ 3 mV | ✅ value / ❌ C78 life (A-09) | +| U25 compensation | datasheet example; fco ≈ 4–6 kHz, PM > 60° (estimate) | ✅ (A-18 Note) | +| U25 BOOT cap C152 | 100 nF, 1.49 mm edge | ✅ | +| U25 Cin value | 2 × 2.2 µF/100 V X7R ≈ 3.4–3.8 µF eff ≥ TI 3 µF | ✅ value / ❌ loop (F-03) | +| U25 soft start / inrush | 1024 cycles / 600 kHz = 1.7 ms; ≈ 0.9 A into ≈ 280 µF | ✅ | +| U25 EN / UVLO | EN floats → on; internal UVLO 4.1–4.3 V | ✅ (A-16 Note) | +| Vehicle-voltage exposure of other parts | U2 30 V abs max, D21 30 V, U20 42 V on unfused `/24V` | ❌ A-01 | +| Reverse polarity | Q23/Q10 IRFR5305 −55 V/65 mΩ, gate clamps D33/DzG1 ✅; but D10 ahead of F2 conducts on reversal | ❌ V1-01 | | DzG1 netlisted (V5 corruption) | DzG1.1 `/Q10_GATE`, .3 `/24V` | ✅ | -| TVS standoff / polarity | SMCJ33A/SMBJ33A VRWM 33 V ≥ 32 V; pad 1 = K on + rail | ✅ (A-19 Note) | -| F2 part / coverage | C206910 2 A assigned ✅; protects the U25 branch only | ❌ A-01 | -| 24 V-to-LV inner clearance < 0.5 mm | 6 inner spots, all `/IGN_IN` (worst 0.221 mm to `/VEH5V` on In2); `/24V` In1 at 0.15 mm to GND fill | ❌ F-01, F-02 | -| RS1 input limit | 10 mΩ 1 W (C105362): 2.35–2.65 A (2.14–2.41 A with the CLN tap) < U25 3.5 A | ✅ | -| R50 charge current | 825 Ω → 2.42 A (2.57 A max > 2.5 A IC max) | ❌ A-03 | -| LTC4040 PROG node | R50 1.26 mm from pin 2; `/PROG` 2.6 mm | ✅ | -| BSTFB (backup VSYS) | 499 k/100 k → 4.60/4.79/4.99 V within 3.5–5.0 V; keep 499 k | ✅ value / ⚠ placement (A-14) | +| TVS standoff / polarity | SMCJ33A/SMBJ33A VRWM 33 V ≥ 32 V; pad 1 = K on + rail | ✅ (A-19 Note) | +| F2 part / coverage | C206910 2 A assigned ✅; protects the U25 branch only | ❌ A-01 | +| 24 V-to-LV inner clearance < 0.5 mm | 6 inner spots, all `/IGN_IN` (worst 0.221 mm to `/VEH5V` on In2); `/24V` In1 at 0.15 mm to GND fill | ❌ F-01, F-02 | +| RS1 input limit | 10 mΩ 1 W (C105362): 2.35–2.65 A (2.14–2.41 A with the CLN tap) < U25 3.5 A | ✅ | +| R50 charge current | 825 Ω → 2.42 A (2.57 A max > 2.5 A IC max) | ❌ A-03 | +| LTC4040 PROG node | R50 1.26 mm from pin 2; `/PROG` 2.6 mm | ✅ | +| BSTFB (backup VSYS) | 499 k/100 k → 4.60/4.79/4.99 V within 3.5–5.0 V; keep 499 k | ✅ value / ⚠ placement (A-14) | | PFI divider | 270 k/100 k: fall 4.27/4.40/4.54, rise 4.38/4.51/4.66 V | ✅ (FW `V5_PFI` stale) | | RSTFB / RST | RSTFB tied to BSTFB (allowed), RST NC | ✅ | | OVSNS | tied to VIN → OVP unused | ⚠ A-10 | -| NTC window RNTB | R55 10 k: hot pause 42.4 °C, resume 40.1 °C, cold −3.1 °C (B3380) | ⚠ chemistry D1 pending | -| Chemistry straps | JP2 1-2 (Li-ion), JP3 F1 = 0, JP4 F0 = 1 → 4.00 V | ✅ | -| Safety timer | Li-ion 4.25 h, counts in CV only | ✅ | +| NTC window RNTB | R55 10 k: hot pause 42.4 °C, resume 40.1 °C, cold −3.1 °C (B3380) | ⚠ chemistry D1 pending | +| Chemistry straps | JP2 1-2 (Li-ion), JP3 F1 = 0, JP4 F0 = 1 → 4.00 V | ✅ | +| Safety timer | Li-ion 4.25 h, counts in CV only | ✅ | | CHRG / FAULT to MCU | R57/R58 100 k to 3V3 → PB3/PB4 | ✅ | | CHGOFF default | R56 100 k pull-down → charger ON without MCU | ⚠ A-11 | | BSTOFF | tied to GND → boost always armed | ✅ / Note | | Q7 ideal-diode orientation | AO4406A S = VIN_SW, D = MAIN5V | ✅ | -| L6 value / rating | 2.2 µH, 8 A ≥ ILIMBST max 7.5 A | ✅ value / ❌ placement (A-02) | -| SW_BAT / BAT_PLUS copper, U6 EP vias | 0.5 mm + 0.25/0.30 mm necks; 1.0 mm; 0 EP vias | ❌ A-02 | -| CSYS | 104 µF nominal, ≈ 57–69 µF effective (< 75 µF) | ⚠ A-05 | -| CBAT C35 | 22 µF ≥ 10 µF; 20.2 mm from L6.2 | ✅ value / ⚠ placement (A-02) | -| 5 V path widths | `/VEH5V` In1 0.5 mm, `/VIN_SW` In2 0.8 mm at 2.5 A | ❌ A-07 | -| U20 FB | 75 k/20 k → 3.70/3.80/3.90 V within A7670 3.4–4.2 V | ✅ | -| U20 RT / min on-time | 200 k → 500 kHz; tON at 36 V = 211 ns ≥ 100 ns | ✅ | -| U20 UVLO on battery | falling ≈ 3.1–3.3 V vs VIN_MODEM ≥ 4.2 V (≈ 1 V margin; V5.5 had 0.1 V) | ✅ | -| U20 EN default | EN pull-up 1.5 µA (verify_1; not 5.5 µA) × R113 100 k = 0.15 V < 1.03 V → OFF | ✅ | -| U20 BST | C129 100 nF, 1.8 mm | ✅ | -| L20 | 4.7 µH (MWSA0804S-4R7), 5 A vs peak 2.2–2.7 A | ✅ (land: H-03) | -| U2 FB / placement | 4.99 V; divider at pin | ✅ (rating ❌ A-01; Cin moot with A-01) | +| L6 value / rating | 2.2 µH, 8 A ≥ ILIMBST max 7.5 A | ✅ value / ❌ placement (A-02) | +| SW_BAT / BAT_PLUS copper, U6 EP vias | 0.5 mm + 0.25/0.30 mm necks; 1.0 mm; 0 EP vias | ❌ A-02 | +| CSYS | 104 µF nominal, ≈ 57–69 µF effective (< 75 µF) | ⚠ A-05 | +| CBAT C35 | 22 µF ≥ 10 µF; 20.2 mm from L6.2 | ✅ value / ⚠ placement (A-02) | +| 5 V path widths | `/VEH5V` In1 0.5 mm, `/VIN_SW` In2 0.8 mm at 2.5 A | ❌ A-07 | +| U20 FB | 75 k/20 k → 3.70/3.80/3.90 V within A7670 3.4–4.2 V | ✅ | +| U20 RT / min on-time | 200 k → 500 kHz; tON at 36 V = 211 ns ≥ 100 ns | ✅ | +| U20 UVLO on battery | falling ≈ 3.1–3.3 V vs VIN_MODEM ≥ 4.2 V (≈ 1 V margin; V5.5 had 0.1 V) | ✅ | +| U20 EN default | EN pull-up 1.5 µA (verify_1; not 5.5 µA) × R113 100 k = 0.15 V < 1.03 V → OFF | ✅ | +| U20 BST | C129 100 nF, 1.8 mm | ✅ | +| L20 | 4.7 µH (MWSA0804S-4R7), 5 A vs peak 2.2–2.7 A | ✅ (land: H-03) | +| U2 FB / placement | 4.99 V; divider at pin | ✅ (rating ❌ A-01; Cin moot with A-01) | | U12 FB | 100 k/31.6 k → 3.18/3.33/3.48 V | ✅ (EN ❌ E-01, loop ❌ F-03) | -| U21 AP2112K dropout | 250 mV at 600 mA; F9P ≈ 0.1 A; SW_5V ≥ 4.5 V on battery | ✅ (ramp ❌ C-02) | -| U17 AMS1117 | LDO_IN ≈ 4.6 V on 24 V ✅; 4.27–4.67 V on battery | ❌ A-08 | -| Worst-case battery budget | 2.25–2.33 A on MAIN5V at a GSM burst (91–97 % of guaranteed 2.5 A) | ⚠ A-05 | +| U21 AP2112K dropout | 250 mV at 600 mA; F9P ≈ 0.1 A; SW_5V ≥ 4.5 V on battery | ✅ (ramp ❌ C-02) | +| U17 AMS1117 | LDO_IN ≈ 4.6 V on 24 V ✅; 4.27–4.67 V on battery | ❌ A-08 | +| Worst-case battery budget | 2.25–2.33 A on MAIN5V at a GSM burst (91–97 % of guaranteed 2.5 A) | ⚠ A-05 | | DFU-only power | DFU_VBUS → D13 → LDO_IN; D12 blocks back-feed into SYS5V | ✅ | | K1 flyback | D6 1N4148W across the coil | ✅ | | Fan PWM default | Rgs1 100 k → Q2 OFF at reset | ✅ | @@ -286,72 +299,72 @@ Cross-references: U20 input topology → **A-01** (absorbs B-01); U20 hot loop a #### (a) Findings -##### B-03 · Blocker · LTE antenna ESD D28 is a unidirectional 5 V TVS on an RF line with no DC bias -*Status:* verified-with-correction (verify_1: the proposed PGB1010402KR is rated 12 VDC max operating, below the 14.1 V GSM peak; use PESD0402-240). -- **Evidence:** D28 = C82326 onsemi ESD9L5.0ST5G, "Unidirectional, 0.9 pF, VRWM 5 V, VBR 5.4 V, VC 9.8 V", SOD-923; pin 1 (C) on `/RF_ANT_LTE`, pin 2 (A) on GND; in-line 1.8 mm from J13.1. A7670SA output (HD V1.03 Table 30; GSM supported per Table 1): GSM850/900 33 dBm ±2, DCS/PCS 30 dBm, LTE 23 dBm ±2.7. Peak voltage at 50 Ω, V = √(2·P·50): 23 dBm → **4.47 V**, 33 dBm → **14.1 V**; at VSWR 3:1 (×1.5) 6.7 / 21.2 V. SIMCom Fig. 33: "D1 is a Bidirectional ESD Protection device". -- **Consequence:** the diode forward-conducts at ≈ −0.6 V on every negative half-cycle, even in LTE, and avalanches at 5.4 V on GSM positive peaks: hard clipping, spurious emissions (homologation), lost TX power, PA stress, D28 heating and likely failure (possibly shorting the antenna port). -- **Fix:** **D28 → Littelfuse PESD0402-240, LCSC C1975527** (bidirectional, 24 V working, 0.25 pF → −j335 Ω shunt at 1.9 GHz, |Γ| ≈ 0.07; stock 9394), or DNP D28 (SIMCom marks it optional). Either way needs an **0402 land** in place of the SOD-923 (comes with the F-06 reroute). Keep D27 on the GNSS line (+3.2 V bias, no TX; a unidirectional 5 V part is correct there). +##### B-03 · Blocker · LTE antenna ESD D28 is a unidirectional 5 V TVS on an RF line with no DC bias +*Status:* verified-with-correction (verify_1: the proposed PGB1010402KR is rated 12 VDC max operating, below the 14.1 V GSM peak; use PESD0402-240). +- **Evidence:** D28 = C82326 onsemi ESD9L5.0ST5G, "Unidirectional, 0.9 pF, VRWM 5 V, VBR 5.4 V, VC 9.8 V", SOD-923; pin 1 (C) on `/RF_ANT_LTE`, pin 2 (A) on GND; in-line 1.8 mm from J13.1. A7670SA output (HD V1.03 Table 30; GSM supported per Table 1): GSM850/900 33 dBm ±2, DCS/PCS 30 dBm, LTE 23 dBm ±2.7. Peak voltage at 50 Ω, V = √(2·P·50): 23 dBm → **4.47 V**, 33 dBm → **14.1 V**; at VSWR 3:1 (×1.5) 6.7 / 21.2 V. SIMCom Fig. 33: "D1 is a Bidirectional ESD Protection device". +- **Consequence:** the diode forward-conducts at ≈ −0.6 V on every negative half-cycle, even in LTE, and avalanches at 5.4 V on GSM positive peaks: hard clipping, spurious emissions (homologation), lost TX power, PA stress, D28 heating and likely failure (possibly shorting the antenna port). +- **Fix:** **D28 → Littelfuse PESD0402-240, LCSC C1975527** (bidirectional, 24 V working, 0.25 pF → −j335 Ω shunt at 1.9 GHz, |Γ| ≈ 0.07; stock 9394), or DNP D28 (SIMCom marks it optional). Either way needs an **0402 land** in place of the SOD-923 (comes with the F-06 reroute). Keep D27 on the GNSS line (+3.2 V bias, no TX; a unidirectional 5 V part is correct there). - **Effort:** both. -##### B-02 · Major · VBAT_MODEM bulk is a general-purpose electrolytic; U20 compensation is the 5 V table row +##### B-02 · Major · VBAT_MODEM bulk is a general-purpose electrolytic; U20 compensation is the 5 V table row *Absorbs:* A-09 (C130/C131), A-17. *Status:* verified, severity changed Blocker → Major (verify_1: works on day 1, fails cold or aged; BOM-only fix on the same land). -- **Evidence:** C130, C131 = C2827940 SamYoung MVG 16 V 220 µF 6.3 × 7.7 (value field reads "220uF/10V"), −40…+85 °C, 2000 h @ 85 °C, 130 mA ripple: not polymer. Placement: C131 8.70 mm, C130 16.26 mm from U19.55–57; nearest cap to L20.2 is C130 at 10.1 mm. Low-ESR output capacitance is only C132 22 µF + C133 1 µF + C134 100 nF ≈ 14 µF effective (SIMCom asks ≥ 300 µF, HD V1.03 p.27). Compensation R116 14 k / C141 3.3 nF / C142 47 pF = the AP64350 **Table 1 VOUT = 5.0 V** row (designed for 2 × 22 µF ceramic). FB R110 75 k / R111 20 k → 3.80 V (3.67–3.94 V worst case) ✅. Life ≈ 8 000 h at 65 °C. +- **Evidence:** C130, C131 = C2827940 SamYoung MVG 16 V 220 µF 6.3 × 7.7 (value field reads "220uF/10V"), −40…+85 °C, 2000 h @ 85 °C, 130 mA ripple: not polymer. Placement: C131 8.70 mm, C130 16.26 mm from U19.55–57; nearest cap to L20.2 is C130 at 10.1 mm. Low-ESR output capacitance is only C132 22 µF + C133 1 µF + C134 100 nF ≈ 14 µF effective (SIMCom asks ≥ 300 µF, HD V1.03 p.27). Compensation R116 14 k / C141 3.3 nF / C142 47 pF = the AP64350 **Table 1 VOUT = 5.0 V** row (designed for 2 × 22 µF ceramic). FB R110 75 k / R111 20 k → 3.80 V (3.67–3.94 V worst case) ✅. Life ≈ 8 000 h at 65 °C. - | Condition (verify_1 averaged current-mode model) | 2 A GSM burst droop | 0.7 A LTE | + | Condition (verify_1 averaged current-mode model) | 2 A GSM burst droop | 0.7 A LTE | |---|---|---| - | Battery via D21 (4.42 V), MVG new (ESR 0.2 Ω pair) | **0.28 V** (VBAT 3.52 V) | 0.08 V | - | Same, cold / aged (0.6 Ω pair) | **0.52 V** (3.29 V < 3.4 V min) | 0.13 V | - | Battery, polymer + 113 k / 6.8 nF / 56 pF | 0.06 V | 0.02 V | - | Battery, polymer with the as-is 14 k | 0.18 V (PM ≈ 27°) | 0.06 V | + | Battery via D21 (4.42 V), MVG new (ESR 0.2 Ω pair) | **0.28 V** (VBAT 3.52 V) | 0.08 V | + | Same, cold / aged (0.6 Ω pair) | **0.52 V** (3.29 V < 3.4 V min) | 0.13 V | + | Battery, polymer + 113 k / 6.8 nF / 56 pF | 0.06 V | 0.02 V | + | Battery, polymer with the as-is 14 k | 0.18 V (PM ≈ 27°) | 0.06 V | -- **Consequence:** within SIMCom's 300 mV limit on day 1 with LTE-only on battery; with cold or aged caps GSM bursts pull VBAT below 3.4 V → "modem dark" likely within about a year. Reliability failure → Major. -- **Fix (change caps and compensation together):** **C130, C131 → C881921** (Lelon OVZ 220 µF/16 V polymer, 105 °C/2000 h, 6.3 × 7.7, stock 2442); **R116 14 k → 113 k 1 % (C22862, stock 59 728)**; **C141 3.3 nF → 6.8 nF X7R 0402 (C1542)**; **C142 47 pF → 56 pF C0G 0402 (C1572)** (C141/C142 are 0402 today); **add 2 × 22 µF 0805 (C86817, stock 4144) at L20.2** ≤ 3 mm. Checks: R5 = 4.67e3·14 kHz·3.8 V·454 µF = 112.8 k; C5 = 3.8·454 µ/(2 A·113 k) = 7.6 nF; zero 207 Hz, fc 14 kHz, C6 pole 25 kHz → **PM ≈ 60°**. 113 k is valid only with the polymer bank (with MVG the ESR zero ≈ 1.8 kHz sits below fc). A-17's alternative (R116 = 10 k with polymer) gives PM ≈ 15° and is rejected (verify_1 conflict (c)). Move C131 ≤ 5 mm from U19.55–57 (B-08). Bench: 0.1 → 2 A step on VBAT_MODEM, droop ≤ 150 mV, no ringing. +- **Consequence:** within SIMCom's 300 mV limit on day 1 with LTE-only on battery; with cold or aged caps GSM bursts pull VBAT below 3.4 V → "modem dark" likely within about a year. Reliability failure → Major. +- **Fix (change caps and compensation together):** **C130, C131 → C881921** (Lelon OVZ 220 µF/16 V polymer, 105 °C/2000 h, 6.3 × 7.7, stock 2442); **R116 14 k → 113 k 1 % (C22862, stock 59 728)**; **C141 3.3 nF → 6.8 nF X7R 0402 (C1542)**; **C142 47 pF → 56 pF C0G 0402 (C1572)** (C141/C142 are 0402 today); **add 2 × 22 µF 0805 (C86817, stock 4144) at L20.2** ≤ 3 mm. Checks: R5 = 4.67e3·14 kHz·3.8 V·454 µF = 112.8 k; C5 = 3.8·454 µ/(2 A·113 k) = 7.6 nF; zero 207 Hz, fc 14 kHz, C6 pole 25 kHz → **PM ≈ 60°**. 113 k is valid only with the polymer bank (with MVG the ESR zero ≈ 1.8 kHz sits below fc). A-17's alternative (R116 = 10 k with polymer) gives PM ≈ 15° and is rejected (verify_1 conflict (c)). Move C131 ≤ 5 mm from U19.55–57 (B-08). Bench: 0.1 → 2 A step on VBAT_MODEM, droop ≤ 150 mV, no ringing. - **Effort:** both (BOM values + 2 caps + C131 move). ##### Minor (B) — not independently verified -- **B-08 · Minor · VBAT_MODEM feed: 0.5 mm neck into pins 55–57; 1 mm over 7 mm; no pour.** F.Cu 48.9 mm (0.25/0.5/1/1.5/2 mm) + In1 6.3 mm, 2 vias; final feed 0.5 mm × 2.5 mm into U19.55 then 0.5 mm × 2.0 mm to 56/57. L20.2 → U19.55 12.5 mΩ, drop at 2 A 25–29 mV (static, fine). verify_2 J-02: 12.5 mm under capacity. *Consequence:* violates SIMCom's VBAT width rule (≥ 3 mm V1.03), adds loop inductance between bulk and pins. *Fix:* F.Cu pour ≥ 3 mm from L20.2 → C130 → C131 → C132–C136 → U19.55/56/57, fanned to all three pads; C131 ≤ 5 mm from the pads. *Effort:* layout. -- **B-09 · Minor · SIM interface: 0 Ω instead of 22 Ω; ESD 22–25 mm from J14; VDD cap 13.5 mm away.** J14 (C2977286) + R131–R134 0 Ω populated, U22 + R127–R130 DNP ✅. D23/D24/D25 PESD5V0S1BA (C2827694) sit 1.3–5.7 mm from U19 but 21.7–24.8 mm from J14; C126 100 nF 13.5 mm from J14.C1; `/SIM_VDD` unclamped. *Fix:* **R132/R133/R134 → 22 Ω 0603 (C23345, Basic)**; add **100 nF 0402 (C1525) at J14.C1**; move D23–D25 next to J14 (an ESDA6V1W5-class array covering VDD is an option; no LCSC selected). Keep F.Cu clear under U22's die-pad zone if MFF2 is ever fitted. *Effort:* both. -- **B-10 · Minor · Undefined idle levels on the modem interface; RTCM-tap resistor too small** — *absorbs D-14.* U24 (VCCA = `/1V8_MODEM`) is Hi-Z whenever the modem is off, so `/MODEM_STATUS` (PC9) and `/DOUT_4G` float; `/DIN_4G` floats during the K1 transfer and with the F9P off. R106 = 100 Ω between U24 1B and PC7: a mis-configured PC7 output would see ≈ 33 mA (> 25 mA pin limit). *Fix:* **100 k (C25803) `/MODEM_STATUS` → GND**; **100 k (C25803) `/DIN_4G` → /3V3**; **R106 100 Ω → 1 kΩ (C14676)** (ECO §B value; 1 k × ≈ 5 pF = 5 ns, fine to 921 600 Bd). *Effort:* schematic-only (+ 2 small footprints). +- **B-08 · Minor · VBAT_MODEM feed: 0.5 mm neck into pins 55–57; 1 mm over 7 mm; no pour.** F.Cu 48.9 mm (0.25/0.5/1/1.5/2 mm) + In1 6.3 mm, 2 vias; final feed 0.5 mm × 2.5 mm into U19.55 then 0.5 mm × 2.0 mm to 56/57. L20.2 → U19.55 12.5 mΩ, drop at 2 A 25–29 mV (static, fine). verify_2 J-02: 12.5 mm under capacity. *Consequence:* violates SIMCom's VBAT width rule (≥ 3 mm V1.03), adds loop inductance between bulk and pins. *Fix:* F.Cu pour ≥ 3 mm from L20.2 → C130 → C131 → C132–C136 → U19.55/56/57, fanned to all three pads; C131 ≤ 5 mm from the pads. *Effort:* layout. +- **B-09 · Minor · SIM interface: 0 Ω instead of 22 Ω; ESD 22–25 mm from J14; VDD cap 13.5 mm away.** J14 (C2977286) + R131–R134 0 Ω populated, U22 + R127–R130 DNP ✅. D23/D24/D25 PESD5V0S1BA (C2827694) sit 1.3–5.7 mm from U19 but 21.7–24.8 mm from J14; C126 100 nF 13.5 mm from J14.C1; `/SIM_VDD` unclamped. *Fix:* **R132/R133/R134 → 22 Ω 0603 (C23345, Basic)**; add **100 nF 0402 (C1525) at J14.C1**; move D23–D25 next to J14 (an ESDA6V1W5-class array covering VDD is an option; no LCSC selected). Keep F.Cu clear under U22's die-pad zone if MFF2 is ever fitted. *Effort:* both. +- **B-10 · Minor · Undefined idle levels on the modem interface; RTCM-tap resistor too small** — *absorbs D-14.* U24 (VCCA = `/1V8_MODEM`) is Hi-Z whenever the modem is off, so `/MODEM_STATUS` (PC9) and `/DOUT_4G` float; `/DIN_4G` floats during the K1 transfer and with the F9P off. R106 = 100 Ω between U24 1B and PC7: a mis-configured PC7 output would see ≈ 33 mA (> 25 mA pin limit). *Fix:* **100 k (C25803) `/MODEM_STATUS` → GND**; **100 k (C25803) `/DIN_4G` → /3V3**; **R106 100 Ω → 1 kΩ (C14676)** (ECO §B value; 1 k × ≈ 5 pF = 5 ns, fine to 921 600 Bd). *Effort:* schematic-only (+ 2 small footprints). ##### Notes (B) — not independently verified | ID | Observation | Action | |---|---|---| -| **B-16** | **Cold start on battery (brief §4-B explicit statement).** With VSYS 4.79 V: PMEG3050EP as-is, GSM 2 A → VIN(U20) 4.44 V, MAIN5V 2.28 A (OK, 9 % margin to 2.5 A); 2.8 A peak (HD V1.00) → 3.08 A, **over** the backup limit; D21 replaced by a link (A-01) → 4.70 V, 2.17 A (13 % margin); LTE 1.0 A with link → 1.27 A. U20 UVLO (3.5–3.7 V rising) is never approached (VIN ≥ 4.2 V). **Yes, v6 can bring the modem up from the LTC4040 boost alone**, provided (1) the modem is enabled only after the F9P rail has settled, (2) the modem is LTE-only on battery, (3) the W5500 is off (E-01), and (4) the VBAT bank is fixed (B-02). Otherwise LTE-burst droop, not UVLO, is the failure mode. R2 hardware path: EN low stops U20; VBAT decays through R112 1 kΩ, τ 0.46 s → 47 mV after the 2 s HARD_CYCLE. | Firmware sequencing (§8). Bench-check VBAT at MAIN5V = 4.6 V with a 2 A load (AP64350 max duty not stated in DS41976). | -| B-13 | K1 fail-safe premise is obsolete: the A7670SA has no NTRIP client, and an MCU reset also switches the modem off (R113) and releases K1. Coil 5 V × 30 mA = 150 mW while Mode B is held. | No hardware change for v6; firmware energises K1 only while the modem is on; consider a direct PC6 → DIN_4G link in v6.1. | +| **B-16** | **Cold start on battery (brief §4-B explicit statement).** With VSYS 4.79 V: PMEG3050EP as-is, GSM 2 A → VIN(U20) 4.44 V, MAIN5V 2.28 A (OK, 9 % margin to 2.5 A); 2.8 A peak (HD V1.00) → 3.08 A, **over** the backup limit; D21 replaced by a link (A-01) → 4.70 V, 2.17 A (13 % margin); LTE 1.0 A with link → 1.27 A. U20 UVLO (3.5–3.7 V rising) is never approached (VIN ≥ 4.2 V). **Yes, v6 can bring the modem up from the LTC4040 boost alone**, provided (1) the modem is enabled only after the F9P rail has settled, (2) the modem is LTE-only on battery, (3) the W5500 is off (E-01), and (4) the VBAT bank is fixed (B-02). Otherwise LTE-burst droop, not UVLO, is the failure mode. R2 hardware path: EN low stops U20; VBAT decays through R112 1 kΩ, τ 0.46 s → 47 mV after the 2 s HARD_CYCLE. | Firmware sequencing (§8). Bench-check VBAT at MAIN5V = 4.6 V with a 2 A load (AP64350 max duty not stated in DS41976). | +| B-13 | K1 fail-safe premise is obsolete: the A7670SA has no NTRIP client, and an MCU reset also switches the modem off (R113) and releases K1. Coil 5 V × 30 mA = 150 mW while Mode B is held. | No hardware change for v6; firmware energises K1 only while the modem is on; consider a direct PC6 → DIN_4G link in v6.1. | | B-14 | Everything the modem prints (AT replies, URCs, socket headers) reaches F9P UART2 RXD. No contention (single driver U24). | Firmware: F9P UART2 in-protocol RTCM3 only at 115 200; caster socket transparent (`AT+CIPMODE=1`) or MCU re-assembly → USART2 → F9P UART1. | -| B-15 | R107/R108 "bypass the shifter" DNP 0 Ω footprints cannot work: fitted without the shifter they put 1.8 V on F9P RXD2 (VIH 2.64 V) and 3.3 V on modem RXD (abs max 2.0 V). | Delete them or add a "never fit" note. | +| B-15 | R107/R108 "bypass the shifter" DNP 0 Ω footprints cannot work: fitted without the shifter they put 1.8 V on F9P RXD2 (VIH 2.64 V) and 3.3 V on modem RXD (abs max 2.0 V). | Delete them or add a "never fit" note. | #### (b) Pass/fail — §4-B | Check | Evidence (one line) | Result | |---|---|---| | A7670SA footprint / pin numbering | LGA-124 matches HD V1.03 (VBAT 55–57, RF_ANT 60, STATUS 66, VDD_1V8 15, UART 9/10, USIM 30–34) | ✅ | -| U20 source | `/VIN_MODEM` from unfused `/24V` via D20 and from MAIN5V via D21 (30 V) | ❌ A-01 | -| U20 EN default OFF | EN pull-up 1.5 µA × R113 100 k = 0.15 V < 1.03 V | ✅ | -| U20 output set-point | 75 k/20 k → 3.80 V; worst 3.67–3.94 V within 3.4–4.2 V | ✅ | -| U20 frequency / min on-time | R117 200 k → 500 kHz; tON at 40 V = 190 ns > 100 ns | ✅ | -| U20 compensation vs datasheet for 3.8 V | 5 V Table 1 row applied at 3.8 V; PM ≈ 27° with polymer and 14 k | ❌ B-02 | -| U20 input caps | C127 10 µF 50 V + C128 1 µF; ≈ 65 mV p-p ripple at 2 A; GND 6.86/8.48 mm, 0.25 mm neck | ❌ F-03 | -| L20 saturation | 4.7 µH MWSA0804S, ≥ 8.7 A family Isat vs 2.7 A peak | ✅ (land: H-03) | -| L20 / C129 / COMP / RT placement | L20 2.24 mm, BST 1.8 mm, COMP 0.72 mm, RT 1.44 mm | ✅ | -| SW_MODEM copper | 1.0 mm × 6.6 mm, 2.2 mΩ (was 0.25 mm × 23 mm on 25-Sep) | ✅ | -| Bulk ≥ 220 µF polymer within 10–20 mm | 2 × 220 µF MVG electrolytic at 8.70 / 16.26 mm | ❌ B-02 (type) | -| VBAT track width ≥ 0.25 mm / vendor ≥ 3 mm | 0.5 mm neck into pins 55–57, 1 mm over 7 mm | ⚠ B-08 | -| VBAT HF ceramics | C133–C136 1.7–2.7 mm, C132 4.1 mm from VBAT pads | ✅ | +| U20 source | `/VIN_MODEM` from unfused `/24V` via D20 and from MAIN5V via D21 (30 V) | ❌ A-01 | +| U20 EN default OFF | EN pull-up 1.5 µA × R113 100 k = 0.15 V < 1.03 V | ✅ | +| U20 output set-point | 75 k/20 k → 3.80 V; worst 3.67–3.94 V within 3.4–4.2 V | ✅ | +| U20 frequency / min on-time | R117 200 k → 500 kHz; tON at 40 V = 190 ns > 100 ns | ✅ | +| U20 compensation vs datasheet for 3.8 V | 5 V Table 1 row applied at 3.8 V; PM ≈ 27° with polymer and 14 k | ❌ B-02 | +| U20 input caps | C127 10 µF 50 V + C128 1 µF; ≈ 65 mV p-p ripple at 2 A; GND 6.86/8.48 mm, 0.25 mm neck | ❌ F-03 | +| L20 saturation | 4.7 µH MWSA0804S, ≥ 8.7 A family Isat vs 2.7 A peak | ✅ (land: H-03) | +| L20 / C129 / COMP / RT placement | L20 2.24 mm, BST 1.8 mm, COMP 0.72 mm, RT 1.44 mm | ✅ | +| SW_MODEM copper | 1.0 mm × 6.6 mm, 2.2 mΩ (was 0.25 mm × 23 mm on 25-Sep) | ✅ | +| Bulk ≥ 220 µF polymer within 10–20 mm | 2 × 220 µF MVG electrolytic at 8.70 / 16.26 mm | ❌ B-02 (type) | +| VBAT track width ≥ 0.25 mm / vendor ≥ 3 mm | 0.5 mm neck into pins 55–57, 1 mm over 7 mm | ⚠ B-08 | +| VBAT HF ceramics | C133–C136 1.7–2.7 mm, C132 4.1 mm from VBAT pads | ✅ | | D22 polarity | SMAJ5.0A pad 1 = cathode on `/VBAT_MODEM` | ✅ | -| VBAT bleed for HARD_CYCLE | τ = 0.46 s → 47 mV after 2 s EN low | ✅ | +| VBAT bleed for HARD_CYCLE | τ = 0.46 s → 47 mV after 2 s EN low | ✅ | | PWRKEY / RESET drive | 2N7002 open-drain, 100 k gate pull-downs, no caps | ✅ | -| Level shifting to 1.8 V | U23 DIR = GND (3.3 → 1.8 V into modem RXD); U24 DIR = VCCA (TXD + STATUS up); unused 2B tied | ✅ | -| Back-powering of the modem | 74LVC2T45 Ioff with VCCA = 0; PWRKEY/RESET open-drain; only 1.8 V on `_M` nets | ✅ | -| STATUS readback | U24 2A→2B, VOH ≈ 3.3 V vs PC9 VIH 2.31 V; floats when modem off | ✅ / ⚠ B-10 | +| Level shifting to 1.8 V | U23 DIR = GND (3.3 → 1.8 V into modem RXD); U24 DIR = VCCA (TXD + STATUS up); unused 2B tied | ✅ | +| Back-powering of the modem | 74LVC2T45 Ioff with VCCA = 0; PWRKEY/RESET open-drain; only 1.8 V on `_M` nets | ✅ | +| STATUS readback | U24 2A→2B, VOH ≈ 3.3 V vs PC9 VIH 2.31 V; floats when modem off | ✅ / ⚠ B-10 | | UART contention | `/DOUT_4G` single driver (U24); `/DIN_4G` via break-before-make K1 | ✅ | -| RTCM visibility (R106 tap) | GGA field 13 on USART2 (PA3) + raw RTCM3 on USART6 RX (PC7); R106 100 Ω too small | ✅ / ⚠ B-10 | +| RTCM visibility (R106 tap) | GGA field 13 on USART2 (PA3) + raw RTCM3 on USART6 RX (PC7); R106 100 Ω too small | ✅ / ⚠ B-10 | | USART allocation | USART6 PC6/PC7 AF8, USART2 PA2/PA3, USART1 RX PA10; PA9 free | ✅ | | USB_BOOT | TP8 floating (not pulled low at power-up) | ✅ | | SIM population / eSIM | J14 + R131–R134 fitted; U22 MFF2 + R127–R130 DNP; USIM1_DET NC | ✅ (details B-09) | -| LTE π-pad | R118 0 Ω + C146/C147 DNP at J13 | ✅ | -| LTE antenna ESD | unidirectional ESD9L5.0 on a 14.1 V-peak TX line | ❌ B-03 | -| LTE feed geometry | 22.14 mm on In1, 2 via transitions, 32–47 Ω, 1 fence via | ❌ F-06 | -| Modem ground vias | 1 GND via under U19; U20 EP 0 vias; J13 20–21 mm to a via | ❌ F-12 | +| LTE π-pad | R118 0 Ω + C146/C147 DNP at J13 | ✅ | +| LTE antenna ESD | unidirectional ESD9L5.0 on a 14.1 V-peak TX line | ❌ B-03 | +| LTE feed geometry | 22.14 mm on In1, 2 via transitions, 32–47 Ω, 1 fence via | ❌ F-06 | +| Modem ground vias | 1 GND via under U19; U20 EP 0 vias; J13 20–21 mm to a via | ❌ F-12 | | J9 modem USB ESD | none | ❌ G-02 | | Cold start on battery (R1) | possible with sequencing, LTE-only, W5500 off and B-02 (B-16) | ⚠ needs fixes + firmware | @@ -364,55 +377,55 @@ Cross-references: F9P back-power through U24 → **D-01** (§4-D, absorbs C-06); ##### C-01 · Blocker · GNSS antenna bias has no current limit and no supervisor; ANT_DETECT / ANT_SHORT_N are undriven *Absorbs:* D-07. *Status:* verified (verify_1). -- **Evidence:** `/VCC_RF_GNSS` = {U18.7, L21, C144, C145}; L21 = C162555 LQG18HN68NJ00D, 68 nH, 0.8 Ω, **400 mA**, SRF 1 GHz (u-blox recommends 120 nH). ZED-F9P-04B DS R05: pin 4 ANT_DETECT = **input** (active high), pin 5 ANT_OFF = output, pin 6 ANT_SHORT_N = **input** (active low); VCC_RF 50 mA operating, **300 mA abs max**. On v6 pins 4/6 connect only to PC1/PC2 (MCU inputs), so nothing drives them; U18.5 ANT_OFF is NC. u-blox IM UBX-18010802 R02 §8.6: "a 10 Ω current limiting resistor is **required** to prevent against short circuits destroying the BIAS-T inductor." -- **Consequence:** a crushed or wet coax (the H0005/H0014 field fault class) lets U21 (AP2112, current limit ≈ 0.6–0.8 A) push more than VCC_RF's 300 mA abs max and L21's 400 mA, collapses 3V3_GNSS into an F9P brown-out loop, and the PC1/PC2 "antenna telemetry" never reports it. Hardware-damage path. -- **Fix:** add **TPS2552DBVR, LCSC C46506** (SOT-23-6, stock 3002). Pinout 1 IN / 2 GND / 3 EN̅ / 4 FAULT̅ / 5 ILIM / 6 OUT. IN = `/3V3_GNSS`; OUT → new net `/ANT_BIAS` = L21.2 + C144 + C145; **ILIM tied to IN → 75 mA typ** (VIN 2.5–6.5 V; constant current into a short, ≈ 0.25 W at 3.3 V; FAULT̅ deglitch 7.5 ms); **EN̅ ← U18.5 ANT_OFF with 100 k (C25803) to GND** (antenna ON by default; ANT_OFF high → antenna off, matching the F9P's active-high ANT_OFF); **FAULT̅ → `/GNSS_ANT_SHORT_N`** (U18.6 + PC2) with **10 k (C25804) to /3V3_GNSS**; leave U18.7 VCC_RF NC. ANT_DETECT stays unimplemented (infer open antenna from C/N0). U21 load becomes 130 mA + 75 mA. The 10 Ω series fallback gives 3.2 V/10.8 Ω ≈ 0.30 A, right at VCC_RF's abs max: acceptable only as u-blox's stated minimum, and no LCSC is selected for it in the findings. +- **Evidence:** `/VCC_RF_GNSS` = {U18.7, L21, C144, C145}; L21 = C162555 LQG18HN68NJ00D, 68 nH, 0.8 Ω, **400 mA**, SRF 1 GHz (u-blox recommends 120 nH). ZED-F9P-04B DS R05: pin 4 ANT_DETECT = **input** (active high), pin 5 ANT_OFF = output, pin 6 ANT_SHORT_N = **input** (active low); VCC_RF 50 mA operating, **300 mA abs max**. On v6 pins 4/6 connect only to PC1/PC2 (MCU inputs), so nothing drives them; U18.5 ANT_OFF is NC. u-blox IM UBX-18010802 R02 §8.6: "a 10 Ω current limiting resistor is **required** to prevent against short circuits destroying the BIAS-T inductor." +- **Consequence:** a crushed or wet coax (the H0005/H0014 field fault class) lets U21 (AP2112, current limit ≈ 0.6–0.8 A) push more than VCC_RF's 300 mA abs max and L21's 400 mA, collapses 3V3_GNSS into an F9P brown-out loop, and the PC1/PC2 "antenna telemetry" never reports it. Hardware-damage path. +- **Fix:** add **TPS2552DBVR, LCSC C46506** (SOT-23-6, stock 3002). Pinout 1 IN / 2 GND / 3 EN̅ / 4 FAULT̅ / 5 ILIM / 6 OUT. IN = `/3V3_GNSS`; OUT → new net `/ANT_BIAS` = L21.2 + C144 + C145; **ILIM tied to IN → 75 mA typ** (VIN 2.5–6.5 V; constant current into a short, ≈ 0.25 W at 3.3 V; FAULT̅ deglitch 7.5 ms); **EN̅ ← U18.5 ANT_OFF with 100 k (C25803) to GND** (antenna ON by default; ANT_OFF high → antenna off, matching the F9P's active-high ANT_OFF); **FAULT̅ → `/GNSS_ANT_SHORT_N`** (U18.6 + PC2) with **10 k (C25804) to /3V3_GNSS**; leave U18.7 VCC_RF NC. ANT_DETECT stays unimplemented (infer open antenna from C/N0). U21 load becomes 130 mA + 75 mA. The 10 Ω series fallback gives 3.2 V/10.8 Ω ≈ 0.30 A, right at VCC_RF's abs max: acceptable only as u-blox's stated minimum, and no LCSC is selected for it in the findings. - **Effort:** both. -##### C-02 · Major · U21 AP2112K has no soft-start: the ZED-F9P VCC ramp window (20–8000 µs/V) is met only by an unspecified margin +##### C-02 · Major · U21 AP2112K has no soft-start: the ZED-F9P VCC ramp window (20–8000 µs/V) is met only by an unspecified margin *Status:* verified, Major at the low end (verify_1). -- **Evidence:** U21 = AP2112K-3.3 (C51118), EN tied to VIN (`/SW_5V`), starts when Q1 switches `/SW_5V` (no gate RC). AP2112 DS39724: tS = 20 µs at no load, 50 mA foldback short-circuit current, no soft-start. `/3V3_GNSS` ≈ 18 µF (2 × 10 µF X5R + 3 × 100 nF). Ramp: ≈ 400 µs/V at start → ≈ 28 µs/V near regulation, ≈ 80 µs/V average: inside 20–8000 µs/V (ZED-F9P DS Table 15), but the fast-end margin (≈ 1.4×) depends on the AP2112's unspecified current-limit maximum. The F9P is power-cycled every 10-min window (R1: ≈ 52 000 starts/year). +- **Evidence:** U21 = AP2112K-3.3 (C51118), EN tied to VIN (`/SW_5V`), starts when Q1 switches `/SW_5V` (no gate RC). AP2112 DS39724: tS = 20 µs at no load, 50 mA foldback short-circuit current, no soft-start. `/3V3_GNSS` ≈ 18 µF (2 × 10 µF X5R + 3 × 100 nF). Ramp: ≈ 400 µs/V at start → ≈ 28 µs/V near regulation, ≈ 80 µs/V average: inside 20–8000 µs/V (ZED-F9P DS Table 15), but the fast-end margin (≈ 1.4×) depends on the AP2112's unspecified current-limit maximum. The F9P is power-cycled every 10-min window (R1: ≈ 52 000 starts/year). - **Consequence:** occasional failed F9P start (dark receiver until the next cycle) in exactly the duty-cycled mode R1 requires. -- **Fix:** **U21 → TPS7A2033PDBVR, LCSC C2862740** (same DBV pinout 1 IN / 2 GND / 3 EN / 4 NC / 5 OUT; t_STR 750–1150 µs → **239–367 µs/V**; current limit ≥ 360 mA > 20 µF·3.3 V/0.75 ms = 88 mA + load; VIN max 6.0 V vs SW_5V ≤ 5.46 V; COUT 0.47–200 µF; stock 28 370). Bench: scope `/3V3_GNSS` rise (target 100–1000 µs/V). +- **Fix:** **U21 → TPS7A2033PDBVR, LCSC C2862740** (same DBV pinout 1 IN / 2 GND / 3 EN / 4 NC / 5 OUT; t_STR 750–1150 µs → **239–367 µs/V**; current limit ≥ 360 mA > 20 µF·3.3 V/0.75 ms = 88 mA + load; VIN max 6.0 V vs SW_5V ≤ 5.46 V; COUT 0.47–200 µF; stock 28 370). Bench: scope `/3V3_GNSS` rise (target 100–1000 µs/V). - **Effort:** schematic-only (drop-in). -##### C-04 · Major · GNSS supply switch Q1 sits 9 mm from the LTE antenna feed; `/SW_5V` crosses the board on In1 +##### C-04 · Major · GNSS supply switch Q1 sits 9 mm from the LTE antenna feed; `/SW_5V` crosses the board on In1 *Status:* verified (verify_1). -- **Evidence:** Q1 AO3401A (`/SW_IN` → `/SW_5V`) at (197.28, 59.81) = **9.0 mm from J13**, Q5 7.1 mm (centres); F1 at (171.4, 44.3) in the LTE corner. `/SW_5V` Q1.3 → U21.1: **In1 181.32 mm** + F.Cu 19.7 mm, 2 vias (95 mΩ at 35 µm, 184 mΩ at 17.5 µm inner copper). The In1 section of RF_LTE passes 0.21 mm under `/SW_IN` and `/SYS5V`. -- **Consequence:** the F9P supply starts in the LTE transmitter's near field and travels ≈ 17–20 cm as a slot in the GND plane; LDO PSRR at LTE frequencies ≈ 0 dB, so TX envelope/IMD products ride into the receiver rail (desense, the brief's #1 risk), and In1 is cut end to end (F-05). -- **Fix (layout):** move Q1 + Q5 + R1 + R2 (F1 optional) into the GNSS island next to U21/C3/C40/C119; bring `/SYS5V` (or `/SW_IN`) to it instead; keep `/PWR_CTRL` as the long signal; route the remaining feed on F.Cu or In2 away from the RF lines. Target `/SW_5V` ≤ 15 mm and 0 mm on In1. +- **Evidence:** Q1 AO3401A (`/SW_IN` → `/SW_5V`) at (197.28, 59.81) = **9.0 mm from J13**, Q5 7.1 mm (centres); F1 at (171.4, 44.3) in the LTE corner. `/SW_5V` Q1.3 → U21.1: **In1 181.32 mm** + F.Cu 19.7 mm, 2 vias (95 mΩ at 35 µm, 184 mΩ at 17.5 µm inner copper). The In1 section of RF_LTE passes 0.21 mm under `/SW_IN` and `/SYS5V`. +- **Consequence:** the F9P supply starts in the LTE transmitter's near field and travels ≈ 17–20 cm as a slot in the GND plane; LDO PSRR at LTE frequencies ≈ 0 dB, so TX envelope/IMD products ride into the receiver rail (desense, the brief's #1 risk), and In1 is cut end to end (F-05). +- **Fix (layout):** move Q1 + Q5 + R1 + R2 (F1 optional) into the GNSS island next to U21/C3/C40/C119; bring `/SYS5V` (or `/SW_IN`) to it instead; keep `/PWR_CTRL` as the long signal; route the remaining feed on F.Cu or In2 away from the RF lines. Target `/SW_5V` ≤ 15 mm and 0 mm on In1. - **Effort:** layout. ##### Minor (C) — not independently verified -- **C-07 · Minor · No test pad on SAFEBOOT_N.** U18.50 SAFEBOOT_N NC; V_USB/USB_DM/USB_DP NC; the only access is UART1 through the MCU bridge (P17 removed). *Consequence:* a failed F9P firmware update over the passthrough cannot be recovered (safeboot needs SAFEBOOT_N low at power-up). *Fix:* 1 mm test pads on U18.50 (SAFEBOOT_N) and U18.49 (RESET_N) next to a GND pad; no resistor. *Effort:* both. +- **C-07 · Minor · No test pad on SAFEBOOT_N.** U18.50 SAFEBOOT_N NC; V_USB/USB_DM/USB_DP NC; the only access is UART1 through the MCU bridge (P17 removed). *Consequence:* a failed F9P firmware update over the passthrough cannot be recovered (safeboot needs SAFEBOOT_N low at power-up). *Fix:* 1 mm test pads on U18.50 (SAFEBOOT_N) and U18.49 (RESET_N) next to a GND pad; no resistor. *Effort:* both. ##### Notes (C) — not independently verified | ID | Observation | Action | |---|---|---| -| C-08 | Identity: no `$GPTXT H00xx` source on v6 (the ArduSimple NTRIP Master is gone; A7670SA and F9P emit no unit ID). FW 0.6.0-eth builds `$PHID,<96-bit UID>,,,,` (L718–724) but sends it only on the Ethernet TCP mirror. Lesson F9. | FW 0.7.x sends `$PHID` on the modem uplink at every connect and every 5 min; backend `retranslator` maps UID → H-number before v6 ships. | -| C-09 | V_BCKP (U18.36) on the always-on `/3V3` → hot start after each 10-min off (45 µA) ✅; its decoupler Cu4 (100 nF) is 4.06 mm from pin 36. | Optional: move Cu4 ≤ 2 mm. | +| C-08 | Identity: no `$GPTXT H00xx` source on v6 (the ArduSimple NTRIP Master is gone; A7670SA and F9P emit no unit ID). FW 0.6.0-eth builds `$PHID,<96-bit UID>,,,,` (L718–724) but sends it only on the Ethernet TCP mirror. Lesson F9. | FW 0.7.x sends `$PHID` on the modem uplink at every connect and every 5 min; backend `retranslator` maps UID → H-number before v6 ships. | +| C-09 | V_BCKP (U18.36) on the always-on `/3V3` → hot start after each 10-min off (45 µA) ✅; its decoupler Cu4 (100 nF) is 4.06 mm from pin 36. | Optional: move Cu4 ≤ 2 mm. | #### (b) Pass/fail — §4-C | Check | Evidence (one line) | Result | |---|---|---| -| VCC ramp window 20–8000 µs/V | AP2112 no soft-start: ≈ 28 µs/V near regulation, margin unspecified | ⚠ C-02 | +| VCC ramp window 20–8000 µs/V | AP2112 no soft-start: ≈ 28 µs/V near regulation, margin unspecified | ⚠ C-02 | | RTK_STAT | U18.20 → PC3 (output → MCU input) | ✅ | | TIMEPULSE | U18.53 → PA7 (TIM3_CH2 / EXTI7) | ✅ | | RESET_N | PC12 + R105 10 k to /3V3_GNSS (open-drain drive in firmware) | ✅ | | SAFEBOOT_N | NC, no pad | ⚠ C-07 | -| V_BCKP | on always-on /3V3, 45 µA; Cu4 at 4.06 mm | ✅ (C-09 Note) | +| V_BCKP | on always-on /3V3, 45 µA; Cu4 at 4.06 mm | ✅ (C-09 Note) | | Antenna bias current limit / short detect | none; ANT_DETECT/ANT_SHORT_N undriven F9P inputs | ❌ C-01 | -| DC block / bias-T | C143 0.56 mm from J12; L21 68 nH still −j455 Ω at L1 despite 1 GHz SRF | ✅ | -| GNSS ESD D27 | unidirectional 5 V, cathode on line, bias 3.2 V < VRWM | ✅ | -| 50 Ω trace geometry on the real stackup | 0.5 mm / 0.15 mm gap → 38–41 Ω on JLC04161H-7628; `/VCC_RF_GNSS` 0.274 mm alongside over 3.3 mm | ❌ F-06 | +| DC block / bias-T | C143 0.56 mm from J12; L21 68 nH still −j455 Ω at L1 despite 1 GHz SRF | ✅ | +| GNSS ESD D27 | unidirectional 5 V, cathode on line, bias 3.2 V < VRWM | ✅ | +| 50 Ω trace geometry on the real stackup | 0.5 mm / 0.15 mm gap → 38–41 Ω on JLC04161H-7628; `/VCC_RF_GNSS` 0.274 mm alongside over 3.3 mm | ❌ F-06 | | RF_GNSS over a solid plane | 0 In1 slot crossings | ✅ | -| F9P decoupling | C121/C122 1.7 mm, C120/C124 2.4–2.5 mm, U21 4.4 mm from VCC pins | ✅ | +| F9P decoupling | C121/C122 1.7 mm, C120/C124 2.4–2.5 mm, U21 4.4 mm from VCC pins | ✅ | | UART / I²C / SPI to MCU | UART1 ↔ USART2 PA2/PA3; UART2 RX ← modem, TX → PA10 / K1 NC; D_SEL open = UART | ✅ | | u-center passthrough via J11 (P17 removed) | only through the MCU USB-CDC bridge to USART2 (firmware must follow CDC line coding) | ✅ (firmware item) | -| F9P back-powering while off | U24 drives 3.3 V into unpowered RXD2 | ❌ D-01 | -| Supply switch distance from LTE feed | Q1 9.0 mm from J13; `/SW_5V` 181 mm on In1 | ❌ C-04 | -| GNSS island vs switchers ≥ 25 mm | nearest SW copper `/ETH_SW` 27.5 mm, L8 35.3 mm | ✅ | -| Island separation | J13 ↔ J12 150.3 mm; U19 ↔ U18 108.9 mm | ✅ | +| F9P back-powering while off | U24 drives 3.3 V into unpowered RXD2 | ❌ D-01 | +| Supply switch distance from LTE feed | Q1 9.0 mm from J13; `/SW_5V` 181 mm on In1 | ❌ C-04 | +| GNSS island vs switchers ≥ 25 mm | nearest SW copper `/ETH_SW` 27.5 mm, L8 35.3 mm | ✅ | +| Island separation | J13 ↔ J12 150.3 mm; U19 ↔ U18 108.9 mm | ✅ | | F9P ground vias | 0 vias under U18; 946 mm² cluster with 5 vias | ❌ F-12 | | Identity without `$GPTXT` (lesson F9) | no H00xx source on v6; `$PHID` on Ethernet only | ⚠ C-08 (firmware) | | MCU UID path for identity | 96-bit UID at 0x1FFF7A10 used by 0.6.0-eth | ✅ | @@ -426,24 +439,24 @@ The full 64-pin table is in §4 of this report (condensed) and in `pinmap-v6.md` ##### D-01 · Major · U24 back-powers the unpowered ZED-F9P through RXD2 *Absorbs:* C-06. *Status:* verified-with-correction (verify_2: use the Nexperia gate C12518, not the clone; the 10 k series-R alternative is not enough). -- **Evidence:** U24 74LVC2T45: VCC(A) = `/1V8_MODEM`, **VCC(B) = `/3V3` (always on)**, DIR = VCC(A) (A→B). `/DOUT_4G` = {U24.7 (1B), R106.1, R107.2 (DNP), U18.26 RXD2}; `/3V3_GNSS` = U21 output + U18.33/34 only (switched by PA1 → Q5 → Q1). ZED-F9P-04B DS R05 Table 14: input −0.5 … VCC + 0.5 V for VCC ≤ 3.1 V, so at VCC = 0 a 3.3 V push-pull high exceeds it by 2.8 V. The 74LVC2T45's Ioff protects only the modem side (U23), not U24's B output into a dead load. Smaller paths into the same receiver: Rdfu1 22 k → /3V3 on `/USART1_RX` (U18.27) ≈ 0.12 mA; PA10 internal pull-up 7–14 kΩ (≈ 0.5 mA if left enabled); PC7 pull-up via R106 (≈ 70 µA); PA2/PC12 if driven high. Same mechanism as the FW 0.5.5/0.5.6 lesson (idle-high UART held the V5.5 rails up through ESD diodes). -- **Consequence:** whenever the modem is up and PA1 is low, the F9P rail sits pre-biased (≈ 2–2.7 V, auditor estimate): no clean ramp, F9P power-cycle recovery silently fails, RXD2 ESD structure stressed. Firmware can avoid it only by never having the modem on with the F9P off (rules out F9P-only recovery with the modem registered). Major, not Blocker, because that sequencing avoids it (verify_2). -- **Fix:** add **U27 = Nexperia 74LVC1G125GV,125, LCSC C12518** (SOT-753: 1 OE̅, 2 A, 3 GND, 4 Y, 5 VCC; datasheet Rev 17.1 "IOFF … partial power-down", ±2 µA), **VCC = `/3V3_GNSS`**, OE̅ = GND, **100 nF C14663** at VCC; A = `/DOUT_4G`, Y = new net `/DOUT_4G_F9P` → U18.26. PC7/R106 stay on `/DOUT_4G` (moving U24's VCCB to `/3V3_GNSS` would kill MODEM_STATUS and the RTCM tap with the F9P off, R2). Do not use the TECH PUBLIC clone C3040595. **Rdfu1 22 k → 100 k (C25803)** (≤ 27 µA into U18.27). Rejected: 10 k in series at U18.26 (≈ 0.28 mA, the same order as the leakage that held the V5.5 modem rail at ≈ 1 V). Bench: `/3V3_GNSS` < 0.3 V with PA1 low and the modem on. +- **Evidence:** U24 74LVC2T45: VCC(A) = `/1V8_MODEM`, **VCC(B) = `/3V3` (always on)**, DIR = VCC(A) (A→B). `/DOUT_4G` = {U24.7 (1B), R106.1, R107.2 (DNP), U18.26 RXD2}; `/3V3_GNSS` = U21 output + U18.33/34 only (switched by PA1 → Q5 → Q1). ZED-F9P-04B DS R05 Table 14: input −0.5 … VCC + 0.5 V for VCC ≤ 3.1 V, so at VCC = 0 a 3.3 V push-pull high exceeds it by 2.8 V. The 74LVC2T45's Ioff protects only the modem side (U23), not U24's B output into a dead load. Smaller paths into the same receiver: Rdfu1 22 k → /3V3 on `/USART1_RX` (U18.27) ≈ 0.12 mA; PA10 internal pull-up 7–14 kΩ (≈ 0.5 mA if left enabled); PC7 pull-up via R106 (≈ 70 µA); PA2/PC12 if driven high. Same mechanism as the FW 0.5.5/0.5.6 lesson (idle-high UART held the V5.5 rails up through ESD diodes). +- **Consequence:** whenever the modem is up and PA1 is low, the F9P rail sits pre-biased (≈ 2–2.7 V, auditor estimate): no clean ramp, F9P power-cycle recovery silently fails, RXD2 ESD structure stressed. Firmware can avoid it only by never having the modem on with the F9P off (rules out F9P-only recovery with the modem registered). Major, not Blocker, because that sequencing avoids it (verify_2). +- **Fix:** add **U27 = Nexperia 74LVC1G125GV,125, LCSC C12518** (SOT-753: 1 OE̅, 2 A, 3 GND, 4 Y, 5 VCC; datasheet Rev 17.1 "IOFF … partial power-down", ±2 µA), **VCC = `/3V3_GNSS`**, OE̅ = GND, **100 nF C14663** at VCC; A = `/DOUT_4G`, Y = new net `/DOUT_4G_F9P` → U18.26. PC7/R106 stay on `/DOUT_4G` (moving U24's VCCB to `/3V3_GNSS` would kill MODEM_STATUS and the RTCM tap with the F9P off, R2). Do not use the TECH PUBLIC clone C3040595. **Rdfu1 22 k → 100 k (C25803)** (≤ 27 µA into U18.27). Rejected: 10 k in series at U18.26 (≈ 0.28 mA, the same order as the leakage that held the V5.5 modem rail at ≈ 1 V). Bench: `/3V3_GNSS` < 0.3 V with PA1 low and the modem on. - **Effort:** both (1 IC + 1 cap + short reroute at U18.26). ##### Minor (D) -- **D-02 · Minor · HSE crystal 8.3/11.3 mm from the MCU; HC-49S CL 20 pF crystal at the ST start-up gm limit** — *absorbs F-11 (Y3 part).* *Status:* verified (verify_2). Y3 = C14872 (CL 20 pF, **−20…+70 °C**) pad edge → PH0/PH1 **8.32 / 11.30 mm**; C113/C114 15 pF (C1644) → CL_eff 12.5–17.5 pF; gm_crit 1.21–2.37 mA/V at ESR 40 Ω vs Gm_crit_max 1 mA/V (DS10314 Table 37): passes at typical ESR; V5.5 as-fabbed has the same parts at 11.9–13.7 mm and starts in the field. In1 `/USART6_RX` crosses both HSE lines under Y3; `/BAT_PLUS` on all four layers beside it (F-11). ROM DFU and the USB clock depend on HSE. *Fix:* **Y3 → C2901684** (SCTF 3225-4P, 25 MHz, CL 10 pF, ESR 30 Ω, −40…+85 °C, stock 11 076; footprint `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm`) + **C113/C114 → 12 pF C0G (C38523)** → CL_eff 9.5 pF, gm_crit **0.46 mA/V** (2.2× margin); ≤ 3 mm from PH0/PH1, no inner track under the crystal or its lines. Verifier conflict: verify_2 prefers **C9006** (YXC 3225, CL 12 pF, Basic, 528 k stock) with the existing 15 pF C1644 (≈ 0.77 mA/V at ESR 40 Ω) **after confirming its ESR**; verify_1 (f) left Y3 to the MCU auditor, who chose C2901684. This report picks C2901684 because its ESR is stated in the listing and its margin is larger; C9006 is the Basic-part alternative once its ESR is confirmed. *Effort:* both. -- **D-03 · Minor · LSE crystal load and gm do not suit the F411 low-drive LSE** (not independently verified). Y4 = C32346 FC-135 (CL 12.5 pF, ESR 70 kΩ max); C115/C116 12 pF → CL_eff ≈ 9 pF (+44 ppm ≈ 3.8 s/day); gm_crit 2.16 µA/V at max ESR (≈ 1.1 typ) vs Gm_crit_max 0.56 µA/V low-drive / 1.50 high-drive (DS10314 Table 38); pads 5.54/7.91 mm centre (3.92/6.32 mm pad edge, F-11). *Consequence:* LSE may fail to start in the default low-drive mode; an RTC wake from STOP falls back to LSI (±5–10 %). *Fix:* **Y4 → C48615** (FC-135, CL 7 pF, stock 101 k) + **C115/C116 → 6.8 pF C0G (C1679)** → CL_eff ≈ 6.9 pF, gm_crit 0.76 µA/V max ESR; ≤ 3 mm from PC14/PC15; firmware sets `LSEMOD` (high-drive) before `LSEON`, LSI fallback. *Effort:* both. -- **D-05 · Minor · IGN_SENSE read digitally cannot detect a 12 V ignition; ADC saturates at 28.6 V** (not independently verified). Ratio 2.870 k/(22 k + 2.870 k) = 0.1154: 12 V → 1.385 V (1.30 V with the INPUT_PULLDOWN of `board_v5.h`), 24 V → 2.77 V, 28 V → 3.23 V; VIH 2.31 V → a digital HIGH is guaranteed only above **20.0 V**; ADC full scale at 28.6 V. *Fix:* firmware reads PA5 on the ADC with thresholds (for the as-is ratio: ON > 0.60 V ≈ 5.2 V in, OFF < 0.35 V), no internal pull; hardware **Rigb1 3.3 k → 2.2 k (C4190, Basic)** → ratio 0.0833: 12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V, linear to 39.6 V; new `$PHLG` field `vign`. *Effort:* firmware (+ schematic value). +- **D-02 · Minor · HSE crystal 8.3/11.3 mm from the MCU; HC-49S CL 20 pF crystal at the ST start-up gm limit** — *absorbs F-11 (Y3 part).* *Status:* verified (verify_2). Y3 = C14872 (CL 20 pF, **−20…+70 °C**) pad edge → PH0/PH1 **8.32 / 11.30 mm**; C113/C114 15 pF (C1644) → CL_eff 12.5–17.5 pF; gm_crit 1.21–2.37 mA/V at ESR 40 Ω vs Gm_crit_max 1 mA/V (DS10314 Table 37): passes at typical ESR; V5.5 as-fabbed has the same parts at 11.9–13.7 mm and starts in the field. In1 `/USART6_RX` crosses both HSE lines under Y3; `/BAT_PLUS` on all four layers beside it (F-11). ROM DFU and the USB clock depend on HSE. *Fix:* **Y3 → C2901684** (SCTF 3225-4P, 25 MHz, CL 10 pF, ESR 30 Ω, −40…+85 °C, stock 11 076; footprint `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm`) + **C113/C114 → 12 pF C0G (C38523)** → CL_eff 9.5 pF, gm_crit **0.46 mA/V** (2.2× margin); ≤ 3 mm from PH0/PH1, no inner track under the crystal or its lines. Verifier conflict: verify_2 prefers **C9006** (YXC 3225, CL 12 pF, Basic, 528 k stock) with the existing 15 pF C1644 (≈ 0.77 mA/V at ESR 40 Ω) **after confirming its ESR**; verify_1 (f) left Y3 to the MCU auditor, who chose C2901684. This report picks C2901684 because its ESR is stated in the listing and its margin is larger; C9006 is the Basic-part alternative once its ESR is confirmed. *Effort:* both. +- **D-03 · Minor · LSE crystal load and gm do not suit the F411 low-drive LSE** (not independently verified). Y4 = C32346 FC-135 (CL 12.5 pF, ESR 70 kΩ max); C115/C116 12 pF → CL_eff ≈ 9 pF (+44 ppm ≈ 3.8 s/day); gm_crit 2.16 µA/V at max ESR (≈ 1.1 typ) vs Gm_crit_max 0.56 µA/V low-drive / 1.50 high-drive (DS10314 Table 38); pads 5.54/7.91 mm centre (3.92/6.32 mm pad edge, F-11). *Consequence:* LSE may fail to start in the default low-drive mode; an RTC wake from STOP falls back to LSI (±5–10 %). *Fix:* **Y4 → C48615** (FC-135, CL 7 pF, stock 101 k) + **C115/C116 → 6.8 pF C0G (C1679)** → CL_eff ≈ 6.9 pF, gm_crit 0.76 µA/V max ESR; ≤ 3 mm from PC14/PC15; firmware sets `LSEMOD` (high-drive) before `LSEON`, LSI fallback. *Effort:* both. +- **D-05 · Minor · IGN_SENSE read digitally cannot detect a 12 V ignition; ADC saturates at 28.6 V** (not independently verified). Ratio 2.870 k/(22 k + 2.870 k) = 0.1154: 12 V → 1.385 V (1.30 V with the INPUT_PULLDOWN of `board_v5.h`), 24 V → 2.77 V, 28 V → 3.23 V; VIH 2.31 V → a digital HIGH is guaranteed only above **20.0 V**; ADC full scale at 28.6 V. *Fix:* firmware reads PA5 on the ADC with thresholds (for the as-is ratio: ON > 0.60 V ≈ 5.2 V in, OFF < 0.35 V), no internal pull; hardware **Rigb1 3.3 k → 2.2 k (C4190, Basic)** → ratio 0.0833: 12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V, linear to 39.6 V; new `$PHLG` field `vign`. *Effort:* firmware (+ schematic value). - **D-08 · Minor · No hardware board ID: a V5.6 binary on v6 drives PC3 against the F9P's RTK_STAT output** (not independently verified). V5.6 drives PC3 push-pull as MODEM_EN; v6 PC3 = U18.20 RTK_STAT (push-pull output); PC1/PC2 are F9P inputs on v6. *Fix:* **10 k (C25804) strap → GND** on a spare pin; firmware reads it with INPUT_PULLUP at boot (v6 build requires 0, V5.6 build requires 1, else outputs off and `BOARD MISMATCH`). **Open conflict:** D-08 proposed PD2, which verify_1 (h) assigns to E-01 (`ETH_PWR_EN`); the only spare left is PA9, which D-12 wants as a debug TX pad. Leo to choose (§10). *Effort:* schematic + 1 short trace. -- **D-09 · Minor · PWR_CTRL has no default-off pull at Q5's base** — *absorbs A-12* (not independently verified). `/PWR_CTRL` = {U16.15, R1.1}; `/BASE_LS` = {R1.2, Q5.1}; PA1 floats in reset/DFU; worst-case leakage ±1 µA × hFE ≈ 100 → up to 100 µA through R2 10 k → ≈ 1 V gate drive on Q1 AO3401A (VGS(th) −0.5…−1.3 V). V5.5 identical and fielded (typical leakage nA). *Fix:* **100 k (C25803) `/BASE_LS` → GND** next to Q5 (A-12's 47 k had no LCSC; 100 k C25803 is already in the BOM). *Effort:* both. -- **D-12 · Minor · No UART TX pad for a TX-only log / ROM USART bootloader; SWD pads scattered** (not independently verified). PA9 (USART1_TX, pad 42) NC; ROM USART1 bootloader runs on HSI but needs PA9; SWD = TP3 (109.0, 69.7), TP4 (112.5, 76.2), TP5 (110.0, 74.7), GND TP6 17.6 mm from TP3, 3V3 TP7; no SWO (PB3 = CHRG_STAT). *Fix:* **TP9** (`TestPoint_Pad_D1.5mm`, no BOM part) on PA9 next to TP3–TP5; optional DNP 1×5 2.54 mm footprint (3V3, SWDIO, SWCLK, NRST, GND) or a Tag-Connect TC2030-NL land (no BOM cost). *Effort:* layout (+ schematic pad). +- **D-09 · Minor · PWR_CTRL has no default-off pull at Q5's base** — *absorbs A-12* (not independently verified). `/PWR_CTRL` = {U16.15, R1.1}; `/BASE_LS` = {R1.2, Q5.1}; PA1 floats in reset/DFU; worst-case leakage ±1 µA × hFE ≈ 100 → up to 100 µA through R2 10 k → ≈ 1 V gate drive on Q1 AO3401A (VGS(th) −0.5…−1.3 V). V5.5 identical and fielded (typical leakage nA). *Fix:* **100 k (C25803) `/BASE_LS` → GND** next to Q5 (A-12's 47 k had no LCSC; 100 k C25803 is already in the BOM). *Effort:* both. +- **D-12 · Minor · No UART TX pad for a TX-only log / ROM USART bootloader; SWD pads scattered** (not independently verified). PA9 (USART1_TX, pad 42) NC; ROM USART1 bootloader runs on HSI but needs PA9; SWD = TP3 (109.0, 69.7), TP4 (112.5, 76.2), TP5 (110.0, 74.7), GND TP6 17.6 mm from TP3, 3V3 TP7; no SWO (PB3 = CHRG_STAT). *Fix:* **TP9** (`TestPoint_Pad_D1.5mm`, no BOM part) on PA9 next to TP3–TP5; optional DNP 1×5 2.54 mm footprint (3V3, SWDIO, SWCLK, NRST, GND) or a Tag-Connect TC2030-NL land (no BOM cost). *Effort:* layout (+ schematic pad). ##### Notes (D) — not independently verified | ID | Observation | Action | |---|---|---| | D-13 | EXTI3 shared by PC3 RTK_STAT and PB3 CHRG_STAT; EXTI9 by PB9 ACC_INT1 and PC9 MODEM_STATUS; PA6 fan (TIM3_CH1) and PA7 PPS (TIM3_CH2) share TIM3. | EXTI9 → PB9 (motion wake); poll PC9 and PB3; fan stays GPIO ON/OFF so TIM3 is free for PPS capture. | -| D-15 | Nearest 100 nF per VDD pin (centre): VDD19 3.29 mm, VDD32 3.65, VDD48 2.10, VDD64 3.90 (shared with VBAT pin 1), VDDA 3.13, VCAP1 3.19. | Tighten to ≤ 2 mm in the layout pass if convenient. | +| D-15 | Nearest 100 nF per VDD pin (centre): VDD19 3.29 mm, VDD32 3.65, VDD48 2.10, VDD64 3.90 (shared with VBAT pin 1), VDDA 3.13, VCAP1 3.19. | Tighten to ≤ 2 mm in the layout pass if convenient. | #### (b) Pass/fail — §4-D | Check | Evidence (one line) | Result | @@ -454,27 +467,27 @@ The full 64-pin table is in §4 of this report (condensed) and in `pinmap-v6.md` | v6 nets with no firmware counterpart | PA7, PC1–PC4, PC6–PC12, PB9 | ⚠ firmware delta (§8) | | ADC nets on ADC pads | PA0/IN0, PA4/IN4, PA5/IN5, PB1/IN9, PC4/IN14; spare PC5/IN15 | ✅ | | AF conflicts | USART2 AF7, USART6 AF8, USART1_RX AF7, SPI2 AF5, I2C1 AF4, OTG AF10, SWD AF0: no overlap | ✅ | -| 5 V on a non-FT pin | none; TC pins carry PA0 ≤ 2.10 V and PB5 (output) | ✅ | -| 1.8 V modem signals reaching the MCU | none (U23/U24, Q20/Q21) | ✅ | +| 5 V on a non-FT pin | none; TC pins carry PA0 ≤ 2.10 V and PB5 (output) | ✅ | +| 1.8 V modem signals reaching the MCU | none (U23/U24, Q20/Q21) | ✅ | | PWM (fan) timer | PA6 TIM3_CH1 shares TIM3 with PPS capture on PA7; fan is ON/OFF | ✅ (D-13 Note) | | EXTI allocation | EXTI3 and EXTI9 each shared by two pins | ⚠ D-13 | | Modem control defaults in reset | R113/R114/R115 100 k pull-downs on PC10/PC8/PC11 | ✅ | | F9P rail default in reset | Q5 base floats | ⚠ D-09 | | Charger default in reset | R56 pull-down → charger ON | ⚠ A-11 | | BOOT0 / BOOT1 DFU trap | R98 10 k PD + SW2; PB2 only R99 10 k PD; ETH_INT on PC0 | ✅ | -| NRST routing (SW1, P6, C104) | C104 100 nF at 3.26 mm; SW1 pad pairs correct; P6 RESET-EXT; TP5 | ✅ (P6 ESD: G-08) | -| SWD access | TP3/TP4/TP5 pads, no header, GND TP 17.6 mm away, no SWO | ⚠ D-12 | +| NRST routing (SW1, P6, C104) | C104 100 nF at 3.26 mm; SW1 pad pairs correct; P6 RESET-EXT; TP5 | ✅ (P6 ESD: G-08) | +| SWD access | TP3/TP4/TP5 pads, no header, GND TP 17.6 mm away, no SWO | ⚠ D-12 | | DFU ESD at J11 | D14/D15/D16 at 3.19/6.74/6.83 mm; CC 5.1 k × 2; VBUS diode-OR D12/D13 | ✅ (stubs: F-14) | -| VCAP1 / VDDA | C111 4.7 µF at 3.19 mm; R104 10 Ω + 1 µF + 100 nF | ✅ | +| VCAP1 / VDDA | C111 4.7 µF at 3.19 mm; R104 10 Ω + 1 µF + 100 nF | ✅ | | CHRG_STAT / FAULT inputs | R57/R58 100 k → /3V3 on PB3/PB4 | ✅ | | PFO input | `/PFO_TP` goes to TP2 only | ⚠ A-13 | | IGN_SENSE divider (Rig 22 k) and junction | Rig1.2/Rig2.1/Rigb1.1/C9/D5/U16.21 on one net, sch and PCB (6 pads, 1 group); V5.6 junction loss not present | ✅ | | IGN clamp orientation | D5 K → /3V3, A → /IGN_SENSE | ✅ | -| IGN digital threshold for 12 V vehicles | HIGH guaranteed only above 20.0 V | ⚠ D-05 | +| IGN digital threshold for 12 V vehicles | HIGH guaranteed only above 20.0 V | ⚠ D-05 | | I²C address map | 0x18 SC7A20, 0x20 PCF8574, 0x44 SHT40, 0x4D SC16IS752: no clash (TMP102 0x48 would also fit) | ✅ | | NC flags on connected pins hide an error? | U16.37/38, U10.13/14 nets real in netlist + IPC-356, routed | ✅ (cosmetic: J-04) | -| HSE ≤ 5 mm | 8.32 / 11.30 mm pad edge | ❌ D-02 (Minor) | -| LSE ≤ 5 mm | 3.92 / 6.32 mm pad edge (5.54 / 7.91 mm centre) | ⚠ D-03 | +| HSE ≤ 5 mm | 8.32 / 11.30 mm pad edge | ❌ D-02 (Minor) | +| LSE ≤ 5 mm | 3.92 / 6.32 mm pad edge (5.54 / 7.91 mm centre) | ⚠ D-03 | | F9P back-feed from MCU-side logic | U24 → U18.26 with the F9P off | ❌ D-01 | | ETH_RST pull-down | none; 100 k would not work | ❌ E-02 | | Hardware board ID | none; mis-flash drives PC3 against RTK_STAT | ⚠ D-08 | @@ -488,22 +501,22 @@ Cross-references: J10/P11/P12 DNP and footprint parity → **G-03** (absorbs E-0 ##### E-01 · Major · 3V3_ETH is not switchable: the W5500 is powered on battery and during MCU reset (lesson F8 repeated) *Absorbs:* A-05 fix 1. *Status:* verified (verify_1). -- **Evidence:** U12 (MP1584EN) pin 2 EN = `/SYS5V` = pin 7 VIN → on whenever SYS5V exists (vehicle and battery). W5500 DS v1.0.2: 128 mA (100M link), 75 mA (10M), 13 mA power-down. J10 is DNP on the PCB but U11/U12 are populated, so the draw exists even without a jack. MP1584 EN: internal 1 µA pull-up to ≈ 3 V, rising threshold 1.5 V, abs max 6 V. W5500 VIH max 5.5 V (5 V-tolerant I/O), so MCU-driven SPI/RST lines do not back-power a gated 3V3_ETH. -- **Consequence:** a permanent ≈ 0.05–0.6 W battery load; even the 13 mA power-down current costs ≈ 57 mW from the battery, more than the whole 20–50 mW sleep floor. Hardware gating is required for R1's energy target. -- **Fix:** new net **`/ETH_PWR_EN`: U12.2 (EN) → U16 pad 54 PD2**, with **100 k (C25803) to GND** → EN at 0.1 V (OFF) in reset/DFU/battery; PD2 at 3.3 V turns it on. PD2 allocation per verify_1 conflict (h). +- **Evidence:** U12 (MP1584EN) pin 2 EN = `/SYS5V` = pin 7 VIN → on whenever SYS5V exists (vehicle and battery). W5500 DS v1.0.2: 128 mA (100M link), 75 mA (10M), 13 mA power-down. J10 is DNP on the PCB but U11/U12 are populated, so the draw exists even without a jack. MP1584 EN: internal 1 µA pull-up to ≈ 3 V, rising threshold 1.5 V, abs max 6 V. W5500 VIH max 5.5 V (5 V-tolerant I/O), so MCU-driven SPI/RST lines do not back-power a gated 3V3_ETH. +- **Consequence:** a permanent ≈ 0.05–0.6 W battery load; even the 13 mA power-down current costs ≈ 57 mW from the battery, more than the whole 20–50 mW sleep floor. Hardware gating is required for R1's energy target. +- **Fix:** new net **`/ETH_PWR_EN`: U12.2 (EN) → U16 pad 54 PD2**, with **100 k (C25803) to GND** → EN at 0.1 V (OFF) in reset/DFU/battery; PD2 at 3.3 V turns it on. PD2 allocation per verify_1 conflict (h). - **Effort:** both (1 resistor, 1 track). ##### E-02 · Major (Minor once E-01 is in) · `/ETH_RST` has no pull-down; the 100 k proposed in the lessons review could never work *Absorbs:* D-04. *Status:* verified-with-correction (verify_1: the W5500 RSTn has its own internal pull-up, so 100 k fails even without PA15; D-04's "PD2 + 100 k" also fails). -- **Evidence:** `/ETH_RST` = {U11.37, U16.50 PA15}. PA15 resets to JTDI with pull-up (RM0383: GPIOA_PUPDR reset 0x6400 0000), R_PU 30–50 kΩ (DS10314). W5500 RSTn internal pull-up **62–112 kΩ** (DS v1.0.2 §5.3); VIL 0.8 V; Schmitt VT− 0.95–1.09 V. 100 k pull-down: 3.3·100/(100 + 30k∥62k = 20.2 k) = **2.75 V** (reads HIGH); with PA15 floating 1.56–2.04 V (undefined or high). **4.7 k:** worst case 3.3·4.7/(4.7 + 20.2) = **0.62 V** (typ 0.49 V) → reliably LOW; drive current 0.70 mA when firmware holds it high. -- **Consequence:** the W5500 leaves reset during every MCU reset/DFU/bootloader and draws up to 128 mA; on battery that is the lesson-F8 drain. A V5.6 built with R112 = 100 k keeps the same bug. -- **Fix:** **add 4.7 kΩ 0603 (C23162, Basic) from `/ETH_RST` to GND at U11.37.** Tell V5.6: R112 100 k → 4.7 k. D-04's move to PD2 with 100 k is rejected (1.56–2.04 V, and PD2 is needed for E-01). Firmware still drives PA15 low as the first line of `setup()`. +- **Evidence:** `/ETH_RST` = {U11.37, U16.50 PA15}. PA15 resets to JTDI with pull-up (RM0383: GPIOA_PUPDR reset 0x6400 0000), R_PU 30–50 kΩ (DS10314). W5500 RSTn internal pull-up **62–112 kΩ** (DS v1.0.2 §5.3); VIL 0.8 V; Schmitt VT− 0.95–1.09 V. 100 k pull-down: 3.3·100/(100 + 30k∥62k = 20.2 k) = **2.75 V** (reads HIGH); with PA15 floating 1.56–2.04 V (undefined or high). **4.7 k:** worst case 3.3·4.7/(4.7 + 20.2) = **0.62 V** (typ 0.49 V) → reliably LOW; drive current 0.70 mA when firmware holds it high. +- **Consequence:** the W5500 leaves reset during every MCU reset/DFU/bootloader and draws up to 128 mA; on battery that is the lesson-F8 drain. A V5.6 built with R112 = 100 k keeps the same bug. +- **Fix:** **add 4.7 kΩ 0603 (C23162, Basic) from `/ETH_RST` to GND at U11.37.** Tell V5.6: R112 100 k → 4.7 k. D-04's move to PD2 with 100 k is rejected (1.56–2.04 V, and PD2 is needed for E-01). Firmware still drives PA15 low as the first line of `setup()`. - **Effort:** schematic-only (+ 1 small footprint). ##### Minor (E) -- **E-03 · Minor · W5500 crystal Y1 10.8/13.7 mm from XO/XI; CL mismatch pulls +78…+156 ppm** — *absorbs H-07, F-11 (Y1 part).* *Status:* verified, severity changed Major → Minor (verify_1: V5.5 as-fabbed and V5.6 have the identical Y1 C14872 and C95/C96 18 pF C1647 and Ethernet works; J10 is DNP on the v6 prototypes). Y1 = C14872 HC-49S, **CL 20 pF**, ±20 ppm, −20…+70 °C; W5500 specifies CL 18 pF, ±30 ppm (100BASE-TX ±50 ppm). Pad edge → U11.31 XO 10.79 mm, → U11.30 XI 13.74 mm; `/ETH_XI` 22.98 mm, `/ETH_XO` 22.03 mm; C96 6.4 mm from Y1. CL ≈ (C1+Cp)(C2+Cp)/(C1+C2+2Cp) + Cshunt with Cp ≈ 5.5 pF → **≈ 12.8 pF** → pulling ≈ **+78…+156 ppm**. 63 × 25 MHz = 1575.000 MHz, 420 kHz from GPS L1 (a +100 ppm pull moves it to ≈ 1575.16 MHz, closer to L1 centre; EMC note shared with Y3). *Fix (verify_1 conflict (f)):* preferred **Y1 → C9006** (YXC 3225, 25 MHz, CL 12 pF, ±10 ppm, −40…+85 °C, Basic, stock 528 k) and **keep C95/C96 = 18 pF (C1647)** → CL ≈ 12 pF; place ≤ 3 mm from U11.30/31, caps adjacent, 2 GND vias, no inner track under it (F-11). Alternative keeping the HC-49 part: **C95/C96 → 33 pF C0G (C1663, Basic)** → CL ≈ 19.3–20.3 pF. Verify with a frequency counter (target ±10 ppm). *Effort:* both. -- **E-04 · Minor · W5500 TOCAP and 1V2O capacitor values do not follow the datasheet** (not independently verified). C90 on `/ETH_TOCAP` (U11.20) = 10 µF (DS: 4.7 µF; schematic note "VERIFY value vs ref"); C91 on `/ETH_1V2` (U11.22) = 4.7 µF (DS: **10 nF**, 470× larger); C90 4.4 mm, C91 5.5 mm from their pins; AVDD pins 4/8/11/21 rely on C94 10 µF (7.1 mm) / C102 22 µF (5.8 mm). *Consequence:* internal 1.2 V regulator outside its specified load capacitance (start-up/stability risk). *Fix:* **C91 → 10 nF 0603 X7R (C1589)**; **C90 → 4.7 µF 0805 (C1779**, the part now on C91); both ≤ 2 mm from their pins; add **100 nF (C14663)** at the AVDD 4/8 and 11/21 pairs. *Effort:* both. -- **E-06 · Minor · Ethernet pairs not coupled and split across layers; no line-side ESD; J10 pin 8 NC** (not independently verified). TXP F.Cu 3.9 + In1 11.7 mm (1 via) vs TXN F.Cu 21.5 mm → coupled 0.3 mm; RXP F 5.0 + In1 11.2 vs RXN F 5.8 + In1 14.9 → coupled 1.2 mm; skew 5.9/4.4 mm (≈ 30–40 ps, irrelevant at 100BASE-TX). Terminations, EXRES1 12.4 k 1 % (5.0 mm from pin 10), VBG open, RSVD23 → GND, PMODE high: ✅. *Consequence:* common-mode emission from unbalanced pairs; lower ESD robustness on cabled installs. *Fix:* each pair coupled on F.Cu only (100 Ω diff), ≤ 1 via pair, In1 unbroken; optional low-capacitance array between magjack and U11 (SRV05-4 class; no LCSC selected); tie J10.8 per the HR911105A drawing (function not confirmed). *Effort:* layout. +- **E-03 · Minor · W5500 crystal Y1 10.8/13.7 mm from XO/XI; CL mismatch pulls +78…+156 ppm** — *absorbs H-07, F-11 (Y1 part).* *Status:* verified, severity changed Major → Minor (verify_1: V5.5 as-fabbed and V5.6 have the identical Y1 C14872 and C95/C96 18 pF C1647 and Ethernet works; J10 is DNP on the v6 prototypes). Y1 = C14872 HC-49S, **CL 20 pF**, ±20 ppm, −20…+70 °C; W5500 specifies CL 18 pF, ±30 ppm (100BASE-TX ±50 ppm). Pad edge → U11.31 XO 10.79 mm, → U11.30 XI 13.74 mm; `/ETH_XI` 22.98 mm, `/ETH_XO` 22.03 mm; C96 6.4 mm from Y1. CL ≈ (C1+Cp)(C2+Cp)/(C1+C2+2Cp) + Cshunt with Cp ≈ 5.5 pF → **≈ 12.8 pF** → pulling ≈ **+78…+156 ppm**. 63 × 25 MHz = 1575.000 MHz, 420 kHz from GPS L1 (a +100 ppm pull moves it to ≈ 1575.16 MHz, closer to L1 centre; EMC note shared with Y3). *Fix (verify_1 conflict (f)):* preferred **Y1 → C9006** (YXC 3225, 25 MHz, CL 12 pF, ±10 ppm, −40…+85 °C, Basic, stock 528 k) and **keep C95/C96 = 18 pF (C1647)** → CL ≈ 12 pF; place ≤ 3 mm from U11.30/31, caps adjacent, 2 GND vias, no inner track under it (F-11). Alternative keeping the HC-49 part: **C95/C96 → 33 pF C0G (C1663, Basic)** → CL ≈ 19.3–20.3 pF. Verify with a frequency counter (target ±10 ppm). *Effort:* both. +- **E-04 · Minor · W5500 TOCAP and 1V2O capacitor values do not follow the datasheet** (not independently verified). C90 on `/ETH_TOCAP` (U11.20) = 10 µF (DS: 4.7 µF; schematic note "VERIFY value vs ref"); C91 on `/ETH_1V2` (U11.22) = 4.7 µF (DS: **10 nF**, 470× larger); C90 4.4 mm, C91 5.5 mm from their pins; AVDD pins 4/8/11/21 rely on C94 10 µF (7.1 mm) / C102 22 µF (5.8 mm). *Consequence:* internal 1.2 V regulator outside its specified load capacitance (start-up/stability risk). *Fix:* **C91 → 10 nF 0603 X7R (C1589)**; **C90 → 4.7 µF 0805 (C1779**, the part now on C91); both ≤ 2 mm from their pins; add **100 nF (C14663)** at the AVDD 4/8 and 11/21 pairs. *Effort:* both. +- **E-06 · Minor · Ethernet pairs not coupled and split across layers; no line-side ESD; J10 pin 8 NC** (not independently verified). TXP F.Cu 3.9 + In1 11.7 mm (1 via) vs TXN F.Cu 21.5 mm → coupled 0.3 mm; RXP F 5.0 + In1 11.2 vs RXN F 5.8 + In1 14.9 → coupled 1.2 mm; skew 5.9/4.4 mm (≈ 30–40 ps, irrelevant at 100BASE-TX). Terminations, EXRES1 12.4 k 1 % (5.0 mm from pin 10), VBG open, RSVD23 → GND, PMODE high: ✅. *Consequence:* common-mode emission from unbalanced pairs; lower ESD robustness on cabled installs. *Fix:* each pair coupled on F.Cu only (100 Ω diff), ≤ 1 via pair, In1 unbroken; optional low-capacitance array between magjack and U11 (SRV05-4 class; no LCSC selected); tie J10.8 per the HR911105A drawing (function not confirmed). *Effort:* layout. ##### Notes (E) — not independently verified | ID | Observation | Action | @@ -515,19 +528,19 @@ Cross-references: J10/P11/P12 DNP and footprint parity → **G-03** (absorbs E-0 |---|---|---| | SPI2 wiring | PB12 CS (GPIO), PB13 SCK, PB14 MISO, PB15 MOSI (AF5) | ✅ | | INT | U11.36 → PC0 (EXTI0), BOOT1 trap avoided | ✅ | -| RST pull-down | none on `/ETH_RST`; 100 k would read 2.75 V | ❌ E-02 | +| RST pull-down | none on `/ETH_RST`; 100 k would read 2.75 V | ❌ E-02 | | 3V3_ETH switchable | U12 EN tied to VIN (`/SYS5V`): always on, battery included | ❌ E-01 | -| Straps / analog | PMODE all high (R84); EXRES1 12.4 k 1 % at 5.0 mm; VBG open; RSVD23 GND; 38–42 open | ✅ | -| TOCAP / 1V2O | 10 µF / 4.7 µF vs DS 4.7 µF / 10 nF | ❌ E-04 | -| Termination | TX 49.9 Ω to 3V3_ETH + TCT; RX 49.9 Ω to RCT + 6.8 nF | ✅ | +| Straps / analog | PMODE all high (R84); EXRES1 12.4 k 1 % at 5.0 mm; VBG open; RSVD23 GND; 38–42 open | ✅ | +| TOCAP / 1V2O | 10 µF / 4.7 µF vs DS 4.7 µF / 10 nF | ❌ E-04 | +| Termination | TX 49.9 Ω to 3V3_ETH + TCT; RX 49.9 Ω to RCT + 6.8 nF | ✅ | | Magnetics / HR911105A | J10 C12074 set; PCB DNP vs schematic populated; LED pins still "VERIFY" | ⚠ G-03 | | Magjack keepout | MAGJACK_NO_POUR rule area on all layers | ✅ | | Line-side ESD on J10 | none (optional) | ⚠ E-06 | | ESD on J9 (USBLC6-2SC6) | none | ❌ G-02 | | No PoE (state it) | none in hardware, documented | ✅ (E-07) | -| 25 MHz crystal ≤ 5 mm | 10.79 / 13.74 mm; CL 20 pF with 18 pF caps | ❌ E-03 (Minor) | -| Pair routing | TX coupled 0.3 mm, RX 1.2 mm, split across layers | ⚠ E-06 | -| U12 buck loop / FB | Cin 6.40 mm from VIN, D11 11.92 mm, FB top 25.9 mm, FB node under SW | ❌ F-03 | +| 25 MHz crystal ≤ 5 mm | 10.79 / 13.74 mm; CL 20 pF with 18 pF caps | ❌ E-03 (Minor) | +| Pair routing | TX coupled 0.3 mm, RX 1.2 mm, split across layers | ⚠ E-06 | +| U12 buck loop / FB | Cin 6.40 mm from VIN, D11 11.92 mm, FB top 25.9 mm, FB node under SW | ❌ F-03 | --- ### 4-F Thermal and EMC (ECO §E, Copper Plan), lessons F5 / F6, 23-Jul short incident @@ -536,33 +549,33 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod #### (a) Findings -##### F-02 · Blocker · Raw ignition `/IGN_IN` crosses the board on In2 at 0.221 mm from `/VEH5V`: the 23-Jul inner-layer geometry repeated +##### F-02 · Blocker · Raw ignition `/IGN_IN` crosses the board on In2 at 0.221 mm from `/VEH5V`: the 23-Jul inner-layer geometry repeated *Absorbs:* D-06, F-16. *Status:* verified (verify_2: Blocker; D-06's Major under-rated a repeat of a paid-for lesson with a damage path). -- **Evidence:** `/IGN_IN` = {P1.3, Rig1.1}; P1.3 at (177.5, 135.0), Rig1.1 at (123.55, 50.675), 100 mm apart. Routing: 4.08 mm F.Cu + **106.47 mm In2**, 0.5 mm wide, 1 via at (127.6, 50.75). With the corrected HV24 rule it is the **only** inner-layer violation set: +- **Evidence:** `/IGN_IN` = {P1.3, Rig1.1}; P1.3 at (177.5, 135.0), Rig1.1 at (123.55, 50.675), 100 mm apart. Routing: 4.08 mm F.Cu + **106.47 mm In2**, 0.5 mm wide, 1 via at (127.6, 50.75). With the corrected HV24 rule it is the **only** inner-layer violation set: | Layer | Other net | Gap | At | |---|---|---|---| - | In2 | `/VEH5V` 1.0 mm track | **0.221 mm** | (147.34, 67.49) | - | In2 | GND via | 0.250 mm | (154.4, 83.15) | - | In2 | `/FAN_PWM` track | 0.291 mm | (152.63, 73.49) | - | In2 | `/5V_FAN` via | 0.300 mm | (157.5, 104.5) | - | In1 | `/NTC2` track (IGN via) | 0.305 mm | (127.32, 50.47) | - | In2 | `/VEH5V` via | 0.340 mm | (147.4, 67.4) | + | In2 | `/VEH5V` 1.0 mm track | **0.221 mm** | (147.34, 67.49) | + | In2 | GND via | 0.250 mm | (154.4, 83.15) | + | In2 | `/FAN_PWM` track | 0.291 mm | (152.63, 73.49) | + | In2 | `/5V_FAN` via | 0.300 mm | (157.5, 104.5) | + | In1 | `/NTC2` track (IGN via) | 0.305 mm | (127.32, 50.47) | + | In2 | `/VEH5V` via | 0.340 mm | (147.4, 67.4) | - Plus zone fills at 0.1505 mm on all four layers (re-pour under F-01). 23-Jul incident (`drogheda-einarboard-short-incident`): `/24V_IN` on In2 at 0.202–0.25 mm from MAIN5V/VEH5V and **`VEH5V ↔ IGN_IN` at 0.2 mm on In2**; v6 is within 0.02 mm of that geometry on the same net pair. `/IGN_IN` has no TVS (D10 covers `/24V_IN` only); D5 BAT54 clamps positive only; a negative ISO 7637-2 pulse through 22 k gives ≈ −27 mA into PA5 vs −5 mA I_INJ (DS10314 Table 12). F-16 (absorbed): `/24V_IN` runs 27.11 mm of 1.5 mm track on In1 at exactly **0.500 mm** from `/SW_5V`, cutting a 25 mm In1 slot. -- **Consequence:** one inner-layer defect puts 9–36 V (and load-dump pulses) onto `/VEH5V` (LTC4040 VIN, 6 V class, and the whole 5 V system) or the fan gate/5 V fan rail. This is the failure that scrapped the 23-Jul board; inner layers can be neither inspected nor reworked. -- **Fix:** move **Rig1 (22 k 0603, C88614) to ≤ 3 mm of copper from P1.3**, with `/IGN_IN` ≤ 3 mm long on F.Cu. The 106 mm run becomes `/IGN_SENSE`, limited to (36 − 5 V)/22 k = 1.4 mA (2.5 mA at 58 V) into any bridged 5 V net; C9 at the MCU keeps τ = (22 k ∥ 2.87 k)·100 nF = 0.25 ms. Keep Rig2/Rigb1/C9/D5 at the MCU. **Add SMBJ33A (C224019**, Littelfuse DO-214AA, stock 9624; VR 33 V, VC 53.3 V at 11.3 A) **from `/IGN_IN` to GND at P1.3**: it also clamps negative ISO 7637 pulses at ≈ −1 V, removing the PA5 injection (D-06's BAT54S C19726 becomes optional). Rig1 at 58 V dissipates 0.13 W for 400 ms: an 0603 thick-film part (75 V working, 2.5× short-time overload) is acceptable with the TVS; 1206 optional. The In1 IGN via next to `/NTC2` disappears with the reroute. F-16: move `/24V_IN` to F.Cu along the south edge, or keep ≥ 1.0 mm from any LV net with nothing crossing it. Conflict ≤ 3 mm (F-02) vs ≤ 5 mm (D-06) resolved to ≤ 3 mm of copper (verify_2). + Plus zone fills at 0.1505 mm on all four layers (re-pour under F-01). 23-Jul incident (`drogheda-einarboard-short-incident`): `/24V_IN` on In2 at 0.202–0.25 mm from MAIN5V/VEH5V and **`VEH5V ↔ IGN_IN` at 0.2 mm on In2**; v6 is within 0.02 mm of that geometry on the same net pair. `/IGN_IN` has no TVS (D10 covers `/24V_IN` only); D5 BAT54 clamps positive only; a negative ISO 7637-2 pulse through 22 k gives ≈ −27 mA into PA5 vs −5 mA I_INJ (DS10314 Table 12). F-16 (absorbed): `/24V_IN` runs 27.11 mm of 1.5 mm track on In1 at exactly **0.500 mm** from `/SW_5V`, cutting a 25 mm In1 slot. +- **Consequence:** one inner-layer defect puts 9–36 V (and load-dump pulses) onto `/VEH5V` (LTC4040 VIN, 6 V class, and the whole 5 V system) or the fan gate/5 V fan rail. This is the failure that scrapped the 23-Jul board; inner layers can be neither inspected nor reworked. +- **Fix:** move **Rig1 (22 k 0603, C88614) to ≤ 3 mm of copper from P1.3**, with `/IGN_IN` ≤ 3 mm long on F.Cu. The 106 mm run becomes `/IGN_SENSE`, limited to (36 − 5 V)/22 k = 1.4 mA (2.5 mA at 58 V) into any bridged 5 V net; C9 at the MCU keeps τ = (22 k ∥ 2.87 k)·100 nF = 0.25 ms. Keep Rig2/Rigb1/C9/D5 at the MCU. **Add SMBJ33A (C224019**, Littelfuse DO-214AA, stock 9624; VR 33 V, VC 53.3 V at 11.3 A) **from `/IGN_IN` to GND at P1.3**: it also clamps negative ISO 7637 pulses at ≈ −1 V, removing the PA5 injection (D-06's BAT54S C19726 becomes optional). Rig1 at 58 V dissipates 0.13 W for 400 ms: an 0603 thick-film part (75 V working, 2.5× short-time overload) is acceptable with the TVS; 1206 optional. The In1 IGN via next to `/NTC2` disappears with the reroute. F-16: move `/24V_IN` to F.Cu along the south edge, or keep ≥ 1.0 mm from any LV net with nothing crossing it. Conflict ≤ 3 mm (F-02) vs ≤ 5 mm (D-06) resolved to ≤ 3 mm of copper (verify_2). - **Effort:** both (one resistor moved, one TVS added, one net rerouted). -##### F-01 · Blocker · Netclasses are broken and one custom rule overrides every clearance: "DRC 0 errors" cannot see any 24 V spacing +##### F-01 · Blocker · Netclasses are broken and one custom rule overrides every clearance: "DRC 0 errors" cannot see any 24 V spacing *Absorbs:* J-01, F-15, B-12 (netclass part). *Status:* verified-with-correction (verify_2: the proposed `.kicad_dru` misses HV24↔HV24 pairs, which would add 4 false errors; corrected rule set below). - **Evidence:** - `.kicad_pro` HV24 patterns = `/24V_IN`, `24V`, `IGN_IN`, `Q10_GATE`; patterns are anchored matches against the full name, so the three un-prefixed ones match nothing. Netlist `class` attribute: **HV24 = {`/24V_IN`} only**; PWR_HI 6 nets; PWR_MID 6 (incl. `/3V3_ETH`); Default 338, including `/24V`, `/IGN_IN`, `/Q10_GATE`, `/VIN_PROT`, `/VIN_FUSED`, `/VIN_MODEM`, `/Q23_GATE`, `/SW_PWRIN`, `/BOOT_PWRIN`, `/SW_MODEM`, `/BST_MODEM`, `/BST_FAN`, `/VBAT_MODEM`, `/RF_LTE`, `/RF_GNSS`. Dead patterns also include the un-prefixed PWR_* duplicates, `/3V3_MODEM`, `/SW3_NODE`. **RF and PWR_MODEM classes are missing** (lost on GUI saves, `drogheda-v6-resync-protocol` §5). - - Rule "Minimum clearance 1" = 0.15 mm, condition `A.NetClass != 'HV24' && B.NetClass != 'HV24'`, no layer or type clause. Netclass values become implicit rules and custom rules are appended after them; the **last matching rule wins** (KiCad developer statement). So it replaces Default/PWR 0.2 mm, the zones' 0.3 mm and any future RF class. - - Proof in the stored fills: gap to every non-HV24 net **0.1505 mm**, to `/24V_IN` 0.5005 mm, although all 5 zones carry `(connect_pads (clearance 0.3))`; DRC reports 0 clearance items. - - Deleting the rule with Default at 0.2 mm would fail 471 item pairs (209 net pairs) at 0.15–0.20 mm, so the floor must stay 0.15 mm, stated explicitly. - - Spacing basis (IPC-2221B Table 6-1, 51–100 V row, since the rail peaks at the 53.3 V clamp and 58 V suppressed load dump): B1 internal 0.10 mm, B4 external coated 0.13 mm, A6 0.13 mm. The **0.5 mm inner** value is a defect/CAF margin from the 23-Jul loss; **0.3 mm outer** under mask (2.3× IPC) fits the SO-8 pin rows. - - F-15 (absorbed), outer layer with corrected classes: 15 spots < 0.3 mm (38 < 0.5 mm): `/SW_MODEM` U20.8–GND 0.150; `/VIN_MODEM`–GND 0.150 / U20.9 0.200 / U20.2 pad–GND track 0.195; **`/VIN_PROT` 1.5 mm – `/VEH5V` 0.8 mm track 0.162 mm at (176.24, 116.28)** and – untented `/VEH5V` via 0.193; `/SW_MODEM`–GND 0.170; `/Q23_GATE` and `/VIN_PROT` – `/USB_VBUS` 0.225; `/BST_MODEM`–GND 0.225 / 0.275; `/VIN_MODEM` – U20.3/U20.4 0.250; `/SW_PWRIN`–GND 0.270; `/24V` – `/COMP_FAN` 0.290. Full list `work/FHJ/hv24_violations_corrected_rule.csv`. + - Rule "Minimum clearance 1" = 0.15 mm, condition `A.NetClass != 'HV24' && B.NetClass != 'HV24'`, no layer or type clause. Netclass values become implicit rules and custom rules are appended after them; the **last matching rule wins** (KiCad developer statement). So it replaces Default/PWR 0.2 mm, the zones' 0.3 mm and any future RF class. + - Proof in the stored fills: gap to every non-HV24 net **0.1505 mm**, to `/24V_IN` 0.5005 mm, although all 5 zones carry `(connect_pads (clearance 0.3))`; DRC reports 0 clearance items. + - Deleting the rule with Default at 0.2 mm would fail 471 item pairs (209 net pairs) at 0.15–0.20 mm, so the floor must stay 0.15 mm, stated explicitly. + - Spacing basis (IPC-2221B Table 6-1, 51–100 V row, since the rail peaks at the 53.3 V clamp and 58 V suppressed load dump): B1 internal 0.10 mm, B4 external coated 0.13 mm, A6 0.13 mm. The **0.5 mm inner** value is a defect/CAF margin from the 23-Jul loss; **0.3 mm outer** under mask (2.3× IPC) fits the SO-8 pin rows. + - F-15 (absorbed), outer layer with corrected classes: 15 spots < 0.3 mm (38 < 0.5 mm): `/SW_MODEM` U20.8–GND 0.150; `/VIN_MODEM`–GND 0.150 / U20.9 0.200 / U20.2 pad–GND track 0.195; **`/VIN_PROT` 1.5 mm – `/VEH5V` 0.8 mm track 0.162 mm at (176.24, 116.28)** and – untented `/VEH5V` via 0.193; `/SW_MODEM`–GND 0.170; `/Q23_GATE` and `/VIN_PROT` – `/USB_VBUS` 0.225; `/BST_MODEM`–GND 0.225 / 0.275; `/VIN_MODEM` – U20.3/U20.4 0.250; `/SW_PWRIN`–GND 0.270; `/24V` – `/COMP_FAN` 0.290. Full list `work/FHJ/hv24_violations_corrected_rule.csv`. - **Consequence:** DRC cannot flag a repeat of the 23-Jul geometry. F-02 is exactly that, and it passed DRC with 0 errors. - **Fix (project settings + rules, then copper):** - Netclass table (exact names, one pattern per line): @@ -598,29 +611,29 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod (condition "A.Type == 'Pad' && B.Type == 'Pad' && ((A.memberOfFootprint('U2') && B.memberOfFootprint('U2')) || (A.memberOfFootprint('U20') && B.memberOfFootprint('U20')) || (A.memberOfFootprint('U25') && B.memberOfFootprint('U25')))") (constraint clearance (min 0.15mm))) ``` - Without the "HV24 to HV24" rule, 4 false errors appear: `/BST_MODEM` C129.1 ↔ `/SW_MODEM` 0.180 mm, `/BST_FAN` Cbst1.1 ↔ `/SW_FAN` 0.285, `/Q23_GATE` D33.1 ↔ `/VIN_PROT` 0.388, `/SW_FAN` ↔ `/VIN_MODEM` 0.400. - - Then: refill all zones, run DRC (gate). Expected: the 6 inner spots of F-02 and the 15 outer spots of F-15; the F.Cu pour recedes to 0.3/0.5 mm around ≈ 178 HV24 items (re-check `isolated_copper` and the U25/U20 GND islands). Fix the outer spots: `/VIN_PROT` vs `/VEH5V` ≥ 0.5 mm near R124/U25 (24 → 5 V); remove the U20 GND neck (F-03); `/USB_VBUS` away from Q23; `/COMP_FAN` ≥ 1 mm from `/24V` (moot with A-01); tent all vias except test vias. Check with Inspect → Clearance Resolution on one `/24V` ↔ GND-zone pair and one GND-zone ↔ Default pair; re-check that the classes survive every GUI save. + Without the "HV24 to HV24" rule, 4 false errors appear: `/BST_MODEM` C129.1 ↔ `/SW_MODEM` 0.180 mm, `/BST_FAN` Cbst1.1 ↔ `/SW_FAN` 0.285, `/Q23_GATE` D33.1 ↔ `/VIN_PROT` 0.388, `/SW_FAN` ↔ `/VIN_MODEM` 0.400. + - Then: refill all zones, run DRC (gate). Expected: the 6 inner spots of F-02 and the 15 outer spots of F-15; the F.Cu pour recedes to 0.3/0.5 mm around ≈ 178 HV24 items (re-check `isolated_copper` and the U25/U20 GND islands). Fix the outer spots: `/VIN_PROT` vs `/VEH5V` ≥ 0.5 mm near R124/U25 (24 → 5 V); remove the U20 GND neck (F-03); `/USB_VBUS` away from Q23; `/COMP_FAN` ≥ 1 mm from `/24V` (moot with A-01); tent all vias except test vias. Check with Inspect → Clearance Resolution on one `/24V` ↔ GND-zone pair and one GND-zone ↔ Default pair; re-check that the classes survive every GUI save. - **Effort:** both (rules now; the copper they flag is F-02 / F-15). ##### F-12 · Major · Ground vias: 69 on the board (V5.5: 165); 1 under the modem, 0 under the F9P, 0 in every regulator EP; east pour stitched by 5 vias *Absorbs:* F-13, F-04, B-04, C-03, A-06 (EP/via part). The U6 EP belongs to A-02. *Merge note:* verify_1 made F-12 the umbrella; verify_2 used F-13 as primary of the same family (M-C); both agree on content and severity. *Status:* verified (both verifiers; B-04 re-rated Blocker → Major; F-12's via target corrected to ≥ 400; F-13's board-wide pad setting corrected). - **Evidence:** - - GND vias per 20 × 20 mm cell (rows from y 40.32): `[0,5,4,3,0,1,0] [2,3,4,4,4,0,2] [2,1,2,3,0,1,3] [0,2,2,2,0,2,4] [4,5,0,2,2,0,0]` → **10 of 35 cells empty**; 2 GND vias within 3 mm of the 480 mm edge; max distance to a GND via 27.8 mm at (197.7, 42.3) next to J13. - - East F.Cu GND (U19, U20, U25, U2, J13, D34): 3611 mm² pad/track-joined cluster (verify_1) / 3766 mm² pour piece (verify_2), reaching In1/In2 through **5 vias** at (145.7, 129.9), (148.1, 135.3), (152.6, 62.5), (153.5, 77.0), (198.8, 78.1); pour-point-to-via median 10.4 mm, p90 19.8 mm, max 29.5 mm. - - U19 A7670SA: 39 GND pads (20 × 2.1 mm centre pads on a 3.8 mm grid, 1.7 mm gaps), **1 GND via** under the courtyard at (184.6, 81.775), 4 in a 5 mm ring; pads on thermal spokes (18–24 % perimeter contact). U18 ZED-F9P: 56 GND pads (48 × 1.1 mm on a 2.1 mm grid + 8 ring pads), **0 vias** under the body, 946 mm² cluster with 5 vias. J13 GND pads 20.3/21.3 mm from a via; D28 GND 19.1 mm; J12.3 has a GND via 0.73 mm away (verify_1 correction), J12.2 3.7 mm. - - EPs: 0 vias in U6, U25, U20, U2, U12; zones default to thermal relief (gap 0.5 / spoke 0.5 mm); solid overrides only on U6.25, U2.9, U12.9, U11.9, U11.29, JP1–JP5; contact U25 EP 18 %, U20 EP 13 %, D34 anode 18 %. -- **Consequence:** the modem's return currents (23 dBm LTE, 2 A GSM bursts) and the whole east pour reach the planes through 5 vias 30–70 mm apart: the pour behaves as a resonant patch at 1–2.7 GHz (LTE self-desense of the F9P, the brief's #1 risk; ESD returns through the pour); U19 (≈ 1–2 W at max TX) and the regulators lose their heat path (spokes + no vias roughly double θ). Major, not Blocker (both verifiers): no R1–R5 violated outright, no V5.5 field precedent for an on-board modem, no damage path, manufacturable. Zero BOM cost: do it with the Blockers. -- **Fix (layout; §6 L-24 … L-29):** EP arrays of 0.3/0.6 mm vias: U6 9 (A-02); **U25, U20: 2 × 3 = 6 at 1.0 mm, or 2 × 4 = 8 at 0.8 mm with 0.3/0.5 mm vias** (3 × 3 at 1.0 mm does not fit the 2.5 mm EP side); U12 (and U2 if kept) 2 × 3. Pad-level `zone_connect` solid on EPs, all U18/U19 GND pads, D34/Dbk1/D11 anodes and buck Cin/Cout GND pads — **not** a board-wide `thru_hole_only`, which would make 23 × 0402 and 142 × 0603 GND pads solid (tombstoning). U19: one tented via in each 1.7 mm gap between centre GND pads (0.55 mm clearance per side) + perimeter ring, **≥ 30, target 40**, never in pads. U18: vias at the diagonal interstitial centres of the 2.1 mm grid (0.41 mm to pad corners), **≥ 24**, no microvias needed. 2 vias ≤ 1 mm from each U.FL GND pad (J12, J13) and at D28. Every F.Cu GND island ≥ 20 mm² gets ≥ 2 vias; no F.Cu GND pour point > 5 mm from a GND via; edge fence ≤ 5 mm pitch within 1.5 mm of the edge clearance (≈ 96 vias); **board total ≥ 400 GND vias** (≈ 96 edge + ≈ 316 area at 1 per 25 mm² of the 7890 mm² F.Cu GND). Tented, or JLC "epoxy filled & capped" under U18/U19. **Acceptance:** 0 empty 20 mm cells; every GND pad of U19/U18/U20/U25/J12/J13 in an F.Cu cluster with ≥ 1 plane via ≤ 2 mm. + - GND vias per 20 × 20 mm cell (rows from y 40.32): `[0,5,4,3,0,1,0] [2,3,4,4,4,0,2] [2,1,2,3,0,1,3] [0,2,2,2,0,2,4] [4,5,0,2,2,0,0]` → **10 of 35 cells empty**; 2 GND vias within 3 mm of the 480 mm edge; max distance to a GND via 27.8 mm at (197.7, 42.3) next to J13. + - East F.Cu GND (U19, U20, U25, U2, J13, D34): 3611 mm² pad/track-joined cluster (verify_1) / 3766 mm² pour piece (verify_2), reaching In1/In2 through **5 vias** at (145.7, 129.9), (148.1, 135.3), (152.6, 62.5), (153.5, 77.0), (198.8, 78.1); pour-point-to-via median 10.4 mm, p90 19.8 mm, max 29.5 mm. + - U19 A7670SA: 39 GND pads (20 × 2.1 mm centre pads on a 3.8 mm grid, 1.7 mm gaps), **1 GND via** under the courtyard at (184.6, 81.775), 4 in a 5 mm ring; pads on thermal spokes (18–24 % perimeter contact). U18 ZED-F9P: 56 GND pads (48 × 1.1 mm on a 2.1 mm grid + 8 ring pads), **0 vias** under the body, 946 mm² cluster with 5 vias. J13 GND pads 20.3/21.3 mm from a via; D28 GND 19.1 mm; J12.3 has a GND via 0.73 mm away (verify_1 correction), J12.2 3.7 mm. + - EPs: 0 vias in U6, U25, U20, U2, U12; zones default to thermal relief (gap 0.5 / spoke 0.5 mm); solid overrides only on U6.25, U2.9, U12.9, U11.9, U11.29, JP1–JP5; contact U25 EP 18 %, U20 EP 13 %, D34 anode 18 %. +- **Consequence:** the modem's return currents (23 dBm LTE, 2 A GSM bursts) and the whole east pour reach the planes through 5 vias 30–70 mm apart: the pour behaves as a resonant patch at 1–2.7 GHz (LTE self-desense of the F9P, the brief's #1 risk; ESD returns through the pour); U19 (≈ 1–2 W at max TX) and the regulators lose their heat path (spokes + no vias roughly double θ). Major, not Blocker (both verifiers): no R1–R5 violated outright, no V5.5 field precedent for an on-board modem, no damage path, manufacturable. Zero BOM cost: do it with the Blockers. +- **Fix (layout; §6 L-24 … L-29):** EP arrays of 0.3/0.6 mm vias: U6 9 (A-02); **U25, U20: 2 × 3 = 6 at 1.0 mm, or 2 × 4 = 8 at 0.8 mm with 0.3/0.5 mm vias** (3 × 3 at 1.0 mm does not fit the 2.5 mm EP side); U12 (and U2 if kept) 2 × 3. Pad-level `zone_connect` solid on EPs, all U18/U19 GND pads, D34/Dbk1/D11 anodes and buck Cin/Cout GND pads — **not** a board-wide `thru_hole_only`, which would make 23 × 0402 and 142 × 0603 GND pads solid (tombstoning). U19: one tented via in each 1.7 mm gap between centre GND pads (0.55 mm clearance per side) + perimeter ring, **≥ 30, target 40**, never in pads. U18: vias at the diagonal interstitial centres of the 2.1 mm grid (0.41 mm to pad corners), **≥ 24**, no microvias needed. 2 vias ≤ 1 mm from each U.FL GND pad (J12, J13) and at D28. Every F.Cu GND island ≥ 20 mm² gets ≥ 2 vias; no F.Cu GND pour point > 5 mm from a GND via; edge fence ≤ 5 mm pitch within 1.5 mm of the edge clearance (≈ 96 vias); **board total ≥ 400 GND vias** (≈ 96 edge + ≈ 316 area at 1 per 25 mm² of the 7890 mm² F.Cu GND). Tented, or JLC "epoxy filled & capped" under U18/U19. **Acceptance:** 0 empty 20 mm cells; every GND pad of U19/U18/U20/U25/J12/J13 in an F.Cu cluster with ≥ 1 plane via ≤ 2 mm. - **Effort:** layout. -##### F-03 · Major · Switcher hot loops: U25 input caps on a different GND island from its EP/diode (≈ 311 mm² loop); U20 returns through a 0.25 mm neck; U12 Cin 6.4 mm, diode 11.9 mm -*Absorbs:* A-06 (loop part), B-06, F-07, F-09 (U2 = F-08 → A-01). *Merge note:* verify_2 made F-03 primary (M-D); verify_1 kept A-06 and used B-06 as primary for U20. One item here, because both merges share F-07 and A-06. *Status:* verified (verify_1 and verify_2; F-09 corrected: Cin is 6.40 mm from VIN pin 7, not 1.77 mm, which was measured to EN). +##### F-03 · Major · Switcher hot loops: U25 input caps on a different GND island from its EP/diode (≈ 311 mm² loop); U20 returns through a 0.25 mm neck; U12 Cin 6.4 mm, diode 11.9 mm +*Absorbs:* A-06 (loop part), B-06, F-07, F-09 (U2 = F-08 → A-01). *Merge note:* verify_2 made F-03 primary (M-D); verify_1 kept A-06 and used B-06 as primary for U20. One item here, because both merges share F-07 and A-06. *Status:* verified (verify_1 and verify_2; F-09 corrected: Cin is 6.40 mm from VIN pin 7, not 1.77 mm, which was measured to EN). - **Evidence:** - - **U25 TPS54360B (non-synchronous, 24–36 V):** C150.1 → U25.2 2.88 mm ✅, C149.1 6.36 mm, C151.1 6.42 mm; C149/C150/C151 GND on the ≈ 252–270 mm² U6 island (nearest via 9.4–11.4 mm); U25.7/EP and D34.2 on the east piece (nearest on-piece via 29.5–30.4 mm from the EP, 37.9 mm from D34.2); D34 → SW 4.28 mm; L22.1 → SW 13.75 mm edge; `/SW_PWRIN` 45.8 mm². Input loop ≈ **311 mm²** (≈ 51 mm² if C150.2 joined the EP island; Copper Plan target ≤ 1 cm²). EP 0 vias, 4 × 0.5 mm spokes. D34 loss 0.78·2.5 A·0.5 V ≈ 0.98 W. Estimated 15–25 nH × 3 A/5 ns → ≈ 9–15 V ringing on VIN over the 53.3 V clamp vs 65 V abs max (not simulated). - - **U20 AP64350:** C128.1 → U20.2 0.72 mm, C127.1 2.38 mm ✅; GND C128.2 → U20.7 **6.86 mm**, C127.2 **8.48 mm**, via a **0.25 mm GND track squeezed between U20.1 and U20.2** (gaps 0.225/0.195 mm); EP 0 vias (nearest 3.45 mm). Cin C127 10 µF 50 V X5R + C128 1 µF ≈ 9.5 µF at 5 V → 2 A·D(1−D)/(f·C) ≈ **65 mV p-p**, input RMS 0.78 A. FB: R110/R111 junction ≈ 2 mm from SW copper, `/FB_MODEM` 13.9 mm, VBAT tap via a 5.6 mm In1 detour. - - **U12 MP1584EN (3V3_ETH):** C101.1 → U12.7 **6.40 mm**; D11 → U12.1 11.92 mm; L8 15.10 mm; R87 (FB top) 25.9 mm → `/ETH_FB` 35 mm long, 1.84 mm² directly under `/ETH_SW` on In1; C101.2 and D11.2 on different F.Cu pieces (224 / 178 mm²). The same R5 🟠 item was 8.5 mm on V5.5. -- **Consequence:** SW-node/VIN ringing and conducted/radiated EMI into the GNSS/LTE receivers; U25 VIN overshoot eats the margin to 65 V during a clamped transient; EP/diode thermals; FB noise on U12 (3V3_ETH jitter) and U20. ECO §E.4 (Cin loops < 3 mm) not met. -- **Fix (layout; §6 L-20 … L-23), common rules:** Cin (VIN and GND pads) ≤ 2 mm from the IC VIN and GND/EP pins; Cin GND, catch-diode anode (D34/D11) and EP on **one solid F.Cu area**, no GND neck < 1 mm; ≥ 2 vias ≤ 1 mm from each Cin GND pad; catch diode ≤ 3 mm from SW; inductor ≤ 5 mm from SW; SW copper ≤ 25 mm²; FB divider ≤ 3 mm from the FB pin with nothing on In1 under the SW copper; acceptance input loop ≤ 1 cm². Per regulator: **U25** C149/C150 ≤ 2 mm from pins 2/7 on the EP/D34 copper, L22 ≤ 5 mm from pin 8, `/SW_PWRIN` off In1 signal tracks, 4 GND vias around the Cin/D34 node. **U20** delete the 0.25 mm GND neck; R110/R111 ≤ 2 mm from U20.5 on the side away from pin 8; VBAT sense by a dedicated trace from C131 (delete the In1 detour); **add 2 × 22 µF 16 V 0805 (C86817) ≤ 3 mm + 1 × 220 µF 16 V polymer (C881921) at U20.2** (verify_1 conflict (d): ripple 65 → 17 mV p-p; the 220 µF because at PFI hand-over the modem load sits on CSYS ≈ 60 µF; 16 V parts are valid only with A-01's 5 V input). **U12** R87/R88 ≤ 3 mm from U12.4, top resistor Kelvin-fed from C102/C94, FB ≤ 5 mm on F.Cu, nothing under `/ETH_SW`; D11 ≤ 2 mm from pin 1 with its anode on C101's GND copper; L8 ≤ 5 mm. + - **U25 TPS54360B (non-synchronous, 24–36 V):** C150.1 → U25.2 2.88 mm ✅, C149.1 6.36 mm, C151.1 6.42 mm; C149/C150/C151 GND on the ≈ 252–270 mm² U6 island (nearest via 9.4–11.4 mm); U25.7/EP and D34.2 on the east piece (nearest on-piece via 29.5–30.4 mm from the EP, 37.9 mm from D34.2); D34 → SW 4.28 mm; L22.1 → SW 13.75 mm edge; `/SW_PWRIN` 45.8 mm². Input loop ≈ **311 mm²** (≈ 51 mm² if C150.2 joined the EP island; Copper Plan target ≤ 1 cm²). EP 0 vias, 4 × 0.5 mm spokes. D34 loss 0.78·2.5 A·0.5 V ≈ 0.98 W. Estimated 15–25 nH × 3 A/5 ns → ≈ 9–15 V ringing on VIN over the 53.3 V clamp vs 65 V abs max (not simulated). + - **U20 AP64350:** C128.1 → U20.2 0.72 mm, C127.1 2.38 mm ✅; GND C128.2 → U20.7 **6.86 mm**, C127.2 **8.48 mm**, via a **0.25 mm GND track squeezed between U20.1 and U20.2** (gaps 0.225/0.195 mm); EP 0 vias (nearest 3.45 mm). Cin C127 10 µF 50 V X5R + C128 1 µF ≈ 9.5 µF at 5 V → 2 A·D(1−D)/(f·C) ≈ **65 mV p-p**, input RMS 0.78 A. FB: R110/R111 junction ≈ 2 mm from SW copper, `/FB_MODEM` 13.9 mm, VBAT tap via a 5.6 mm In1 detour. + - **U12 MP1584EN (3V3_ETH):** C101.1 → U12.7 **6.40 mm**; D11 → U12.1 11.92 mm; L8 15.10 mm; R87 (FB top) 25.9 mm → `/ETH_FB` 35 mm long, 1.84 mm² directly under `/ETH_SW` on In1; C101.2 and D11.2 on different F.Cu pieces (224 / 178 mm²). The same R5 🟠 item was 8.5 mm on V5.5. +- **Consequence:** SW-node/VIN ringing and conducted/radiated EMI into the GNSS/LTE receivers; U25 VIN overshoot eats the margin to 65 V during a clamped transient; EP/diode thermals; FB noise on U12 (3V3_ETH jitter) and U20. ECO §E.4 (Cin loops < 3 mm) not met. +- **Fix (layout; §6 L-20 … L-23), common rules:** Cin (VIN and GND pads) ≤ 2 mm from the IC VIN and GND/EP pins; Cin GND, catch-diode anode (D34/D11) and EP on **one solid F.Cu area**, no GND neck < 1 mm; ≥ 2 vias ≤ 1 mm from each Cin GND pad; catch diode ≤ 3 mm from SW; inductor ≤ 5 mm from SW; SW copper ≤ 25 mm²; FB divider ≤ 3 mm from the FB pin with nothing on In1 under the SW copper; acceptance input loop ≤ 1 cm². Per regulator: **U25** C149/C150 ≤ 2 mm from pins 2/7 on the EP/D34 copper, L22 ≤ 5 mm from pin 8, `/SW_PWRIN` off In1 signal tracks, 4 GND vias around the Cin/D34 node. **U20** delete the 0.25 mm GND neck; R110/R111 ≤ 2 mm from U20.5 on the side away from pin 8; VBAT sense by a dedicated trace from C131 (delete the In1 detour); **add 2 × 22 µF 16 V 0805 (C86817) ≤ 3 mm + 1 × 220 µF 16 V polymer (C881921) at U20.2** (verify_1 conflict (d): ripple 65 → 17 mV p-p; the 220 µF because at PFI hand-over the modem load sits on CSYS ≈ 60 µF; 16 V parts are valid only with A-01's 5 V input). **U12** R87/R88 ≤ 3 mm from U12.4, top resistor Kelvin-fed from C102/C94, FB ≤ 5 mm on F.Cu, nothing under `/ETH_SW`; D11 ≤ 2 mm from pin 1 with its anode on C101's GND copper; L8 ≤ 5 mm. - **Effort:** both (layout + 3 caps at U20). ##### F-51 · Major · No charger-die or cell temperature reaches the MCU; the firmware thermal inhibit has no source on v6 (R4) @@ -629,48 +642,48 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod | Sensor | Ref / net | MCU input | Distance to U6 | Notes | |---|---|---|---|---| - | Board air + RH | U3 SHT40 (0x44) | I²C1 | **71.4 mm** | 52 mm from U19 | - | MCU die | U16 internal | ADC1_IN16 | 77 mm | | - | External probe 1 | P7 → `/NTC_TEMP` (R42 10 k) | PB1 / ADC1_IN9 | ≈ 100 mm | jack only | - | External probe 2 | P8 → `/NTC2` (R126 10 k) | PC4 / ADC1_IN14 | ≈ 83.5 mm | jack only | - | Pack NTC | P3.3 → `/NTC` → **U6.17 only** (R55 10 k from VEH5V) | **none** | — | LTC4040 hot pause 42.4 °C (B3380) | + | Board air + RH | U3 SHT40 (0x44) | I²C1 | **71.4 mm** | 52 mm from U19 | + | MCU die | U16 internal | ADC1_IN16 | 77 mm | | + | External probe 1 | P7 → `/NTC_TEMP` (R42 10 k) | PB1 / ADC1_IN9 | ≈ 100 mm | jack only | + | External probe 2 | P8 → `/NTC2` (R126 10 k) | PC4 / ADC1_IN14 | ≈ 83.5 mm | jack only | + | Pack NTC | P3.3 → `/NTC` → **U6.17 only** (R55 10 k from VEH5V) | **none** | — | LTC4040 hot pause 42.4 °C (B3380) | | Modem die | A7670SA internal | AT over USART6 | — | firmware only (F-52) | | TMP102 | **absent** (V5.x U4 and V5.6 TMP102 deleted in v6 T10) | — | — | — | Free pins: PC5 (only free ADC, ADC1_IN15), PB10, PA9, PD2. I²C: TMP102 at 0x48 does not clash (U10 A0 = A1 = GND → 0x4D). - **Consequence:** `CHG_CELL_HOT/COOL` (45/40 °C) have no cell sensor unless an installer tapes P7 to the pack; no charger-die visibility, so A-02-type cycling is invisible in telemetry. R4 is not met in firmware (the cell is still protected in hardware by the LTC4040 NTC pause). -- **Fix:** (1) **TMP102AIDRLR, LCSC C99269** (SOT-563, stock 34 854) between U6 and L6, ≤ 5 mm from the U6 EP, I²C1 **0x48** (ADD0 → GND), **100 nF C14663**. (2) Pack NTC to the MCU: tap `/NTC` into **PC5** through **100 k (C25803) top / 120 k bottom (**C25808**, 0603 1 %, Basic; assigned at publication) + 10 nF (C1589, the 10 nF 0603 X7R of E-04)**; PC5 ≤ 0.545·5.46 V = 2.98 V; the 220 k load shifts the LTC4040 hot threshold ≈ 0.7 °C (B3380, verify_1). `tcell` is valid only with VEH5V present (VEH5V = 0 on battery), which is when charging is possible. (3) Firmware: `tchg`, `tcell` appended to `$PHLG`; governor inhibits on `tcell` (Li-ion 45 °C / LFP 55–60 °C) and sheds on `tchg` > 85 °C. Rating Major: R4 is still reachable with the P7 probe on the pack plus the NTC pause; **Leo can promote it to Blocker if "sensor ≤ 10 mm of U6" is binding for R4** (verify_1). +- **Fix:** (1) **TMP102AIDRLR, LCSC C99269** (SOT-563, stock 34 854) between U6 and L6, ≤ 5 mm from the U6 EP, I²C1 **0x48** (ADD0 → GND), **100 nF C14663**. (2) Pack NTC to the MCU: tap `/NTC` into **PC5** through **100 k (C25803) top / 120 k bottom (**C25808**, 0603 1 %, Basic; assigned at publication) + 10 nF (C1589, the 10 nF 0603 X7R of E-04)**; PC5 ≤ 0.545·5.46 V = 2.98 V; the 220 k load shifts the LTC4040 hot threshold ≈ 0.7 °C (B3380, verify_1). `tcell` is valid only with VEH5V present (VEH5V = 0 on battery), which is when charging is possible. (3) Firmware: `tchg`, `tcell` appended to `$PHLG`; governor inhibits on `tcell` (Li-ion 45 °C / LFP 55–60 °C) and sheds on `tchg` > 85 °C. Rating Major: R4 is still reachable with the P7 probe on the pack plus the NTC pause; **Leo can promote it to Blocker if "sensor ≤ 10 mm of U6" is binding for R4** (verify_1). - **Effort:** both (2 parts + 3 passives, placed in the A-02 re-cluster). -##### F-06 · Major · RF feeds: LTE routed 22 mm on In1 under the modem power tracks with 2 via transitions; GNSS bias line 0.27 mm beside the RF line; neither line is 50 Ω on the real stackup -*Absorbs:* B-05, C-05, B-12 (stackup part). *Status:* verified-with-correction (verify_1 and verify_2: GNSS coupling re-measured; impedances re-derived; fence pitch set to ≤ 3 mm). +##### F-06 · Major · RF feeds: LTE routed 22 mm on In1 under the modem power tracks with 2 via transitions; GNSS bias line 0.27 mm beside the RF line; neither line is 50 Ω on the real stackup +*Absorbs:* B-05, C-05, B-12 (stackup part). *Status:* verified-with-correction (verify_1 and verify_2: GNSS coupling re-measured; impedances re-derived; fence pitch set to ≤ 3 mm). - **Evidence:** - - LTE: `/RF_LTE` U19.60 → 4.01 mm F.Cu → **In1 22.14 mm** (0.5 mm) with vias at (174.25, 58.25) and (194.27, 53.72) → R118 → `/RF_ANT_LTE` 5.62 mm F.Cu → D28 → J13; ≈ 31.5–31.8 mm total. Copper within ±0.25 mm of the In1 run: `/VBAT_MODEM` F.Cu 1.15 mm², `/SYS5V` 0.71, `/SW_IN` 0.40, `/MODEM_LED_K/A` 0.56/0.10, `/DIN_4G` In2 0.71. F.Cu GND above covers ≈ 45–55 %; 1 GND via within 3.5 mm of the whole path. In1 section ≈ 30–47 Ω (FD 32.5 / 47.1 Ω). - - GNSS: `/RF_GNSS` 22.7 mm F.Cu, 0.5 mm / 0.15 mm gap; `/VCC_RF_GNSS` alongside with minimum edge gap **0.274 mm**, 3.25 mm of run at ≤ 0.3 mm, 13.4 mm at ≤ 0.5 mm, 17.9 mm within 1 mm (verify_2; FHJ's "16.7 mm at 0.27" overstated it); 2 GND vias within 3.5 mm; D27 on a 2.8 mm stub beyond C143 (≈ 1–1.2 pF, RL ≈ 11 dB, ≈ 0.4 dB). - - Impedance (JLC04161H-7628, L1–L2 0.2104 mm, εr 4.4): 0.5 mm microstrip **42.1 Ω**; CPWG 0.5/0.15 as built 41.0 Ω (FD 38.4 bare / 35.2 masked); CPWG 0.30/0.20 56.6 Ω bare closed-form, **FD 53.3 Ω bare / 48.4 Ω masked**; 0.35/0.20 52.1 Ω bare. On the file's generic stack (0.48 mm, εr 4.5) 0.5 mm is 66.6 Ω. The board file carries the generic stackup (copper finish "None"); RF and PWR_MODEM netclasses are missing. + - LTE: `/RF_LTE` U19.60 → 4.01 mm F.Cu → **In1 22.14 mm** (0.5 mm) with vias at (174.25, 58.25) and (194.27, 53.72) → R118 → `/RF_ANT_LTE` 5.62 mm F.Cu → D28 → J13; ≈ 31.5–31.8 mm total. Copper within ±0.25 mm of the In1 run: `/VBAT_MODEM` F.Cu 1.15 mm², `/SYS5V` 0.71, `/SW_IN` 0.40, `/MODEM_LED_K/A` 0.56/0.10, `/DIN_4G` In2 0.71. F.Cu GND above covers ≈ 45–55 %; 1 GND via within 3.5 mm of the whole path. In1 section ≈ 30–47 Ω (FD 32.5 / 47.1 Ω). + - GNSS: `/RF_GNSS` 22.7 mm F.Cu, 0.5 mm / 0.15 mm gap; `/VCC_RF_GNSS` alongside with minimum edge gap **0.274 mm**, 3.25 mm of run at ≤ 0.3 mm, 13.4 mm at ≤ 0.5 mm, 17.9 mm within 1 mm (verify_2; FHJ's "16.7 mm at 0.27" overstated it); 2 GND vias within 3.5 mm; D27 on a 2.8 mm stub beyond C143 (≈ 1–1.2 pF, RL ≈ 11 dB, ≈ 0.4 dB). + - Impedance (JLC04161H-7628, L1–L2 0.2104 mm, εr 4.4): 0.5 mm microstrip **42.1 Ω**; CPWG 0.5/0.15 as built 41.0 Ω (FD 38.4 bare / 35.2 masked); CPWG 0.30/0.20 56.6 Ω bare closed-form, **FD 53.3 Ω bare / 48.4 Ω masked**; 0.35/0.20 52.1 Ω bare. On the file's generic stack (0.48 mm, εr 4.5) 0.5 mm is 66.6 Ω. The board file carries the generic stackup (copper finish "None"); RF and PWR_MODEM netclasses are missing. - **Consequence:** LTE mismatch plus two unshielded via transitions, with the PA supply crossing the RF line (PA noise and burst ripple couple into the antenna feed) and radiated desense of the adjacent F9P; on GNSS a coupled section between the antenna input and a bias line decoupled only at L21. The G3 desense bench test is likely to fail. -- **Fix (layout + stackup; §6 L-1, L-30 … L-33):** set the real stackup in Board Setup (JLC04161H-7628: 0.035 / 0.2104 / 0.035 / 1.065 / 0.035 / 0.2104 / 0.035 mm, εr 4.4 prepreg / 4.6 core) and order impedance control. Both RF runs on **F.Cu only as CPWG over solid In1, starting at w 0.30 mm / gap 0.20 mm**, finalised in JLC's calculator; RF netclass (width = CPWG width, clearance = gap, no autoroute). LTE: reroute U19.60 → R118/C146/C147 → D28 → J13 on F.Cu (rotate J13 or move it toward U19's RF pad side); nothing above or below; `/VBAT_MODEM` ≥ 3 mm away. Via fence both sides at **≤ 3 mm pitch** (λg/20 = 3.1 mm at 2.69 GHz), ≤ 1 mm from the gap edge; 2 vias per U.FL GND pad. GNSS: bias feed (`/ANT_BIAS` after C-01) ≥ 1 mm from the RF line with a stitched GND strip between (or on In2 after 100 pF + 100 nF decoupling at U18 pin 7); L21 taps the line stub-free at J12; D27 on the J12 pad. Optional (C-05): C143 → 47 pF C0G 0402 (no LCSC selected). Fence-pitch conflict (FHJ ≤ 2.5 mm, BCE ≤ 3.3 mm) resolved to ≤ 3 mm (verify_2). +- **Fix (layout + stackup; §6 L-1, L-30 … L-33):** set the real stackup in Board Setup (JLC04161H-7628: 0.035 / 0.2104 / 0.035 / 1.065 / 0.035 / 0.2104 / 0.035 mm, εr 4.4 prepreg / 4.6 core) and order impedance control. Both RF runs on **F.Cu only as CPWG over solid In1, starting at w 0.30 mm / gap 0.20 mm**, finalised in JLC's calculator; RF netclass (width = CPWG width, clearance = gap, no autoroute). LTE: reroute U19.60 → R118/C146/C147 → D28 → J13 on F.Cu (rotate J13 or move it toward U19's RF pad side); nothing above or below; `/VBAT_MODEM` ≥ 3 mm away. Via fence both sides at **≤ 3 mm pitch** (λg/20 = 3.1 mm at 2.69 GHz), ≤ 1 mm from the gap edge; 2 vias per U.FL GND pad. GNSS: bias feed (`/ANT_BIAS` after C-01) ≥ 1 mm from the RF line with a stitched GND strip between (or on In2 after 100 pF + 100 nF decoupling at U18 pin 7); L21 taps the line stub-free at J12; D27 on the J12 pad. Optional (C-05): C143 → 47 pF C0G 0402 (no LCSC selected). Fence-pitch conflict (FHJ ≤ 2.5 mm, BCE ≤ 3.3 mm) resolved to ≤ 3 mm (verify_2). - **Effort:** both (stackup setting + layout). -##### F-05 · Major · In1, the "solid GND reference", is 19 % void and carries 1572 mm of tracks from 49 nets +##### F-05 · Major · In1, the "solid GND reference", is 19 % void and carries 1572 mm of tracks from 49 nets *Status:* verified, fix scope corrected (verify_2). -- **Evidence:** In1 GND fill 11 370.5 mm² in 8 islands: **18.8 % void** vs 14 000 mm² (17.4 % vs the 139 × 99 mm usable area); **1571.9 mm of tracks from 49 nets** (largest users `/SW_5V` 181 mm, `/DOUT_4G` 95, `/KCOIL` 85, `/MAIN5V` 73, `/CHRG_FAULT` 72, `/CHRG_STAT` 69, `/USART6_TX` 68, `/BOOT0` 61, … `/24V_IN` 27, `/RF_LTE` 22). F.Cu nets over In1 voids: USB_DP/DM 10.4/9.7 mm (directly over `/24V_IN` and `/SW_5V`); I2C_SDA 25.2 mm (14.2 mm directly over `/SER_TXB`); ETH_XO 8.3 mm (6.95 mm over `/ETH_RST`); NRST 21.1 mm (7.2 mm over `/USART6_RX`); DFU_DM 13.2 mm; SIMB_CLK 9.1 mm (5.8 mm over `/SW_5V`); DOUT_4G_M 13.1 mm; RF_GNSS/RF_ANT_* 0 mm ✅. In2 GND (1 island) carries 1009 mm from 25 nets; B.Cu is the `/3V3` pour. +- **Evidence:** In1 GND fill 11 370.5 mm² in 8 islands: **18.8 % void** vs 14 000 mm² (17.4 % vs the 139 × 99 mm usable area); **1571.9 mm of tracks from 49 nets** (largest users `/SW_5V` 181 mm, `/DOUT_4G` 95, `/KCOIL` 85, `/MAIN5V` 73, `/CHRG_FAULT` 72, `/CHRG_STAT` 69, `/USART6_TX` 68, `/BOOT0` 61, … `/24V_IN` 27, `/RF_LTE` 22). F.Cu nets over In1 voids: USB_DP/DM 10.4/9.7 mm (directly over `/24V_IN` and `/SW_5V`); I2C_SDA 25.2 mm (14.2 mm directly over `/SER_TXB`); ETH_XO 8.3 mm (6.95 mm over `/ETH_RST`); NRST 21.1 mm (7.2 mm over `/USART6_RX`); DFU_DM 13.2 mm; SIMB_CLK 9.1 mm (5.8 mm over `/SW_5V`); DOUT_4G_M 13.1 mm; RF_GNSS/RF_ANT_* 0 mm ✅. In2 GND (1 island) carries 1009 mm from 25 nets; B.Cu is the `/3V3` pour. - **Consequence:** return currents detour around slots (emissions, susceptibility); broadside crosstalk with no plane between (I2C_SDA over SER_TXB, ETH_XO over ETH_RST); the Copper Plan's "unbroken In1" rule for the RF receiver is broken by design. -- **Fix (layout):** a full "In1 = plane" re-layout is ideal. **Minimum (verify_2):** clear In1 under the USB pairs, the crystals and their lines, all switch nodes, VBAT_MODEM/the RF area, SIM, and the three broadside parallels above. Priority moves: `/RF_LTE` (F-06), `/24V_IN` (F-02), `/SW_5V` (C-04), `/MAIN5V`, `/KCOIL`, `/USART6_TX/RX`, `/DOUT_4G`, `/CHRG_*`, `/SER_TXB/RXB`, `/ETH_*`, `/VFB_BST`, `/IGATE` → In2/B.Cu (or F.Cu where short). **Acceptance: ≤ 3 In1 islands and no critical net over a void longer than 1 mm.** +- **Fix (layout):** a full "In1 = plane" re-layout is ideal. **Minimum (verify_2):** clear In1 under the USB pairs, the crystals and their lines, all switch nodes, VBAT_MODEM/the RF area, SIM, and the three broadside parallels above. Priority moves: `/RF_LTE` (F-06), `/24V_IN` (F-02), `/SW_5V` (C-04), `/MAIN5V`, `/KCOIL`, `/USART6_TX/RX`, `/DOUT_4G`, `/CHRG_*`, `/SER_TXB/RXB`, `/ETH_*`, `/VFB_BST`, `/IGATE` → In2/B.Cu (or F.Cu where short). **Acceptance: ≤ 3 In1 islands and no critical net over a void longer than 1 mm.** - **Effort:** layout (large). ##### Minor (F) — not independently verified -- **F-52 · Minor · No on-board sensor near the modem (ECO D3 dropped).** Nearest board sensor to U19 is U3 at 52.1 mm; the only modem-temperature path is AT over USART6 (`AT+CPMUTEMP` exists on SIMCom A76xx; availability on the A7670SA firmware not verified; works only while the modem is up). *Fix:* firmware-only (`tmodem` in `$PHLG`), or a **second TMP102 (C99269) at 0x49** (ADD0 → 3V3) between U19 and U20. *Effort:* firmware-only, or both. -- **F-14 · Minor · DFU ESD (D14/D15/D16) hangs on stubs; D15 is 10.9 mm of copper from J11** (J9 part → G-02). DFU_DP/DM have no series resistors. Pad-edge / copper path J11 → ESD / on the path?: D14 2.53 / 3.3 mm / no (T-stub); D15 6.07 / **10.9 mm** / no; D16 2.62 / 3.0 mm / no; ESD GND → via 2.6 / 1.8 / 4.9 mm. *Consequence:* ≈ 1 nH/mm stub raises the clamp voltage on the fast IEC 61000-4-2 edge. *Fix:* route J11 D+/D− through the D14/D15 pads, D15 ≤ 3 mm of copper from J11, each ESD GND pad with its own via ≤ 1 mm; optional: one USBLC6-2SC6 (C7519) at J11 instead of three PESD5V0S1BA. *Effort:* layout. -- **F-17 · Minor · USB pairs split across layers and crossing slots.** `/USB_DP` F.Cu 49.9 + In1 9.6 mm; `/USB_DM` F.Cu 50.0 + In1 8.0 + In2 1.7 mm; they cross In1 `/24V_IN` (2.5 mm gap) at (157.75, 121.75), `/SW_5V` 2.47 mm, `/5V_FAN`, `/IGATE`, `/CHRG_FAULT/STAT`; `/DFU_DM` runs 5.98 mm over In1 `/ETH_ACTLED`. *Consequence:* A7670SA USB is high speed; FOTA/recovery through J9 may fail at HS. *Fix:* both pairs on F.Cu only over solid In1, coupled (≈ 0.2/0.15 mm on JLC7628 for 90 Ω, verify in the calculator), ≤ 1 via pair, no slot crossings. *Merge note:* verify_1 folded F-17 into B-07; verify_2 kept it separate as the routing (not ESD) part. Kept separate here so the Minor routing item does not inherit a Major rating. *Effort:* layout. -- **F-18 · Minor · Silkscreen: 304 of 312 reference texts are 0.5 mm / 0.1 mm (JLC minimum 1.0 mm / 0.15 mm).** The DRU text rule is 0.5/0.1 so DRC stays silent; 14 DRC silk items (11 silk_overlap incl. D27, U23, U24, Q10/JP5, Q23; 2 silk_over_copper Rigb1, C10; 1 silk_edge P1). *Fix:* refs ≥ 0.8 mm / 0.15 mm (1.0/0.15 where it fits); DRU text rule `(min 0.8mm)` / `(min 0.15mm)`; clear the 14 items; check D27/D28/Q10 polarity marks in the 3D view. See G-05 for label content. *Effort:* layout. +- **F-52 · Minor · No on-board sensor near the modem (ECO D3 dropped).** Nearest board sensor to U19 is U3 at 52.1 mm; the only modem-temperature path is AT over USART6 (`AT+CPMUTEMP` exists on SIMCom A76xx; availability on the A7670SA firmware not verified; works only while the modem is up). *Fix:* firmware-only (`tmodem` in `$PHLG`), or a **second TMP102 (C99269) at 0x49** (ADD0 → 3V3) between U19 and U20. *Effort:* firmware-only, or both. +- **F-14 · Minor · DFU ESD (D14/D15/D16) hangs on stubs; D15 is 10.9 mm of copper from J11** (J9 part → G-02). DFU_DP/DM have no series resistors. Pad-edge / copper path J11 → ESD / on the path?: D14 2.53 / 3.3 mm / no (T-stub); D15 6.07 / **10.9 mm** / no; D16 2.62 / 3.0 mm / no; ESD GND → via 2.6 / 1.8 / 4.9 mm. *Consequence:* ≈ 1 nH/mm stub raises the clamp voltage on the fast IEC 61000-4-2 edge. *Fix:* route J11 D+/D− through the D14/D15 pads, D15 ≤ 3 mm of copper from J11, each ESD GND pad with its own via ≤ 1 mm; optional: one USBLC6-2SC6 (C7519) at J11 instead of three PESD5V0S1BA. *Effort:* layout. +- **F-17 · Minor · USB pairs split across layers and crossing slots.** `/USB_DP` F.Cu 49.9 + In1 9.6 mm; `/USB_DM` F.Cu 50.0 + In1 8.0 + In2 1.7 mm; they cross In1 `/24V_IN` (2.5 mm gap) at (157.75, 121.75), `/SW_5V` 2.47 mm, `/5V_FAN`, `/IGATE`, `/CHRG_FAULT/STAT`; `/DFU_DM` runs 5.98 mm over In1 `/ETH_ACTLED`. *Consequence:* A7670SA USB is high speed; FOTA/recovery through J9 may fail at HS. *Fix:* both pairs on F.Cu only over solid In1, coupled (≈ 0.2/0.15 mm on JLC7628 for 90 Ω, verify in the calculator), ≤ 1 via pair, no slot crossings. *Merge note:* verify_1 folded F-17 into B-07; verify_2 kept it separate as the routing (not ESD) part. Kept separate here so the Minor routing item does not inherit a Major rating. *Effort:* layout. +- **F-18 · Minor · Silkscreen: 304 of 312 reference texts are 0.5 mm / 0.1 mm (JLC minimum 1.0 mm / 0.15 mm).** The DRU text rule is 0.5/0.1 so DRC stays silent; 14 DRC silk items (11 silk_overlap incl. D27, U23, U24, Q10/JP5, Q23; 2 silk_over_copper Rigb1, C10; 1 silk_edge P1). *Fix:* refs ≥ 0.8 mm / 0.15 mm (1.0/0.15 where it fits); DRU text rule `(min 0.8mm)` / `(min 0.15mm)`; clear the 14 items; check D27/D28/Q10 polarity marks in the 3D view. See G-05 for label content. *Effort:* layout. ##### Notes (F) — not independently verified | ID | Observation | Action | |---|---|---| -| F-19 | JLC 4-layer standard: passes (min track 0.20 mm, spacing 0.15 mm, vias 0.30/0.80 mm, copper-to-edge 0.625 mm); J9/J11 (GCT USB4085) at the limits: PTH ring 0.15 mm, hole-to-hole 0.45 mm, PTH hole → track 0.30 mm (V5.5 fabbed fine). | Order notes: ENIG (LGA U18/U19); JLC04161H-7628 with impedance control; X-ray on U18/U19; tent vias. | -| F-20 | Courtyard overlaps: all 15 MCP hits are bounding-box artefacts (polygon intersection 0.000 mm²); KiCad `courtyards_overlap` reports 0; only MH5–MH8 lack courtyards. | None. Watch the MWSA0804S bodies (8.2 × 8.8 mm on an 8.0 × 8.0 courtyard basis, H-03). | -| F-21 | One dangling `/SW_5V` track end at (86.35, 121.88): overlaps U21.3 by 0.085 mm², connected per KiCad. | Extend 0.3 mm to the pad centre (cosmetic). | +| F-19 | JLC 4-layer standard: passes (min track 0.20 mm, spacing 0.15 mm, vias 0.30/0.80 mm, copper-to-edge 0.625 mm); J9/J11 (GCT USB4085) at the limits: PTH ring 0.15 mm, hole-to-hole 0.45 mm, PTH hole → track 0.30 mm (V5.5 fabbed fine). | Order notes: ENIG (LGA U18/U19); JLC04161H-7628 with impedance control; X-ray on U18/U19; tent vias. | +| F-20 | Courtyard overlaps: all 15 MCP hits are bounding-box artefacts (polygon intersection 0.000 mm²); KiCad `courtyards_overlap` reports 0; only MH5–MH8 lack courtyards. | None. Watch the MWSA0804S bodies (8.2 × 8.8 mm on an 8.0 × 8.0 courtyard basis, H-03). | +| F-21 | One dangling `/SW_5V` track end at (86.35, 121.88): overlaps U21.3 by 0.085 mm², connected per KiCad. | Extend 0.3 mm to the pad centre (cosmetic). | #### (b) Pass/fail — §4-F | Check | Evidence (one line) | Result | @@ -678,29 +691,29 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod | Fan driver / FB divider location | R20/R21 0.67/1.48 mm from U2.4 (ECO E3 fixed); moot if A-01 removes U2 | ✅ | | Fan tach | 2-wire, `ENABLE_FAN_TACH 0` (decision) | ✅ (Note) | | Fan default OFF | Rgs1 100 k on Q2 gate | ✅ | -| Temperature sensor near U6 | none; U3 at 71.4 mm | ❌ F-51 | -| Temperature sensor near modem | none on board (U3 52.1 mm); AT path only | ⚠ F-52 | +| Temperature sensor near U6 | none; U3 at 71.4 mm | ❌ F-51 | +| Temperature sensor near modem | none on board (U3 52.1 mm); AT path only | ⚠ F-52 | | Board ambient sensor | U3 SHT40 at (122.4, 77.3), I²C 0x44 | ✅ | | Pack NTC reaches the MCU | `/NTC` → U6.17 only (the brief's "P12 NTC" is P3 on v6; P12 is now the RS-232 terminal) | ❌ F-51 | -| Real cell source for `CHG_CELL_HOT` 45 °C | none on board | ❌ F-51 | -| Crystals ≤ 5 mm | Y1 10.79/13.74 mm (E-03), Y3 8.32/11.30 mm (D-02), Y4 3.92/6.32 mm (D-03), Y2 5.51/4.64 mm (no finding) | ❌ Minor items | -| Crystal ↔ inductor ≥ 10 mm | nearest Y1–L8 13.6 mm | ✅ | +| Real cell source for `CHG_CELL_HOT` 45 °C | none on board | ❌ F-51 | +| Crystals ≤ 5 mm | Y1 10.79/13.74 mm (E-03), Y3 8.32/11.30 mm (D-02), Y4 3.92/6.32 mm (D-03), Y2 5.51/4.64 mm (no finding) | ❌ Minor items | +| Crystal ↔ inductor ≥ 10 mm | nearest Y1–L8 13.6 mm | ✅ | | Via stitching under the modem / F9P | 1 / 0 vias under the bodies | ❌ F-12 | -| Board stitching / edge fence | 69 GND vias, 10 empty 20 mm cells, 2 edge vias | ❌ F-12 | +| Board stitching / edge fence | 69 GND vias, 10 empty 20 mm cells, 2 edge vias | ❌ F-12 | | Thermal vias in regulator EPs | 0 in U6/U25/U20/U2/U12 | ❌ A-02, F-12 | -| DFU ESD at J11 | 2.5–6.1 mm pad edge (V5.5: 41 mm) | ✅ (stubs: F-14) | -| Return paths across splits | In1 19 % void, 1572 mm of tracks; USB, crystal, SIM, I²C lines over slots | ❌ F-05 | -| 24 V on inner layers next to LV | `/IGN_IN` In2 0.221 mm from `/VEH5V`; `/24V_IN` In1 0.500 mm from `/SW_5V` | ❌ F-02 | -| Netclasses resolve / DRC can see 24 V spacing | 1 of 14 HV nets in HV24; 0.15 mm override rule; RF/PWR_MODEM missing | ❌ F-01 | -| Outer-layer 24 V spacing ≥ 0.3 mm | 15 spots < 0.3 mm (worst 0.150; `/VIN_PROT`–`/VEH5V` 0.162) | ❌ F-01 (F-15) | -| `/24V_IN` clearance | ≥ 0.500 mm to everything on all 4 layers | ✅ | +| DFU ESD at J11 | 2.5–6.1 mm pad edge (V5.5: 41 mm) | ✅ (stubs: F-14) | +| Return paths across splits | In1 19 % void, 1572 mm of tracks; USB, crystal, SIM, I²C lines over slots | ❌ F-05 | +| 24 V on inner layers next to LV | `/IGN_IN` In2 0.221 mm from `/VEH5V`; `/24V_IN` In1 0.500 mm from `/SW_5V` | ❌ F-02 | +| Netclasses resolve / DRC can see 24 V spacing | 1 of 14 HV nets in HV24; 0.15 mm override rule; RF/PWR_MODEM missing | ❌ F-01 | +| Outer-layer 24 V spacing ≥ 0.3 mm | 15 spots < 0.3 mm (worst 0.150; `/VIN_PROT`–`/VEH5V` 0.162) | ❌ F-01 (F-15) | +| `/24V_IN` clearance | ≥ 0.500 mm to everything on all 4 layers | ✅ | | Switch nodes only on outer layer | `/SW_PWRIN`, `/SW_FAN`, `/SW_MODEM`, `/SW_BAT`, `/ETH_SW` F.Cu-only | ✅ | -| Buck hot loops (ECO E.4) | U25 GND split (≈ 311 mm² loop), U20 0.25 mm neck, U12 6.40 mm / 11.92 mm | ❌ F-03 | -| U20 VIN cap, BST, L20 placement | C128 0.72 mm, C129 1.8 mm, L20 2.24 mm | ✅ | -| U25 BST cap, FB/COMP/RT | C152 1.49 mm; R122 1.0, R121 2.9 mm; FB net 4.1 mm | ✅ | -| RF lines 50 Ω, fenced, on the real stackup | LTE 22 mm on In1, 30–47 Ω, 1 fence via; GNSS 38–42 Ω, bias line 0.274 mm | ❌ F-06 | +| Buck hot loops (ECO E.4) | U25 GND split (≈ 311 mm² loop), U20 0.25 mm neck, U12 6.40 mm / 11.92 mm | ❌ F-03 | +| U20 VIN cap, BST, L20 placement | C128 0.72 mm, C129 1.8 mm, L20 2.24 mm | ✅ | +| U25 BST cap, FB/COMP/RT | C152 1.49 mm; R122 1.0, R121 2.9 mm; FB net 4.1 mm | ✅ | +| RF lines 50 Ω, fenced, on the real stackup | LTE 22 mm on In1, 30–47 Ω, 1 fence via; GNSS 38–42 Ω, bias line 0.274 mm | ❌ F-06 | | RF_GNSS over a solid plane | 0 In1 slot crossings | ✅ | -| GNSS island ↔ switchers ≥ 25 mm | `/ETH_SW` 27.5 mm, L8 35.3 mm, `/SW_FAN` 54.1 mm | ✅ | +| GNSS island ↔ switchers ≥ 25 mm | `/ETH_SW` 27.5 mm, L8 35.3 mm, `/SW_FAN` 54.1 mm | ✅ | | Courtyard overlaps (real) | 0 of 15 (polygon intersection 0.000 mm²) | ✅ | | Dangling track ends | 1, benign | ✅ (F-21) | | Silkscreen size vs JLC | 304 refs at 0.5/0.1 mm | ❌ F-18 | @@ -714,36 +727,36 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod ##### G-01 · Blocker (conditional) · Mounting-hole pattern changed vs V5.5: MH4 now lands on L6; heatsink-clamp holes MH11 + partner missing *Status:* verified-with-correction (verify_2: Blocker unless Leo confirms a re-drilled backplate; MH11 and its partner are also missing). -- **Evidence:** outline identical to V5.5 (140.00 × 100.00 mm, x 60.19–200.19, y 40.32–140.32). V5.5 PCB holes: MH5 (65.2, 45.3), MH6 (65.2, 135.3), **MH4 (193.2, 90.3)**, MH7/9/10/11 (M2.5 shield/heatsink). v6 holes: MH5 (65.2, 45.3), MH6 (65.2, 135.3), MH7 (195.2, 45.3), MH8 (195.2, 135.3): a 130 × 90 mm corner pattern. At (193.2, 90.3) on v6 the **L6 courtyard contains the point** (0.0 mm); L6.2 `/BAT_PLUS` pad centre 2.44 mm away; R133 1.75 mm. Design brief v1.0: "Keep 140.000 × 100.000 mm — no enclosure rework"; memory `drogheda-v6-zed-f9p-integration`: "MH4/5/6 (enclosure) and MH11 (heatsink clamp) survive"; Phase-2 delta: "KEEP MH11 and add one partner near U19". **MH11 at (168.3, 84.6) is missing** (the point is now 0.6 mm from the U19 courtyard), and so is its partner: these are the modem heatsink-clamp holes for thermal gate T1. MH6: `/3V3` F.Cu track 3.55 mm from the hole centre (an M3 washer Ø7 mm needs ≥ 3.5 mm plus tolerance). +- **Evidence:** outline identical to V5.5 (140.00 × 100.00 mm, x 60.19–200.19, y 40.32–140.32). V5.5 PCB holes: MH5 (65.2, 45.3), MH6 (65.2, 135.3), **MH4 (193.2, 90.3)**, MH7/9/10/11 (M2.5 shield/heatsink). v6 holes: MH5 (65.2, 45.3), MH6 (65.2, 135.3), MH7 (195.2, 45.3), MH8 (195.2, 135.3): a 130 × 90 mm corner pattern. At (193.2, 90.3) on v6 the **L6 courtyard contains the point** (0.0 mm); L6.2 `/BAT_PLUS` pad centre 2.44 mm away; R133 1.75 mm. Design brief v1.0: "Keep 140.000 × 100.000 mm — no enclosure rework"; memory `drogheda-v6-zed-f9p-integration`: "MH4/5/6 (enclosure) and MH11 (heatsink clamp) survive"; Phase-2 delta: "KEEP MH11 and add one partner near U19". **MH11 at (168.3, 84.6) is missing** (the point is now 0.6 mm from the U19 courtyard), and so is its partner: these are the modem heatsink-clamp holes for thermal gate T1. MH6: `/3V3` F.Cu track 3.55 mm from the hole centre (an M3 washer Ø7 mm needs ≥ 3.5 mm plus tolerance). - **Consequence:** in an enclosure drilled for V5.5, v6 cannot be screwed down on the right side, and a metal standoff at (193.2, 90.3) would press on L6 / `/BAT_PLUS`. No modem heatsink clamp is possible. If the backplate is re-drilled per board, this becomes a documentation item. -- **Fix:** Leo confirms the backplate pattern (§10). If the V5.5 standoffs are reused: **restore MH4 at (193.2, 90.3)** (L6 must move anyway, A-02: ≤ 5 mm from U6); decide and place the heatsink-clamp pair near U19 (MH11 + partner). Otherwise publish the 130 × 90 mm corner pattern for the enclosure. Keep a ≥ 4.0 mm copper-free radius on F.Cu/B.Cu around every mounting hole (move the `/3V3` track at MH6 by ≥ 0.5 mm) or specify nylon washers. +- **Fix:** Leo confirms the backplate pattern (§10). If the V5.5 standoffs are reused: **restore MH4 at (193.2, 90.3)** (L6 must move anyway, A-02: ≤ 5 mm from U6); decide and place the heatsink-clamp pair near U19 (MH11 + partner). Otherwise publish the 130 × 90 mm corner pattern for the enclosure. Keep a ≥ 4.0 mm copper-free radius on F.Cu/B.Cu around every mounting hole (move the `/3V3` track at MH6 by ≥ 0.5 mm) or specify nylon washers. - **Effort:** layout (+ enclosure drawing). ##### G-02 · Major · Modem USB-C J9 has no ESD protection (lesson F8, ECO §E.5) *Absorbs:* B-07 (ESD part), F-14 (J9 part). *Merge note:* verify_1 used B-07 as primary and folded F-17 in; verify_2 used G-02 and kept F-17 (pair routing) separate as a Minor. This report follows verify_2, because the routing item carries its own lower severity. *Status:* verified (verify_1 and verify_2). -- **Evidence:** `/USB_DP` = {J9.A6, J9.B6, U19.27}, `/USB_DM` = {J9.A7, J9.B7, U19.28}, `/USB_VBUS` = {J9.A4/A9/B4/B9, U19.24}: no protection device (unchanged since the 25-Sep review). J9 is 64.6 mm (centre) from U19. J11 has D14/D15/D16. J9 is the modem's firmware-update / USB_BOOT recovery port (TP8). +- **Evidence:** `/USB_DP` = {J9.A6, J9.B6, U19.27}, `/USB_DM` = {J9.A7, J9.B7, U19.28}, `/USB_VBUS` = {J9.A4/A9/B4/B9, U19.24}: no protection device (unchanged since the 25-Sep review). J9 is 64.6 mm (centre) from U19. J11 has D14/D15/D16. J9 is the modem's firmware-update / USB_BOOT recovery port (TP8). - **Consequence:** a field-service ESD hit on J9 goes straight into the A7670SA USB PHY/VBUS; the modem is the unit's only link and J9 is its only recovery route. -- **Fix:** add **USBLC6-2SC6, LCSC C7519** (ST, SOT-23-6, 3.5 pF, stock 1415): pins 1/6 → `/USB_DM`, 3/4 → `/USB_DP`, 5 → `/USB_VBUS`, 2 → GND (same connection as V5.6 D19); **≤ 3 mm of copper from the J9 pads**, flow-through (D± routed through the device pads), GND via ≤ 1 mm (distance conflict ≤ 3 mm vs B-07's ≤ 5 mm resolved to ≤ 3 mm by verify_2). +- **Fix:** add **USBLC6-2SC6, LCSC C7519** (ST, SOT-23-6, 3.5 pF, stock 1415): pins 1/6 → `/USB_DM`, 3/4 → `/USB_DP`, 5 → `/USB_VBUS`, 2 → GND (same connection as V5.6 D19); **≤ 3 mm of copper from the J9 pads**, flow-through (D± routed through the device pads), GND via ≤ 1 mm (distance conflict ≤ 3 mm vs B-07's ≤ 5 mm resolved to ≤ 3 mm by verify_2). - **Effort:** both. ##### Minor (G) — not independently verified -- **G-03 · Minor · J10 / P11 / P12: DNP and footprint disagree between schematic and PCB** — *absorbs E-05, H-06.* Schematic: J10, P11, P12 populated; PCB: all three `dnp`. P11 (`/RS485_A,B,GND`) and P12 (`/RS232_TX,RX,GND`) schematic footprint `…MC_1,5_3-G-3.5_1x03_P3.50mm_Vertical` **does not exist** in the KiCad library (MC = right-angle; vertical is MCV); the PCB uses `…_Horizontal`, which matches **C5160226 DEGSON 15EDGRC-3.5-03P, right-angle, 7 A** (V5.5 fabbed the same Horizontal footprint). J10: schematic nickname `Connector_RJ45` (not configured) vs PCB `Connector_RJ`; LED pins 9–12 still marked "VERIFY". U10/U14/U15 are populated on both sides. With J10 DNP, the populated W5500 block (U11, U12, Y1, C90–C103, ≈ $2.5) has no connector. These are the 3 "real" ERC items (`footprint_link_issues`). *Consequence:* the schematic BOM orders three parts the CPL marks DNP; an Update-PCB with "replace footprints" would load the missing Vertical footprint and flip DNP back. *Fix:* schematic footprints → `Connector_Phoenix_MC:PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal` (P11, P12) and `Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal` (J10); set DNP identically on both sides per Leo's intent (if hand-fitted THT: DNP in the schematic too, listed on the hand-assembly sheet); if Ethernet is not fitted on v6, DNP U11/U12/Y1 and their passives as well; verify the J10 LED pins against the HR911105A drawing. *Effort:* schematic-only (+ Leo's decision). -- **G-04 · Minor · No solder-jumper bypass across the cut-off connector P5** (ECO §F JP_CUT; Review §4 #9). P5 CUTOFF-SW = {1 `/MAIN5V`, 2 `/SYS5V`}; nothing bridges them. Without a plug in P5, `/SYS5V` is dead. *Fix:* add **JP_CUT = `Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm`** (no BOM part) across P5, open by default, silk "CUTOFF BYPASS"; `/SYS5V` load ≲ 0.8 A fits a 1.0 × 1.5 mm bridged pad pair. *Effort:* both. -- **G-05 · Minor · Silkscreen labels: stale modem-reset label, ECO names missing, P-renumber collisions.** "4G NTRIP RESET" at (187.0, 124.1): v6 has no modem-reset button (SW4G1 deleted); the label sits between D34 and L22. SW1 "NRST", SW2 "BOOT" (ECO asks "RESET MCU"); JP2 (chemistry) carries only its refdes, and "F2" is also the fuse refdes; P1 has one label "IGN 24V" at (178.5, 129) with no per-pin legend although v6 accepts 9–36 V; all labels 0.5 mm / 0.1 mm. **Renumber hazard:** a V5-labelled "P6 FAN" XH-2 plug fits v6 **P6 RESET-EXT** (the fan motor across NRST–GND holds the MCU in reset); V5 "P8 PANEL_LED" fits v6 **P8 NTC2**. *Fix:* delete "4G NTRIP RESET"; SW1 "RESET MCU", SW2 "BOOT0 (DFU)"; JP2 "CHEM 1-2 Li-ion / 2-3 LFP"; P1 legend "VIN 9-36V · GND · IGN · GND · NC"; a function name at every connector (FAN, RESET, NTC1, NTC2, LED, BATT, CUTOFF, 5V BENCH); text ≥ 0.8 mm / 0.15 mm (F-18); harness labels by function, not P-number. *Effort:* layout. -- **G-08 · Minor · External-cable inputs P6 (NRST) and P7/P8 (NTC ADC) have no ESD protection.** `/NRST` = {U16.7, C104, SW1, P6.1, TP5}: C104 3.26 mm from the MCU, 35.6 mm from P6, NRST routed 108.6 mm. `/NTC_TEMP` (PB1) and `/NTC2` (PC4) go to P7.1/P8.1 with 100 nF near the MCU (C24 6.63 mm, C157 3.11 mm); P7/P8 at 20.2/21.5 mm. IEC 8 kV/150 pF dumps 1.2 µC ≈ 12 V step on 100 nF before the MCU diodes conduct. *Fix:* **PESD5V0S1BA (C2827694, SOD-323**, already in the BOM as D14–D16) at P6.1, P7.1 and P8.1, each ≤ 3 mm from its connector to GND; optional 100 Ω series (C22775) on NRST between P6 and the net. *Effort:* both. +- **G-03 · Minor · J10 / P11 / P12: DNP and footprint disagree between schematic and PCB** — *absorbs E-05, H-06.* Schematic: J10, P11, P12 populated; PCB: all three `dnp`. P11 (`/RS485_A,B,GND`) and P12 (`/RS232_TX,RX,GND`) schematic footprint `…MC_1,5_3-G-3.5_1x03_P3.50mm_Vertical` **does not exist** in the KiCad library (MC = right-angle; vertical is MCV); the PCB uses `…_Horizontal`, which matches **C5160226 DEGSON 15EDGRC-3.5-03P, right-angle, 7 A** (V5.5 fabbed the same Horizontal footprint). J10: schematic nickname `Connector_RJ45` (not configured) vs PCB `Connector_RJ`; LED pins 9–12 still marked "VERIFY". U10/U14/U15 are populated on both sides. With J10 DNP, the populated W5500 block (U11, U12, Y1, C90–C103, ≈ $2.5) has no connector. These are the 3 "real" ERC items (`footprint_link_issues`). *Consequence:* the schematic BOM orders three parts the CPL marks DNP; an Update-PCB with "replace footprints" would load the missing Vertical footprint and flip DNP back. *Fix:* schematic footprints → `Connector_Phoenix_MC:PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal` (P11, P12) and `Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal` (J10); set DNP identically on both sides per Leo's intent (if hand-fitted THT: DNP in the schematic too, listed on the hand-assembly sheet); if Ethernet is not fitted on v6, DNP U11/U12/Y1 and their passives as well; verify the J10 LED pins against the HR911105A drawing. *Effort:* schematic-only (+ Leo's decision). +- **G-04 · Minor · No solder-jumper bypass across the cut-off connector P5** (ECO §F JP_CUT; Review §4 #9). P5 CUTOFF-SW = {1 `/MAIN5V`, 2 `/SYS5V`}; nothing bridges them. Without a plug in P5, `/SYS5V` is dead. *Fix:* add **JP_CUT = `Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm`** (no BOM part) across P5, open by default, silk "CUTOFF BYPASS"; `/SYS5V` load ≲ 0.8 A fits a 1.0 × 1.5 mm bridged pad pair. *Effort:* both. +- **G-05 · Minor · Silkscreen labels: stale modem-reset label, ECO names missing, P-renumber collisions.** "4G NTRIP RESET" at (187.0, 124.1): v6 has no modem-reset button (SW4G1 deleted); the label sits between D34 and L22. SW1 "NRST", SW2 "BOOT" (ECO asks "RESET MCU"); JP2 (chemistry) carries only its refdes, and "F2" is also the fuse refdes; P1 has one label "IGN 24V" at (178.5, 129) with no per-pin legend although v6 accepts 9–36 V; all labels 0.5 mm / 0.1 mm. **Renumber hazard:** a V5-labelled "P6 FAN" XH-2 plug fits v6 **P6 RESET-EXT** (the fan motor across NRST–GND holds the MCU in reset); V5 "P8 PANEL_LED" fits v6 **P8 NTC2**. *Fix:* delete "4G NTRIP RESET"; SW1 "RESET MCU", SW2 "BOOT0 (DFU)"; JP2 "CHEM 1-2 Li-ion / 2-3 LFP"; P1 legend "VIN 9-36V · GND · IGN · GND · NC"; a function name at every connector (FAN, RESET, NTC1, NTC2, LED, BATT, CUTOFF, 5V BENCH); text ≥ 0.8 mm / 0.15 mm (F-18); harness labels by function, not P-number. *Effort:* layout. +- **G-08 · Minor · External-cable inputs P6 (NRST) and P7/P8 (NTC ADC) have no ESD protection.** `/NRST` = {U16.7, C104, SW1, P6.1, TP5}: C104 3.26 mm from the MCU, 35.6 mm from P6, NRST routed 108.6 mm. `/NTC_TEMP` (PB1) and `/NTC2` (PC4) go to P7.1/P8.1 with 100 nF near the MCU (C24 6.63 mm, C157 3.11 mm); P7/P8 at 20.2/21.5 mm. IEC 8 kV/150 pF dumps 1.2 µC ≈ 12 V step on 100 nF before the MCU diodes conduct. *Fix:* **PESD5V0S1BA (C2827694, SOD-323**, already in the BOM as D14–D16) at P6.1, P7.1 and P8.1, each ≤ 3 mm from its connector to GND; optional 100 Ω series (C22775) on NRST between P6 and the net. *Effort:* both. ##### Notes (G) — not independently verified | ID | Observation | Action | |---|---|---| -| G-06 | P2 bench input sits directly on U25's output (`/VEH5V`), no OR-ing. With P2 only: current flows L22 → SW → TPS54360B high-side body diode → `/VIN_PROT`; Q23 then conducts to `/24V_IN`, and via Q10's body diode to `/24V`: ≈ 4 V on P1.1 and `/24V` (U2 may try to run). Benign with both sources (both source-only). | Document in the bench procedure ("P1.1 reads ≈ 4 V on P2-only power"); or a series Schottky on P2 (no LCSC selected). With A-01, Q10/U2 are DNP. | -| G-07 | P3 = JST B3B-XH-A (C144394), 3 A per contact: 2.42 A charge (81 %) with 825 Ω, 1.4 A after A-03; backup peaks 3.0–3.4 A, 0.6–1 A average; ≈ 70 mV across two contacts at 3.4 A. | Keep XH-3 for compatibility with the existing 1S4P packs; if the pack harness is remade (LFP-HT, ECO D1) move to XH-5 (2 × BAT+, 2 × GND, NTC) or JST VH (v6.1). | +| G-06 | P2 bench input sits directly on U25's output (`/VEH5V`), no OR-ing. With P2 only: current flows L22 → SW → TPS54360B high-side body diode → `/VIN_PROT`; Q23 then conducts to `/24V_IN`, and via Q10's body diode to `/24V`: ≈ 4 V on P1.1 and `/24V` (U2 may try to run). Benign with both sources (both source-only). | Document in the bench procedure ("P1.1 reads ≈ 4 V on P2-only power"); or a series Schottky on P2 (no LCSC selected). With A-01, Q10/U2 are DNP. | +| G-07 | P3 = JST B3B-XH-A (C144394), 3 A per contact: 2.42 A charge (81 %) with 825 Ω, 1.4 A after A-03; backup peaks 3.0–3.4 A, 0.6–1 A average; ≈ 70 mV across two contacts at 3.4 A. | Keep XH-3 for compatibility with the existing 1S4P packs; if the pack harness is remade (LFP-HT, ECO D1) move to XH-5 (2 × BAT+, 2 × GND, NTC) or JST VH (v6.1). | #### (b) Pass/fail — §4-G | Check | Evidence (one line) | Result | |---|---|---| -| P1 / P2 power entry | P1 MKDS 5-pin (16 A) = VIN, GND, IGN, GND, NC; P2 = bench 5 V on `/VEH5V` | ✅ (G-06 Note) | +| P1 / P2 power entry | P1 MKDS 5-pin (16 A) = VIN, GND, IGN, GND, NC; P2 = bench 5 V on `/VEH5V` | ✅ (G-06 Note) | | Ignition GND return | P1.2 and P1.4 = GND, P1.5 NC (as V5.5) | ✅ | -| Ignition wire routing / protection | raw `/IGN_IN` 106 mm on In2, no TVS | ❌ F-02 | +| Ignition wire routing / protection | raw `/IGN_IN` 106 mm on In2, no TVS | ❌ F-02 | | JP_CUT across the P5 cutoff | none | ❌ G-04 | | Pin-1 marking / mirrored sockets (J1 errata class) | every connector a KiCad-library footprint with a distinct pad-1 shape and silk marker; J12/J13 symmetric; J14 stock KiCad JAE; no module sockets on v6 | ✅ | | Harness pinouts vs V5.5 (by function) | P1, P2, P3=P4, P4=P6, P5=P11, P6=P10, P7=P12, P9=P8, P10=P14, P11=P15, P12=P16 identical | ✅ | @@ -754,53 +767,53 @@ Cross-references: U6 copper and EP vias → **A-02**; BSTFB/IGATE and switch-nod | P6/P7/P8 external-cable ESD | none | ⚠ G-08 | | Sch/PCB parity J10/P11/P12 | DNP and footprint mismatch | ❌ G-03 | | Mounting holes vs V5.5 enclosure | MH4 (193.2, 90.3) missing, L6 on it; MH11 + partner missing | ❌ G-01 (conditional) | -| Outline / case fit XY | 140.00 × 100.00 at V5.5 coordinates; J10 and J11 within 0.09 mm of V5.5 | ✅ | -| Connector current ratings | P1 16 A, P2 3 A at ≤ 2.5 A, P5 3 A at ≤ 0.8 A, P11/P12 7 A; P3 3 A at 81 % (as-is) | ✅ (P3: G-07) | +| Outline / case fit XY | 140.00 × 100.00 at V5.5 coordinates; J10 and J11 within 0.09 mm of V5.5 | ✅ | +| Connector current ratings | P1 16 A, P2 3 A at ≤ 2.5 A, P5 3 A at ≤ 0.8 A, P11/P12 7 A; P3 3 A at 81 % (as-is) | ✅ (P3: G-07) | --- ### 4-H BOM and JLC manufacturability -Full line-by-line check: `findings/bom_check.csv` (152 BOM lines; LCSC, JLC DB part, package, Basic/Extended, stock at 20/100 boards, footprint vs package, unit price). Cross-references: C130/C131/C78 electrolytics → **B-02 / A-09**; D21 60 V clone (H-05) → **A-01**; J10/P11/P12 → **G-03** (absorbs H-06); Y1 load caps → **E-03** (absorbs H-07). +Full line-by-line check: `findings/bom_check.csv` (152 BOM lines; LCSC, JLC DB part, package, Basic/Extended, stock at 20/100 boards, footprint vs package, unit price). Cross-references: C130/C131/C78 electrolytics → **B-02 / A-09**; D21 60 V clone (H-05) → **A-01**; J10/P11/P12 → **G-03** (absorbs H-06); Y1 load caps → **E-03** (absorbs H-07). #### (a) Findings -##### H-04 · Blocker · U25's footprint carries `LCSC Part` = C2071691 (AP64350, 40 V) and the Fabrication Toolkit reads that field first +##### H-04 · Blocker · U25's footprint carries `LCSC Part` = C2071691 (AP64350, 40 V) and the Fabrication Toolkit reads that field first *Absorbs:* A-15. *Status:* verified, severity raised Major → Blocker (verify_2: the key order is proven in the toolkit source; the 25-Sep pre-fab audit prescribes that toolkit). -- **Evidence:** 14 v6 footprints carry `LCSC Part`, all inherited from the easyeda `Drogheda-v6.pretty` footprints; **U25 is the only one whose value differs from `LCSC`** (C2071691 vs C524806). Source: `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` line 12, `(property "LCSC Part" "C2071691")` (U20 and U25 share this footprint). Fabrication-Toolkit `plugins/process.py::_get_mpn_from_footprint` tries `['LCSC Part #', 'LCSC Part', …]` before the fallback `['LCSC', …]` and returns the first non-empty field. The 25-Sep pre-fab audit says "Generate BOM/CPL from the board … (Fabrication Toolkit)", and the V5.5 `production/` folder is the toolkit's output folder. AP64350 and TPS54360B are pin-compatible (1 BST, 2 VIN, 3 EN, 4 RT/CLK, 5 FB, 6 COMP, 7 GND, 8 SW) with the same 0.8 V FB. -- **Consequence:** U25 would be assembled as the AP64350: boards pass the bench, then fail at the first transient above 40 V behind a 53 V clamp. Damage risk → Blocker. +- **Evidence:** 14 v6 footprints carry `LCSC Part`, all inherited from the easyeda `Drogheda-v6.pretty` footprints; **U25 is the only one whose value differs from `LCSC`** (C2071691 vs C524806). Source: `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` line 12, `(property "LCSC Part" "C2071691")` (U20 and U25 share this footprint). Fabrication-Toolkit `plugins/process.py::_get_mpn_from_footprint` tries `['LCSC Part #', 'LCSC Part', …]` before the fallback `['LCSC', …]` and returns the first non-empty field. The 25-Sep pre-fab audit says "Generate BOM/CPL from the board … (Fabrication Toolkit)", and the V5.5 `production/` folder is the toolkit's output folder. AP64350 and TPS54360B are pin-compatible (1 BST, 2 VIN, 3 EN, 4 RT/CLK, 5 FB, 6 COMP, 7 GND, 8 SW) with the same 0.8 V FB. +- **Consequence:** U25 would be assembled as the AP64350: boards pass the bench, then fail at the first transient above 40 V behind a 53 V clamp. Damage risk → Blocker. - **Fix:** delete `LCSC Part` from U25 **on the board and in the library footprint** (or from all 10 `Drogheda-v6.pretty` footprints). Alternatively generate the BOM from the schematic with kicad-cli (`evidence/bom.csv` is correct), but delete the field regardless. - **Effort:** schematic/board property only. ##### H-01 · Blocker · U15 MAX3232ESE (narrow SO-16) sits on a wide SOIC-16W land: it cannot be soldered (v6 regression) *Status:* verified-with-correction (verify_2: V5.5 was built on the correct narrow land; v6 regressed when its footprints were rebuilt from the schematic). -- **Evidence:** JLC DB: C15846 = MAX3232ESE+T, "SOIC-16" (compare C7605 PCF8574T = "SOIC-16-300mil"). Maxim 19-0273 Rev 10 Ordering Information: "MAX3232ESE+ … 16 Narrow SO"; "MAX3232EWE+ … 16 Wide SO". v6 PCB U15 = `SOIC-16W_7.5x10.3mm`, pads 2.05 × 0.6 mm, pad-row centres x = 117.3 / 126.6 (**9.3 mm apart**); a narrow SO lead tip reaches ±3.0–3.1 mm while the inner pad edge is at ±3.625 mm → leads end 0.5–0.6 mm short of the pads. History: the V5.5/V5.6 schematics carry the same stale SOIC-16W field, but the V5 PCB uses `Package_SO:SOIC-16_3.9x9.9mm_P1.27mm` (pads 1.95 × 0.6 at ±2.475 mm); v6 regressed at the 02-Sep fresh-layout re-sync. U15 is the only carried-over LCSC part whose footprint changed. +- **Evidence:** JLC DB: C15846 = MAX3232ESE+T, "SOIC-16" (compare C7605 PCF8574T = "SOIC-16-300mil"). Maxim 19-0273 Rev 10 Ordering Information: "MAX3232ESE+ … 16 Narrow SO"; "MAX3232EWE+ … 16 Wide SO". v6 PCB U15 = `SOIC-16W_7.5x10.3mm`, pads 2.05 × 0.6 mm, pad-row centres x = 117.3 / 126.6 (**9.3 mm apart**); a narrow SO lead tip reaches ±3.0–3.1 mm while the inner pad edge is at ±3.625 mm → leads end 0.5–0.6 mm short of the pads. History: the V5.5/V5.6 schematics carry the same stale SOIC-16W field, but the V5 PCB uses `Package_SO:SOIC-16_3.9x9.9mm_P1.27mm` (pads 1.95 × 0.6 at ±2.475 mm); v6 regressed at the 02-Sep fresh-layout re-sync. U15 is the only carried-over LCSC part whose footprint changed. - **Consequence:** RS-232 (P12) dead on every v6 board; JLC either rejects the job or places a part that cannot be soldered. - **Fix:** set **`Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`** in the v6 schematic **and** PCB, keep **C15846** (genuine Maxim, stock 4873), re-place C84–C88 against U15. Fix the stale field in the V5.x schematics too, so a future Update-PCB cannot break the working V5.5 land. C19268179 (TECH PUBLIC MAX3232ID) only as an alternate; the wide part C118514 (30 in stock) is not recommended. - **Effort:** both (footprint + local re-route). ##### H-02 · Blocker (order gate) · U10 and R53 cannot be bought for any order quantity *Status:* verified-with-correction (verify_2: Blocker only for U10 + R53; the other stock items become Major H-02b). -- **Evidence (JLC DB snapshot 2026-09-28):** U10 C729142 (SC16IS762IPW) **15 in stock**; R53 C131054 (YAGEO 499 k 1 %) **6 in stock**, first price break 20+, so JLC's 20-piece minimum cannot be met at any board quantity. R53 sets the LTC4040 boost set-point: unplaced, the backup rail does not regulate. +- **Evidence (JLC DB snapshot 2026-09-28):** U10 C729142 (SC16IS762IPW) **15 in stock**; R53 C131054 (YAGEO 499 k 1 %) **6 in stock**, first price break 20+, so JLC's 20-piece minimum cannot be met at any board quantity. R53 sets the LTC4040 boost set-point: unplaced, the backup rail does not regulate. - **Consequence:** JLC leaves U10 (RS-485/RS-232 bridge) and R53 unplaced. -- **Fix:** **U10 → C57156 SC16IS752IPW,128** (same TSSOP-28, pinout and registers; U10 runs in I²C mode (pin 9 = 3V3), where 752 and 762 are identical; the value field already says 752; stock 2670; $3.80 vs $7.32). **R53 → C177479** HKR RCT03499KFLF (499 k, 1 %, 100 ppm, 0603, 100 mW, 75 V; stock 26 862). Both are exact drop-ins. Re-check stock on order day. +- **Fix:** **U10 → C57156 SC16IS752IPW,128** (same TSSOP-28, pinout and registers; U10 runs in I²C mode (pin 9 = 3V3), where 752 and 762 are identical; the value field already says 752; stock 2670; $3.80 vs $7.32). **R53 → C177479** HKR RCT03499KFLF (499 k, 1 %, 100 ppm, 0603, 100 mW, 75 V; stock 26 862). Both are exact drop-ins. Re-check stock on order day. - **Effort:** schematic-only. ##### H-02b · Major · Stock to re-check against the order quantity (split from H-02) *Status:* verified (verify_2). -- **Evidence:** C103211 (RALEC 100 k **5 %**) 702 in stock, 9 per board → 78 boards max (refs R20, R56–R58, R85, R87, Ren1, Rfreq1, Rgs1; R20/Ren1/Rfreq1 disappear if A-01 DNPs the U2 block). U19 A7670SA-LASC C18548276: 96. U18 ZED-F9P-04B C5120257: 104. J14 C2977286: 10 890 but in "Pre-ordered Products" (must be pre-ordered into the JLC account; pre-fab B4 still open). L2+L8 / L6 / U13 / P11+P12 stock is fine at 100 boards. +- **Evidence:** C103211 (RALEC 100 k **5 %**) 702 in stock, 9 per board → 78 boards max (refs R20, R56–R58, R85, R87, Ren1, Rfreq1, Rgs1; R20/Ren1/Rfreq1 disappear if A-01 DNPs the U2 block). U19 A7670SA-LASC C18548276: 96. U18 ZED-F9P-04B C5120257: 104. J14 C2977286: 10 890 but in "Pre-ordered Products" (must be pre-ordered into the JLC account; pre-fab B4 still open). L2+L8 / L6 / U13 / P11+P12 stock is fine at 100 boards. - **Consequence:** a 100-board order stalls on U18/U19/C103211; J14 fails without a pre-order. -- **Fix:** **C103211 → C25803** (UNI-ROYAL 100 k **1 %**, Basic, 10.8 M in stock; an upgrade: R87 sets 3V3_ETH, R20 the fan output). Pre-order/consign U18 and U19 for quantities ≳ 100; pre-order J14. Re-check all on order day. +- **Fix:** **C103211 → C25803** (UNI-ROYAL 100 k **1 %**, Basic, 10.8 M in stock; an upgrade: R87 sets 3V3_ETH, R20 the fan output). Pre-order/consign U18 and U19 for quantities ≳ 100; pre-order J14. Re-check all on order day. - **Effort:** schematic-only + purchasing. ##### Minor (H) -- **H-03 · Minor · Sunlord MWSA0804S inductors (L2, L6, L8, L20) sit on a Bourns SRU8028 land.** *Status:* verified, severity changed Major → Minor (verify_2: the same part/land pairing ran on L2/L6/L7/L8 of 15 assembled V5.5 boards; joint strength is ample). Land: pads 2.0 × 3.2 mm at ±3.9 mm (2.9–4.9 mm from centre). MWSA0804S (Sunlord spec Table 4-1): body 8.2 ± 0.3 × 8.8 ± 0.4 × 3.8 mm, electrodes D 1.4 × E 5.0 mm, recommended land I 2.75 / J 4.0 / H 5.5 mm (typ); wetted electrode area **55–64 %**; ≈ 3.8 mm² per joint, SAC ≈ 30 MPa → ≈ 100 N against ≈ 0.1 N/g. The Sunlord drawing letters could not be read in the sandbox (LCSC/Digikey PDFs blocked). The V5.5 "modem dark on battery" was root-caused to back-feed/UVLO, not inductor joints. *Fix:* change the footprint, not the part (SRU8028-class Bourns parts have lower Isat than MWSA0804S-2R2 for L6): build `Drogheda-v6:IND-SMD_MWSA0804S` from the LCSC drawing (auditor's reading: pads 2.75 × 4.0 mm, 5.5 mm inner gap → centres ±4.125 mm; courtyard 9.4 × 9.8 mm; confirm against the drawing) and assign it to L2/L6/L8/L20 (C17700171/65/67) while L6/L20 are re-placed anyway; re-check neighbours for the 0.4 mm body growth. *Effort:* both. -- **H-08 · Minor · Value-field / BOM mismatches** — *absorbs D-16* (not independently verified). C22 "22uF/50V" but C138687 is 10 µF 50 V X7R 1210 (moot if A-01 DNPs C22); **Y2 "1.8432MHz" but C2238 is 3.6864 MHz** (firmware `BOARD_SER_XTAL_HZ 3686400UL` already matches the fitted part); U10 "SC16IS752IPW" but C729142 is SC16IS762 (fixed by H-02); C103 "100uF/6.3V" but C88744 is 35 V (harmless); C130/C131/C78 "220uF/10V" but C2827940 is 16 V (parts replaced by B-02/A-09). *Fix:* correct the value fields (C22 → "10uF/50V" unless 22 µF was intended; Y2 → "3.6864MHz"). *Effort:* schematic-only. +- **H-03 · Minor · Sunlord MWSA0804S inductors (L2, L6, L8, L20) sit on a Bourns SRU8028 land.** *Status:* verified, severity changed Major → Minor (verify_2: the same part/land pairing ran on L2/L6/L7/L8 of 15 assembled V5.5 boards; joint strength is ample). Land: pads 2.0 × 3.2 mm at ±3.9 mm (2.9–4.9 mm from centre). MWSA0804S (Sunlord spec Table 4-1): body 8.2 ± 0.3 × 8.8 ± 0.4 × 3.8 mm, electrodes D 1.4 × E 5.0 mm, recommended land I 2.75 / J 4.0 / H 5.5 mm (typ); wetted electrode area **55–64 %**; ≈ 3.8 mm² per joint, SAC ≈ 30 MPa → ≈ 100 N against ≈ 0.1 N/g. The Sunlord drawing letters could not be read in the sandbox (LCSC/Digikey PDFs blocked). The V5.5 "modem dark on battery" was root-caused to back-feed/UVLO, not inductor joints. *Fix:* change the footprint, not the part (SRU8028-class Bourns parts have lower Isat than MWSA0804S-2R2 for L6): build `Drogheda-v6:IND-SMD_MWSA0804S` from the LCSC drawing (auditor's reading: pads 2.75 × 4.0 mm, 5.5 mm inner gap → centres ±4.125 mm; courtyard 9.4 × 9.8 mm; confirm against the drawing) and assign it to L2/L6/L8/L20 (C17700171/65/67) while L6/L20 are re-placed anyway; re-check neighbours for the 0.4 mm body growth. *Effort:* both. +- **H-08 · Minor · Value-field / BOM mismatches** — *absorbs D-16* (not independently verified). C22 "22uF/50V" but C138687 is 10 µF 50 V X7R 1210 (moot if A-01 DNPs C22); **Y2 "1.8432MHz" but C2238 is 3.6864 MHz** (firmware `BOARD_SER_XTAL_HZ 3686400UL` already matches the fitted part); U10 "SC16IS752IPW" but C729142 is SC16IS762 (fixed by H-02); C103 "100uF/6.3V" but C88744 is 35 V (harmless); C130/C131/C78 "220uF/10V" but C2827940 is 16 V (parts replaced by B-02/A-09). *Fix:* correct the value fields (C22 → "10uF/50V" unless 22 µF was intended; Y2 → "3.6864MHz"). *Effort:* schematic-only. ##### Notes (H) — not independently verified | ID | Observation | Action | |---|---|---| -| H-09 | Every fitted BOM line has an LCSC number except TP1–TP8 (copper pads) and PF1–PF21 (virtual). Schematic DNP: C146/C147, R107/R108, R124/R125, R127–R130, U22 (+ J10/P11/P12 on the PCB only, G-03). F2 = C206910 now assigned. The 10 "not found" and 22 "differs from library" symbols were checked pin → pad → net on 25 parts: **no hidden pin mismatch**. RS1 62.5 mW of 1 W. | None beyond H-01…H-08. | -| H-10 | Cost (DB snapshot prices, excluding PCB/assembly/THT fees): v6 **$131.98 (qty 20) / $124.40 (qty 100)** per board (284 placements); modules ZED-F9P-04B $80.11 + A7670SA $6.07 = $86.18; V5.6 **$40.69 / $33.83** (235 placements) → **delta +$91.30 / +$90.14**, 94 % of it F9P + A7670SA. The delta excludes the external simpleRTK2B and 4G NTRIP Master that v6 removes from the unit, so system cost almost certainly drops. 79 unique Extended parts × $3 = **$237 per order** ($11.85/board at 20, $2.37 at 100). Cheap consolidations: C14676 → C21190 (1 k 1 % Basic), C14675/C103211 → C25803, C304185 → C21189 (0 Ω Basic): −4 fees. The A7670SA DB price looks low; confirm at order. | Verdict cost note (§9). Leo to supply ArduSimple/NTRIP-Master unit prices for a system delta (§10). | +| H-09 | Every fitted BOM line has an LCSC number except TP1–TP8 (copper pads) and PF1–PF21 (virtual). Schematic DNP: C146/C147, R107/R108, R124/R125, R127–R130, U22 (+ J10/P11/P12 on the PCB only, G-03). F2 = C206910 now assigned. The 10 "not found" and 22 "differs from library" symbols were checked pin → pad → net on 25 parts: **no hidden pin mismatch**. RS1 62.5 mW of 1 W. | None beyond H-01…H-08. | +| H-10 | Cost (DB snapshot prices, excluding PCB/assembly/THT fees): v6 **$131.98 (qty 20) / $124.40 (qty 100)** per board (284 placements); modules ZED-F9P-04B $80.11 + A7670SA $6.07 = $86.18; V5.6 **$40.69 / $33.83** (235 placements) → **delta +$91.30 / +$90.14**, 94 % of it F9P + A7670SA. The delta excludes the external simpleRTK2B and 4G NTRIP Master that v6 removes from the unit, so system cost almost certainly drops. 79 unique Extended parts × $3 = **$237 per order** ($11.85/board at 20, $2.37 at 100). Cheap consolidations: C14676 → C21190 (1 k 1 % Basic), C14675/C103211 → C25803, C304185 → C21189 (0 Ω Basic): −4 fees. The A7670SA DB price looks low; confirm at order. | Verdict cost note (§9). Leo to supply ArduSimple/NTRIP-Master unit prices for a system delta (§10). | #### (b) Pass/fail — §4-H | Check | Evidence (one line) | Result | @@ -810,12 +823,12 @@ Full line-by-line check: `findings/bom_check.csv` (152 BOM lines; LCSC, JLC DB p | Stock for any order quantity | U10 15, R53 6 (20-pc minimum) | ❌ H-02 | | Stock for 100 boards | C103211 78 boards max; U19 96; U18 104; J14 pre-order | ⚠ H-02b | | Package ↔ footprint | U15 narrow SO on SOIC-16W land (hard mismatch) | ❌ H-01 | -| Inductor land (L7-class SRU8028 vs MWSA0804S question) | 55–64 % electrode wetting; ran on 15 V5.5 boards | ⚠ H-03 | +| Inductor land (L7-class SRU8028 vs MWSA0804S question) | 55–64 % electrode wetting; ran on 15 V5.5 boards | ⚠ H-03 | | BOM field integrity (tool reads the intended LCSC) | U25 `LCSC Part` = AP64350 read first by Fabrication Toolkit | ❌ H-04 | | DNP list explicit / consistent | schematic DNP list explicit; J10/P11/P12 DNP only on the PCB | ⚠ G-03 | | No `TBD` | F2 now C206910; no TBD on fitted parts | ✅ | | Polarity marks | polarized parts use footprints with pin-1/cathode marks; D27/D28/Q10 marks among the silk overlaps | ✅ / ⚠ F-18 | -| Voltage ratings on 24 V nets | ceramics ≥ 50 V (≥ 1.8× at 28.8 V); D21 30 V, U2 30 V abs max | ✅ / ❌ A-01 | +| Voltage ratings on 24 V nets | ceramics ≥ 50 V (≥ 1.8× at 28.8 V); D21 30 V, U2 30 V abs max | ✅ / ❌ A-01 | | Value fields match parts | C22, Y2, U10, C103, C130/C131/C78 | ⚠ H-08 | | Stale library symbols hide pin errors | 25 parts checked pin → pad → net, 0 mismatches | ✅ | | U19 / L22 fab attribute | both `smd` (pre-fab B2 closed) | ✅ | @@ -831,9 +844,9 @@ The full traceability table is §3. Pass/fail summary on v6 **as drawn**: | R1 — 10-min off/on on battery with report | ❌ needs changes + firmware | A-05, E-01, B-02, C-02, D-01, A-01, A-08, H-02 (R53) + FW sequencing | | R2 — modem never left dark (MCU can power-cycle it) | ✅ hardware; firmware only | FW ladder (B-10 makes STATUS unambiguous) | | R3 (brief) — report while on battery | ❌ needs changes + firmware | A-05, E-01, B-02, B-03, F-12, F-06 + FW | -| R3 (ECO) — charge from the 5 V source without brown-out loops | ⚠ no fold-back possible; charger does not start | A-04 (+ A-03) | +| R3 (ECO) — charge from the 5 V source without brown-out loops | ⚠ no fold-back possible; charger does not start | A-04 (+ A-03) | | R4 — temperature management (sensors + fan + charger inhibit) | ❌ no cell/charger temperature at the MCU | F-51 (+ F-52 option, A-01 fan) + FW | -| R5 (brief) — charge ≥ 1.3 A without thermal cycling | ❌ | A-03, A-02, A-04 (+ A-07) | +| R5 (brief) — charge ≥ 1.3 A without thermal cycling | ❌ | A-03, A-02, A-04 (+ A-07) | | R5 (ECO) — EMC list of the second batch (ECO §E) | ❌ items 1, 2, 4, 5 (J9 part) and 6 open; item 3 (fan FB divider) and item 5 (DFU ESD at J11) done | A-02 (1, 2), F-03 (4), G-02 (5), D-02 / D-03 / E-06 / F-12 (6) | --- @@ -847,21 +860,21 @@ Run with kicad-cli (KiCad 10.0.4) through the KiCad MCP on the unmodified v6 fil | ERC | 0 errors, **166 warnings** | 3 (`footprint_link_issues`: P11, P12, J10 → G-03) | 126 (104 pin_to_pin, 22 lib_symbol_mismatch) | 37 (23 orphan NC flags, 10 lib_symbol_issues, 2 NC-on-connected markers, 2 wire stubs) | | DRC | 0 errors, **283 warnings**, 0 unconnected | 59 per the CSV (`track_width` on 7 power nets) → **verified: 63 hits on 6 nets** (J-02) | 206 (124 track_width on low-current nets, 82 lib_footprint_mismatch) | 18 (11 silk_overlap, 4 lib_footprint_issues MountingHole, 2 silk_over_copper, 1 silk_edge) | -**The DRC "0 errors" is produced by the rule set, not by the copper (J-01 → F-01).** With the corrected netclasses and `.kicad_dru`: 6 inner-layer errors (all `/IGN_IN`, F-02) + 15 outer-layer errors at the 0.3 mm rule (38 at 0.5 mm), plus ≈ 178 zone-fill proximities that disappear on refill. With Default = 0.2 mm and no floor rule: +471 pairs. Five DRC checks are ignored in the project (`footprint_type_mismatch`, `missing_courtyard`, `track_not_centered_on_via`, `footprint_filters_mismatch`, `tuning_profile`); J-05 found nothing hidden behind them. +**The DRC "0 errors" is produced by the rule set, not by the copper (J-01 → F-01).** With the corrected netclasses and `.kicad_dru`: 6 inner-layer errors (all `/IGN_IN`, F-02) + 15 outer-layer errors at the 0.3 mm rule (38 at 0.5 mm), plus ≈ 178 zone-fill proximities that disappear on refill. With Default = 0.2 mm and no floor rule: +471 pairs. Five DRC checks are ignored in the project (`footprint_type_mismatch`, `missing_courtyard`, `track_not_centered_on_via`, `footprint_filters_mismatch`, `tuning_profile`); J-05 found nothing hidden behind them. #### (a) Findings *J-01 is merged into F-01 (Blocker, §4-F).* ##### Minor (J) -- **J-02 · Minor (residual) · `track_width` warnings: 6 nets really under-sized; the rest is an over-strict T15 rule.** *Status:* verified-with-correction (verify_2: 6 real nets carrying 63 DRC hits (`/BAT_PLUS` 123 mm under capacity incl. 69.9 mm of In2 1.0 mm, `/MAIN5V` 111 mm, `/VEH5V` 102 mm, `/SW_BAT` 12.9 mm, `/VIN_SW` 26 mm, `/VBAT_MODEM` 12.5 mm); `/VIN_MODEM` is only a 0.1 mm neck; JLC04161H inner copper 0.5 oz makes inner runs ≈ 40 % weaker than the file's 1 oz). The copper itself is owned by A-02 (`/SW_BAT`, `/BAT_PLUS`), A-07 (`/VEH5V`, `/VIN_SW`, `/MAIN5V`) and B-08 (`/VBAT_MODEM`). *Residual fix:* move `/3V3_ETH` to Default (54 benign hits, 0.15 A) and relax T15 for the benign fan/SW_5V/SW_IN/SYS5V/VIN_PROT/VIN_FUSED nets (keep the 0.8 mm rule on `/VIN_PROT`/`/VIN_FUSED` for pulse/fuse coordination), so the warning list becomes a clean gate. Order 1 oz inner copper or widen inner runs 1.65×. *Effort:* layout (rules). +- **J-02 · Minor (residual) · `track_width` warnings: 6 nets really under-sized; the rest is an over-strict T15 rule.** *Status:* verified-with-correction (verify_2: 6 real nets carrying 63 DRC hits (`/BAT_PLUS` 123 mm under capacity incl. 69.9 mm of In2 1.0 mm, `/MAIN5V` 111 mm, `/VEH5V` 102 mm, `/SW_BAT` 12.9 mm, `/VIN_SW` 26 mm, `/VBAT_MODEM` 12.5 mm); `/VIN_MODEM` is only a 0.1 mm neck; JLC04161H inner copper 0.5 oz makes inner runs ≈ 40 % weaker than the file's 1 oz). The copper itself is owned by A-02 (`/SW_BAT`, `/BAT_PLUS`), A-07 (`/VEH5V`, `/VIN_SW`, `/MAIN5V`) and B-08 (`/VBAT_MODEM`). *Residual fix:* move `/3V3_ETH` to Default (54 benign hits, 0.15 A) and relax T15 for the benign fan/SW_5V/SW_IN/SYS5V/VIN_PROT/VIN_FUSED nets (keep the 0.8 mm rule on `/VIN_PROT`/`/VIN_FUSED` for pulse/fuse coordination), so the warning list becomes a clean gate. Order 1 oz inner copper or widen inner runs 1.65×. *Effort:* layout (rules). - **J-03 · Minor · 104 ERC pin-to-pin warnings are pin-type noise** (not independently verified). All involve pins typed `unspecified` in easyeda-imported symbols (U19, U20, U23, U24, U26, D21, D22, D27, D28, J12, J13): 50 Unspecified–Passive, 46 Unspecified–Unspecified, 5 –Bidirectional, 2 –Power output, 1 –Input. Net-by-net check found no driver conflict (U23 DIR = GND, U24 DIR = VCCA, single drivers on every UART/status net, Q20/Q21 open drain). *Consequence:* 104 standing warnings hide the next real one. *Fix:* retype the pins in `Drogheda-v6.kicad_sym` (power_in/power_out/input/output/passive). *Effort:* schematic-only (library). -- **J-04 · Minor · ERC cosmetics: 23 orphan NC flags, NC flags on 4 connected pins, 2 wire stubs, 10 missing symbols, 22 lib-mismatched symbols** — *absorbs B-11, D-11* (not independently verified). Orphan NC flags at x = 453.898 mm (13) and 484.378 mm (10), left from the deleted SimpleRTK2B socket. NC flags on connected pins U16.37 (PC6 `/USART6_TX` → K1.10), U16.38 (PC7 `/USART6_RX` → R106.2), U10.13/14 (`/I2C_SCL`/`/I2C_SDA`): nets are real in the netlist and IPC-356 and routed (KiCad reports 2 markers). Wire stubs at P1.4 and R52.2 (uuid 2b755f7f…, 46f71e27…, 7c1dbfc0…). *Consequence:* the NC flags would suppress a future "unconnected pin" ERC if a label broke (the V5.6 junction incident shows how that happens); a tool honouring NC flags could drop the modem UART. *Fix:* delete the 27 flags and 3 stub segments by UUID; copy the 10 missing symbols into `Drogheda-sym` and re-link; leave the 22 mismatches (do not bulk-update); re-run ERC (D-11: the NC-on-connected count should drop by its 2 markers). *Effort:* schematic-only. +- **J-04 · Minor · ERC cosmetics: 23 orphan NC flags, NC flags on 4 connected pins, 2 wire stubs, 10 missing symbols, 22 lib-mismatched symbols** — *absorbs B-11, D-11* (not independently verified). Orphan NC flags at x = 453.898 mm (13) and 484.378 mm (10), left from the deleted SimpleRTK2B socket. NC flags on connected pins U16.37 (PC6 `/USART6_TX` → K1.10), U16.38 (PC7 `/USART6_RX` → R106.2), U10.13/14 (`/I2C_SCL`/`/I2C_SDA`): nets are real in the netlist and IPC-356 and routed (KiCad reports 2 markers). Wire stubs at P1.4 and R52.2 (uuid 2b755f7f…, 46f71e27…, 7c1dbfc0…). *Consequence:* the NC flags would suppress a future "unconnected pin" ERC if a label broke (the V5.6 junction incident shows how that happens); a tool honouring NC flags could drop the modem UART. *Fix:* delete the 27 flags and 3 stub segments by UUID; copy the 10 missing symbols into `Drogheda-sym` and re-link; leave the 22 mismatches (do not bulk-update); re-run ERC (D-11: the NC-on-connected count should drop by its 2 markers). *Effort:* schematic-only. ##### Notes (J) — not independently verified | ID | Observation | Action | |---|---|---| -| J-05 | Ignored DRC checks hide nothing real today: `missing_courtyard` only MH5–MH8; `footprint_type_mismatch` JP1–5/TP1–8 (unspecified attribute, SMD pads); 178 track ends off-centre in vias (≤ 0.40 mm, all connected); no tuned nets; 82 lib_footprint_mismatch = KiCad 10 library revisions; 4 lib_footprint_issues = MountingHole nickname not in `fp-lib-table`. | Re-enable `footprint_type_mismatch` after setting TP1–8 to SMD + exclude-from-BOM. Do **not** run "Update footprints from library" (it would swap P11/P12 and reset pads). | +| J-05 | Ignored DRC checks hide nothing real today: `missing_courtyard` only MH5–MH8; `footprint_type_mismatch` JP1–5/TP1–8 (unspecified attribute, SMD pads); 178 track ends off-centre in vias (≤ 0.40 mm, all connected); no tuned nets; 82 lib_footprint_mismatch = KiCad 10 library revisions; 4 lib_footprint_issues = MountingHole nickname not in `fp-lib-table`. | Re-enable `footprint_type_mismatch` after setting TP1–8 to SMD + exclude-from-BOM. Do **not** run "Update footprints from library" (it would swap P11/P12 and reset pads). | #### (b) Pass/fail — §4-J | Check | Evidence (one line) | Result | @@ -872,7 +885,7 @@ Run with kicad-cli (KiCad 10.0.4) through the KiCad MCP on the unmodified v6 fil | ERC pin-to-pin conflicts hide a driver clash? | net-by-net check: none | ✅ (J-03 hygiene) | | NC flags hide a wiring error? | 4 flagged pins are connected and routed | ✅ (J-04 hygiene) | | DRC run | kicad-cli on stored fills, 283 items, 0 unconnected | ✅ | -| DRC errors meaningful | 0 errors only because the 0.15 mm catch-all overrides all classes | ❌ F-01 | +| DRC errors meaningful | 0 errors only because the 0.15 mm catch-all overrides all classes | ❌ F-01 | | DRC unconnected | 0; 205/205 multi-pad nets routed (pack union-find agrees) | ✅ | | `track_width` real vs benign | 63 hits on 6 real nets (A-02/A-07/B-08), 124 benign | ❌ copper (A-02, A-07, B-08) / ⚠ J-02 rules | | Silk DRC items | 14 (11 overlap, 2 over copper, 1 edge) | ⚠ F-18 | @@ -882,17 +895,17 @@ Run with kicad-cli (KiCad 10.0.4) through the KiCad MCP on the unmodified v6 fil --- ## 3. §4-I Requirements traceability (R1–R5, ECO §0) -**Wording note.** The ECO §0 table and the brief §4-I phrase two requirements differently: ECO R3 = "charge the battery from the 5 V source without brown-out loops" (brief R3 = "report while on battery"); ECO R5 = "EMC list of the second batch" (brief R5 = "charge at ≥ 1.3 A without thermal cycling"). The power auditor used the brief wording for R5, the other auditors and verify_2 the ECO wording. Both readings are traced below (R3 / R3′, R5 / R5′) so neither is lost. "As drawn" = v6 snapshot `ecee9fed…` / `6ddec80d…`. +**Wording note.** The ECO §0 table and the brief §4-I phrase two requirements differently: ECO R3 = "charge the battery from the 5 V source without brown-out loops" (brief R3 = "report while on battery"); ECO R5 = "EMC list of the second batch" (brief R5 = "charge at ≥ 1.3 A without thermal cycling"). The power auditor used the brief wording for R5, the other auditors and verify_2 the ECO wording. Both readings are traced below (R3 / R3′, R5 / R5′) so neither is lost. "As drawn" = v6 snapshot `ecee9fed…` / `6ddec80d…`. | Req. | Requirement | Status on v6 as drawn | IDs that close it | Residual risk after the fixes | |---|---|---|---|---| -| **R1** | 10-min cycle on battery: everything off, wake, register the modem, report, off | **Needs changes + firmware.** Structure is right (independent `PWR_CTRL` PA1 / `MODEM_PWR_EN` PC10, STATUS PC9, U20 UVLO margin ≈ 1 V vs 0.1 V on V5.5). As drawn: boost at 91–97 % of its guaranteed 2.5 A during a GSM burst with all loads on; W5500 cannot be switched off; AMS1117 sets a 25–55 mW floor; U24 back-feeds the F9P whenever the modem is on and the F9P off; F9P ramp margin unspecified; VBAT bank ages out; R53 (boost set-point) unobtainable | A-05, E-01, E-02, A-01 (+0.30 V at U20), B-02, C-02, D-01, A-08, H-02; Minor D-03 (LSE wake), A-13 (PFO); firmware §8 (sequencing, LTE-only on battery) | GSM 2.8 A peaks exceed the backup limit → LTE-only on battery is mandatory (Leo: is 2G needed on battery?). Modem LTE average current is an assumption: run the ECO §I-1 battery cold start at VBAT 3.5 V with MAIN5V/VIN scope and a `/BAT_PLUS` current probe | -| **R2** | Modem never left dark: MCU can switch, reset and see the modem | **Satisfied by hardware; firmware only.** U20 EN on PC10 with R113 pull-down (full power removal, τ 0.46 s bleed), PWRKEY via Q20/PC8, RESET via Q21/PC11, STATUS via U24/PC9; the modem can be cycled alone | Firmware recovery ladder (§8); B-10 (STATUS pull-down) makes STATUS unambiguous; A-01 changes the U20 source, not the control | Every MCU reset power-cycles the modem (≈ 30 s re-registration, by design). A V5.6 binary on v6 leaves the modem uncontrolled (D-08; board-ID pin unresolved) | -| **R3** (brief) | Report while on battery | **Needs changes + firmware.** Budget fits with LTE-only (≈ 1.0–1.3 A on MAIN5V); GSM bursts at 2.2–2.4 A sit at the 2.5 A limit; link robustness limited by LTE ESD, ground vias, RF feed | A-05, E-01, B-02, B-03, F-12, F-06, C-04; A-13 (faster load shedding); firmware §8 | LTE-to-GNSS desense not measured: G3 bench (modem TX power vs F9P C/N0, before/after F-12/F-06) | -| **R3′** (ECO) | Charge from the 5 V source without brown-out loops (on v6 the source is U25, not the SD-15B) | **Fold-back impossible** (RS1 limit 2.14–2.41 A < U25 4.5 A minimum switch limit; the governor is a safety net) ✅, but U25 at 5.00 V nominal sits below `CHG_RAIL_ON` 5.05 V, so the charger never or randomly starts ❌ | A-04 (R121 57.6 k → 5.18–5.46 V), A-03 (charger no longer input-limited at 1.4 A); firmware `V5_PFI` 4.40 V + VREFINT | With A-01 the modem load moves onto MAIN5V: 0.44 V margin from U25 minimum minus a 1.6 A step droop to PFI max with 57.6 k (0.13 V as drawn) | -| **R4** | Temperature management at ~45 °C ports: sensors + fan + charger inhibit | **Needs changes.** No cell or charger-die temperature at the MCU (TMP102 deleted; pack NTC goes only to U6.17); fan block works (U2 out of rating, A-01); LTC4040 NTC pause at 42.4 °C unchanged (chemistry D1 pending) | F-51 (TMP102 0x48 + pack-NTC tap on PC5), F-52 (optional modem sensor), A-01 (fan from VEH5V), A-02 / F-12 (heat paths); firmware thermal inhibit | `tcell` exists only with VEH5V present; RNTB/JP2 waits for the chemistry decision; F-51 promotion to Blocker is Leo's call; no modem heatsink clamp holes (G-01) | -| **R5** (brief) | Charge at ≥ 1.3 A without thermal cycling | **Needs changes.** R50 825 Ω → 2.42 A (2.57 A corner > 2.5 A IC max); `/SW_BAT` 0.5 mm with 0.25/0.30 mm necks, 0 EP vias, L6 8.65 mm; U25 set-point below the governor start | A-03 (1.43 k → 1.316–1.483 A), A-02, A-04, A-07 | H0008 causality unproven (≈ 1.3 A inferred from the OCV slope); do the clamp-meter + IR checks and a thermal-camera run on U6/L6 at 1.4 A charge and 2.3 A backup | -| **R5′** (ECO) | EMC list of the second batch (ECO §E) | **Needs changes.** #1 `SW_BAT` pour ❌, #2 `BAT_PLUS` ❌, #3 fan FB divider at U2.4 ✅ (0.67/1.48 mm), #4 Cin loops < 3 mm ❌, #5 DFU ESD at J11 ✅ / J9 USBLC6 ❌, #6 crystals ≤ 5 mm ❌ (Y3 8.3/11.3, Y4 3.9/6.3, Y2 5.51/4.64 mm), Ethernet RX pair coupled ❌ (1.2 mm), empty 20 mm stitching cells ❌ (10; V5.5 had 8) | A-02 (#1, #2), F-03 (#4), G-02 (#5), D-02 / D-03 / E-06 / F-12 (#6) | Grades follow Leo's ECO marks (🔴 → Blocker, 🟠 → Major, 🟡 → Minor) except stitching, kept Major because v6 adds an LTE PA and a GNSS receiver (verify_2). Y2 (5.51 mm) has no finding | +| **R1** | 10-min cycle on battery: everything off, wake, register the modem, report, off | **Needs changes + firmware.** Structure is right (independent `PWR_CTRL` PA1 / `MODEM_PWR_EN` PC10, STATUS PC9, U20 UVLO margin ≈ 1 V vs 0.1 V on V5.5). As drawn: boost at 91–97 % of its guaranteed 2.5 A during a GSM burst with all loads on; W5500 cannot be switched off; AMS1117 sets a 25–55 mW floor; U24 back-feeds the F9P whenever the modem is on and the F9P off; F9P ramp margin unspecified; VBAT bank ages out; R53 (boost set-point) unobtainable | A-05, E-01, E-02, A-01 (+0.30 V at U20), B-02, C-02, D-01, A-08, H-02; Minor D-03 (LSE wake), A-13 (PFO); firmware §8 (sequencing, LTE-only on battery) | GSM 2.8 A peaks exceed the backup limit → LTE-only on battery is mandatory (Leo: is 2G needed on battery?). Modem LTE average current is an assumption: run the ECO §I-1 battery cold start at VBAT 3.5 V with MAIN5V/VIN scope and a `/BAT_PLUS` current probe | +| **R2** | Modem never left dark: MCU can switch, reset and see the modem | **Satisfied by hardware; firmware only.** U20 EN on PC10 with R113 pull-down (full power removal, τ 0.46 s bleed), PWRKEY via Q20/PC8, RESET via Q21/PC11, STATUS via U24/PC9; the modem can be cycled alone | Firmware recovery ladder (§8); B-10 (STATUS pull-down) makes STATUS unambiguous; A-01 changes the U20 source, not the control | Every MCU reset power-cycles the modem (≈ 30 s re-registration, by design). A V5.6 binary on v6 leaves the modem uncontrolled (D-08; board-ID pin unresolved) | +| **R3** (brief) | Report while on battery | **Needs changes + firmware.** Budget fits with LTE-only (≈ 1.0–1.3 A on MAIN5V); GSM bursts at 2.2–2.4 A sit at the 2.5 A limit; link robustness limited by LTE ESD, ground vias, RF feed | A-05, E-01, B-02, B-03, F-12, F-06, C-04; A-13 (faster load shedding); firmware §8 | LTE-to-GNSS desense not measured: G3 bench (modem TX power vs F9P C/N0, before/after F-12/F-06) | +| **R3′** (ECO) | Charge from the 5 V source without brown-out loops (on v6 the source is U25, not the SD-15B) | **Fold-back impossible** (RS1 limit 2.14–2.41 A < U25 4.5 A minimum switch limit; the governor is a safety net) ✅, but U25 at 5.00 V nominal sits below `CHG_RAIL_ON` 5.05 V, so the charger never or randomly starts ❌ | A-04 (R121 57.6 k → 5.18–5.46 V), A-03 (charger no longer input-limited at 1.4 A); firmware `V5_PFI` 4.40 V + VREFINT | With A-01 the modem load moves onto MAIN5V: 0.44 V margin from U25 minimum minus a 1.6 A step droop to PFI max with 57.6 k (0.13 V as drawn) | +| **R4** | Temperature management at ~45 °C ports: sensors + fan + charger inhibit | **Needs changes.** No cell or charger-die temperature at the MCU (TMP102 deleted; pack NTC goes only to U6.17); fan block works (U2 out of rating, A-01); LTC4040 NTC pause at 42.4 °C unchanged (chemistry D1 pending) | F-51 (TMP102 0x48 + pack-NTC tap on PC5), F-52 (optional modem sensor), A-01 (fan from VEH5V), A-02 / F-12 (heat paths); firmware thermal inhibit | `tcell` exists only with VEH5V present; RNTB/JP2 waits for the chemistry decision; F-51 promotion to Blocker is Leo's call; no modem heatsink clamp holes (G-01) | +| **R5** (brief) | Charge at ≥ 1.3 A without thermal cycling | **Needs changes.** R50 825 Ω → 2.42 A (2.57 A corner > 2.5 A IC max); `/SW_BAT` 0.5 mm with 0.25/0.30 mm necks, 0 EP vias, L6 8.65 mm; U25 set-point below the governor start | A-03 (1.43 k → 1.316–1.483 A), A-02, A-04, A-07 | H0008 causality unproven (≈ 1.3 A inferred from the OCV slope); do the clamp-meter + IR checks and a thermal-camera run on U6/L6 at 1.4 A charge and 2.3 A backup | +| **R5′** (ECO) | EMC list of the second batch (ECO §E) | **Needs changes.** #1 `SW_BAT` pour ❌, #2 `BAT_PLUS` ❌, #3 fan FB divider at U2.4 ✅ (0.67/1.48 mm), #4 Cin loops < 3 mm ❌, #5 DFU ESD at J11 ✅ / J9 USBLC6 ❌, #6 crystals ≤ 5 mm ❌ (Y3 8.3/11.3, Y4 3.9/6.3, Y2 5.51/4.64 mm), Ethernet RX pair coupled ❌ (1.2 mm), empty 20 mm stitching cells ❌ (10; V5.5 had 8) | A-02 (#1, #2), F-03 (#4), G-02 (#5), D-02 / D-03 / E-06 / F-12 (#6) | Grades follow Leo's ECO marks (🔴 → Blocker, 🟠 → Major, 🟡 → Minor) except stitching, kept Major because v6 adds an LTE PA and a GNSS receiver (verify_2). Y2 (5.51 mm) has no finding | --- @@ -904,24 +917,24 @@ Complete table (AF/ADC/EXTI, FT/TC, V5 macro vs v6, distances, draft `board_v6.h |---|---|---|---|---|---| | 1 | VBAT | /3V3 | backup domain tied to 3V3 (no coin cell) | — | | | 2 | PC13 | /LED_C13 | status LED, active LOW | `PIN_LED_C13` | | -| 3 | PC14 | /LSE_IN | 32.768 kHz LSE | `BOARD_LSE_HZ` | D-03: Y4 → C48615, C115 6.8 pF | -| 4 | PC15 | /LSE_OUT | LSE | — | D-03: C116 6.8 pF | -| 5 | PH0 | /HSE_IN | 25 MHz HSE (ROM DFU needs it) | `BOARD_HSE_HZ` | D-02: Y3 → C2901684, C113 12 pF | -| 6 | PH1 | /HSE_OUT | HSE | — | D-02: C114 12 pF | +| 3 | PC14 | /LSE_IN | 32.768 kHz LSE | `BOARD_LSE_HZ` | D-03: Y4 → C48615, C115 6.8 pF | +| 4 | PC15 | /LSE_OUT | LSE | — | D-03: C116 6.8 pF | +| 5 | PH0 | /HSE_IN | 25 MHz HSE (ROM DFU needs it) | `BOARD_HSE_HZ` | D-02: Y3 → C2901684, C113 12 pF | +| 6 | PH1 | /HSE_OUT | HSE | — | D-02: C114 12 pF | | 7 | NRST | /NRST | MCU reset (SW1, P6, TP5, C104) | — | G-08: ESD at P6 | | 8 | PC0 | /ETH_INT | W5500 INT, EXTI0 | `PIN_ETH_INT` | | | 9 | PC1 | /GNSS_ANT_DETECT | F9P input, undriven | `PIN_GNSS_ANT_DET` (hi-Z) | C-01: stays undriven | | 10 | PC2 | /GNSS_ANT_SHORT_N | F9P input | `PIN_GNSS_ANT_SHORT_N` | C-01: TPS2552 FAULT̅ → LOW = antenna short | | 11 | PC3 | /GNSS_RTK_STAT | F9P RTK status, EXTI3 | `PIN_GNSS_RTK_STAT` | D-08: mis-flash hazard (V5.6 drives PC3) | | 12 | VSSA | GND | analog ground | — | | -| 13 | VDDA | /VDDA | ADC reference (R104 10 Ω) | — | A-08/A-04: calibrate from VREFINT | +| 13 | VDDA | /VDDA | ADC reference (R104 10 Ω) | — | A-08/A-04: calibrate from VREFINT | | 14 | PA0 | /BAT_SENSE | pack ÷ 2, ADC1_IN0 (TC) | `PIN_BAT_SENSE` | | | 15 | PA1 | /PWR_CTRL | F9P rail enable (Q5 → Q1 → U21) | `PIN_GNSS_PWR` (+ alias `PIN_PWR_CTRL`) | D-09: 100 k base pull-down | | 16 | PA2 | /GNSS_TX | USART2_TX → F9P RXD | `PIN_GNSS_TX` | hi-Z while F9P off | | 17 | PA3 | /GNSS_RX | USART2_RX ← F9P TXD | `PIN_GNSS_RX` | | | 18 | VSS | GND | ground | — | | -| 19 | VDD | /3V3 | supply | — | D-15: cap ≤ 2 mm | -| 20 | PA4 | /5V_SENSE | VEH5V ÷ 2, ADC1_IN4 | `PIN_5V_SENSE` | A-04: 5.32 V → 2.66 V | +| 19 | VDD | /3V3 | supply | — | D-15: cap ≤ 2 mm | +| 20 | PA4 | /5V_SENSE | VEH5V ÷ 2, ADC1_IN4 | `PIN_5V_SENSE` | A-04: 5.32 V → 2.66 V | | 21 | PA5 | /IGN_SENSE | ignition, ADC1_IN5 (read analog) | `PIN_IGN_SENSE` | F-02: Rig1 at P1.3 + SMBJ33A; D-05: Rigb1 2.2 k | | 22 | PA6 | /FAN_PWM | fan low-side ON/OFF (TIM3_CH1) | `PIN_FAN` | A-01: fan supply = VEH5V | | 23 | PA7 | /GNSS_TIMEPULSE | PPS, TIM3_CH2 / EXTI7 | `PIN_GNSS_PPS` | | @@ -972,43 +985,43 @@ Count: 50 GPIO pads + 6 special (NRST, BOOT0, VBAT, VCAP1, VDDA, VSSA) + 4 VDD + --- ## 5. Ranked change list -Ranking criterion within each severity: hardware-damage path first, then repeat of a paid-for lesson, then requirement R1–R5, then reliability/EMC, then process. Owner: **Sch** = schematic (Claude applies on the copy `hbox-watchdog-v6-audit.*`, Leo reviews); **Lay** = layout (Michelle); **FW** = firmware; **Leo** = decision or purchasing. Effort: S = schematic-only, L = layout, B = both, F = firmware-only. +Ranking criterion within each severity: hardware-damage path first, then repeat of a paid-for lesson, then requirement R1–R5, then reliability/EMC, then process. Owner: **Sch** = schematic (applied by script on the copy `hbox-watchdog-v6-audit.*`, Leo reviews); **Lay** = layout (Michelle); **FW** = firmware; **Leo** = decision or purchasing. Effort: S = schematic-only, L = layout, B = both, F = firmware-only. ### Part 1 — Blockers (must change before ordering) | # | ID | Change | Owner | LCSC / numbers | Effort | Closes | |---|---|---|---|---|---|---| -| 1 | A-01 | U20 fed from `/MAIN5V` only (delete D20 + 48 mm `/VIN_MODEM` run, D21 → copper); fan from `/VEH5V` (U2 block DNP, JP1 bridged); Q10/DzG1/Rrp1/C10/C11/C22 DNP; F2 → 3 A ahead of D10 | Sch + Lay | F2 **C206912** (4 A C206914 only for 9 V); JP1 bridged footprint | B | Damage path; R1/R3 (+0.30 V at U20); F1, F8 | -| 2 | F-02 | Rig1 ≤ 3 mm of copper from P1.3 (long run becomes `/IGN_SENSE`); SMBJ33A `/IGN_IN` → GND at P1.3; `/24V_IN` off In1 or ≥ 1.0 mm from LV | Sch + Lay | **C224019**; Rig1 C88614 moves | B | 23-Jul short lesson; damage | -| 3 | F-01 | Netclass table + corrected `.kicad_dru` (incl. HV24↔HV24); refill; DRC gate; fix the 15 outer spots (F-15) | Lay (rules drafted in §2 4-F) | floor 0.15 · HV24↔HV24 0.2 · HV24 outer 0.3 · HV24 inner 0.5 mm | L | 23-Jul short lesson | -| 4 | H-04 | Delete `LCSC Part` from U25 on the board and in `Drogheda-v6.pretty/SO-8_L4.9-…-EP.kicad_mod` | Sch | U25 stays **C524806** | S | Damage (40 V part behind 53 V clamp) | +| 1 | A-01 | U20 fed from `/MAIN5V` only (delete D20 + 48 mm `/VIN_MODEM` run, D21 → copper); fan from `/VEH5V` (U2 block DNP, JP1 bridged); Q10/DzG1/Rrp1/C10/C11/C22 DNP; F2 → 3 A ahead of D10 | Sch + Lay | F2 **C206912** (4 A C206914 only for 9 V); JP1 bridged footprint | B | Damage path; R1/R3 (+0.30 V at U20); F1, F8 | +| 2 | F-02 | Rig1 ≤ 3 mm of copper from P1.3 (long run becomes `/IGN_SENSE`); SMBJ33A `/IGN_IN` → GND at P1.3; `/24V_IN` off In1 or ≥ 1.0 mm from LV | Sch + Lay | **C224019**; Rig1 C88614 moves | B | 23-Jul short lesson; damage | +| 3 | F-01 | Netclass table + corrected `.kicad_dru` (incl. HV24↔HV24); refill; DRC gate; fix the 15 outer spots (F-15) | Lay (rules drafted in §2 4-F) | floor 0.15 · HV24↔HV24 0.2 · HV24 outer 0.3 · HV24 inner 0.5 mm | L | 23-Jul short lesson | +| 4 | H-04 | Delete `LCSC Part` from U25 on the board and in `Drogheda-v6.pretty/SO-8_L4.9-…-EP.kicad_mod` | Sch | U25 stays **C524806** | S | Damage (40 V part behind 53 V clamp) | | 5 | C-01 | TPS2552 current-limited antenna feed: ANT_OFF → EN̅ (100 k PD), FAULT̅ → ANT_SHORT_N (10 k to 3V3_GNSS), U18.7 NC | Sch + Lay | **C46506**, C25803, C25804 | B | Damage; field faults H0005/H0014 | -| 6 | B-03 | D28 → bidirectional 24 V ESD on an 0402 land, or DNP | Sch + Lay | **C1975527** | B | R3 (link); homologation | -| 7 | A-02 | U6 re-cluster: L6 ≤ 5 mm, C30/C31 ≤ 3 mm, C32–C34 ≤ 2 mm; `/SW_BAT` pour ≥ 2 mm; `/BAT_PLUS` ≥ 1.5 mm; EP ≥ 9 vias; In1/In2 solid ≥ 5 mm | Lay | 3 × 3 vias 0.3/0.6 mm at 0.9 × 1.2 mm | L | R5, R4, ECO §E #1 #2; F5 | -| 8 | A-03 | R50 825 Ω → 1.43 kΩ | Sch | **C22840** | S | R5, R3′; F4 | +| 6 | B-03 | D28 → bidirectional 24 V ESD on an 0402 land, or DNP | Sch + Lay | **C1975527** | B | R3 (link); homologation | +| 7 | A-02 | U6 re-cluster: L6 ≤ 5 mm, C30/C31 ≤ 3 mm, C32–C34 ≤ 2 mm; `/SW_BAT` pour ≥ 2 mm; `/BAT_PLUS` ≥ 1.5 mm; EP ≥ 9 vias; In1/In2 solid ≥ 5 mm | Lay | 3 × 3 vias 0.3/0.6 mm at 0.9 × 1.2 mm | L | R5, R4, ECO §E #1 #2; F5 | +| 8 | A-03 | R50 825 Ω → 1.43 kΩ | Sch | **C22840** | S | R5, R3′; F4 | | 9 | H-01 | U15 footprint → `Package_SO:SOIC-16_3.9x9.9mm_P1.27mm` (sch + PCB), re-place C84–C88; fix the stale field in V5.x too | Sch + Lay | U15 stays **C15846** | B | Manufacturability | | 10 | H-02 | U10 → SC16IS752; R53 → HKR 499 k | Sch | **C57156**, **C177479** | S | Order gate; R1 (R53 = boost set-point) | -| 11 | G-01 *(conditional)* | Restore MH4 at (193.2, 90.3); place MH11 + partner near U19; ≥ 4 mm copper-free radius | Leo (backplate) + Lay | coordinates | L | Enclosure fit; thermal gate T1 | +| 11 | G-01 *(conditional)* | Restore MH4 at (193.2, 90.3); place MH11 + partner near U19; ≥ 4 mm copper-free radius | Leo (backplate) + Lay | coordinates | L | Enclosure fit; thermal gate T1 | ### Part 2 — Majors (change before ordering unless Leo writes a reason) | # | ID | Change | Owner | LCSC / numbers | Effort | Closes | |---|---|---|---|---|---|---| | 1 | V1-01 | F2 electrically first: P1 → F2 → D10 ∥ Q23 (D10 moves to the F2 output) | Sch + Lay | F2 C206912 (A-01) | B | Damage on reversed P1 | -| 2 | D-01 | U27 74LVC1G125 on `/3V3_GNSS` between `/DOUT_4G` and U18.26 (+100 nF); Rdfu1 22 k → 100 k | Sch + Lay | **C12518**, C14663, C25803 | B | R1; 0.5.5/0.5.6 back-feed lesson | +| 2 | D-01 | U27 74LVC1G125 on `/3V3_GNSS` between `/DOUT_4G` and U18.26 (+100 nF); Rdfu1 22 k → 100 k | Sch + Lay | **C12518**, C14663, C25803 | B | R1; 0.5.5/0.5.6 back-feed lesson | | 3 | A-04 | R121 53.6 k → 57.6 k (5.18/5.32/5.46 V) | Sch | **C23082** | S | R3′, R5; F7 | -| 4 | B-02 | C130/C131 → polymer; R116 113 k, C141 6.8 nF, C142 56 pF; + 2 × 22 µF at L20.2; C131 ≤ 5 mm from U19 | Sch + Lay | **C881921** ×2, **C22862**, **C1542**, **C1572**, **C86817** ×2 | B | R1, R3; F1 | +| 4 | B-02 | C130/C131 → polymer; R116 113 k, C141 6.8 nF, C142 56 pF; + 2 × 22 µF at L20.2; C131 ≤ 5 mm from U19 | Sch + Lay | **C881921** ×2, **C22862**, **C1542**, **C1572**, **C86817** ×2 | B | R1, R3; F1 | | 5 | E-01 | `/ETH_PWR_EN`: U12.2 EN → PD2, 100 k to GND | Sch + Lay | C25803 | B | R1, R3; F8 | -| 6 | A-05 | CSYS + 2 × 47 µF 1210 at U6 VSYS pins 1/24 | Sch + Lay | **C5440143** ×2 | B | R1, R3; F1, F2 | -| 7 | F-51 | TMP102 between U6 and L6 (0x48); pack-NTC tap `/NTC` → PC5 (100 k / 120 k + 10 nF) | Sch + Lay | **C99269**, C14663, C25803, **C25808** (120 k), C1589 | B | R4; F5, F6 | -| 8 | F-12 | Ground vias: EP arrays (U25/U20 6, U12 6), U19 ≥ 30–40, U18 ≥ 24, U.FL 2 per pad, islands ≥ 2, edge fence ≤ 5 mm, board ≥ 400; pad-level solid on EPs/module GND | Lay | 0.3/0.6 mm vias; 0 empty 20 mm cells | L | R3, R4, ECO §E #6 | -| 9 | F-03 | Hot loops U25/U20/U12 (Cin ≤ 2 mm, one GND island, loop ≤ 1 cm², FB ≤ 3 mm); U20 + 2 × 22 µF + 220 µF | Lay + Sch | **C86817** ×2, **C881921** | B | ECO §E #4 | -| 10 | A-07 | `/VEH5V`, `/VIN_SW`, `/MAIN5V` ≥ 2 mm F.Cu or pour; Kelvin CLN/VIN sense at RS1; 1 oz inner or 1.65× width | Lay | ≥ 2 mm; ≥ 4 vias per transition | L | R5; prerequisite of A-01 | -| 11 | F-06 | Real stackup + impedance control; RF CPWG 0.30/0.20 on F.Cu over solid In1; LTE rerouted off In1; fence ≤ 3 mm; RF netclass; GNSS bias line ≥ 1 mm | Lay | JLC04161H-7628 | L | R3 (link, desense) | -| 12 | F-05 | Clear In1 under USB, crystals, switch nodes, VBAT/RF, SIM and the 3 broadside parallels; ≤ 3 In1 islands | Lay | no critical net over a void > 1 mm | L | ECO §E (return paths), Copper Plan | -| 13 | C-04 | Q1/Q5/R1/R2 into the GNSS island; `/SW_5V` ≤ 15 mm, 0 mm on In1 | Lay | — | L | R3 (desense) | -| 14 | G-02 | USBLC6-2SC6 at J9, ≤ 3 mm, flow-through | Sch + Lay | **C7519** | B | ECO §E #5; F8 | -| 15 | C-02 | U21 AP2112K → TPS7A2033P (soft-start 239–367 µs/V) | Sch | **C2862740** | S | R1 (52 000 starts/year) | +| 6 | A-05 | CSYS + 2 × 47 µF 1210 at U6 VSYS pins 1/24 | Sch + Lay | **C5440143** ×2 | B | R1, R3; F1, F2 | +| 7 | F-51 | TMP102 between U6 and L6 (0x48); pack-NTC tap `/NTC` → PC5 (100 k / 120 k + 10 nF) | Sch + Lay | **C99269**, C14663, C25803, **C25808** (120 k), C1589 | B | R4; F5, F6 | +| 8 | F-12 | Ground vias: EP arrays (U25/U20 6, U12 6), U19 ≥ 30–40, U18 ≥ 24, U.FL 2 per pad, islands ≥ 2, edge fence ≤ 5 mm, board ≥ 400; pad-level solid on EPs/module GND | Lay | 0.3/0.6 mm vias; 0 empty 20 mm cells | L | R3, R4, ECO §E #6 | +| 9 | F-03 | Hot loops U25/U20/U12 (Cin ≤ 2 mm, one GND island, loop ≤ 1 cm², FB ≤ 3 mm); U20 + 2 × 22 µF + 220 µF | Lay + Sch | **C86817** ×2, **C881921** | B | ECO §E #4 | +| 10 | A-07 | `/VEH5V`, `/VIN_SW`, `/MAIN5V` ≥ 2 mm F.Cu or pour; Kelvin CLN/VIN sense at RS1; 1 oz inner or 1.65× width | Lay | ≥ 2 mm; ≥ 4 vias per transition | L | R5; prerequisite of A-01 | +| 11 | F-06 | Real stackup + impedance control; RF CPWG 0.30/0.20 on F.Cu over solid In1; LTE rerouted off In1; fence ≤ 3 mm; RF netclass; GNSS bias line ≥ 1 mm | Lay | JLC04161H-7628 | L | R3 (link, desense) | +| 12 | F-05 | Clear In1 under USB, crystals, switch nodes, VBAT/RF, SIM and the 3 broadside parallels; ≤ 3 In1 islands | Lay | no critical net over a void > 1 mm | L | ECO §E (return paths), Copper Plan | +| 13 | C-04 | Q1/Q5/R1/R2 into the GNSS island; `/SW_5V` ≤ 15 mm, 0 mm on In1 | Lay | — | L | R3 (desense) | +| 14 | G-02 | USBLC6-2SC6 at J9, ≤ 3 mm, flow-through | Sch + Lay | **C7519** | B | ECO §E #5; F8 | +| 15 | C-02 | U21 AP2112K → TPS7A2033P (soft-start 239–367 µs/V) | Sch | **C2862740** | S | R1 (52 000 starts/year) | | 16 | A-08 | U17 AMS1117 → TLV1117LV33 (not C48937499) | Sch | **C15578** | S | R1 (sleep floor); F2 | | 17 | E-02 | 4.7 k `/ETH_RST` → GND at U11.37 (Minor once E-01 is in) | Sch | **C23162** | S | R1; F8 | | 18 | A-09 | C78 → polymer | Sch | **C881921** | S | Lifetime | @@ -1018,24 +1031,24 @@ Ranking criterion within each severity: hardware-damage path first, then repeat | ID | Change | Owner | LCSC / numbers | Effort | |---|---|---|---|---| -| A-10 | VEH5V over-voltage protection (LTC4040 OVP circuit or 5 V TVS crowbar) | Sch + Lay | no LCSC selected in the findings | B | +| A-10 | VEH5V over-voltage protection (LTC4040 OVP circuit or 5 V TVS crowbar) | Sch + Lay | no LCSC selected in the findings | B | | A-11 | R56 re-netted to `/3V3` (charger OFF by default) | Sch + Lay | C25803 | B | | A-13 | PFO → PB10 + 100 k pull-up (absorbs D-10) | Sch + Lay | C25803 | B | -| A-14 | R53/R54 ≤ 3 mm from U6.18/10, Q7 ≤ 5 mm, IGATE ≤ 8 mm on F.Cu (absorbs F-10) | Lay | — | L | -| B-08 | `/VBAT_MODEM` pour ≥ 3 mm into pins 55–57 | Lay | — | L | -| B-09 | R132–R134 → 22 Ω; 100 nF at J14.C1; SIM ESD next to J14 | Sch + Lay | C23345, C1525 | B | +| A-14 | R53/R54 ≤ 3 mm from U6.18/10, Q7 ≤ 5 mm, IGATE ≤ 8 mm on F.Cu (absorbs F-10) | Lay | — | L | +| B-08 | `/VBAT_MODEM` pour ≥ 3 mm into pins 55–57 | Lay | — | L | +| B-09 | R132–R134 → 22 Ω; 100 nF at J14.C1; SIM ESD next to J14 | Sch + Lay | C23345, C1525 | B | | B-10 | 100 k `/MODEM_STATUS` → GND; 100 k `/DIN_4G` → 3V3; R106 → 1 k (absorbs D-14) | Sch | C25803 ×2, C14676 | S | | C-07 | Test pads on U18.50 SAFEBOOT_N and U18.49 RESET_N | Sch + Lay | no part | B | -| D-02 | Y3 → 3225 CL 10 pF + 12 pF caps, ≤ 3 mm (absorbs F-11 Y3) | Sch + Lay | C2901684, C38523 (alt. C9006 + C1644) | B | -| D-03 | Y4 → FC-135 CL 7 pF + 6.8 pF caps, ≤ 3 mm | Sch + Lay | C48615, C1679 | B | +| D-02 | Y3 → 3225 CL 10 pF + 12 pF caps, ≤ 3 mm (absorbs F-11 Y3) | Sch + Lay | C2901684, C38523 (alt. C9006 + C1644) | B | +| D-03 | Y4 → FC-135 CL 7 pF + 6.8 pF caps, ≤ 3 mm | Sch + Lay | C48615, C1679 | B | | D-05 | Rigb1 3.3 k → 2.2 k; firmware reads PA5 on the ADC | Sch + FW | C4190 | S/F | | D-08 | Board-ID strap 10 k → GND (pin unresolved: PD2 taken by E-01) | Leo + Sch | C25804 | B | | D-09 | 100 k `/BASE_LS` → GND (absorbs A-12) | Sch + Lay | C25803 | B | | D-12 | TP9 on PA9; optional SWD footprint | Lay | no part | L | -| E-03 | Y1 → 3225 CL 12 pF, keep 18 pF, ≤ 3 mm (absorbs H-07, F-11 Y1) | Sch + Lay | C9006 (alt. C95/C96 → C1663) | B | -| E-04 | C91 → 10 nF, C90 → 4.7 µF, + 100 nF at AVDD pairs | Sch + Lay | C1589, C1779, C14663 | B | -| E-06 | Ethernet pairs coupled on F.Cu, 100 Ω diff | Lay | optional array: no LCSC | L | -| F-14 | J11 ESD in-line, D15 ≤ 3 mm, via ≤ 1 mm | Lay | — | L | +| E-03 | Y1 → 3225 CL 12 pF, keep 18 pF, ≤ 3 mm (absorbs H-07, F-11 Y1) | Sch + Lay | C9006 (alt. C95/C96 → C1663) | B | +| E-04 | C91 → 10 nF, C90 → 4.7 µF, + 100 nF at AVDD pairs | Sch + Lay | C1589, C1779, C14663 | B | +| E-06 | Ethernet pairs coupled on F.Cu, 100 Ω diff | Lay | optional array: no LCSC | L | +| F-14 | J11 ESD in-line, D15 ≤ 3 mm, via ≤ 1 mm | Lay | — | L | | F-17 | USB pairs F.Cu only, coupled, ≤ 1 via pair | Lay | — | L | | F-18 | Silk refs ≥ 0.8/0.15 mm; DRU text rule; clear 14 silk items | Lay | — | L | | F-52 | Modem temperature: `AT+CPMUTEMP` or TMP102 at 0x49 | FW or Sch + Lay | C99269 | F/B | @@ -1044,7 +1057,7 @@ Ranking criterion within each severity: hardware-damage path first, then repeat | G-05 | Silk labels: delete "4G NTRIP RESET", RESET MCU, BOOT0 (DFU), JP2 CHEM, P1 legend, function names | Lay | — | L | | G-08 | PESD5V0S1BA at P6.1, P7.1, P8.1 | Sch + Lay | C2827694 ×3 (opt. C22775) | B | | H-03 | New `IND-SMD_MWSA0804S` footprint for L2/L6/L8/L20 | Lay (+ lib) | parts unchanged | B | -| H-08 | Value fields: C22, Y2 (3.6864 MHz), U10, C103, C130/C131/C78 (absorbs D-16) | Sch | — | S | +| H-08 | Value fields: C22, Y2 (3.6864 MHz), U10, C103, C130/C131/C78 (absorbs D-16) | Sch | — | S | | J-02 | Residual: `/3V3_ETH` → Default; relax T15 on benign nets | Lay (rules) | — | L | | J-03 | Retype `unspecified` pins in `Drogheda-v6.kicad_sym` | Sch (lib) | — | S | | J-04 | Delete 27 NC flags + 3 wire stubs; re-link 10 missing symbols (absorbs B-11, D-11) | Sch | — | S | @@ -1052,75 +1065,75 @@ Ranking criterion within each severity: hardware-damage path first, then repeat --- ## 6. Layout instruction list for Michelle -Self-contained: every instruction carries its numbers; the finding ID is only for traceability. Work on the audit copy `hbox-watchdog-v6-audit.kicad_pcb` after the schematic changes of §7 have been synced (Update PCB **without** "replace footprints", see L-45). Units mm. Vias 0.3 mm drill / 0.6 mm pad unless stated. Coordinates are v6 board coordinates. Order: set rules and stackup first (L-1 … L-4), then the Blocker copper (L-5 … L-17), then Majors, then Minors, then the acceptance checks (L-48). +Self-contained: every instruction carries its numbers; the finding ID is only for traceability. Work on the audit copy `hbox-watchdog-v6-audit.kicad_pcb` after the schematic changes of §7 have been synced (Update PCB **without** "replace footprints", see L-45). Units mm. Vias 0.3 mm drill / 0.6 mm pad unless stated. Coordinates are v6 board coordinates. Order: set rules and stackup first (L-1 … L-4), then the Blocker copper (L-5 … L-17), then Majors, then Minors, then the acceptance checks (L-48). **A. Board setup (before touching copper)** -1. **Stackup (F-06):** Board Setup → Physical Stackup = JLC04161H-7628: Cu 0.035 / prepreg 0.2104 (εr 4.4) / Cu 0.035 / core 1.065 (εr 4.6) / Cu 0.035 / prepreg 0.2104 (εr 4.4) / Cu 0.035; copper finish ENIG. Order note: impedance control; **1 oz inner copper** (or widen every inner power run 1.65×, L-19). +1. **Stackup (F-06):** Board Setup → Physical Stackup = JLC04161H-7628: Cu 0.035 / prepreg 0.2104 (εr 4.4) / Cu 0.035 / core 1.065 (εr 4.6) / Cu 0.035 / prepreg 0.2104 (εr 4.4) / Cu 0.035; copper finish ENIG. Order note: impedance control; **1 oz inner copper** (or widen every inner power run 1.65×, L-19). 2. **Netclasses (F-01):** create/assign by exact net name (one pattern per line, leading `/`). HV24 (clearance 0.3, track 1.0, via 0.8/0.4): `/24V_IN` `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/Q10_GATE` `/Q23_GATE` `/SW_PWRIN` `/BOOT_PWRIN` `/SW_MODEM` `/BST_MODEM` (plus `/VIN_MODEM`, `/SW_FAN`, `/BST_FAN` only if A-01 is **not** adopted). PWR_HI (0.15 / 1.5 / 0.8/0.4): `/BAT_PLUS` `/SW_BAT` `/MAIN5V` `/VEH5V` `/SYS5V` `/VIN_SW`. PWR_MID (0.15 / 0.6 / 0.8/0.4): `/SW_5V` `/SW_IN` `/5V_FAN` `/FAN_RET`. PWR_MODEM (0.15 / 1.5 / 0.8/0.4): `/VBAT_MODEM`. RF (clearance = CPWG gap 0.20, width 0.30, no vias, excluded from autoroute): `/RF_GNSS` `/RF_ANT_GNSS` `/RF_LTE` `/RF_ANT_LTE`. Default (0.15 / 0.2 / 0.6/0.3): everything else, including `/3V3_ETH`. Delete all un-prefixed duplicate patterns and the dead `/3V3_MODEM`, `/SW3_NODE` patterns. -3. **Custom rules (F-01):** replace the rules "Minimum clearance 1", "HV24 clearance", "HV24 exception" with, in this order: floor 0.15 mm for non-HV24 non-RF pairs; HV24↔HV24 0.2 mm; HV24↔other 0.3 mm on outer layers; HV24↔other **0.5 mm on inner layers**; pad-to-pad 0.15 mm inside U2/U20/U25 footprints (exact text in §2 4-F, F-01). Set the text rule to min height 0.8 mm / min thickness 0.15 mm (F-18). Relax the T15 width warnings for the low-current nets (`/5V_FAN`, `/FAN_RET`, `/SW_FAN`, `/SW_5V`, `/SW_IN`, `/SYS5V`), keep ≥ 0.8 mm on `/VIN_PROT`/`/VIN_FUSED` (J-02). -4. **Check the rules resolve:** Inspect → Clearance Resolution on one `/24V`–GND-zone pair (expect 0.5 mm on In1) and one GND-zone–Default pair (expect 0.15 mm). After every GUI save of the project, re-check that the netclasses survived. +3. **Custom rules (F-01):** replace the rules "Minimum clearance 1", "HV24 clearance", "HV24 exception" with, in this order: floor 0.15 mm for non-HV24 non-RF pairs; HV24↔HV24 0.2 mm; HV24↔other 0.3 mm on outer layers; HV24↔other **0.5 mm on inner layers**; pad-to-pad 0.15 mm inside U2/U20/U25 footprints (exact text in §2 4-F, F-01). Set the text rule to min height 0.8 mm / min thickness 0.15 mm (F-18). Relax the T15 width warnings for the low-current nets (`/5V_FAN`, `/FAN_RET`, `/SW_FAN`, `/SW_5V`, `/SW_IN`, `/SYS5V`), keep ≥ 0.8 mm on `/VIN_PROT`/`/VIN_FUSED` (J-02). +4. **Check the rules resolve:** Inspect → Clearance Resolution on one `/24V`–GND-zone pair (expect 0.5 mm on In1) and one GND-zone–Default pair (expect 0.15 mm). After every GUI save of the project, re-check that the netclasses survived. -**B. Vehicle input and 24 V (Blockers A-01, F-02, V1-01, F-01)** -5. **Fuse first (V1-01, A-01):** place F2 (now 3 A, C206912, same Nano2 holder) electrically first: P1.1 → F2 → then D10 (SMBJ33A) and Q23 in parallel on the F2 output. Nothing but F2 on the P1.1 copper. +**B. Vehicle input and 24 V (Blockers A-01, F-02, V1-01, F-01)** +5. **Fuse first (V1-01, A-01):** place F2 (now 3 A, C206912, same Nano2 holder) electrically first: P1.1 → F2 → then D10 (SMBJ33A) and Q23 in parallel on the F2 output. Nothing but F2 on the P1.1 copper. 6. **Remove the unfused branch (A-01):** Q10, DzG1, Rrp1, C10, C11, C22 and the U2 fan-buck block (U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21) become DNP: delete their `/24V`, `/SW_FAN`, `/BST_FAN` copper. JP1 becomes a bridged solder jumper (`SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm`), so `/5V_FAN` = `/VEH5V`. -7. **Modem buck input (A-01):** delete D20 and the 48 mm `/VIN_MODEM` run from D20 (136.5, 113.8) to U20; remove D21 and join its two nets in copper (`/VIN_MODEM` becomes part of `/MAIN5V`). The `/MAIN5V` path from Q7/U6 to U20.2 is ≥ 1.5 mm wide all the way (A-05/A-07). -8. **Ignition (F-02):** move Rig1 (22 k, 0603) so that the copper from P1.3 to Rig1.1 is ≤ 3 mm, on F.Cu only. Add the new SMBJ33A (DO-214AA) from `/IGN_IN` to GND right at P1.3. The long run from Rig1.2 to the MCU is now `/IGN_SENSE` (Default class); keep Rig2, Rigb1, C9, D5 at the MCU. Remove the old In2 `/IGN_IN` run (106.5 mm) and the In1 via at (127.3, 50.5). -9. **`/24V_IN` off In1 (F-16):** reroute the 27 mm In1 run (167.5, 128.65) → (143.25, 121.75) to F.Cu along the south edge; if In1 must be used, keep ≥ 1.0 mm from every LV net with nothing crossing it. -10. **Outer-layer 24 V spots (F-15):** after refill + DRC (L-48), fix: `/VIN_PROT` 1.5 mm track vs `/VEH5V` 0.8 mm track at (176.24, 116.28) → **≥ 0.5 mm**, and tent the `/VEH5V` via there; `/USB_VBUS` away from Q23 (≥ 0.3 mm from `/Q23_GATE` and `/VIN_PROT`); remove the U20 GND neck (L-22); `/SW_PWRIN` and `/BST_MODEM` ≥ 0.3 mm from GND tracks. Tent every via except test vias. +7. **Modem buck input (A-01):** delete D20 and the 48 mm `/VIN_MODEM` run from D20 (136.5, 113.8) to U20; remove D21 and join its two nets in copper (`/VIN_MODEM` becomes part of `/MAIN5V`). The `/MAIN5V` path from Q7/U6 to U20.2 is ≥ 1.5 mm wide all the way (A-05/A-07). +8. **Ignition (F-02):** move Rig1 (22 k, 0603) so that the copper from P1.3 to Rig1.1 is ≤ 3 mm, on F.Cu only. Add the new SMBJ33A (DO-214AA) from `/IGN_IN` to GND right at P1.3. The long run from Rig1.2 to the MCU is now `/IGN_SENSE` (Default class); keep Rig2, Rigb1, C9, D5 at the MCU. Remove the old In2 `/IGN_IN` run (106.5 mm) and the In1 via at (127.3, 50.5). +9. **`/24V_IN` off In1 (F-16):** reroute the 27 mm In1 run (167.5, 128.65) → (143.25, 121.75) to F.Cu along the south edge; if In1 must be used, keep ≥ 1.0 mm from every LV net with nothing crossing it. +10. **Outer-layer 24 V spots (F-15):** after refill + DRC (L-48), fix: `/VIN_PROT` 1.5 mm track vs `/VEH5V` 0.8 mm track at (176.24, 116.28) → **≥ 0.5 mm**, and tent the `/VEH5V` via there; `/USB_VBUS` away from Q23 (≥ 0.3 mm from `/Q23_GATE` and `/VIN_PROT`); remove the U20 GND neck (L-22); `/SW_PWRIN` and `/BST_MODEM` ≥ 0.3 mm from GND tracks. Tent every via except test vias. **C. LTC4040 charger/backup (Blocker A-02; A-07, A-14, F-51, A-05)** -11. **Re-cluster U6:** L6 pad 1 ≤ 5 mm (edge) from U6 pins 21/22; C30/C31 ≤ 3 mm from U6 pin 6; C32/C33/C34 and the two new 47 µF 1210 CSYS caps ≤ 2 mm from VSYS pins 1/24, GND pads on the EP copper; C35 (or the new 22 µF 0805) at L6.2 next to BAT pin 23. L6 may not sit on (193.2, 90.3) if MH4 is restored (L-40). -12. **`/SW_BAT`:** F.Cu polygon ≥ 2 mm wide from the combined pin 21+22 fan-out to L6.1, compact (switch node), no 0.25/0.30 mm necks beyond the pin fan-out. -13. **`/BAT_PLUS`:** P3 → L6.2 ≥ 1.5 mm F.Cu or pour; if any part runs inner, ≥ 4 vias per layer change and ≥ 1.5 × 1.65 = 2.5 mm on 0.5 oz inner copper. Take the BAT-pin sense (U6.23) as a Kelvin tap from L6.2/C35. -14. **`/MAIN5V`:** pour from U6 pins 1/24 over C32–C34 to the Q7 drain, ≥ 2 mm, no 0.3/0.5 mm necks. -15. **U6 EP:** 9 vias, 3 × 3 at 0.9 × 1.2 mm pitch, 0.3/0.6 mm, plugged/capped (JLC via-in-pad) or tented; pad `zone_connect` solid. -16. **Planes under U6:** In1 and In2 GND solid for ≥ 5 mm around U6 and L6: move the 7 `/VFB_BST` segments, `/IGATE`, `/CHRG_*` off In1 there. -17. **Temperature sensor (F-51):** place the new TMP102 (SOT-563) between U6 and L6, ≤ 5 mm from the U6 EP, 100 nF at its VDD, on I²C1. Route the pack-NTC tap: `/NTC` → 100 k → PC5 (U16 pad 25), with 120 k (C25808) and 10 nF (C1589) from the PC5 node to GND. -18. **BSTFB / IGATE (A-14):** R53/R54 ≤ 3 mm from U6 pins 18/10, top leg Kelvin-tapped at the CSYS pads, `/VFB_BST` on F.Cu; Q7 ≤ 5 mm from U6.15; `/IGATE` ≤ 8 mm on F.Cu, flanked by `/MAIN5V` copper. -19. **5 V path (A-07):** `/VEH5V` L22.2 → RS1.1 on F.Cu ≥ 2 mm (move L22/C153/C154 toward RS1), or ≥ 2 mm inner with ≥ 4 vias per transition; `/VIN_SW` RS1.2 → Q7 on F.Cu ≥ 2 mm, Q7 ≤ 5 mm from RS1/U6. Route U6.7 (CLN) and U6.6 (VIN) sense traces from the inner edges of the RS1 pads (Kelvin), not 1.66 mm down the trace as today. +11. **Re-cluster U6:** L6 pad 1 ≤ 5 mm (edge) from U6 pins 21/22; C30/C31 ≤ 3 mm from U6 pin 6; C32/C33/C34 and the two new 47 µF 1210 CSYS caps ≤ 2 mm from VSYS pins 1/24, GND pads on the EP copper; C35 (or the new 22 µF 0805) at L6.2 next to BAT pin 23. L6 may not sit on (193.2, 90.3) if MH4 is restored (L-40). +12. **`/SW_BAT`:** F.Cu polygon ≥ 2 mm wide from the combined pin 21+22 fan-out to L6.1, compact (switch node), no 0.25/0.30 mm necks beyond the pin fan-out. +13. **`/BAT_PLUS`:** P3 → L6.2 ≥ 1.5 mm F.Cu or pour; if any part runs inner, ≥ 4 vias per layer change and ≥ 1.5 × 1.65 = 2.5 mm on 0.5 oz inner copper. Take the BAT-pin sense (U6.23) as a Kelvin tap from L6.2/C35. +14. **`/MAIN5V`:** pour from U6 pins 1/24 over C32–C34 to the Q7 drain, ≥ 2 mm, no 0.3/0.5 mm necks. +15. **U6 EP:** 9 vias, 3 × 3 at 0.9 × 1.2 mm pitch, 0.3/0.6 mm, plugged/capped (JLC via-in-pad) or tented; pad `zone_connect` solid. +16. **Planes under U6:** In1 and In2 GND solid for ≥ 5 mm around U6 and L6: move the 7 `/VFB_BST` segments, `/IGATE`, `/CHRG_*` off In1 there. +17. **Temperature sensor (F-51):** place the new TMP102 (SOT-563) between U6 and L6, ≤ 5 mm from the U6 EP, 100 nF at its VDD, on I²C1. Route the pack-NTC tap: `/NTC` → 100 k → PC5 (U16 pad 25), with 120 k (C25808) and 10 nF (C1589) from the PC5 node to GND. +18. **BSTFB / IGATE (A-14):** R53/R54 ≤ 3 mm from U6 pins 18/10, top leg Kelvin-tapped at the CSYS pads, `/VFB_BST` on F.Cu; Q7 ≤ 5 mm from U6.15; `/IGATE` ≤ 8 mm on F.Cu, flanked by `/MAIN5V` copper. +19. **5 V path (A-07):** `/VEH5V` L22.2 → RS1.1 on F.Cu ≥ 2 mm (move L22/C153/C154 toward RS1), or ≥ 2 mm inner with ≥ 4 vias per transition; `/VIN_SW` RS1.2 → Q7 on F.Cu ≥ 2 mm, Q7 ≤ 5 mm from RS1/U6. Route U6.7 (CLN) and U6.6 (VIN) sense traces from the inner edges of the RS1 pads (Kelvin), not 1.66 mm down the trace as today. **D. Switchers (Major F-03)** -20. **Common rule for U25, U20, U12:** input caps (VIN and GND pads) ≤ 2 mm from the IC VIN and GND/EP pins; Cin GND, catch-diode anode and EP on **one solid F.Cu area**, no GND neck narrower than 1 mm; ≥ 2 vias ≤ 1 mm from each Cin GND pad; catch diode ≤ 3 mm from SW; inductor ≤ 5 mm from SW; SW copper ≤ 25 mm²; FB divider ≤ 3 mm from the FB pin; nothing on In1 under any SW copper. Acceptance: input loop area ≤ 1 cm² (U25 today ≈ 3.1 cm²). -21. **U25:** C149/C150 ≤ 2 mm from pins 2/7 on the EP/D34 copper (today C149/C150/C151 GND is on the U6 island); D34 cathode ≤ 2–3 mm from pin 8, anode on the Cin GND copper; L22 ≤ 5 mm from pin 8 (today 13.75 mm) with `/SW_PWRIN` ≤ 25 mm² (today 45.8 mm²) and not above In1 signal tracks; 4 GND vias around the Cin/D34 node within 2 mm; D34 GND pad solid. -22. **U20:** delete the 0.25 mm GND track between U20.1 and U20.2; C127/C128 GND pads face the EP, bonded by solid F.Cu; add the two new 22 µF 0805 caps ≤ 3 mm from U20.2 and the new 220 µF polymer (6.3 × 7.7) at U20.2; R110/R111 ≤ 2 mm from U20.5 on the side away from pin 8; VBAT sense by a dedicated trace from C131; delete the 5.6 mm In1 FB detour; keep `/VIN_MODEM` (now MAIN5V) ≥ 0.3 mm from the EN/RT/EP pads. -23. **U12:** C101 ≤ 2 mm from U12.7 (VIN; today 6.40 mm) with GND next to pin 5; D11 ≤ 2 mm from pin 1 with its anode on C101's GND copper (today 11.92 mm, different island); L8 ≤ 5 mm (today 15.10 mm); R87/R88 ≤ 3 mm from U12.4, R87 top fed by a Kelvin trace from C102/C94; `/ETH_FB` ≤ 5 mm on F.Cu with nothing under `/ETH_SW`; replace the 0.2 mm GND ties with pour. +20. **Common rule for U25, U20, U12:** input caps (VIN and GND pads) ≤ 2 mm from the IC VIN and GND/EP pins; Cin GND, catch-diode anode and EP on **one solid F.Cu area**, no GND neck narrower than 1 mm; ≥ 2 vias ≤ 1 mm from each Cin GND pad; catch diode ≤ 3 mm from SW; inductor ≤ 5 mm from SW; SW copper ≤ 25 mm²; FB divider ≤ 3 mm from the FB pin; nothing on In1 under any SW copper. Acceptance: input loop area ≤ 1 cm² (U25 today ≈ 3.1 cm²). +21. **U25:** C149/C150 ≤ 2 mm from pins 2/7 on the EP/D34 copper (today C149/C150/C151 GND is on the U6 island); D34 cathode ≤ 2–3 mm from pin 8, anode on the Cin GND copper; L22 ≤ 5 mm from pin 8 (today 13.75 mm) with `/SW_PWRIN` ≤ 25 mm² (today 45.8 mm²) and not above In1 signal tracks; 4 GND vias around the Cin/D34 node within 2 mm; D34 GND pad solid. +22. **U20:** delete the 0.25 mm GND track between U20.1 and U20.2; C127/C128 GND pads face the EP, bonded by solid F.Cu; add the two new 22 µF 0805 caps ≤ 3 mm from U20.2 and the new 220 µF polymer (6.3 × 7.7) at U20.2; R110/R111 ≤ 2 mm from U20.5 on the side away from pin 8; VBAT sense by a dedicated trace from C131; delete the 5.6 mm In1 FB detour; keep `/VIN_MODEM` (now MAIN5V) ≥ 0.3 mm from the EN/RT/EP pads. +23. **U12:** C101 ≤ 2 mm from U12.7 (VIN; today 6.40 mm) with GND next to pin 5; D11 ≤ 2 mm from pin 1 with its anode on C101's GND copper (today 11.92 mm, different island); L8 ≤ 5 mm (today 15.10 mm); R87/R88 ≤ 3 mm from U12.4, R87 top fed by a Kelvin trace from C102/C94; `/ETH_FB` ≤ 5 mm on F.Cu with nothing under `/ETH_SW`; replace the 0.2 mm GND ties with pour. **E. Grounding and stitching (Major F-12)** -24. **EP via arrays:** U25 and U20 (EP 3.2 × 2.5): 2 × 3 = 6 vias at 1.0 mm pitch, or 2 × 4 = 8 at 0.8 mm with 0.3/0.5 vias (3 × 3 at 1.0 mm does not fit the 2.5 mm side); U12 (EP 2.29 × 3.0): 2 × 3; U6: see L-15. +24. **EP via arrays:** U25 and U20 (EP 3.2 × 2.5): 2 × 3 = 6 vias at 1.0 mm pitch, or 2 × 4 = 8 at 0.8 mm with 0.3/0.5 vias (3 × 3 at 1.0 mm does not fit the 2.5 mm side); U12 (EP 2.29 × 3.0): 2 × 3; U6: see L-15. 25. **Pad connection:** set `zone_connect` solid **per pad** on: all EPs, all U18 and U19 GND pads, D34/D11 anodes, buck Cin/Cout GND pads. Leave the zone default thermal relief (≥ 2 spokes) for small passives (do **not** set the zones to "thermal reliefs for PTH only": that makes 23 × 0402 and 142 × 0603 GND pads solid and risks tombstoning). -26. **U19 A7670SA:** one tented via in each 1.7 mm gap between adjacent 2.1 mm centre GND pads (0.55 mm clearance per side) plus a via ring on the perimeter GND pads: **≥ 30, target 40**, never inside a pad. -27. **U18 ZED-F9P:** vias at the diagonal interstitial centres of the 2.1 mm GND pad grid (0.41 mm to pad corners): **≥ 24**; no microvias needed. Under U18/U19 use tented or JLC "epoxy filled & capped" vias. -28. **U.FL and ESD grounds:** 2 GND vias ≤ 1 mm from each GND pad of J12 and J13, and at D28. -29. **Stitching:** every F.Cu GND island ≥ 20 mm² gets ≥ 2 vias; no F.Cu GND pour point > 5 mm from a GND via (today median 10.4 mm, max 29.5 mm in the east pour); edge fence at ≤ 5 mm pitch within 1.5 mm of the 0.5 mm edge clearance (≈ 96 vias); **board total ≥ 400 GND vias** (today 69). Acceptance: 0 empty 20 × 20 mm cells (today 10 of 35). +26. **U19 A7670SA:** one tented via in each 1.7 mm gap between adjacent 2.1 mm centre GND pads (0.55 mm clearance per side) plus a via ring on the perimeter GND pads: **≥ 30, target 40**, never inside a pad. +27. **U18 ZED-F9P:** vias at the diagonal interstitial centres of the 2.1 mm GND pad grid (0.41 mm to pad corners): **≥ 24**; no microvias needed. Under U18/U19 use tented or JLC "epoxy filled & capped" vias. +28. **U.FL and ESD grounds:** 2 GND vias ≤ 1 mm from each GND pad of J12 and J13, and at D28. +29. **Stitching:** every F.Cu GND island ≥ 20 mm² gets ≥ 2 vias; no F.Cu GND pour point > 5 mm from a GND via (today median 10.4 mm, max 29.5 mm in the east pour); edge fence at ≤ 5 mm pitch within 1.5 mm of the 0.5 mm edge clearance (≈ 96 vias); **board total ≥ 400 GND vias** (today 69). Acceptance: 0 empty 20 × 20 mm cells (today 10 of 35). **F. RF, GNSS supply and planes (Majors F-06, C-04, F-05; Blocker B-03)** -30. **RF lines (F-06):** both RF runs on F.Cu only, CPWG over solid In1, start at **w 0.30 / gap 0.20 mm**, finalise with JLC's impedance calculator for 50 Ω on JLC04161H-7628. -31. **LTE (F-06, B-03):** reroute U19.60 → R118/C146/C147 → D28 → J13 entirely on F.Cu (rotate J13 or move it toward U19's RF pad side); remove the 22 mm In1 section and its two vias at (174.25, 58.25) and (194.27, 53.72). Nothing on any layer above or below the line; `/VBAT_MODEM` ≥ 3 mm away. Replace D28's SOD-923 land with an **0402** land in the same in-line spot (new part PESD0402-240, or leave DNP). -32. **Fences (F-06):** GND vias on both sides of RF_LTE/RF_ANT_LTE and RF_GNSS/RF_ANT_GNSS at **≤ 3 mm pitch**, ≤ 1 mm from the gap edge. -33. **GNSS bias (F-06, C-01):** place the new TPS2552 (SOT-23-6) near L21/J12; its output net `/ANT_BIAS` (was `/VCC_RF_GNSS`) runs ≥ 1 mm from the RF line with a stitched GND strip between (or on In2 after 100 pF + 100 nF decoupling); L21 taps the RF line stub-free at J12; move D27 onto the J12 pad (no stub). -34. **GNSS supply switch (C-04):** move Q1, Q5, R1, R2 (F1 optional) into the GNSS island next to U21/C3/C40/C119; bring `/SYS5V` (or `/SW_IN`) to them; `/PWR_CTRL` becomes the long signal; `/SW_5V` ≤ 15 mm and 0 mm on In1 (today 181 mm on In1). -35. **In1 plane (F-05):** at minimum clear In1 under: the USB pairs (J9 and J11), every crystal and its lines, all switch nodes, `/VBAT_MODEM` and the RF area, the SIM lines, and the three broadside parallels (I2C_SDA over `/SER_TXB` 14.2 mm, ETH_XO over `/ETH_RST` 6.95 mm, NRST over `/USART6_RX` 7.2 mm). Move In1 tracks to In2/B.Cu (or F.Cu where short), priority `/SW_5V`, `/MAIN5V`, `/KCOIL`, `/USART6_TX/RX`, `/DOUT_4G`, `/CHRG_*`, `/SER_TXB/RXB`, `/ETH_*`, `/VFB_BST`, `/IGATE`. Acceptance: ≤ 3 In1 islands, no critical net over a void longer than 1 mm. +30. **RF lines (F-06):** both RF runs on F.Cu only, CPWG over solid In1, start at **w 0.30 / gap 0.20 mm**, finalise with JLC's impedance calculator for 50 Ω on JLC04161H-7628. +31. **LTE (F-06, B-03):** reroute U19.60 → R118/C146/C147 → D28 → J13 entirely on F.Cu (rotate J13 or move it toward U19's RF pad side); remove the 22 mm In1 section and its two vias at (174.25, 58.25) and (194.27, 53.72). Nothing on any layer above or below the line; `/VBAT_MODEM` ≥ 3 mm away. Replace D28's SOD-923 land with an **0402** land in the same in-line spot (new part PESD0402-240, or leave DNP). +32. **Fences (F-06):** GND vias on both sides of RF_LTE/RF_ANT_LTE and RF_GNSS/RF_ANT_GNSS at **≤ 3 mm pitch**, ≤ 1 mm from the gap edge. +33. **GNSS bias (F-06, C-01):** place the new TPS2552 (SOT-23-6) near L21/J12; its output net `/ANT_BIAS` (was `/VCC_RF_GNSS`) runs ≥ 1 mm from the RF line with a stitched GND strip between (or on In2 after 100 pF + 100 nF decoupling); L21 taps the RF line stub-free at J12; move D27 onto the J12 pad (no stub). +34. **GNSS supply switch (C-04):** move Q1, Q5, R1, R2 (F1 optional) into the GNSS island next to U21/C3/C40/C119; bring `/SYS5V` (or `/SW_IN`) to them; `/PWR_CTRL` becomes the long signal; `/SW_5V` ≤ 15 mm and 0 mm on In1 (today 181 mm on In1). +35. **In1 plane (F-05):** at minimum clear In1 under: the USB pairs (J9 and J11), every crystal and its lines, all switch nodes, `/VBAT_MODEM` and the RF area, the SIM lines, and the three broadside parallels (I2C_SDA over `/SER_TXB` 14.2 mm, ETH_XO over `/ETH_RST` 6.95 mm, NRST over `/USART6_RX` 7.2 mm). Move In1 tracks to In2/B.Cu (or F.Cu where short), priority `/SW_5V`, `/MAIN5V`, `/KCOIL`, `/USART6_TX/RX`, `/DOUT_4G`, `/CHRG_*`, `/SER_TXB/RXB`, `/ETH_*`, `/VFB_BST`, `/IGATE`. Acceptance: ≤ 3 In1 islands, no critical net over a void longer than 1 mm. **G. Modem power (Major B-02, Minor B-08)** -36. **VBAT_MODEM:** F.Cu pour ≥ 3 mm from L20.2 → C130 → C131 → C132–C136 → U19 pins 55/56/57 (fan out to all three pads; no 0.5 mm neck); C131 (now polymer) ≤ 5 mm from the pads; the two new 22 µF 0805 caps ≤ 3 mm from L20.2. +36. **VBAT_MODEM:** F.Cu pour ≥ 3 mm from L20.2 → C130 → C131 → C132–C136 → U19 pins 55/56/57 (fan out to all three pads; no 0.5 mm neck); C131 (now polymer) ≤ 5 mm from the pads; the two new 22 µF 0805 caps ≤ 3 mm from L20.2. **H. New parts and footprint swaps** -37. **Footprint swaps:** U15 → `SOIC-16_3.9x9.9mm_P1.27mm` (narrow; re-place C84–C88 hard against it) (H-01); D28 → 0402 (L-31); Y1 and Y3 → 3225-4P crystal footprint (E-03, D-02); L2/L6/L8/L20 → new `IND-SMD_MWSA0804S` land (pads 2.75 × 4.0 mm, 5.5 mm inner gap, courtyard 9.4 × 9.8 mm, confirm against the Sunlord drawing) and re-check neighbours for the 0.4 mm body growth (H-03). U17 and U21 keep their footprints (drop-ins). -38. **New parts to place:** U27 74LVC1G125 (SOT-753) + 100 nF at U18.26, powered from `/3V3_GNSS` (D-01); USBLC6-2SC6 at J9 (L-41); 4.7 k at U11.37 (E-02); 100 k at U12.2 (E-01, new net `/ETH_PWR_EN` to U16 pad 54); 100 k at Q5 base (D-09); 100 k pull-up on `/PFO` routed U6.20 → PB10 (A-13); 100 k `/MODEM_STATUS` → GND and 100 k `/DIN_4G` → 3V3 (B-10); 100 nF 0402 at J14.C1 and D23–D25 moved next to J14 (B-09); PESD5V0S1BA at P6.1, P7.1, P8.1, each ≤ 3 mm from its connector (G-08); R56 re-netted to `/3V3` (A-11); JP_CUT open solder jumper across P5 `/MAIN5V`–`/SYS5V`, silk "CUTOFF BYPASS" (G-04); TP9 1.5 mm pad on PA9 next to TP3–TP5 (D-12); 1 mm test pads on U18.50 and U18.49 next to a GND pad (C-07). -39. **Crystals (E-03, D-02, D-03):** Y1 ≤ 3 mm from U11.30/31, Y3 ≤ 3 mm from U16 PH0/PH1, Y4 ≤ 3 mm from PC14/PC15; load caps adjacent to the crystal, 2 GND vias, no inner-layer track under any crystal or its lines (Y3 today has In1 `/USART6_RX` under both HSE lines and `/BAT_PLUS` on all 4 layers beside it). +37. **Footprint swaps:** U15 → `SOIC-16_3.9x9.9mm_P1.27mm` (narrow; re-place C84–C88 hard against it) (H-01); D28 → 0402 (L-31); Y1 and Y3 → 3225-4P crystal footprint (E-03, D-02); L2/L6/L8/L20 → new `IND-SMD_MWSA0804S` land (pads 2.75 × 4.0 mm, 5.5 mm inner gap, courtyard 9.4 × 9.8 mm, confirm against the Sunlord drawing) and re-check neighbours for the 0.4 mm body growth (H-03). U17 and U21 keep their footprints (drop-ins). +38. **New parts to place:** U27 74LVC1G125 (SOT-753) + 100 nF at U18.26, powered from `/3V3_GNSS` (D-01); USBLC6-2SC6 at J9 (L-41); 4.7 k at U11.37 (E-02); 100 k at U12.2 (E-01, new net `/ETH_PWR_EN` to U16 pad 54); 100 k at Q5 base (D-09); 100 k pull-up on `/PFO` routed U6.20 → PB10 (A-13); 100 k `/MODEM_STATUS` → GND and 100 k `/DIN_4G` → 3V3 (B-10); 100 nF 0402 at J14.C1 and D23–D25 moved next to J14 (B-09); PESD5V0S1BA at P6.1, P7.1, P8.1, each ≤ 3 mm from its connector (G-08); R56 re-netted to `/3V3` (A-11); JP_CUT open solder jumper across P5 `/MAIN5V`–`/SYS5V`, silk "CUTOFF BYPASS" (G-04); TP9 1.5 mm pad on PA9 next to TP3–TP5 (D-12); 1 mm test pads on U18.50 and U18.49 next to a GND pad (C-07). +39. **Crystals (E-03, D-02, D-03):** Y1 ≤ 3 mm from U11.30/31, Y3 ≤ 3 mm from U16 PH0/PH1, Y4 ≤ 3 mm from PC14/PC15; load caps adjacent to the crystal, 2 GND vias, no inner-layer track under any crystal or its lines (Y3 today has In1 `/USART6_RX` under both HSE lines and `/BAT_PLUS` on all 4 layers beside it). **I. Mechanics, connectors, silkscreen** -40. **Mounting holes (G-01, after Leo's answer):** if the V5.5 backplate is reused, restore MH4 (Ø3.2 NPTH) at **(193.2, 90.3)** and add the modem heatsink-clamp pair near U19 (V5.5 MH11 was at (168.3, 84.6), now 0.6 mm from the U19 courtyard, so its position must be re-chosen). Keep a ≥ 4.0 mm copper-free radius on F.Cu/B.Cu around every mounting hole (move the `/3V3` track at MH6 out by ≥ 0.5 mm) or specify nylon washers. -41. **J9 ESD (G-02):** USBLC6-2SC6 ≤ 3 mm of copper from the J9 pads, D± routed through its pads (pins 1/6 `/USB_DM`, 3/4 `/USB_DP`, 5 `/USB_VBUS`, 2 GND), GND via ≤ 1 mm. -42. **J11 ESD (F-14):** route DFU D+/D− through the D14/D15 pads (no T-stubs); D15 ≤ 3 mm of copper from J11 (today 10.9 mm); each ESD GND pad with its own via ≤ 1 mm. -43. **USB pairs (F-17):** J9 and J11 pairs on F.Cu only over solid In1, coupled (≈ 0.2/0.15 mm for 90 Ω on JLC7628, confirm in the calculator), ≤ 1 via pair, no slot crossings. -44. **Ethernet (E-04, E-06):** C90/C91 ≤ 2 mm from U11.20/22; 100 nF at the AVDD 4/8 and 11/21 pairs; each TX/RX pair coupled on F.Cu only (100 Ω diff), ≤ 1 via pair; J10.8 per the HR911105A drawing. +40. **Mounting holes (G-01, after Leo's answer):** if the V5.5 backplate is reused, restore MH4 (Ø3.2 NPTH) at **(193.2, 90.3)** and add the modem heatsink-clamp pair near U19 (V5.5 MH11 was at (168.3, 84.6), now 0.6 mm from the U19 courtyard, so its position must be re-chosen). Keep a ≥ 4.0 mm copper-free radius on F.Cu/B.Cu around every mounting hole (move the `/3V3` track at MH6 out by ≥ 0.5 mm) or specify nylon washers. +41. **J9 ESD (G-02):** USBLC6-2SC6 ≤ 3 mm of copper from the J9 pads, D± routed through its pads (pins 1/6 `/USB_DM`, 3/4 `/USB_DP`, 5 `/USB_VBUS`, 2 GND), GND via ≤ 1 mm. +42. **J11 ESD (F-14):** route DFU D+/D− through the D14/D15 pads (no T-stubs); D15 ≤ 3 mm of copper from J11 (today 10.9 mm); each ESD GND pad with its own via ≤ 1 mm. +43. **USB pairs (F-17):** J9 and J11 pairs on F.Cu only over solid In1, coupled (≈ 0.2/0.15 mm for 90 Ω on JLC7628, confirm in the calculator), ≤ 1 via pair, no slot crossings. +44. **Ethernet (E-04, E-06):** C90/C91 ≤ 2 mm from U11.20/22; 100 nF at the AVDD 4/8 and 11/21 pairs; each TX/RX pair coupled on F.Cu only (100 Ω diff), ≤ 1 via pair; J10.8 per the HR911105A drawing. 45. **Library hygiene (J-05):** do **not** run "Update footprints from library" (it would swap P11/P12 and reset pads); when syncing from the schematic, do not tick "replace footprints". -46. **Silkscreen (F-18, G-05):** all reference texts ≥ 0.8 mm height / 0.15 mm stroke (1.0/0.15 where space allows); delete "4G NTRIP RESET" at (187.0, 124.1); SW1 "RESET MCU", SW2 "BOOT0 (DFU)"; JP2 "CHEM 1-2 Li-ion / 2-3 LFP"; P1 pin legend "VIN 9-36V · GND · IGN · GND · NC"; a function name at every connector (FAN, RESET, NTC1, NTC2, LED, BATT, CUTOFF, 5V BENCH); P2 "bench only, no reverse protection" (A-20c); clear the 14 DRC silk items; check the D27/D28/Q10 polarity marks in the 3D view. -47. **Small cleanups:** extend the `/SW_5V` track end at (86.35, 121.88) 0.3 mm to the U21.3 pad centre (F-21); VDD decoupling caps ≤ 2 mm from their pins where convenient (D-15); Cu4 ≤ 2 mm from U18.36 (C-09). +46. **Silkscreen (F-18, G-05):** all reference texts ≥ 0.8 mm height / 0.15 mm stroke (1.0/0.15 where space allows); delete "4G NTRIP RESET" at (187.0, 124.1); SW1 "RESET MCU", SW2 "BOOT0 (DFU)"; JP2 "CHEM 1-2 Li-ion / 2-3 LFP"; P1 pin legend "VIN 9-36V · GND · IGN · GND · NC"; a function name at every connector (FAN, RESET, NTC1, NTC2, LED, BATT, CUTOFF, 5V BENCH); P2 "bench only, no reverse protection" (A-20c); clear the 14 DRC silk items; check the D27/D28/Q10 polarity marks in the 3D view. +47. **Small cleanups:** extend the `/SW_5V` track end at (86.35, 121.88) 0.3 mm to the U21.3 pad centre (F-21); VDD decoupling caps ≤ 2 mm from their pins where convenient (D-15); Cu4 ≤ 2 mm from U18.36 (C-09). **J. Acceptance before generating fab files** -48. Refill all zones → DRC with the new rules: **0 clearance errors** (the 6 inner and 15 outer spots of F-01/F-02 must be gone), `track_width` warnings only on nets deliberately left at T15, 0 unconnected; then check: GND vias ≥ 400 and 0 empty 20 mm cells; every GND pad of U19/U18/U20/U25/J12/J13 in an F.Cu cluster with ≥ 1 plane via ≤ 2 mm; each buck input loop ≤ 1 cm²; ≤ 3 In1 islands; RF lines at the calculator's 50 Ω geometry with fences ≤ 3 mm; U6 EP 9 vias; `/SW_BAT` ≥ 2 mm; no HV24 net on an inner layer within 0.5 mm of LV copper. Generate BOM/CPL only after H-04's field deletion (or from the schematic with kicad-cli). +48. Refill all zones → DRC with the new rules: **0 clearance errors** (the 6 inner and 15 outer spots of F-01/F-02 must be gone), `track_width` warnings only on nets deliberately left at T15, 0 unconnected; then check: GND vias ≥ 400 and 0 empty 20 mm cells; every GND pad of U19/U18/U20/U25/J12/J13 in an F.Cu cluster with ≥ 1 plane via ≤ 2 mm; each buck input loop ≤ 1 cm²; ≤ 3 In1 islands; RF lines at the calculator's 50 Ω geometry with fences ≤ 3 mm; U6 EP 9 vias; `/SW_BAT` ≥ 2 mm; no HV24 net on an inner layer within 0.5 mm of LV copper. Generate BOM/CPL only after H-04's field deletion (or from the schematic with kicad-cli). --- ## 7. Schematic change list (for the "apply" phase, brief §7) @@ -1135,12 +1148,12 @@ To be applied only if Leo says "apply", on a copy `hbox-watchdog-v6-audit.*` fol | A-01 | D21 | PMEG3050EP (C50603) | **remove; merge `/VIN_MODEM` into `/MAIN5V`** | — | U20.2, C127, C128 now on `/MAIN5V` | | A-01 | U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21 | fan buck (U2 MP1584EN C15051 …) | **DNP** | — | fan now from `/VEH5V` | | A-01 | JP1 | `SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` | `Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm` | no part | `/5V_FAN` = `/VEH5V` | -| A-01 | Q10, DzG1, Rrp1, C10, C11, C22 | IRFR5305 (C2624), BZX84C15, 10 k, 47 µF/50 V, 100 nF, "22uF/50V" | **DNP** | — | `/24V` left without loads | -| A-01 + V1-01 | F2 | 2A/125V Nano2 (C206910) | **0154003.DR 3 A**, same holder; topology P1.1 → F2 → {D10, Q23} | **C206912** | 4 A C206914 only for sustained 9 V operation | +| A-01 | Q10, DzG1, Rrp1, C10, C11, C22 | IRFR5305 (C2624), BZX84C15, 10 k, 47 µF/50 V, 100 nF, "22uF/50V" | **DNP** | — | `/24V` left without loads | +| A-01 + V1-01 | F2 | 2A/125V Nano2 (C206910) | **0154003.DR 3 A**, same holder; topology P1.1 → F2 → {D10, Q23} | **C206912** | 4 A C206914 only for sustained 9 V operation | | V1-01 | D10 | SMBJ33A on `/24V_IN` (ahead of F2) | SMBJ33A on the F2 output (`/VIN_FUSED`) | C224019 (unchanged) | reversed P1 now blows F2 | -| A-03 | R50 | 825R/1% (C50214) | **1.43 kΩ 1 % 0603** | **C22840** | 1.316–1.483 A | -| B-03 | D28 | ESD9L5.0ST5G (C82326), SOD-923 | **PESD0402-240, 0402** (or DNP) | **C1975527** | bidirectional 24 V | -| C-01 | new U (antenna switch) | — | **TPS2552DBVR**: 1 IN = `/3V3_GNSS`, 2 GND, 3 EN̅ = U18.5 ANT_OFF, 4 FAULT̅ = `/GNSS_ANT_SHORT_N`, 5 ILIM = IN, 6 OUT = new `/ANT_BIAS` | **C46506** | 75 mA limit | +| A-03 | R50 | 825R/1% (C50214) | **1.43 kΩ 1 % 0603** | **C22840** | 1.316–1.483 A | +| B-03 | D28 | ESD9L5.0ST5G (C82326), SOD-923 | **PESD0402-240, 0402** (or DNP) | **C1975527** | bidirectional 24 V | +| C-01 | new U (antenna switch) | — | **TPS2552DBVR**: 1 IN = `/3V3_GNSS`, 2 GND, 3 EN̅ = U18.5 ANT_OFF, 4 FAULT̅ = `/GNSS_ANT_SHORT_N`, 5 ILIM = IN, 6 OUT = new `/ANT_BIAS` | **C46506** | 75 mA limit | | C-01 | new R | — | 100 k, EN̅ → GND | C25803 | antenna ON by default | | C-01 | new R | — | 10 k, `/GNSS_ANT_SHORT_N` → `/3V3_GNSS` | C25804 | FAULT̅ pull-up | | C-01 | L21, C144, C145 / U18.7 | on `/VCC_RF_GNSS` with U18.7 | on `/ANT_BIAS`; **U18.7 VCC_RF → NC** | unchanged | | @@ -1148,7 +1161,7 @@ To be applied only if Leo says "apply", on a copy `hbox-watchdog-v6-audit.*` fol | F-02 | Rig1 | 22 k 0603 (C88614) | unchanged value; placed at P1.3 (layout) | C88614 | net split: `/IGN_IN` = {P1.3, Rig1.1, TVS} | | H-01 | U15 | footprint `Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm` | **`Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`** | C15846 (unchanged) | also fix the stale field in the V5.x schematics | | H-02 | U10 | SC16IS762IPW (C729142) | **SC16IS752IPW,128** | **C57156** | I²C mode, drop-in | -| H-02 | R53 | 499k/1% (C131054) | **499 k 1 % 0603 HKR RCT03499KFLF** | **C177479** | drop-in | +| H-02 | R53 | 499k/1% (C131054) | **499 k 1 % 0603 HKR RCT03499KFLF** | **C177479** | drop-in | | H-04 | U25 | fields `LCSC` = C524806 **and** `LCSC Part` = C2071691 | **delete `LCSC Part`** (board, schematic and `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod`) | C524806 | or strip `LCSC Part` from all 10 library footprints | | G-01 | MH4 (+ heatsink pair) | absent | board-only mounting holes (layout) | — | only if the V5.5 backplate is reused | | F-01 | project | netclass patterns and `.kicad_dru` | per §2 4-F (F-01) | — | project settings, not schematic symbols | @@ -1157,26 +1170,26 @@ To be applied only if Leo says "apply", on a copy `hbox-watchdog-v6-audit.*` fol | Finding | Ref | From | To | LCSC | Note | |---|---|---|---|---|---| -| A-04 | R121 | 53.6k/1% (C23074) | **57.6 kΩ 1 % 0603** | **C23082** | 5.18/5.32/5.46 V | -| A-05 | new C ×2 | — | **47 µF 16 V X7R 1210** on `/MAIN5V` at U6 pins 1/24 | **C5440143** | same part as C32/C33 | +| A-04 | R121 | 53.6k/1% (C23074) | **57.6 kΩ 1 % 0603** | **C23082** | 5.18/5.32/5.46 V | +| A-05 | new C ×2 | — | **47 µF 16 V X7R 1210** on `/MAIN5V` at U6 pins 1/24 | **C5440143** | same part as C32/C33 | | A-08 | U17 | AMS1117-3.3 (C6186) | **TLV1117LV33DCYR** (same SOT-223 pinout) | **C15578** | not C48937499 | -| A-09 | C78 | 220uF/10V MVG (C2827940) | **220 µF 16 V polymer** | **C881921** | same 6.3 × 7.7 land | -| B-02 | C130, C131 | 220uF/10V MVG (C2827940) | **220 µF 16 V polymer** | **C881921** ×2 | change together with R116/C141/C142 | -| B-02 | R116 | 14k (C22803) | **113 kΩ 1 % 0603** | **C22862** | | -| B-02 | C141 | 3.3 nF 0402 (C1536) | **6.8 nF X7R 0402** | **C1542** | | -| B-02 | C142 | 47 pF 0402 (C1567) | **56 pF C0G 0402** | **C1572** | | -| B-02 | new C ×2 | — | **22 µF 0805** on `/VBAT_MODEM` at L20.2 | **C86817** | | -| F-03 | new C ×2 | — | **22 µF 16 V 0805** at U20.2 (`/MAIN5V`) | **C86817** | 16 V valid only with A-01 | -| F-03 | new C | — | **220 µF 16 V polymer** at U20.2 | **C881921** | | -| F-51 | new U (TMP102) | — | **TMP102AIDRLR**, I²C1, ADD0 → GND (0x48), 100 nF at VDD | **C99269**, C14663 | placed between U6 and L6 | -| F-51 | new R/R/C | — | `/NTC` → 100 k → new net → PC5 (U16 pad 25); 120 k and 10 nF from that net to GND | C25803; **C25808** (120 k); C1589 | remove PC5 NC flag | -| C-02 | U21 | AP2112K-3.3 (C51118) | **TPS7A2033PDBVR** (same SOT-23-5 pinout) | **C2862740** | soft-start 239–367 µs/V | +| A-09 | C78 | 220uF/10V MVG (C2827940) | **220 µF 16 V polymer** | **C881921** | same 6.3 × 7.7 land | +| B-02 | C130, C131 | 220uF/10V MVG (C2827940) | **220 µF 16 V polymer** | **C881921** ×2 | change together with R116/C141/C142 | +| B-02 | R116 | 14k (C22803) | **113 kΩ 1 % 0603** | **C22862** | | +| B-02 | C141 | 3.3 nF 0402 (C1536) | **6.8 nF X7R 0402** | **C1542** | | +| B-02 | C142 | 47 pF 0402 (C1567) | **56 pF C0G 0402** | **C1572** | | +| B-02 | new C ×2 | — | **22 µF 0805** on `/VBAT_MODEM` at L20.2 | **C86817** | | +| F-03 | new C ×2 | — | **22 µF 16 V 0805** at U20.2 (`/MAIN5V`) | **C86817** | 16 V valid only with A-01 | +| F-03 | new C | — | **220 µF 16 V polymer** at U20.2 | **C881921** | | +| F-51 | new U (TMP102) | — | **TMP102AIDRLR**, I²C1, ADD0 → GND (0x48), 100 nF at VDD | **C99269**, C14663 | placed between U6 and L6 | +| F-51 | new R/R/C | — | `/NTC` → 100 k → new net → PC5 (U16 pad 25); 120 k and 10 nF from that net to GND | C25803; **C25808** (120 k); C1589 | remove PC5 NC flag | +| C-02 | U21 | AP2112K-3.3 (C51118) | **TPS7A2033PDBVR** (same SOT-23-5 pinout) | **C2862740** | soft-start 239–367 µs/V | | E-01 | U12.2 EN | tied to `/SYS5V` | new net **`/ETH_PWR_EN`** → U16 pad 54 (PD2); new 100 k to GND | C25803 | remove PD2 NC flag | -| E-02 | new R | — | **4.7 kΩ 0603**, `/ETH_RST` → GND at U11.37 | **C23162** | tell V5.6: R112 100 k → 4.7 k | -| D-01 | U27 (new) | — | **74LVC1G125GV,125**: 1 OE̅ = GND, 2 A = `/DOUT_4G`, 3 GND, 4 Y = new `/DOUT_4G_F9P` → U18.26, 5 VCC = `/3V3_GNSS`; 100 nF at VCC | **C12518**, C14663 | U18.26 leaves `/DOUT_4G` | -| D-01 | Rdfu1 | 22k (C88614) | **100 kΩ** | **C25803** | | +| E-02 | new R | — | **4.7 kΩ 0603**, `/ETH_RST` → GND at U11.37 | **C23162** | tell V5.6: R112 100 k → 4.7 k | +| D-01 | U27 (new) | — | **74LVC1G125GV,125**: 1 OE̅ = GND, 2 A = `/DOUT_4G`, 3 GND, 4 Y = new `/DOUT_4G_F9P` → U18.26, 5 VCC = `/3V3_GNSS`; 100 nF at VCC | **C12518**, C14663 | U18.26 leaves `/DOUT_4G` | +| D-01 | Rdfu1 | 22k (C88614) | **100 kΩ** | **C25803** | | | G-02 | new U (J9 ESD) | — | **USBLC6-2SC6**: 1/6 `/USB_DM`, 3/4 `/USB_DP`, 5 `/USB_VBUS`, 2 GND | **C7519** | | -| H-02b | R56, R57, R58, R85, R87, Rgs1 (+ R20, Ren1, Rfreq1 if U2 stays) | 100k 5 % (C103211) | **100 kΩ 1 %** | **C25803** | stock 702 limits the order to 78 boards | +| H-02b | R56, R57, R58, R85, R87, Rgs1 (+ R20, Ren1, Rfreq1 if U2 stays) | 100k 5 % (C103211) | **100 kΩ 1 %** | **C25803** | stock 702 limits the order to 78 boards | | V1-01, F-12, F-05, F-06, C-04, A-07 | — | layout-only | — | — | see §6 | ### 7.3 Minors @@ -1185,33 +1198,33 @@ To be applied only if Leo says "apply", on a copy `hbox-watchdog-v6-audit.*` fol |---|---|---|---|---| | A-11 | R56 | 100 k to GND | 100 k to `/3V3` (default charge OFF) | C25803 | | A-13 | new R + net | `/PFO_TP` = {U6.20, TP2} | `/PFO` → U16 pad 29 (PB10) + 100 k to `/3V3`; remove PB10 NC flag | C25803 | -| B-09 | R132, R133, R134 | 0R (C304185) | **22 Ω 0603** | C23345 | -| B-09 | new C | — | 100 nF 0402 at J14.C1 (`/SIM_VDD`) | C1525 | +| B-09 | R132, R133, R134 | 0R (C304185) | **22 Ω 0603** | C23345 | +| B-09 | new C | — | 100 nF 0402 at J14.C1 (`/SIM_VDD`) | C1525 | | B-10 | new R ×2 | — | 100 k `/MODEM_STATUS` → GND; 100 k `/DIN_4G` → `/3V3` | C25803 ×2 | -| B-10 | R106 | 100R (C22775) | **1 kΩ** | C14676 | +| B-10 | R106 | 100R (C22775) | **1 kΩ** | C14676 | | C-07 | new TP ×2 | — | test pads on U18.50 SAFEBOOT_N, U18.49 RESET_N | no part | -| D-02 | Y3 | 25 MHz HC-49SD (C14872) | **25 MHz 3225-4P CL 10 pF**, footprint `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm` | C2901684 (alt. C9006) | -| D-02 | C113, C114 | 15 pF (C1644) | **12 pF C0G** (keep 15 pF C1644 if C9006) | C38523 | -| D-03 | Y4 | 32.768 kHz FC-135 CL 12.5 pF (C32346) | **FC-135 CL 7 pF** | C48615 | -| D-03 | C115, C116 | 12 pF (C38523) | **6.8 pF C0G** | C1679 | -| D-05 | Rigb1 | 3.3k (C22978) | **2.2 kΩ** | C4190 | +| D-02 | Y3 | 25 MHz HC-49SD (C14872) | **25 MHz 3225-4P CL 10 pF**, footprint `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm` | C2901684 (alt. C9006) | +| D-02 | C113, C114 | 15 pF (C1644) | **12 pF C0G** (keep 15 pF C1644 if C9006) | C38523 | +| D-03 | Y4 | 32.768 kHz FC-135 CL 12.5 pF (C32346) | **FC-135 CL 7 pF** | C48615 | +| D-03 | C115, C116 | 12 pF (C38523) | **6.8 pF C0G** | C1679 | +| D-05 | Rigb1 | 3.3k (C22978) | **2.2 kΩ** | C4190 | | D-08 | new R | — | 10 k strap → GND on the board-ID pin (**pin unresolved**, see §10) | C25804 | | D-09 | new R | — | 100 k `/BASE_LS` → GND | C25803 | | D-12 | TP9 (new) | PA9 NC flag | test pad on PA9 (remove NC flag) | no part | -| E-03 | Y1 | 25 MHz HC-49SD (C14872) | **25 MHz 3225 CL 12 pF**; keep C95/C96 18 pF (C1647) | C9006 (alt.: keep Y1, C95/C96 → 33 pF C1663) | -| E-04 | C91 | 4.7 µF (C1779) | **10 nF 0603 X7R** | C1589 | -| E-04 | C90 | 10 µF (C440198) | **4.7 µF 0805** | C1779 | -| E-04 | new C ×2 | — | 100 nF at W5500 AVDD 4/8 and 11/21 | C14663 ×2 | +| E-03 | Y1 | 25 MHz HC-49SD (C14872) | **25 MHz 3225 CL 12 pF**; keep C95/C96 18 pF (C1647) | C9006 (alt.: keep Y1, C95/C96 → 33 pF C1663) | +| E-04 | C91 | 4.7 µF (C1779) | **10 nF 0603 X7R** | C1589 | +| E-04 | C90 | 10 µF (C440198) | **4.7 µF 0805** | C1779 | +| E-04 | new C ×2 | — | 100 nF at W5500 AVDD 4/8 and 11/21 | C14663 ×2 | | F-52 (option) | new U | — | TMP102 at 0x49 (ADD0 → 3V3) between U19 and U20 | C99269 | | G-03 | P11, P12 | fp `…MC_1,5_3-G-3.5_1x03_P3.50mm_Vertical` | `Connector_Phoenix_MC:PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal`; DNP per Leo | C5160226 | | G-03 | J10 | fp nickname `Connector_RJ45:…` | `Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal`; DNP per Leo | C12074 | | G-04 | JP_CUT (new) | — | `Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` across P5 (`/MAIN5V`–`/SYS5V`) | no part | -| G-08 | new D ×3 | — | PESD5V0S1BA at P6.1, P7.1, P8.1 → GND (opt. 100 Ω series on NRST, C22775) | C2827694 ×3 | +| G-08 | new D ×3 | — | PESD5V0S1BA at P6.1, P7.1, P8.1 → GND (opt. 100 Ω series on NRST, C22775) | C2827694 ×3 | | H-03 | L2, L6, L8, L20 | fp `Inductor_SMD:L_Bourns-SRU8028_8.0x8.0mm` | new `Drogheda-v6:IND-SMD_MWSA0804S` | parts unchanged | -| H-08 | C22, Y2 | value text "22uF/50V", "1.8432MHz" | "10uF/50V" (unless 22 µF was intended), "3.6864MHz"; C103/C130/C131/C78 texts are harmless or replaced by B-02/A-09 | — | +| H-08 | C22, Y2 | value text "22uF/50V", "1.8432MHz" | "10uF/50V" (unless 22 µF was intended), "3.6864MHz"; C103/C130/C131/C78 texts are harmless or replaced by B-02/A-09 | — | | J-03 | library | `unspecified` pin types in `Drogheda-v6.kicad_sym` | power_in / power_out / input / output / passive | — | | J-04 | 23 orphan NC flags, NC flags on U16.37/38 and U10.13/14, wire stubs uuid 2b755f7f…, 46f71e27…, 7c1dbfc0… | present | delete; copy the 10 missing symbols into `Drogheda-sym` and re-link | — | -| B-15 (Note) | R107, R108 | DNP 0 Ω bypass | delete or mark "never fit" | — | +| B-15 (Note) | R107, R108 | DNP 0 Ω bypass | delete or mark "never fit" | — | **Expected netlist diff** (acceptance for the apply phase): only the nets and pins named in §7.1–7.3 change; no UUID changes on untouched symbols; ERC shows no new errors, and the J-04 items disappear. @@ -1222,50 +1235,50 @@ Sources: firmware sections of the four findings files and `pinmap-v6.md` §5 (dr **8.1 Build and identity** 1. New `board_v6.h` from `pinmap-v6.md` §5. A binary must never cross between V5.6 and v6: a V5.6 build drives PC3 (RTK_STAT, an F9P push-pull output on v6) and PC1/PC2 (F9P inputs). File names carry the board (`drogheda-firmware-por-tarjeta`). *(if D-08)* read the board-ID strap with INPUT_PULLUP at boot; mismatch → outputs off, print `BOARD MISMATCH`. -2. `$PHID,<96-bit UID>,,,,` on the **modem uplink** at every connect and every 5 min, not only on Ethernet (C-08). Backend `retranslator` must map UID → H-number before v6 ships. +2. `$PHID,<96-bit UID>,,,,` on the **modem uplink** at every connect and every 5 min, not only on Ethernet (C-08). Backend `retranslator` must map UID → H-number before v6 ships. 3. `$PHLG` stays append-only; new fields at the end: `tchg`, `tcell` (F-51), `tmodem` (F-52 / AT), `tntc2`, `rtcm_bps`, `modem_status`, `vign` (D-05), `iin` only if CLPROG ever gets a pin. **8.2 Boot defaults** 4. First lines of `setup()`, before any delay or USB init, drive LOW: PC10 `MODEM_PWR_EN`, PC8 `PWRKEY`, PC11 `MODEM_RST`, PA1 `GNSS_PWR`, PB5 `BYP_CTRL`, **PA15 `ETH_RST`** (JTDI pull-up at reset), PA6 fan, PB0 panel LED; *(if E-01)* PD2 `ETH_PWR_EN`. PA8 `CHRG_EN` belongs to the governor (HIGH = charge off until it decides). 5. Keep hi-Z/analog: PA9, and PB10/PC5/PD2 unless their fixes are adopted; PC1/PC2 (F9P inputs; PC2 becomes a real antenna-short input *(if C-01)*, no MCU pull); PC12 open-drain only, never push-HIGH. -6. F9P back-feed rule (0.5.5/0.5.6 lesson): while PA1 is LOW keep PA2 INPUT no-pull, PA10 no pull (its internal pull-up is 7–14 kΩ), PC7 no pull-up, PC12 released, PA7/PC3 no pull-up. **Never hold PC10 HIGH with PA1 LOW** and never run F9P-only power cycles with the modem up, until the D-01 gate (U27) is fitted. +6. F9P back-feed rule (0.5.5/0.5.6 lesson): while PA1 is LOW keep PA2 INPUT no-pull, PA10 no pull (its internal pull-up is 7–14 kΩ), PC7 no pull-up, PC12 released, PA7/PC3 no pull-up. **Never hold PC10 HIGH with PA1 LOW** and never run F9P-only power cycles with the modem up, until the D-01 gate (U27) is fitted. **8.3 Pins and peripherals** 7. Modem: USART6 PC6 TX (via K1 NO, Mode B) / PC7 RX (always connected, AT replies + RTCM3 byte counter), 115 200 Bd. PC8 PWRKEY (HIGH = pressed via Q20), PC11 RESET (HIGH = asserted via Q21), PC9 STATUS (INPUT_PULLDOWN, poll it), PC10 buck enable. -8. GNSS: USART2 PA2/PA3 = F9P UART1 (`GNSS = Serial2`); USART1 **RX-only** on PA10 (F9P TXD2 tap, no pull; remove the V5 `RELAY(PA10, PA9)` TX); PA7 PPS on TIM3_CH2 capture or EXTI7; PC3 RTK_STAT (poll ≥ 10 Hz, or EXTI3 if blink timing is wanted, then poll PB3); PC12 RESET_N open-drain (prefer UBX-CFG-RST). +8. GNSS: USART2 PA2/PA3 = F9P UART1 (`GNSS = Serial2`); USART1 **RX-only** on PA10 (F9P TXD2 tap, no pull; remove the V5 `RELAY(PA10, PA9)` TX); PA7 PPS on TIM3_CH2 capture or EXTI7; PC3 RTK_STAT (poll ≥ 10 Hz, or EXTI3 if blink timing is wanted, then poll PB3); PC12 RESET_N open-drain (prefer UBX-CFG-RST). 9. EXTI9 → PB9 (SC7A20 INT1 at 0x18, LIS3DH-compatible registers, motion wake); poll PC9 and PB3 (D-13). Fan stays GPIO ON/OFF so TIM3 is free for PPS. -10. ADC: IN0 BAT_SENSE, IN4 5V_SENSE, IN5 IGN_SENSE (**read analog**; as-drawn ratio thresholds ON > 0.60 V ≈ 5.2 V, OFF < 0.35 V, no internal pull; ratio 0.0833 *(if D-05)*), IN9 NTC, IN14 NTC2, *(if F-51)* IN15 pack NTC on PC5 (ratio 120/220; Rntc = R55·Vntc/(VEH5V − Vntc) with VEH5V from PA4; valid only with VEH5V present). +10. ADC: IN0 BAT_SENSE, IN4 5V_SENSE, IN5 IGN_SENSE (**read analog**; as-drawn ratio thresholds ON > 0.60 V ≈ 5.2 V, OFF < 0.35 V, no internal pull; ratio 0.0833 *(if D-05)*), IN9 NTC, IN14 NTC2, *(if F-51)* IN15 pack NTC on PC5 (ratio 120/220; Rntc = R55·Vntc/(VEH5V − Vntc) with VEH5V from PA4; valid only with VEH5V present). 11. Delete: TMP102 at 0x48/0x49 as the V5 cell sensor and the PCF8574 P7 modem-reset bodge (`PCF_MODEM_RST_BIT`, `ENABLE_MODEM_RST`); *(if F-51)* re-add a TMP102 at 0x48 as the **charger** sensor (`tchg`); *(if F-52)* 0x49 near the modem. -12. `BOARD_SER_XTAL_HZ 3686400UL` (Y2 is the 3.6864 MHz part despite the "1.8432MHz" text); U10 SC16IS762 → SC16IS752 is register-compatible (H-02). If H-01 were not fixed, report `rs232=absent`. -13. *(if A-13)* PB10 EXTI10 falling = PFO (backup entry at VEH5V < 4.40 V). *(if E-01)* PD2 `ETH_PWR_EN`. +12. `BOARD_SER_XTAL_HZ 3686400UL` (Y2 is the 3.6864 MHz part despite the "1.8432MHz" text); U10 SC16IS762 → SC16IS752 is register-compatible (H-02). If H-01 were not fixed, report `rs232=absent`. +13. *(if A-13)* PB10 EXTI10 falling = PFO (backup entry at VEH5V < 4.40 V). *(if E-01)* PD2 `ETH_PWR_EN`. **8.4 Power constants and ADC** -14. `V5_PFI` 4.60 → **4.40 V** (falling; rising 4.51 V). With R121 = 57.6 k keep `CHG_RAIL_ON 5.05` / `CHG_RAIL_OFF 4.90`; if R121 stayed 53.6 k the governor could not be retuned safely (ON ≤ 4.80 V is not possible with PFI rising max 4.66 V and ADC error), so the hardware change is preferred (A-04). The v6 supply cannot fold (RS1 2.14–2.41 A < U25 4.5 A minimum limit): the governor is a safety net. -15. Compute VDDA every window from VREFINT (`VREFINT_CAL` at 0x1FFF7A2A); never assume 3.30 V, especially on battery (A-08). +14. `V5_PFI` 4.60 → **4.40 V** (falling; rising 4.51 V). With R121 = 57.6 k keep `CHG_RAIL_ON 5.05` / `CHG_RAIL_OFF 4.90`; if R121 stayed 53.6 k the governor could not be retuned safely (ON ≤ 4.80 V is not possible with PFI rising max 4.66 V and ADC error), so the hardware change is preferred (A-04). The v6 supply cannot fold (RS1 2.14–2.41 A < U25 4.5 A minimum limit): the governor is a safety net. +15. Compute VDDA every window from VREFINT (`VREFINT_CAL` at 0x1FFF7A2A); never assume 3.30 V, especially on battery (A-08). 16. Charger status decode (LTC4040 DS table p.14, per the power auditor): "pausa NTC" = CHRG low ∧ FAULT low; bad battery = CHRG high ∧ FAULT low. (The pin-map note on PB4 words it differently; the datasheet-cited decode governs.) -17. BSTOFF is hard-wired to GND, so firmware cannot switch the boost off: at `VBAT_BACKUP_MIN` go to STOP with every load off; the hardware floor is the LTC4040 BAT UVLO (2.45 V) plus the pack PCM. +17. BSTOFF is hard-wired to GND, so firmware cannot switch the boost off: at `VBAT_BACKUP_MIN` go to STOP with every load off; the hardware floor is the LTC4040 BAT UVLO (2.45 V) plus the pack PCM. **8.5 Thermal** -18. `CHG_CELL_HOT/COOL` on `tcell` (Li-ion 45/40 °C; LFP 55–60 °C) *(if F-51)*; shed charge on `tchg` > 85 °C; include the NTC in `thermalCtlTemp()` (`drogheda-fan-policy`). Fan policy `vehiclePower && ignitionOn` unchanged; with A-01 the fan supply exists exactly when `vehiclePower`. +18. `CHG_CELL_HOT/COOL` on `tcell` (Li-ion 45/40 °C; LFP 55–60 °C) *(if F-51)*; shed charge on `tchg` > 85 °C; include the NTC in `thermalCtlTemp()` (`drogheda-fan-policy`). Fan policy `vehiclePower && ignitionOn` unchanged; with A-01 the fan supply exists exactly when `vehiclePower`. 19. Modem temperature via `AT+CPMUTEMP` (confirm on the A7670SA firmware) when no TMP102 is fitted. **8.6 Backup entry and duty window (R1/R3)** -20. On backup entry (PFO EXTI or 5V_SENSE < `V5_OFF`): `ETH_PWR_EN` = 0 (or hold ETH_RST low), `BYP_CTRL` = 0 except inside the TX window, modem to **LTE-only** (`AT+CNMP=38`) to avoid 2 A GSM bursts (2.8 A peaks exceed the 2.5 A backup limit). -21. Window power-up: `PWR_CTRL` HIGH → F9P settled (≥ 1–4 s) → BAT_SENSE ≥ 3.4 V (refuse a modem cold start below ≈ 3.4 V) → W5500 off → `MODEM_PWR_EN` HIGH → wait ≥ 100 ms (2 ms soft-start + bank charge) → PWRKEY asserted 100–500 ms (≥ 50 ms) → wait STATUS HIGH (typ 7–11.2 s, timeout 20 s) or AT `RDY` → `BYP_CTRL` HIGH (Mode B) → AT sync at 115 200 → `AT+CNMP=38` on battery → attach / NTRIP / report → ≥ 2 `$PHLG` with `pwr=BATT` → power-down. -22. Window power-down: `AT+CPOF` (or PWRKEY ≥ 2.5 s) → STATUS LOW (≤ ≈ 2–3 s) → `MODEM_PWR_EN` LOW → hold ≥ 2 s → `BYP_CTRL` LOW → `PWR_CTRL` LOW → MCU STOP with the LSE RTC (`LSEMOD` high-drive before `LSEON`, LSI fallback, D-03). +20. On backup entry (PFO EXTI or 5V_SENSE < `V5_OFF`): `ETH_PWR_EN` = 0 (or hold ETH_RST low), `BYP_CTRL` = 0 except inside the TX window, modem to **LTE-only** (`AT+CNMP=38`) to avoid 2 A GSM bursts (2.8 A peaks exceed the 2.5 A backup limit). +21. Window power-up: `PWR_CTRL` HIGH → F9P settled (≥ 1–4 s) → BAT_SENSE ≥ 3.4 V (refuse a modem cold start below ≈ 3.4 V) → W5500 off → `MODEM_PWR_EN` HIGH → wait ≥ 100 ms (2 ms soft-start + bank charge) → PWRKEY asserted 100–500 ms (≥ 50 ms) → wait STATUS HIGH (typ 7–11.2 s, timeout 20 s) or AT `RDY` → `BYP_CTRL` HIGH (Mode B) → AT sync at 115 200 → `AT+CNMP=38` on battery → attach / NTRIP / report → ≥ 2 `$PHLG` with `pwr=BATT` → power-down. +22. Window power-down: `AT+CPOF` (or PWRKEY ≥ 2.5 s) → STATUS LOW (≤ ≈ 2–3 s) → `MODEM_PWR_EN` LOW → hold ≥ 2 s → `BYP_CTRL` LOW → `PWR_CTRL` LOW → MCU STOP with the LSE RTC (`LSEMOD` high-drive before `LSEON`, LSI fallback, D-03). 23. Any MCU reset power-cycles the modem (R113) and the F9P (PA1 floats): recovery logic must assume a cold modem after every reset and re-run the full sequence. **8.7 Modem recovery and watch (R2)** -24. Ladder (vehicle or battery, modem only): AT timeout → RESET asserted ≈ 2.5 s → PWRKEY off/on → HARD_CYCLE (EN LOW ≥ 2 s; VBAT decays to 47 mV) → 3 strikes → log `MODEM_DARK`, retry next window. Never cycle `PWR_CTRL` for a link problem; no stack cycle on battery. +24. Ladder (vehicle or battery, modem only): AT timeout → RESET asserted ≈ 2.5 s → PWRKEY off/on → HARD_CYCLE (EN LOW ≥ 2 s; VBAT decays to 47 mV) → 3 strikes → log `MODEM_DARK`, retry next window. Never cycle `PWR_CTRL` for a link problem; no stack cycle on battery. 25. Replace the V5 `sag5` heuristic with STATUS + AT responses + RTCM byte count on PC7; VBAT via `AT+CBC`. -26. K1 energised only while the modem is on (150 mW coil). +26. K1 energised only while the modem is on (150 mW coil). **8.8 F9P configuration and NTRIP transport** 27. BBR + flash: UART2 baud = modem baud (115 200), UART2 in-protocol RTCM3 only (UBX/NMEA/SPARTN off); UART2 out NMEA GGA only if the K1-NC path is still wanted; UART1 NMEA/UBX for the MCU; *(if C-01)* `CFG-HW-ANT_CFG_VOLTCTRL` / `SHORTDET` = 1. u-center passthrough follows the CDC line coding → USART2 baud. 28. Caster socket transparent (`AT+CIPMODE=1`); if multi-socket is needed for `$PHLG`, disable RTCM on UART2 and forward re-assembled RTCM from the MCU on USART2 TX → F9P UART1. RTCM age from GGA field 13 plus an RTCM3 frame walker on PC7. **8.9 Ethernet** -29. `ETH_PWR_EN` LOW on battery and at boot until needed *(if E-01)*; RSTn LOW ≥ 500 µs before release; SPI2 pins LOW or Hi-Z while 3V3_ETH is off. +29. `ETH_PWR_EN` LOW on battery and at boot until needed *(if E-01)*; RSTn LOW ≥ 500 µs before release; SPI2 pins LOW or Hi-Z while 3V3_ETH is off. --- @@ -1274,8 +1287,8 @@ Sources: firmware sections of the four findings files and `pinmap-v6.md` §5 (dr ### Ready to order? **NO.** **What blocks the order (all must be closed):** -1. The 10 Blockers: **A-01** (unfused 24 V branch, D21 30 V), **F-02** (raw ignition on In2 at 0.221 mm from VEH5V), **F-01** (netclasses/DRC blind to 24 V spacing), **H-04** (U25 `LCSC Part` = AP64350), **C-01** (unlimited GNSS antenna bias), **B-03** (unidirectional LTE ESD), **A-02** (LTC4040 copper/EP/placement), **A-03** (R50 825 Ω), **H-01** (U15 on the wrong land), **H-02** (U10/R53 unobtainable). -2. **G-01:** Leo's backplate answer. If the V5.5 standoffs are reused, MH4 at (193.2, 90.3) and the heatsink-clamp pair must be restored (Blocker); if the backplate is re-drilled, publish the 130 × 90 mm pattern (documentation). +1. The 10 Blockers: **A-01** (unfused 24 V branch, D21 30 V), **F-02** (raw ignition on In2 at 0.221 mm from VEH5V), **F-01** (netclasses/DRC blind to 24 V spacing), **H-04** (U25 `LCSC Part` = AP64350), **C-01** (unlimited GNSS antenna bias), **B-03** (unidirectional LTE ESD), **A-02** (LTC4040 copper/EP/placement), **A-03** (R50 825 Ω), **H-01** (U15 on the wrong land), **H-02** (U10/R53 unobtainable). +2. **G-01:** Leo's backplate answer. If the V5.5 standoffs are reused, MH4 at (193.2, 90.3) and the heatsink-clamp pair must be restored (Blocker); if the backplate is re-drilled, publish the 130 × 90 mm pattern (documentation). 3. **DRC gate:** refill + DRC with the F-01 rules shows 0 clearance errors (the 6 inner `/IGN_IN` spots and 15 outer spots gone). 4. BOM/CPL generated after the H-04 field deletion (or from the schematic with kicad-cli); stock re-checked on order day (H-02, H-02b); J14 pre-ordered; U18/U19 pre-ordered for quantities ≳ 100. @@ -1285,9 +1298,9 @@ Sources: firmware sections of the four findings files and `pinmap-v6.md` §5 (dr **Impact on V5.6 (found in passing):** R112 on `ETH_RST` must be 4.7 k (C23162), not 100 k (E-02); the V5.x schematics still carry the stale SOIC-16W footprint field for U15, so fix it before any Update-PCB on V5.6 (H-01). -**Bench validation before accepting the v6 boards** (from the findings): thermal camera on U6/L6 at 1.4 A charge and 2.3 A backup, 1 h each (A-02); battery-only cold start at VBAT 3.5 V with MAIN5V/VIN(U20) scope and a `/BAT_PLUS` current probe (A-05, ECO §I-1); 0.1 → 2 A load step on VBAT_MODEM, droop ≤ 150 mV (B-02); `/3V3_GNSS` rise 100–1000 µs/V (C-02); antenna short test (C-01); `/3V3_GNSS` < 0.3 V with PA1 LOW and the modem on (D-01); G3 desense: modem TX power vs F9P C/N0 (F-06/F-12); D34/U25 IR at full load (A-06 → F-03); frequency counter on Y1, target ±10 ppm (E-03); H0008 follow-ups: clamp meter on the pack lead and U6/L6 IR during charge (A-02/A-03). +**Bench validation before accepting the v6 boards** (from the findings): thermal camera on U6/L6 at 1.4 A charge and 2.3 A backup, 1 h each (A-02); battery-only cold start at VBAT 3.5 V with MAIN5V/VIN(U20) scope and a `/BAT_PLUS` current probe (A-05, ECO §I-1); 0.1 → 2 A load step on VBAT_MODEM, droop ≤ 150 mV (B-02); `/3V3_GNSS` rise 100–1000 µs/V (C-02); antenna short test (C-01); `/3V3_GNSS` < 0.3 V with PA1 LOW and the modem on (D-01); G3 desense: modem TX power vs F9P C/N0 (F-06/F-12); D34/U25 IR at full load (A-06 → F-03); frequency counter on Y1, target ±10 ppm (E-03); H0008 follow-ups: clamp meter on the pack lead and U6/L6 IR during charge (A-02/A-03). -**Cost note:** v6 BOM ≈ **$131.98 per board at qty 20 / $124.40 at qty 100** (DB snapshot, parts only, excluding PCB, assembly and THT fees); **+$91.30 / +$90.14 vs V5.6** ($40.69 / $33.83), 94 % of it ZED-F9P ($80.11) + A7670SA ($6.07), which replace the external simpleRTK2B and 4G NTRIP Master, so the system cost almost certainly drops (Leo's unit prices needed). JLC setup: 79 Extended parts × $3 = $237 per order ($11.85/board at 20, $2.37 at 100); four cheap consolidations save 4 fees. The fixes move cost both ways: U10 → SC16IS752 saves $3.52, the U2 fan-buck block goes DNP (MP1584 alone $2.21 at 100), while the new and swapped parts (TPS2552, TMP102, 74LVC1G125, USBLC6-2SC6, four 220 µF polymer caps (three swaps, one new), 2 × 47 µF, 4 × 22 µF, TPS7A2033, TLV1117LV) are not priced in the findings: re-run the BOM costing after the apply phase. +**Cost note:** v6 BOM ≈ **$131.98 per board at qty 20 / $124.40 at qty 100** (DB snapshot, parts only, excluding PCB, assembly and THT fees); **+$91.30 / +$90.14 vs V5.6** ($40.69 / $33.83), 94 % of it ZED-F9P ($80.11) + A7670SA ($6.07), which replace the external simpleRTK2B and 4G NTRIP Master, so the system cost almost certainly drops (Leo's unit prices needed). JLC setup: 79 Extended parts × $3 = $237 per order ($11.85/board at 20, $2.37 at 100); four cheap consolidations save 4 fees. The fixes move cost both ways: U10 → SC16IS752 saves $3.52, the U2 fan-buck block goes DNP (MP1584 alone $2.21 at 100), while the new and swapped parts (TPS2552, TMP102, 74LVC1G125, USBLC6-2SC6, four 220 µF polymer caps (three swaps, one new), 2 × 47 µF, 4 × 22 µF, TPS7A2033, TLV1117LV) are not priced in the findings: re-run the BOM costing after the apply phase. --- @@ -1296,23 +1309,23 @@ Sources: firmware sections of the four findings files and `pinmap-v6.md` §5 (dr | # | Question | Affects | Assumption used in this audit | |---|---|---|---| | 1 | Backplate / enclosure hole pattern: are the V5.5 standoffs (incl. (193.2, 90.3)) reused? Is the modem heatsink clamp (MH11 + partner, thermal gate T1) still planned? | G-01 (Blocker or documentation), L-40 | Unknown → G-01 kept as conditional Blocker | -| 2 | Decision on the modem supply topology: U20 from MAIN5V only (D20/D21 removed), fan from VEH5V (U2 DNP), F2 3 A ahead of D10 | A-01, V1-01, A-04/A-05/A-07/F-03 prerequisites | Adopted as the verified single topology | -| 3 | Fleet supply systems: 24 V only, or 12 V machines too? Alternator load-dump suppression present? Unsuppressed ISO 7637/16750 transients on the ignition wire (terminal tractors, RTGs)? | F2 3 A vs 4 A, A-16 (U25 UVLO), A-19, D-05, F-02 | 9–36 V (T9), 24 V systems present, transients possible | +| 2 | Decision on the modem supply topology: U20 from MAIN5V only (D20/D21 removed), fan from VEH5V (U2 DNP), F2 3 A ahead of D10 | A-01, V1-01, A-04/A-05/A-07/F-03 prerequisites | Adopted as the verified single topology | +| 3 | Fleet supply systems: 24 V only, or 12 V machines too? Alternator load-dump suppression present? Unsuppressed ISO 7637/16750 transients on the ignition wire (terminal tractors, RTGs)? | F2 3 A vs 4 A, A-16 (U25 UVLO), A-19, D-05, F-02 | 9–36 V (T9), 24 V systems present, transients possible | | 4 | Is GSM/2G fallback required **on battery**, or is LTE-only acceptable? | A-05, B-16, firmware §8 | LTE-only on battery | -| 5 | Fab stackup and copper: JLC04161H-7628 with impedance control, ENIG, and 1 oz inner copper? | F-06, A-07, J-02, L-1 | JLC04161H-7628, 0.5 oz inner by default | +| 5 | Fab stackup and copper: JLC04161H-7628 with impedance control, ENIG, and 1 oz inner copper? | F-06, A-07, J-02, L-1 | JLC04161H-7628, 0.5 oz inner by default | | 6 | Order quantity (20 vs 100) | H-02b (C103211, U18, U19 limits), setup cost per board | Both computed | | 7 | BOM tool for the JLC order: Fabrication Toolkit (board fields) or kicad-cli (schematic fields)? | H-04 (Blocker in either case until the field is deleted) | Fabrication Toolkit (per the 25-Sep pre-fab audit) | | 8 | J10 (Ethernet) and P11/P12 (RS-485/RS-232): JLC-assembled, hand-fitted THT, or not fitted on v6? Ethernet on the prototypes? | G-03, E-01, H-01 relevance, U11/U12/Y1 population | Populated | | 9 | Allocation of PD2: `ETH_PWR_EN` (E-01, verify_1) or board-ID strap (D-08)? If E-01 keeps PD2, is PA9 given to the board ID (losing D-12's debug TX pad)? | E-01, D-08, D-12 | PD2 = ETH_PWR_EN; board-ID pin open | -| 10 | Is "temperature sensor ≤ 10 mm of U6" binding for R4? (would promote F-51 to Blocker) | F-51 | No (Major) | -| 11 | R50: 1.43 kΩ (≥ 1.3 A at every corner) or 1.5 kΩ (V5.6 commonality, 1.254 A minimum)? | A-03 | 1.43 kΩ | +| 10 | Is "temperature sensor ≤ 10 mm of U6" binding for R4? (would promote F-51 to Blocker) | F-51 | No (Major) | +| 11 | R50: 1.43 kΩ (≥ 1.3 A at every corner) or 1.5 kΩ (V5.6 commonality, 1.254 A minimum)? | A-03 | 1.43 kΩ | | 12 | LTE antenna ESD: fit PESD0402-240 (C1975527) or leave D28 DNP? | B-03 | Either; needs the 0402 land | -| 13 | Pack details: capacity (Ah), PCM cut-off, NTC β (B3380 vs B3950), chemistry decision D1 (LFP-HT + JP2 2-3 + RNTB 5.6 k, or Li-ion) | A-02, A-03, F-51 thresholds, G-07 | ≈ 11.6–12 Ah Li-ion, RNTB 10 k | -| 14 | Fan part and current | A-01 (U25 load), J-02 | 5 V, 2-wire, 0.2–0.3 A | +| 13 | Pack details: capacity (Ah), PCM cut-off, NTC β (B3380 vs B3950), chemistry decision D1 (LFP-HT + JP2 2-3 + RNTB 5.6 k, or Li-ion) | A-02, A-03, F-51 thresholds, G-07 | ≈ 11.6–12 Ah Li-ion, RNTB 10 k | +| 14 | Fan part and current | A-01 (U25 load), J-02 | 5 V, 2-wire, 0.2–0.3 A | | 15 | Must Ethernet work on battery? | E-01 | No (gated off on battery) | -| 16 | Enclosure internal temperature at 45 °C ambient | A-09, B-02 (electrolytic life), H-07/D-02 (−20…+70 °C crystals), U6/D34 thermals | 60–65 °C local near the regulators | +| 16 | Enclosure internal temperature at 45 °C ambient | A-09, B-02 (electrolytic life), H-07/D-02 (−20…+70 °C crystals), U6/D34 thermals | 60–65 °C local near the regulators | | 17 | H0008 bench data: clamp-meter charge current and U6/L6 temperature | A-02/A-03 causality | Not yet measured | -| 18 | GNSS antenna model: bias voltage range and current | C-01 (75 mA limit) | 3.0–3.3 V, ≤ 30 mA | +| 18 | GNSS antenna model: bias voltage range and current | C-01 (75 mA limit) | 3.0–3.3 V, ≤ 30 mA | | 19 | Will technicians use J9 (modem USB) in the field? | G-02 | Yes, occasionally | | 20 | Are field harness cables labelled by P-number (V5 names)? | G-05 (P6 FAN / P6 RESET-EXT collision) | Unknown | | 21 | Low-power plan: STOP + RTC (LSE), or duty cycle with the MCU running? | D-03 severity | STOP + LSE | @@ -1330,7 +1343,7 @@ KiCad 10.0.4 ERC via kicad-cli: **166 violations = 0 errors + 166 warnings** (sa | Category | Count | Source | Classification (`ercdrc_classified.csv`) | Owner finding | |---|---|---|---|---| | pin_to_pin | 104 | model (count = KiCad) | pre-existing-benign | J-03 | -| no_connect_dangling (orphan NC flags at x = 453.898 / 484.378 mm) | 23 | KiCad exact | needs-fix-cosmetic | J-04 | +| no_connect_dangling (orphan NC flags at x = 453.898 / 484.378 mm) | 23 | KiCad exact | needs-fix-cosmetic | J-04 | | lib_symbol_mismatch | 22 | KiCad exact | pre-existing-benign | J-04 (leave) | | lib_symbol_issues (Q_*MOS_G?S ×7, D_Zener_ANK ×2, PCF8574) | 10 | KiCad exact | needs-fix-cosmetic | J-04 | | footprint_link_issues (P11, P12 Vertical footprint not in library; J10 `Connector_RJ45` nickname) | 3 | KiCad exact | **real** | G-03 | @@ -1354,154 +1367,178 @@ KiCad DRC (swig backend, KiCad 10, stored fills) on `hbox-watchdog-v6.kicad_pcb` | silk_edge_clearance (P1 outline) | 1 | needs-fix-cosmetic | F-18 | | **Total** | **283** | real 59 (63 verified) · benign 206 · cosmetic 18 | | -`track_width` per net (count; widths; verdict per J-02 as verified): `/3V3_ETH` 54 (0.25–0.5 mm) benign · `/MAIN5V` 21 (0.3/0.5) **real** · `/VEH5V` 15 (0.25–0.8, incl. In1) **real** · `/5V_FAN` 14 (0.5) benign · `/VIN_SW` 10 (0.25–0.8, incl. In2) **real** · `/SW_5V` 9 benign · `/VIN_MODEM` 9 (0.3/0.5) neck only (0.1 mm under capacity) · `/SW_FAN` 8 benign · `/VBAT_MODEM` 7 (0.25/0.5) **real** · `/FAN_RET` 7 benign · `/SW_IN` 7 benign · `/SYS5V` 6 benign · `/SW_BAT` 6 (0.25/0.3/0.5) **real** · `/VIN_PROT` 5 benign (keep 0.8 mm rule) · `/BAT_PLUS` 4 (0.25/0.5) **real** · `/VIN_FUSED` 1 benign. +`track_width` per net (count; widths; verdict per J-02 as verified): `/3V3_ETH` 54 (0.25–0.5 mm) benign · `/MAIN5V` 21 (0.3/0.5) **real** · `/VEH5V` 15 (0.25–0.8, incl. In1) **real** · `/5V_FAN` 14 (0.5) benign · `/VIN_SW` 10 (0.25–0.8, incl. In2) **real** · `/SW_5V` 9 benign · `/VIN_MODEM` 9 (0.3/0.5) neck only (0.1 mm under capacity) · `/SW_FAN` 8 benign · `/VBAT_MODEM` 7 (0.25/0.5) **real** · `/FAN_RET` 7 benign · `/SW_IN` 7 benign · `/SYS5V` 6 benign · `/SW_BAT` 6 (0.25/0.3/0.5) **real** · `/VIN_PROT` 5 benign (keep 0.8 mm rule) · `/BAT_PLUS` 4 (0.25/0.5) **real** · `/VIN_FUSED` 1 benign. -**Rule-set caveat (F-01):** these 0 errors come from a 0.15 mm catch-all rule that overrides every netclass. With the corrected rules: 6 inner-layer errors (`/IGN_IN`), 15 outer-layer errors at 0.3 mm, ≈ 178 zone proximities that re-pour on refill. +**Rule-set caveat (F-01):** these 0 errors come from a 0.15 mm catch-all rule that overrides every netclass. With the corrected rules: 6 inner-layer errors (`/IGN_IN`), 15 outer-layer errors at 0.3 mm, ≈ 178 zone proximities that re-pour on refill. -### Appendix C — Evidence file index +## Historial de revisiones -Mac: `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/` (KiCad exports) and `…/evidence/pack/` (tree below). Container: `/home/claude/v6audit/`. +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-28 | Auditoría completa (inglés) con resumen ejecutivo en español. | +| 1.1 | 2026-09-29 | Resumen en español al frente, índice del cuerpo, hashes / índice de evidencia / mapa de IDs al anexo de trazabilidad. Sin cambios técnicos. | -| Path | Content | -|---|---| -| `INDEX.md`, `evidence/MANIFEST.md`, `evidence/_verification.md` | map and gotchas; hashes and provenance; self-checks (IPC-356 vs parser, counts, 64-pin MCU) | -| `evidence/netlists/*.xml` | kicad-cli netlists: v6, V5.6 (ECO copy), V5.5 as-fabbed, v5 current (stale) | -| `evidence/components.csv`, `nets.json`, `ref_pins.json` | 328 symbols with fields; net → pins; ref → pin → net | -| `evidence/mcu_pins.csv`, `evidence/ic_pins_.csv` | U16 64/64 pins; per-IC pin tables (U19, U18, U11, U6, U25, U20, U2, U12, U17, U21, U23, U24, U10, U13, U14, U15, U26, U3, U22) | -| `evidence/erc_summary.md`, `erc_full.json/.txt`, `erc/kicad_run_*.txt` | ERC (Appendix A) | -| `evidence/drc_summary.md`, `drc_full.rpt/.json`, `drc_items.csv` | DRC (Appendix B) | -| `evidence/bom.csv`, `bom_ungrouped.csv`, `cpl.csv`, `v6-pcb.ipc356` | kicad-cli BOM (correct LCSC fields), position file, IPC-D-356 | -| `evidence/pcb_footprints.csv`, `pcb_pads.csv`, `pcb_tracks.csv`, `vias.csv`, `zones.csv`, `net_routing_summary.csv` | parsed board geometry (1999 segments, 210 vias, 5 zones), per-net routing and resolved netclass | -| `evidence/stackup.md`, `clearance_24v.md/.csv`, `outline_and_holes.md`, `sch_pcb_sync.md` | stackup/rules/netclass resolution; 24 V clearance sweep; outline and holes; schematic↔PCB sync | -| `evidence/diff_v56_v6.md`, `diff_v5_v56.md` | UUID-matched semantic diffs with focus table | -| `evidence/firmware_pins.md/.csv`, `firmware_constants.csv` | every `PIN_*` in V5/V4 firmware vs the v6 net on the same pin; 84 constants | -| `evidence/v6-sch.pdf`, `v6-pcb-layers.pdf`, `svg/*.svg`, `mcp/*.json` | schematic PDF; per-layer plots; verbatim MCP results (courtyards, zones, rules) | -| `findings/A_power.md`, `BCE_modem_gnss_eth.md`, `DG_mcu_connectors.md`, `FHJ_layout_bom_ercdrc.md` | block auditor findings | -| `findings/verify_1.md`, `verify_2.md` | independent verification (power/RF; layout/BOM/MCU) | -| `findings/pinmap-v6.md`, `bom_check.csv`, `ercdrc_classified.csv` | auditor pin map; 152-line BOM check; 449 classified ERC/DRC items | -| `work//`, `work/verifier1/`, `work/verifier2/` | auditor and verifier scripts, renders (`in1_full.png`, `rf_lte.png`, `rf_gnss.png`, `u20.png`, `u25.png`, `fcu_gnd_pieces.png`), `hv24_violations_corrected_rule.csv`, `critical_crossings.csv` | -| `scripts/` | shared parsers (`kisexp.py` sexpdata helpers, `parse_pcb.py`, `parse_netlist.py`, `clearance_24v.py`, …) | +??? note "Anexo técnico — trazabilidad" + **Hashes del snapshot** (idénticos al inicio y al final de la recolección de evidencia, 20:22–20:58 UTC): -### Appendix D — ID → working-file map (all 117 IDs) + | File | sha256 | mtime (UTC) | + |---|---|---| + | `hbox-watchdog-v6.kicad_sch` | `ecee9fed851f02e74074340bf8361bced7c385b2502b19c368861b9851c2f04a` | 2026-09-25 20:27:58 | + | `hbox-watchdog-v6.kicad_pcb` | `6ddec80d1c15f79e69dff6c1a850b28345a5d826389f79cee8c61998240b36bf` | 2026-09-28 17:36:06 | + | `hbox-watchdog-v6.kicad_pro` | `25c57f3936b96a4e31cb5947668c172d318189258d6a5d2fa34d230df8958028` | 2026-09-28 20:16:16 | + | `hbox-watchdog-v6.kicad_dru` | `47538e6cfadc0c53421ff59dadabc0e7f0ad5f11d9e2250618728788080aca1a` | 2026-09-25 18:57:05 | -"Final" = severity after verification and merges; "—" = absorbed into the primary named in "State". v1 = `verify_1.md`, v2 = `verify_2.md`. + **Proceso de auditoría (del §1 original):** -| ID | Working file | Auditor severity | Final | State | Report § | Verification | -|---|---|---|---|---|---|---| -| A-01 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified-with-correction (v1) | -| A-02 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified (v1) | -| A-03 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified (v1) | -| A-04 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | -| A-05 | `A_power.md` | Major | Major | primary | §2 4-A | verified-with-correction (v1) | -| A-06 | `A_power.md` | Major | — | absorbed → F-03 (loops), F-12 (EP vias), A-01 (U2 row) | §2 4-F | verified (v1, v2) | -| A-07 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | -| A-08 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | -| A-09 | `A_power.md` | Major | Major | primary (C78); C130/C131 → B-02 | §2 4-A | verified (v1) | -| F-51 | `A_power.md` | Major | Major | primary | §2 4-F | verified (v1) | -| A-10 | `A_power.md` | Minor | Minor | primary | §2 4-A | not independently verified | -| A-11 | `A_power.md` | Minor | Minor | primary | §2 4-A | not independently verified | -| A-12 | `A_power.md` | Minor | — | absorbed → D-09 | §2 4-D | not independently verified | -| A-13 | `A_power.md` | Minor | Minor | primary (absorbs D-10) | §2 4-A | not independently verified; pin per v1 (h) | -| A-14 | `A_power.md` | Minor | Minor | primary (absorbs F-10; In1 part → A-02) | §2 4-A | not independently verified | -| A-15 | `A_power.md` | Minor | — | absorbed → H-04 | §2 4-H | verified via H-04 (v2) | -| F-52 | `A_power.md` | Minor | Minor | primary | §2 4-F | not independently verified | -| A-16 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | -| A-17 | `A_power.md` | Note | — | absorbed → B-02 | §2 4-B | verified via B-02, conflict (c) (v1) | -| A-18 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | -| A-19 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | -| A-20 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | -| F-53 | `A_power.md` | Note | — | absorbed → A-01 | §2 4-A | verified via A-01 merge (v1) | -| B-01 | `BCE_modem_gnss_eth.md` | Blocker | — | absorbed → A-01 | §2 4-A | verified (v1) | -| B-02 | `BCE_modem_gnss_eth.md` | Blocker | Major | primary (absorbs A-09 C130/C131, A-17) | §2 4-B | verified, severity Blocker → Major (v1) | -| B-03 | `BCE_modem_gnss_eth.md` | Blocker | Blocker | primary | §2 4-B | verified-with-correction (v1) | -| B-04 | `BCE_modem_gnss_eth.md` | Blocker | — | absorbed → F-12 | §2 4-F | verified, severity Blocker → Major (v1, v2) | -| C-01 | `BCE_modem_gnss_eth.md` | Blocker | Blocker | primary (absorbs D-07) | §2 4-C | verified (v1) | -| B-05 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-06 | §2 4-F | verified (v1) | -| B-06 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-03 | §2 4-F | verified (v1) | -| B-07 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → G-02 (ESD); routing → F-17 | §2 4-G | verified (v1) | -| C-02 | `BCE_modem_gnss_eth.md` | Major | Major | primary | §2 4-C | verified (v1) | -| C-03 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-12 | §2 4-F | verified-with-correction (v1) | -| C-04 | `BCE_modem_gnss_eth.md` | Major | Major | primary | §2 4-C | verified (v1) | -| E-01 | `BCE_modem_gnss_eth.md` | Major | Major | primary (absorbs A-05 fix 1) | §2 4-E | verified (v1) | -| E-02 | `BCE_modem_gnss_eth.md` | Major | Major | primary (absorbs D-04); Minor once E-01 is in | §2 4-E | verified-with-correction (v1) | -| E-03 | `BCE_modem_gnss_eth.md` | Major | Minor | primary (absorbs H-07, F-11 Y1) | §2 4-E | verified, severity Major → Minor (v1) | -| B-08 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-B | not independently verified | -| B-09 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-B | not independently verified | -| B-10 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary (absorbs D-14) | §2 4-B | not independently verified | -| B-11 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → J-04 | §2 4-J | not independently verified | -| C-05 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → F-06 | §2 4-F | verified via F-06 (v2) | -| C-06 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → D-01 | §2 4-D | verified via D-01 (v2) | -| C-07 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-C | not independently verified | -| E-04 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-E | not independently verified | -| E-05 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → G-03 | §2 4-G | not independently verified | -| E-06 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-E | not independently verified | -| B-12 | `BCE_modem_gnss_eth.md` | Note | — | absorbed → F-01 (netclasses), F-06 (stackup) | §2 4-F | verified via merges (v1, v2) | -| B-13 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | -| B-14 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | -| B-15 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | -| B-16 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | -| C-08 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-C | not independently verified | -| C-09 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-C | not independently verified | -| E-07 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-E | not independently verified | -| D-01 | `DG_mcu_connectors.md` | Major | Major | primary (absorbs C-06) | §2 4-D | verified-with-correction (v2) | -| D-06 | `DG_mcu_connectors.md` | Major | — | absorbed → F-02 (Blocker) | §2 4-F | verified, severity Major → Blocker (v2) | -| G-01 | `DG_mcu_connectors.md` | Major | Blocker (conditional) | primary | §2 4-G | verified-with-correction (v2) | -| G-02 | `DG_mcu_connectors.md` | Major | Major | primary (absorbs B-07 ESD, F-14 J9) | §2 4-G | verified (v1, v2) | -| D-02 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs F-11 Y3) | §2 4-D | verified (v2) | -| D-03 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | -| D-04 | `DG_mcu_connectors.md` | Minor | — | absorbed → E-02 (alternative rejected) | §2 4-E | verified via E-02 (v1) | -| D-05 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | -| D-07 | `DG_mcu_connectors.md` | Minor | — | absorbed → C-01 | §2 4-C | verified via C-01 (v1) | -| D-08 | `DG_mcu_connectors.md` | Minor | Minor | primary (pin unresolved) | §2 4-D | not independently verified | -| D-09 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs A-12) | §2 4-D | not independently verified | -| D-10 | `DG_mcu_connectors.md` | Minor | — | absorbed → A-13 (CLPROG part dropped) | §2 4-A | not independently verified; pin per v1 (h) | -| D-11 | `DG_mcu_connectors.md` | Minor | — | absorbed → J-04 | §2 4-J | not independently verified | -| D-12 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | -| G-03 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs E-05, H-06) | §2 4-G | not independently verified | -| G-04 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | -| G-05 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | -| G-08 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | -| D-13 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-D | not independently verified | -| D-14 | `DG_mcu_connectors.md` | Note | — | absorbed → B-10 | §2 4-B | not independently verified | -| D-15 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-D | not independently verified | -| D-16 | `DG_mcu_connectors.md` | Note | — | absorbed → H-08 | §2 4-H | not independently verified | -| G-06 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-G | not independently verified | -| G-07 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-G | not independently verified | -| F-01 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (absorbs J-01, F-15, B-12 netclass) | §2 4-F | verified-with-correction (v2) | -| F-02 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (absorbs D-06, F-16) | §2 4-F | verified (v2) | -| F-03 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs A-06 loops, B-06, F-07, F-09) | §2 4-F | verified (v1, v2) | -| F-04 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-12 | §2 4-F | verified (v2) | -| F-05 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary | §2 4-F | verified, fix scope corrected (v2) | -| F-06 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs B-05, C-05, B-12 stackup) | §2 4-F | verified-with-correction (v1, v2) | -| F-07 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-03 | §2 4-F | verified (v2) | -| F-08 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → A-01 (moot with U2 DNP) | §2 4-A | verified (v2) | -| F-09 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-03 | §2 4-F | verified-with-correction (v2) | -| F-10 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → A-14 | §2 4-A | not independently verified | -| F-11 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → E-03 (Y1), D-02 (Y3) | §2 4-E / 4-D | verified via E-03 (v1) / D-02 (v2) | -| F-12 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs F-13, F-04, B-04, C-03, A-06 vias) | §2 4-F | verified, target corrected to ≥ 400 (v1, v2) | -| F-13 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-12 (U6 EP → A-02) | §2 4-F | verified-with-correction (v2) | -| F-14 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (J9 part → G-02) | §2 4-F | not independently verified | -| F-15 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → F-01 | §2 4-F | verified via F-01 (v2) | -| F-16 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → F-02 | §2 4-F | verified via F-02 (v2) | -| F-17 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-F | not independently verified | -| F-18 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-F | not independently verified | -| F-19 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | -| F-20 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | -| F-21 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | -| H-01 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary | §2 4-H | verified-with-correction (v2) | -| H-02 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (U10 + R53 only) | §2 4-H | verified-with-correction (v2) | -| H-03 | `FHJ_layout_bom_ercdrc.md` | Major | Minor | primary | §2 4-H | verified, severity Major → Minor (v2) | -| H-04 | `FHJ_layout_bom_ercdrc.md` | Major | Blocker | primary (absorbs A-15) | §2 4-H | verified, severity Major → Blocker (v2) | -| H-05 | `FHJ_layout_bom_ercdrc.md` | Note | — | absorbed → A-01 | §2 4-A | verified via A-01 (v1) | -| H-06 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → G-03 | §2 4-G | not independently verified | -| H-07 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → E-03 | §2 4-E | verified via E-03 (v1) | -| H-08 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (absorbs D-16) | §2 4-H | not independently verified | -| H-09 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-H | not independently verified | -| H-10 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-H | not independently verified | -| J-01 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-01 | §2 4-F | verified (v2) | -| J-02 | `FHJ_layout_bom_ercdrc.md` | Major | Minor | primary, residual (copper → A-02/A-07/B-08) | §2 4-J | verified-with-correction (v2) | -| J-03 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-J | not independently verified | -| J-04 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (absorbs B-11, D-11) | §2 4-J | not independently verified | -| J-05 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-J | not independently verified | -| V1-01 | `verify_1.md` ("Anything else" #1) | — (new) | Major | primary | §2 4-A | raised by verify_1, not cross-checked | -| H-02b | `verify_2.md` (H-02 split) | (part of H-02, Blocker) | Major | primary | §2 4-H | verified (v2) | + - **Evidence pack** (read-only, built 2026-09-28 20:22–21:00 UTC): on the Mac at `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/` (KiCad exports) with the parsed tree under `evidence/pack/`; container copy `/home/claude/v6audit/`. It holds kicad-cli netlists (v6, V5.6, V5.5 as-fabbed), ERC (166 items) and DRC (283 items) outputs, BOM, CPL, IPC-D-356, per-layer PDF/SVG plots, pad/track/via/zone tables parsed from the board file, 64-pin MCU table, per-IC pin tables, 24 V clearance sweep, schematic↔PCB sync report and the firmware pin/constant tables. Self-checks: parsed pads match KiCad's IPC-356 on 1191/1191 pads (worst Δ 1.77 µm, 0 net mismatches); counts match KiCad on every table. Index in Appendix C. + - **Attachments kept with this report** (tracked in the repo, unlike the gitignored evidence folder): `03-Architecture-Hardware/2026-09-28_v6-audit-attachments/`. It holds `erc_summary.md`, `drc_summary.md`, `ercdrc_classified.csv` (all 166 ERC + 283 DRC items with their classification), `bom_check.csv` (152 BOM lines: stock, package, rating), the two verification files `verify_1.md` / `verify_2.md`, and the four block findings files these IDs come from. + - **Audit:** four block auditors, each writing one findings file: power + temperature/fan (A-xx, F-51…F-53), modem/GNSS/Ethernet (B-, C-, E-xx), MCU pin map + connectors (D-, G-xx, plus `pinmap-v6.md`), layout/EMC + BOM + ERC/DRC (F-, H-, J-xx, plus `bom_check.csv` and `ercdrc_classified.csv`). + - **Tools:** KiCad 10.0.4 through the KiCad MCP server on Leo's Mac (kicad-cli ERC, DRC, netlist, BOM, CPL, IPC-356, courtyard check, zone query); Python `sexpdata` S-expression parsers (`scripts/kisexp.py`; no numeric regex on KiCad files); `shapely` for pad-edge distances, copper islands, plane voids and clearances; a 2-D finite-difference field solver and closed-form (Hammerstad–Jensen, Wadell CPWG) impedance checks; an averaged current-mode model of U20 for burst droop (verify_1 `vbat_sim.py`); JLC parts DB snapshot (`get_jlcpcb_part`, `search_jlcpcb_parts`) for stock, package and price; the Fabrication-Toolkit source (GitHub) for BOM field priority; manufacturer datasheets cited per finding (LTC4040 Rev B, TPS54360B, AP64350 DS41976 Rev 5-2, MP1584, AMS1117, PMEG3050EP, SIMCom A7672X/A7670X HD V1.03 and A7670 HD V1.00, u-blox ZED-F9P-04B DS UBX-21044850 R05 and IM UBX-18010802, AP2112, TPS7A20, TPS2552, W5500 v1.0.2, ST DS10314 Rev 7 / RM0383, Maxim MAX3232 19-0273 Rev 10, Sunlord MWSA, Nexperia 74LVC1G125, IPC-2221B, ISO 7637-2 / ISO 16750-2 levels via TI TIDUC41). + + **Appendix C — Evidence file index** + + Mac: `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/` (KiCad exports) and `…/evidence/pack/` (tree below). Container: `/home/claude/v6audit/`. + + | Path | Content | + |---|---| + | `INDEX.md`, `evidence/MANIFEST.md`, `evidence/_verification.md` | map and gotchas; hashes and provenance; self-checks (IPC-356 vs parser, counts, 64-pin MCU) | + | `evidence/netlists/*.xml` | kicad-cli netlists: v6, V5.6 (ECO copy), V5.5 as-fabbed, v5 current (stale) | + | `evidence/components.csv`, `nets.json`, `ref_pins.json` | 328 symbols with fields; net → pins; ref → pin → net | + | `evidence/mcu_pins.csv`, `evidence/ic_pins_.csv` | U16 64/64 pins; per-IC pin tables (U19, U18, U11, U6, U25, U20, U2, U12, U17, U21, U23, U24, U10, U13, U14, U15, U26, U3, U22) | + | `evidence/erc_summary.md`, `erc_full.json/.txt`, `erc/kicad_run_*.txt` | ERC (Appendix A) | + | `evidence/drc_summary.md`, `drc_full.rpt/.json`, `drc_items.csv` | DRC (Appendix B) | + | `evidence/bom.csv`, `bom_ungrouped.csv`, `cpl.csv`, `v6-pcb.ipc356` | kicad-cli BOM (correct LCSC fields), position file, IPC-D-356 | + | `evidence/pcb_footprints.csv`, `pcb_pads.csv`, `pcb_tracks.csv`, `vias.csv`, `zones.csv`, `net_routing_summary.csv` | parsed board geometry (1999 segments, 210 vias, 5 zones), per-net routing and resolved netclass | + | `evidence/stackup.md`, `clearance_24v.md/.csv`, `outline_and_holes.md`, `sch_pcb_sync.md` | stackup/rules/netclass resolution; 24 V clearance sweep; outline and holes; schematic↔PCB sync | + | `evidence/diff_v56_v6.md`, `diff_v5_v56.md` | UUID-matched semantic diffs with focus table | + | `evidence/firmware_pins.md/.csv`, `firmware_constants.csv` | every `PIN_*` in V5/V4 firmware vs the v6 net on the same pin; 84 constants | + | `evidence/v6-sch.pdf`, `v6-pcb-layers.pdf`, `svg/*.svg`, `mcp/*.json` | schematic PDF; per-layer plots; verbatim MCP results (courtyards, zones, rules) | + | `findings/A_power.md`, `BCE_modem_gnss_eth.md`, `DG_mcu_connectors.md`, `FHJ_layout_bom_ercdrc.md` | block auditor findings | + | `findings/verify_1.md`, `verify_2.md` | independent verification (power/RF; layout/BOM/MCU) | + | `findings/pinmap-v6.md`, `bom_check.csv`, `ercdrc_classified.csv` | auditor pin map; 152-line BOM check; 449 classified ERC/DRC items | + | `work//`, `work/verifier1/`, `work/verifier2/` | auditor and verifier scripts, renders (`in1_full.png`, `rf_lte.png`, `rf_gnss.png`, `u20.png`, `u25.png`, `fcu_gnd_pieces.png`), `hv24_violations_corrected_rule.csv`, `critical_crossings.csv` | + | `scripts/` | shared parsers (`kisexp.py` sexpdata helpers, `parse_pcb.py`, `parse_netlist.py`, `clearance_24v.py`, …) | + + **Appendix D — ID → working-file map (all 117 IDs)** + + "Final" = severity after verification and merges; "—" = absorbed into the primary named in "State". v1 = `verify_1.md`, v2 = `verify_2.md`. + + | ID | Working file | Auditor severity | Final | State | Report § | Verification | + |---|---|---|---|---|---|---| + | A-01 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified-with-correction (v1) | + | A-02 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified (v1) | + | A-03 | `A_power.md` | Blocker | Blocker | primary | §2 4-A | verified (v1) | + | A-04 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | + | A-05 | `A_power.md` | Major | Major | primary | §2 4-A | verified-with-correction (v1) | + | A-06 | `A_power.md` | Major | — | absorbed → F-03 (loops), F-12 (EP vias), A-01 (U2 row) | §2 4-F | verified (v1, v2) | + | A-07 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | + | A-08 | `A_power.md` | Major | Major | primary | §2 4-A | verified (v1) | + | A-09 | `A_power.md` | Major | Major | primary (C78); C130/C131 → B-02 | §2 4-A | verified (v1) | + | F-51 | `A_power.md` | Major | Major | primary | §2 4-F | verified (v1) | + | A-10 | `A_power.md` | Minor | Minor | primary | §2 4-A | not independently verified | + | A-11 | `A_power.md` | Minor | Minor | primary | §2 4-A | not independently verified | + | A-12 | `A_power.md` | Minor | — | absorbed → D-09 | §2 4-D | not independently verified | + | A-13 | `A_power.md` | Minor | Minor | primary (absorbs D-10) | §2 4-A | not independently verified; pin per v1 (h) | + | A-14 | `A_power.md` | Minor | Minor | primary (absorbs F-10; In1 part → A-02) | §2 4-A | not independently verified | + | A-15 | `A_power.md` | Minor | — | absorbed → H-04 | §2 4-H | verified via H-04 (v2) | + | F-52 | `A_power.md` | Minor | Minor | primary | §2 4-F | not independently verified | + | A-16 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | + | A-17 | `A_power.md` | Note | — | absorbed → B-02 | §2 4-B | verified via B-02, conflict (c) (v1) | + | A-18 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | + | A-19 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | + | A-20 | `A_power.md` | Note | Note | primary | §2 4-A | not independently verified | + | F-53 | `A_power.md` | Note | — | absorbed → A-01 | §2 4-A | verified via A-01 merge (v1) | + | B-01 | `BCE_modem_gnss_eth.md` | Blocker | — | absorbed → A-01 | §2 4-A | verified (v1) | + | B-02 | `BCE_modem_gnss_eth.md` | Blocker | Major | primary (absorbs A-09 C130/C131, A-17) | §2 4-B | verified, severity Blocker → Major (v1) | + | B-03 | `BCE_modem_gnss_eth.md` | Blocker | Blocker | primary | §2 4-B | verified-with-correction (v1) | + | B-04 | `BCE_modem_gnss_eth.md` | Blocker | — | absorbed → F-12 | §2 4-F | verified, severity Blocker → Major (v1, v2) | + | C-01 | `BCE_modem_gnss_eth.md` | Blocker | Blocker | primary (absorbs D-07) | §2 4-C | verified (v1) | + | B-05 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-06 | §2 4-F | verified (v1) | + | B-06 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-03 | §2 4-F | verified (v1) | + | B-07 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → G-02 (ESD); routing → F-17 | §2 4-G | verified (v1) | + | C-02 | `BCE_modem_gnss_eth.md` | Major | Major | primary | §2 4-C | verified (v1) | + | C-03 | `BCE_modem_gnss_eth.md` | Major | — | absorbed → F-12 | §2 4-F | verified-with-correction (v1) | + | C-04 | `BCE_modem_gnss_eth.md` | Major | Major | primary | §2 4-C | verified (v1) | + | E-01 | `BCE_modem_gnss_eth.md` | Major | Major | primary (absorbs A-05 fix 1) | §2 4-E | verified (v1) | + | E-02 | `BCE_modem_gnss_eth.md` | Major | Major | primary (absorbs D-04); Minor once E-01 is in | §2 4-E | verified-with-correction (v1) | + | E-03 | `BCE_modem_gnss_eth.md` | Major | Minor | primary (absorbs H-07, F-11 Y1) | §2 4-E | verified, severity Major → Minor (v1) | + | B-08 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-B | not independently verified | + | B-09 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-B | not independently verified | + | B-10 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary (absorbs D-14) | §2 4-B | not independently verified | + | B-11 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → J-04 | §2 4-J | not independently verified | + | C-05 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → F-06 | §2 4-F | verified via F-06 (v2) | + | C-06 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → D-01 | §2 4-D | verified via D-01 (v2) | + | C-07 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-C | not independently verified | + | E-04 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-E | not independently verified | + | E-05 | `BCE_modem_gnss_eth.md` | Minor | — | absorbed → G-03 | §2 4-G | not independently verified | + | E-06 | `BCE_modem_gnss_eth.md` | Minor | Minor | primary | §2 4-E | not independently verified | + | B-12 | `BCE_modem_gnss_eth.md` | Note | — | absorbed → F-01 (netclasses), F-06 (stackup) | §2 4-F | verified via merges (v1, v2) | + | B-13 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | + | B-14 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | + | B-15 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | + | B-16 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-B | not independently verified | + | C-08 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-C | not independently verified | + | C-09 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-C | not independently verified | + | E-07 | `BCE_modem_gnss_eth.md` | Note | Note | primary | §2 4-E | not independently verified | + | D-01 | `DG_mcu_connectors.md` | Major | Major | primary (absorbs C-06) | §2 4-D | verified-with-correction (v2) | + | D-06 | `DG_mcu_connectors.md` | Major | — | absorbed → F-02 (Blocker) | §2 4-F | verified, severity Major → Blocker (v2) | + | G-01 | `DG_mcu_connectors.md` | Major | Blocker (conditional) | primary | §2 4-G | verified-with-correction (v2) | + | G-02 | `DG_mcu_connectors.md` | Major | Major | primary (absorbs B-07 ESD, F-14 J9) | §2 4-G | verified (v1, v2) | + | D-02 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs F-11 Y3) | §2 4-D | verified (v2) | + | D-03 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | + | D-04 | `DG_mcu_connectors.md` | Minor | — | absorbed → E-02 (alternative rejected) | §2 4-E | verified via E-02 (v1) | + | D-05 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | + | D-07 | `DG_mcu_connectors.md` | Minor | — | absorbed → C-01 | §2 4-C | verified via C-01 (v1) | + | D-08 | `DG_mcu_connectors.md` | Minor | Minor | primary (pin unresolved) | §2 4-D | not independently verified | + | D-09 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs A-12) | §2 4-D | not independently verified | + | D-10 | `DG_mcu_connectors.md` | Minor | — | absorbed → A-13 (CLPROG part dropped) | §2 4-A | not independently verified; pin per v1 (h) | + | D-11 | `DG_mcu_connectors.md` | Minor | — | absorbed → J-04 | §2 4-J | not independently verified | + | D-12 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-D | not independently verified | + | G-03 | `DG_mcu_connectors.md` | Minor | Minor | primary (absorbs E-05, H-06) | §2 4-G | not independently verified | + | G-04 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | + | G-05 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | + | G-08 | `DG_mcu_connectors.md` | Minor | Minor | primary | §2 4-G | not independently verified | + | D-13 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-D | not independently verified | + | D-14 | `DG_mcu_connectors.md` | Note | — | absorbed → B-10 | §2 4-B | not independently verified | + | D-15 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-D | not independently verified | + | D-16 | `DG_mcu_connectors.md` | Note | — | absorbed → H-08 | §2 4-H | not independently verified | + | G-06 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-G | not independently verified | + | G-07 | `DG_mcu_connectors.md` | Note | Note | primary | §2 4-G | not independently verified | + | F-01 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (absorbs J-01, F-15, B-12 netclass) | §2 4-F | verified-with-correction (v2) | + | F-02 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (absorbs D-06, F-16) | §2 4-F | verified (v2) | + | F-03 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs A-06 loops, B-06, F-07, F-09) | §2 4-F | verified (v1, v2) | + | F-04 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-12 | §2 4-F | verified (v2) | + | F-05 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary | §2 4-F | verified, fix scope corrected (v2) | + | F-06 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs B-05, C-05, B-12 stackup) | §2 4-F | verified-with-correction (v1, v2) | + | F-07 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-03 | §2 4-F | verified (v2) | + | F-08 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → A-01 (moot with U2 DNP) | §2 4-A | verified (v2) | + | F-09 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-03 | §2 4-F | verified-with-correction (v2) | + | F-10 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → A-14 | §2 4-A | not independently verified | + | F-11 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → E-03 (Y1), D-02 (Y3) | §2 4-E / 4-D | verified via E-03 (v1) / D-02 (v2) | + | F-12 | `FHJ_layout_bom_ercdrc.md` | Major | Major | primary (absorbs F-13, F-04, B-04, C-03, A-06 vias) | §2 4-F | verified, target corrected to ≥ 400 (v1, v2) | + | F-13 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-12 (U6 EP → A-02) | §2 4-F | verified-with-correction (v2) | + | F-14 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (J9 part → G-02) | §2 4-F | not independently verified | + | F-15 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → F-01 | §2 4-F | verified via F-01 (v2) | + | F-16 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → F-02 | §2 4-F | verified via F-02 (v2) | + | F-17 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-F | not independently verified | + | F-18 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-F | not independently verified | + | F-19 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | + | F-20 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | + | F-21 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-F | not independently verified | + | H-01 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary | §2 4-H | verified-with-correction (v2) | + | H-02 | `FHJ_layout_bom_ercdrc.md` | Blocker | Blocker | primary (U10 + R53 only) | §2 4-H | verified-with-correction (v2) | + | H-03 | `FHJ_layout_bom_ercdrc.md` | Major | Minor | primary | §2 4-H | verified, severity Major → Minor (v2) | + | H-04 | `FHJ_layout_bom_ercdrc.md` | Major | Blocker | primary (absorbs A-15) | §2 4-H | verified, severity Major → Blocker (v2) | + | H-05 | `FHJ_layout_bom_ercdrc.md` | Note | — | absorbed → A-01 | §2 4-A | verified via A-01 (v1) | + | H-06 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → G-03 | §2 4-G | not independently verified | + | H-07 | `FHJ_layout_bom_ercdrc.md` | Minor | — | absorbed → E-03 | §2 4-E | verified via E-03 (v1) | + | H-08 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (absorbs D-16) | §2 4-H | not independently verified | + | H-09 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-H | not independently verified | + | H-10 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-H | not independently verified | + | J-01 | `FHJ_layout_bom_ercdrc.md` | Major | — | absorbed → F-01 | §2 4-F | verified (v2) | + | J-02 | `FHJ_layout_bom_ercdrc.md` | Major | Minor | primary, residual (copper → A-02/A-07/B-08) | §2 4-J | verified-with-correction (v2) | + | J-03 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary | §2 4-J | not independently verified | + | J-04 | `FHJ_layout_bom_ercdrc.md` | Minor | Minor | primary (absorbs B-11, D-11) | §2 4-J | not independently verified | + | J-05 | `FHJ_layout_bom_ercdrc.md` | Note | Note | primary | §2 4-J | not independently verified | + | V1-01 | `verify_1.md` ("Anything else" #1) | — (new) | Major | primary | §2 4-A | raised by verify_1, not cross-checked | + | H-02b | `verify_2.md` (H-02 split) | (part of H-02, Blocker) | Major | primary | §2 4-H | verified (v2) | diff --git a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md index abb00a2..71f9fee 100644 --- a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md +++ b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md @@ -1,25 +1,45 @@ -# EinarBoard v6 — Review against the V5.5 lessons of 26–27 Sep 2026 (v1.0) +--- +title: "EinarBoard v6 — Revisión contra las lecciones de la V5.5 (26–27 sep 2026)" +tags: [project-drogheda, hardware, einarboard, v6, v5.5, revision, lecciones] +date: 2026-09-28 +project: Project Drogheda +author: Helgen Technologies +--- -!!! warning "Tarjeta: EinarBoard **v6** — proyecto KiCad `hbox-watchdog-v6` (EN DISEÑO, no se pide todavía) / Board: v6, in design" +# EinarBoard v6 — Revisión contra las lecciones de la V5.5 (26–27 sep 2026) + +!!! warning "EinarBoard v6 (`hbox-watchdog-v6`): en diseño, no se pide" Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios. +Fecha: 2026-09-28 · Diseño revisado: `kicad/hbox-watchdog-v6.kicad_sch` / `.kicad_pcb` (estado del 25-sep, después de T15) · Documentos de referencia: [ECO V5.6](v56-eco.md), [informe de cambios V5.6](v56-cambios-esquematico.md), [auditoría pre-fabricación v6](v6-auditoria-prefab.md), `CHANGELOG.md` del firmware 0.5.8 → 0.6.0 · Autor: Helgen Technologies (elaborado con asistencia de Claude) · Alcance: revisión de solo lectura; no se modificó ningún archivo de KiCad. La [auditoría completa v6](v6-auditoria-completa.md) del mismo día profundiza y supera esta revisión; lo aplicado está en el [informe de cambios v6](v6-cambios-esquematico.md). -**Date:** 2026-09-28 · **Design reviewed:** `kicad/hbox-watchdog-v6.kicad_sch` / `.kicad_pcb` (state of 25-Sep, after T15) · **Reference documents:** `2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md`, `2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md`, project doc `2026-09-25_HBox-v6_Pre-Fab-Audit_EN.md`, firmware `CHANGELOG.md` 0.5.8 → 0.6.0 · **Author:** Claude for Leo · **Scope:** read-only review; no KiCad file was modified. - -## Resumen ejecutivo (ES) +## Resumen ejecutivo 1. La v6 ya resuelve por arquitectura el hallazgo más grave de la semana (F1): el módem A7670SA tiene su propio buck AP64350 (U20) con `MODEM_PWR_EN` en PC10, `PWRKEY` en PC8, `STATUS` en PC9 y `RST` en PC11, y su UART llega al MCU por USART6 (PC6/PC7). El módem se puede arrancar solo, sobre riel asentado, y se sabe si está vivo. -2. Con eso, el ciclo de 10 min en batería (F2) y la recuperación de enlace sin matar el módem (F3) son posibles en v6: falta solo el firmware (`ENABLE_DUTY 1` con la secuencia `PWR_CTRL` → 4 s → `MODEM_PWR_EN`). -3. Cargador (F4): `RS1` ya es 10 mΩ (C105362, límite 2.5 A) ✅, pero **`R50` sigue en 825 Ω (2.4 A)** ❌ → 1.5 kΩ (C22843). -4. Térmico del LTC4040 (F5): **`/SW_BAT` es una pista de 0.25 mm** (peor que los 0.3 mm de la V5.5), `/BAT_PLUS` 0.25–0.5 mm, el EP de U6 **no tiene vías térmicas**, L6 está a 15 mm de U6 y no hay ningún sensor de temperatura junto a U6/L6 (el TMP102 se eliminó; el SHT40 U3 está a 71 mm). ❌ — es el cambio nº 1. -5. Ventana NTC (F6): `R55` (RNTB) 10 k y `JP2` puenteado a Li-ion, igual que la V5.5; la pausa a ~40–42 °C se repite en v6 hasta decidir la química (LFP-HT + JP2 2-3 + 5.6 k). `CHRG_FAULT` sí llega al MCU (PB4) para mostrar «pausa NTC». -6. Fuente de 5 V (F7): **U25 TPS54360B está fijada a 5.00 V** (R121 53.6 k / R122 10.2 k) → solo 0.56 V sobre el PFI (4.44 V) y **0.10 V sobre la línea de corte del gobernador (4.90 V)**: el cargador se cortaría en cada ráfaga LTE. ❌ → R121 57.6 k (5.32 V). -7. Robustez (F8): ESD del DFU ya está junto a J11 (3–7 mm) ✅ y `ETH_INT` va a PC0 (sin trampa BOOT1) ✅; pero **J9 (USB del módem) no tiene ESD**, **`ETH_RST` (PA15) no tiene pull-down** y no hay puente en paralelo a P5 (corte). F1 PPTC 3 A queda solo en el riel del F9P (inocuo, sobredimensionado). Sin PoE en J10 por diseño. +2. Con eso, el ciclo de 10 min en batería (F2) y la recuperación de enlace sin matar el módem (F3) son posibles en v6: falta solo el firmware (`ENABLE_DUTY 1` con la secuencia `PWR_CTRL` → 4 s → `MODEM_PWR_EN`). +3. Cargador (F4): `RS1` ya es 10 mΩ (C105362, límite 2.5 A) ✅, pero **`R50` sigue en 825 Ω (2.4 A)** ❌ → 1.5 kΩ (C22843). +4. Térmico del LTC4040 (F5): **`/SW_BAT` es una pista de 0.25 mm** (peor que los 0.3 mm de la V5.5), `/BAT_PLUS` 0.25–0.5 mm, el EP de U6 **no tiene vías térmicas**, L6 está a 15 mm de U6 y no hay ningún sensor de temperatura junto a U6/L6 (el TMP102 se eliminó; el SHT40 U3 está a 71 mm). ❌ — es el cambio nº 1. +5. Ventana NTC (F6): `R55` (RNTB) 10 k y `JP2` puenteado a Li-ion, igual que la V5.5; la pausa a ~40–42 °C se repite en v6 hasta decidir la química (LFP-HT + JP2 2-3 + 5.6 k). `CHRG_FAULT` sí llega al MCU (PB4) para mostrar «pausa NTC». +6. Fuente de 5 V (F7): **U25 TPS54360B está fijada a 5.00 V** (R121 53.6 k / R122 10.2 k) → solo 0.56 V sobre el PFI (4.44 V) y **0.10 V sobre la línea de corte del gobernador (4.90 V)**: el cargador se cortaría en cada ráfaga LTE. ❌ → R121 57.6 k (5.32 V). +7. Robustez (F8): ESD del DFU ya está junto a J11 (3–7 mm) ✅ y `ETH_INT` va a PC0 (sin trampa BOOT1) ✅; pero **J9 (USB del módem) no tiene ESD**, **`ETH_RST` (PA15) no tiene pull-down** y no hay puente en paralelo a P5 (corte). F1 PPTC 3 A queda solo en el riel del F9P (inocuo, sobredimensionado). Sin PoE en J10 por diseño. 8. Software (F9): la v6 pierde el `$GPTXT H00xx` del NTRIP Master de ArduSimple (el módem ahora es nuestro) → la identidad debe generarla el MCU (`$PHID` por UID, ya existe en 0.6.0-eth) también por 4G. 9. Veredicto: **3 ✅ (F1, F2, F3) · 4 ⚠ (F4, F6, F8, F9) · 2 ❌ (F5, F7)**. Todos los ❌ y ⚠ son cambios de valor de BOM o de layout; ninguno cambia la arquitectura. -10. Los cinco cambios por riesgo: (1) cobre + vías + sensor en U6/L6; (2) U25 a 5.3 V; (3) R50 1.5 k; (4) condensadores de VBAT_MODEM pegados a U19 y pistas del módem ≥ 0.8 mm; (5) pull-down en `ETH_RST` + USBLC6 en J9 + decidir RNTB/JP2. +10. Los cinco cambios por riesgo: (1) cobre + vías + sensor en U6/L6; (2) U25 a 5.3 V; (3) R50 1.5 k; (4) condensadores de VBAT_MODEM pegados a U19 y pistas del módem ≥ 0.8 mm; (5) pull-down en `ETH_RST` + USBLC6 en J9 + decidir RNTB/JP2. ---- +## Índice del cuerpo del informe + +El cuerpo está en inglés. Vocabulario: *finding* = hallazgo · *footprint* = huella · *track* = pista · *via* = vía · *pour* = vertido de cobre · *EP* = pad térmico. + +| Sección | Qué contiene | +|---|---| +| 0. Method | Cómo se extrajeron los datos de la tarjeta y del esquemático; mapa pad → pin del LQFP-64. | +| 1. Lesson-by-lesson review (F1–F9) | Cada lección de banco de la V5.5 contra lo que hace la v6 tal como está dibujada: módem en batería, ciclo de 10 min, recuperación de enlace, cargador, térmico del LTC4040, ventana NTC, margen de la fuente de 5 V, robustez, software. | +| 2. Specific v6 checks requested | Comprobaciones puntuales pedidas por Leo. | +| 3. What to carry from V5.6 into v6 | Qué cambios de la V5.6 deben llevarse a la v6. | +| 4. Checklist ordered by risk | Checklist por riesgo con responsable. | +| 5. Notes and non-findings | Notas y lo que se revisó y no resultó hallazgo. | + +## Cuerpo del informe (inglés) ## 0. Method @@ -40,42 +60,42 @@ Where a fact could not be found in the v6 files, it is stated as such. | Item | v6 | |---|---| -| Modem power path | `U20` AP64350SP-13 (C2071691), `L20` 4.7 µH/5 A (C17700167), output `/VBAT_MODEM` = 0.8 V × (1 + R110 75 k / R111 20 k) = **3.80 V**. Input `/VIN_MODEM` fed by **`D20` SS34 from `/24V`** (vehicle side, via Q10) **or `D21` PMEG3050EP from `/MAIN5V`** (LTC4040 boost output on battery). The modem no longer hangs from Q1, F1 or `/SW_5V`. | +| Modem power path | `U20` AP64350SP-13 (C2071691), `L20` 4.7 µH/5 A (C17700167), output `/VBAT_MODEM` = 0.8 V × (1 + R110 75 k / R111 20 k) = **3.80 V**. Input `/VIN_MODEM` fed by **`D20` SS34 from `/24V`** (vehicle side, via Q10) **or `D21` PMEG3050EP from `/MAIN5V`** (LTC4040 boost output on battery). The modem no longer hangs from Q1, F1 or `/SW_5V`. | | Modem enable | `U20.3 EN` = `/MODEM_PWR_EN` = **U16 pad 51 = PC10**, with `R113` 100 k to GND (modem OFF while the MCU is in reset/DFU). No series resistor (direct drive; fine for the AP64350 EN pin). | -| PWRKEY / RST / STATUS | `/MODEM_PWRKEY` = **PC8** (pad 39) → `Q20` 2N7002 open-drain → `U19.1 PWRKEY`, `R114` 100 k pull-down on the gate. `/MODEM_RST` = **PC11** (pad 52) → `Q21` 2N7002 → `U19.16 RESET`, `R115` 100 k. `U19.66 STATUS` (1.8 V) → `U24` 74LVC2T45 → `/MODEM_STATUS` = **PC9** (pad 40). `U19.52 NETLIGHT` only drives `D4G1` via `R109`/`Q22` — not read by the MCU (STATUS covers the need). | -| Modem UART visibility | `U19.9 TXD` → `U24` → `/DOUT_4G` → **`U18.26` (ZED-F9P UART2 RXD, RTCM in)** *and* `R106` 100 Ω → **`/USART6_RX` = PC7 (pad 38)**. `U19.10 RXD` ← `U23` ← `/DIN_4G` ← `K1` relay common: NC = `/USART1_RX` (ZED-F9P `U18.27` TXD2 → also MCU PA10), NO = **`/USART6_TX` = PC6 (pad 37)**. So the MCU always hears the modem's TX (RTCM byte count = "modem registered and NTRIP flowing"), and talks to it on USART6 when K1 is in Mode B. This is the RTCM_TAP of V5.6 built in. | +| PWRKEY / RST / STATUS | `/MODEM_PWRKEY` = **PC8** (pad 39) → `Q20` 2N7002 open-drain → `U19.1 PWRKEY`, `R114` 100 k pull-down on the gate. `/MODEM_RST` = **PC11** (pad 52) → `Q21` 2N7002 → `U19.16 RESET`, `R115` 100 k. `U19.66 STATUS` (1.8 V) → `U24` 74LVC2T45 → `/MODEM_STATUS` = **PC9** (pad 40). `U19.52 NETLIGHT` only drives `D4G1` via `R109`/`Q22` — not read by the MCU (STATUS covers the need). | +| Modem UART visibility | `U19.9 TXD` → `U24` → `/DOUT_4G` → **`U18.26` (ZED-F9P UART2 RXD, RTCM in)** *and* `R106` 100 Ω → **`/USART6_RX` = PC7 (pad 38)**. `U19.10 RXD` ← `U23` ← `/DIN_4G` ← `K1` relay common: NC = `/USART1_RX` (ZED-F9P `U18.27` TXD2 → also MCU PA10), NO = **`/USART6_TX` = PC6 (pad 37)**. So the MCU always hears the modem's TX (RTCM byte count = "modem registered and NTRIP flowing"), and talks to it on USART6 when K1 is in Mode B. This is the RTCM_TAP of V5.6 built in. | | F9P power | `Q1` AO3401A (gate via `Q5`/`R1` from `/PWR_CTRL` = **PA1**, pad 15) → `/SW_5V` → `U21` AP2112K-3.3 → `/3V3_GNSS` → `U18`. Independent of the modem. | -| UVLO margin on battery | `/MAIN5V` (boost, R53 499 k / R54 100 k → 4.79 V nominal, 4.6 V measured under load on V5.5) − `D21` forward drop (≈0.3–0.45 V at 1–2 A) ≈ **4.2–4.5 V at U20 VIN** vs AP64350 VIN(min) 3.8 V → ≈ **0.4–0.7 V margin** (V5.5 had ≈ 0.1 V). Adequate but not generous: the buck runs at ~90 % duty (3.8 V out of 4.3 V in) during a 2 A burst. | -| Input capacitance at U20 | `C127` 10 µF (5.4 mm from U20.2) + `C128` 1 µF (2.0 mm). The V5.6 ECO specifies 2 × 22 µF + 10 µF at VIN (< 3 mm). | -| Output bulk at U19 | `C130` 220 µF, `C131` 220 µF, `C132` 22 µF, `C133` 1 µF, `C134` 100 nF, `C135` 33 pF, `C136` 10 pF, `D22` SMAJ5.0A. Distances from the VBAT pads (U19.55/56/57): **C130 17.8–19.7 mm, C131 10.5–12.4 mm**, C132 5.6–7.3 mm, C133 4.1–5.5 mm, D22 23–25 mm. The 440 µF sits 10–20 mm away, behind `/VBAT_MODEM` tracks of 0.25–3.0 mm (58.9 mm total, 6.3 mm on In1 at 0.5 mm). | +| UVLO margin on battery | `/MAIN5V` (boost, R53 499 k / R54 100 k → 4.79 V nominal, 4.6 V measured under load on V5.5) − `D21` forward drop (≈0.3–0.45 V at 1–2 A) ≈ **4.2–4.5 V at U20 VIN** vs AP64350 VIN(min) 3.8 V → ≈ **0.4–0.7 V margin** (V5.5 had ≈ 0.1 V). Adequate but not generous: the buck runs at ~90 % duty (3.8 V out of 4.3 V in) during a 2 A burst. | +| Input capacitance at U20 | `C127` 10 µF (5.4 mm from U20.2) + `C128` 1 µF (2.0 mm). The V5.6 ECO specifies 2 × 22 µF + 10 µF at VIN (< 3 mm). | +| Output bulk at U19 | `C130` 220 µF, `C131` 220 µF, `C132` 22 µF, `C133` 1 µF, `C134` 100 nF, `C135` 33 pF, `C136` 10 pF, `D22` SMAJ5.0A. Distances from the VBAT pads (U19.55/56/57): **C130 17.8–19.7 mm, C131 10.5–12.4 mm**, C132 5.6–7.3 mm, C133 4.1–5.5 mm, D22 23–25 mm. The 440 µF sits 10–20 mm away, behind `/VBAT_MODEM` tracks of 0.25–3.0 mm (58.9 mm total, 6.3 mm on In1 at 0.5 mm). | **Verdict: ✅ covered (architecture) — 4 layout/value follow-ups.** **Changes:** -1. Move `C131` (and ideally `C130`) to ≤ 5 mm of U19 pads 55–57; pour `/VBAT_MODEM` on F.Cu from L20 to U19 (≥ 1.5 mm, no 0.25/0.5 mm necks; the T15 DRC rule already flags ≥ 0.8 mm). -2. Add 2 × 22 µF 0805 (C86817) at `U20.2 VIN` (< 3 mm), keep `C127`/`C128`; widen `/VIN_MODEM` (0.25/0.5 mm today) and `/SW_MODEM` (0.25 mm, 23 mm long) to ≥ 0.8 mm. -3. Battery-mode headroom (choose one, bench-decided): (a) `R53` 499 k → 511 k (C188257) → boost 4.89 V (+0.1 V at U20 VIN); (b) replace `D21` with a low-Vf Schottky in a bigger package or a P-FET ideal-diode; (c) lower `/VBAT_MODEM` to 3.6 V (`R110` 75 k → 70 k) — A7670SA VBAT range is 3.4–4.2 V, 3.8 V typical; 3.6 V keeps the buck out of dropout. Not required to order; required before the 20-cycle battery test. +1. Move `C131` (and ideally `C130`) to ≤ 5 mm of U19 pads 55–57; pour `/VBAT_MODEM` on F.Cu from L20 to U19 (≥ 1.5 mm, no 0.25/0.5 mm necks; the T15 DRC rule already flags ≥ 0.8 mm). +2. Add 2 × 22 µF 0805 (C86817) at `U20.2 VIN` (< 3 mm), keep `C127`/`C128`; widen `/VIN_MODEM` (0.25/0.5 mm today) and `/SW_MODEM` (0.25 mm, 23 mm long) to ≥ 0.8 mm. +3. Battery-mode headroom (choose one, bench-decided): (a) `R53` 499 k → 511 k (C188257) → boost 4.89 V (+0.1 V at U20 VIN); (b) replace `D21` with a low-Vf Schottky in a bigger package or a P-FET ideal-diode; (c) lower `/VBAT_MODEM` to 3.6 V (`R110` 75 k → 70 k) — A7670SA VBAT range is 3.4–4.2 V, 3.8 V typical; 3.6 V keeps the buck out of dropout. Not required to order; required before the 20-cycle battery test. 4. Firmware (v6 `board_v6.h`): `PIN_MODEM_PWR_EN PC10`, `PIN_MODEM_PWRKEY PC8`, `PIN_MODEM_STATUS PC9`, `PIN_MODEM_RST PC11`, modem UART = **USART6 (PC6 TX / PC7 RX)**; K1 Mode B via `BYP_CTRL` = PB5 (pad 57, `R40` → `Q6` → `K1` coil). -Note on behaviour: because `R113` is a pull-down, **any MCU reset (DFU, IWDG, `NVIC_SystemReset`) drops `MODEM_PWR_EN` and power-cycles the modem**. That is the intended V5.6 policy (modem OFF while the MCU is not in control), but firmware must re-run the settled-rail sequence after every reset, and a watchdog reset costs a ~30 s re-registration. +Note on behaviour: because `R113` is a pull-down, **any MCU reset (DFU, IWDG, `NVIC_SystemReset`) drops `MODEM_PWR_EN` and power-cycles the modem**. That is the intended V5.6 policy (modem OFF while the MCU is not in control), but firmware must re-run the settled-rail sequence after every reset, and a watchdog reset costs a ~30 s re-registration. ### F2 — 10-min duty cycle on battery impossible on V5.5 **What v6 does today:** `/PWR_CTRL` (PA1) switches only the F9P rail (`Q1` → `/SW_5V` → `U21`); `/MODEM_PWR_EN` (PC10) switches only the modem buck. `/MODEM_STATUS` (PC9) and the RTCM tap on PC7 give a real "modem up" signal. `NRST` reaches only the MCU (`SW1`, `P6` RESET-EXT, `TP5`, `C104`), as on V5.5. -**Verdict: ✅ covered (hardware).** Firmware: `ENABLE_DUTY 1` on the v6 build with the V5.6 window — `PWR_CTRL` high → ≥ 4 s → `MODEM_PWR_EN` high → PWRKEY pulse → wait `STATUS` high / first RTCM bytes on PC7 → ≥ 2 `$PHLG` with `pwr=BATT` and fresh fix → `MODEM_PWR_EN` low → `PWR_CTRL` low → sleep 10 min. End of window decided by STATUS/RTCM, not by a timer. Note `K1` (G5V-1, coil on `/SYS5V` via `Q6`) draws its 0.15 W whenever Mode B is held on battery. +**Verdict: ✅ covered (hardware).** Firmware: `ENABLE_DUTY 1` on the v6 build with the V5.6 window — `PWR_CTRL` high → ≥ 4 s → `MODEM_PWR_EN` high → PWRKEY pulse → wait `STATUS` high / first RTCM bytes on PC7 → ≥ 2 `$PHLG` with `pwr=BATT` and fresh fix → `MODEM_PWR_EN` low → `PWR_CTRL` low → sleep 10 min. End of window decided by STATUS/RTCM, not by a timer. Note `K1` (G5V-1, coil on `/SYS5V` via `Q6`) draws its 0.15 W whenever Mode B is held on battery. ### F3 — Link-recovery stack cycles on battery kill the modem **What v6 does today:** the modem can be reset (`MODEM_RST` PC11), PWRKEY-cycled (PC8) or power-cycled alone (`MODEM_PWR_EN` PC10) without touching the F9P, and `MODEM_STATUS` (PC9) confirms the result. -**Verdict: ✅ covered (hardware).** Firmware rule for v6 stays as 0.5.9: no stack cycle on battery, ever; recovery escalates modem-only — `MODEM_RST` 500 ms → PWRKEY off/on → `MODEM_PWR_EN` OFF 5 s / ON — and only after `PWR_CTRL` has been high ≥ 4 s. Never cycle `PWR_CTRL` for a link problem. +**Verdict: ✅ covered (hardware).** Firmware rule for v6 stays as 0.5.9: no stack cycle on battery, ever; recovery escalates modem-only — `MODEM_RST` 500 ms → PWRKEY off/on → `MODEM_PWR_EN` OFF 5 s / ON — and only after `PWR_CTRL` has been high ≥ 4 s. Never cycle `PWR_CTRL` for a link problem. -### F4 — Charger input limit above the supply (RS1 8 mΩ), charge current 2.4 A (R50 825 Ω) +### F4 — Charger input limit above the supply (RS1 8 mΩ), charge current 2.4 A (R50 825 Ω) -**What v6 does today:** `RS1` = **10 mΩ/1 % 1206 (C105362)** between `/VEH5V` and `/VIN_SW` → LTC4040 input limit 25 mV / 10 mΩ = **2.5 A** ✅, below U25's 3 A. **`R50` = 825 Ω/1 % (C50214)** on `PROG` → 2000/825 = **2.42 A** charge ❌. `CHRG_EN` = PA8 (pad 41) with `R56` 100 k pull-down — the 0.6.0 governor works unchanged. `CHRG_STAT` = PB3, `CHRG_FAULT` = PB4 (pull-ups `R57`/`R58` 100 k). +**What v6 does today:** `RS1` = **10 mΩ/1 % 1206 (C105362)** between `/VEH5V` and `/VIN_SW` → LTC4040 input limit 25 mV / 10 mΩ = **2.5 A** ✅, below U25's 3 A. **`R50` = 825 Ω/1 % (C50214)** on `PROG` → 2000/825 = **2.42 A** charge ❌. `CHRG_EN` = PA8 (pad 41) with `R56` 100 k pull-down — the 0.6.0 governor works unchanged. `CHRG_STAT` = PB3, `CHRG_FAULT` = PB4 (pull-ups `R57`/`R58` 100 k). -**Verdict: ⚠ partial.** Change: **`R50` 825 Ω → 1.5 kΩ 0603 1 % (C22843)** → 1.33 A (12 Ah in ~9 h). Governor 0.6.0 stays as the second layer. On v6 the supply is U25 (3 A rated, 3.5 A switch) — same reasoning as the SD-15B. +**Verdict: ⚠ partial.** Change: **`R50` 825 Ω → 1.5 kΩ 0603 1 % (C22843)** → 1.33 A (12 Ah in ~9 h). Governor 0.6.0 stays as the second layer. On v6 the supply is U25 (3 A rated, 3.5 A switch) — same reasoning as the SD-15B. ### F5 — Slow charge on H0008: LTC4040 die-temperature cycling from thin copper / no thermal vias @@ -83,52 +103,52 @@ Note on behaviour: because `R113` is a pull-down, **any MCU reset (DFU, IWDG, `N | Item | v6 | Target (ECO D2 / Copper Plan) | |---|---|---| -| `/SW_BAT` (U6.21/22 → L6.1) | **4 segments, 0.25 mm, 12.3 mm total, F.Cu, no pour** | ≥ 2 mm polygon | -| `/BAT_PLUS` (P3.1 → L6.2 → U6.23, C35, R5) | 0.25 mm (5.4 mm) + 0.5 mm (42 mm F.Cu + 70.5 mm In2) + 1.0 mm (4.9 mm); 2 vias; no pour | ≥ 1.5 mm + via farm | -| U6 exposed pad (pad 25, 2.65 × 3.65 mm) | footprint `QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm` (no ThermalVias variant); **0 vias inside the EP**; nearest GND via 4.4 mm away | ≥ 9 thermal vias to In1 GND | -| `L6` 2.2 µH/8 A distance to U6 | 15.2 mm (pad-to-pad 10.2–11.1 mm) | ≤ 5 mm | -| Input cap `C30` 10 µF / `C31` 2.2 µF to U6 | 11.2 mm / 10.0 mm | ≤ 3 mm | -| Temperature sensor at U6/L6 | **None.** `U4` TMP102 was deleted in v6 (schematic note); `U3` SHT40 is at (122.4, 77.3), **71 mm** from U6; `P7` NTC-HOTSPOT / `P8` NTC-PROBE-2 are JST jacks for external probes (PB1 / PC4) at 100 mm. | On-board sensor at U6/L6 | +| `/SW_BAT` (U6.21/22 → L6.1) | **4 segments, 0.25 mm, 12.3 mm total, F.Cu, no pour** | ≥ 2 mm polygon | +| `/BAT_PLUS` (P3.1 → L6.2 → U6.23, C35, R5) | 0.25 mm (5.4 mm) + 0.5 mm (42 mm F.Cu + 70.5 mm In2) + 1.0 mm (4.9 mm); 2 vias; no pour | ≥ 1.5 mm + via farm | +| U6 exposed pad (pad 25, 2.65 × 3.65 mm) | footprint `QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm` (no ThermalVias variant); **0 vias inside the EP**; nearest GND via 4.4 mm away | ≥ 9 thermal vias to In1 GND | +| `L6` 2.2 µH/8 A distance to U6 | 15.2 mm (pad-to-pad 10.2–11.1 mm) | ≤ 5 mm | +| Input cap `C30` 10 µF / `C31` 2.2 µF to U6 | 11.2 mm / 10.0 mm | ≤ 3 mm | +| Temperature sensor at U6/L6 | **None.** `U4` TMP102 was deleted in v6 (schematic note); `U3` SHT40 is at (122.4, 77.3), **71 mm** from U6; `P7` NTC-HOTSPOT / `P8` NTC-PROBE-2 are JST jacks for external probes (PB1 / PC4) at 100 mm. | On-board sensor at U6/L6 | -**Verdict: ❌ missing.** This is the highest-risk item: v6 repeats the V5.5 boost copper and makes it slightly worse (0.25 vs 0.3 mm), and the charger will run its ~2.5 A input / 1.3–2.4 A charge through it at 45 °C ambient. +**Verdict: ❌ missing.** This is the highest-risk item: v6 repeats the V5.5 boost copper and makes it slightly worse (0.25 vs 0.3 mm), and the charger will run its ~2.5 A input / 1.3–2.4 A charge through it at 45 °C ambient. **Changes:** -1. Re-cluster U6: `L6` ≤ 5 mm from pads 21/22, `C30`/`C31` ≤ 3 mm from pads 6/16, `C35` at pad 23 (pre-fab audit B5). -2. `/SW_BAT` as an F.Cu polygon ≥ 2 mm wide; `/BAT_PLUS` ≥ 1.5 mm F.Cu from P3 to L6/U6 with a via farm to an In2 copper area (drop the 70 mm 0.5 mm inner run). -3. Replace the U6 footprint with the `…_ThermalVias` variant or add ≥ 9 × 0.3 mm vias in the EP to the In1 GND plane; keep the In1 plane solid under U6 (it is split into islands today — pre-fab audit §7). +1. Re-cluster U6: `L6` ≤ 5 mm from pads 21/22, `C30`/`C31` ≤ 3 mm from pads 6/16, `C35` at pad 23 (pre-fab audit B5). +2. `/SW_BAT` as an F.Cu polygon ≥ 2 mm wide; `/BAT_PLUS` ≥ 1.5 mm F.Cu from P3 to L6/U6 with a via farm to an In2 copper area (drop the 70 mm 0.5 mm inner run). +3. Replace the U6 footprint with the `…_ThermalVias` variant or add ≥ 9 × 0.3 mm vias in the EP to the In1 GND plane; keep the In1 plane solid under U6 (it is split into islands today — pre-fab audit §7). 4. Add a temperature sensor at U6/L6: **TMP102 SOT-563 (C99269, address 0x48 — free on v6; SC16IS752 is 0x4D, SHT40 0x44, SC7A20 0x18) placed between U6 and L6**, or an on-board 10 k NTC to **PC5 (pad 25, ADC1_IN15, free)** with the same 10 k/100 nF network as `R42`/`C24`. Firmware: `tchg` append field in `$PHLG`; governor uses it instead of the V5 `U4` cell sensor. Also log `tmax`. -5. Bench: thermal camera on U6/L6 during 1 h of charge at 1.3 A and 1 h of backup at 2.5 A; the 60 mV/30 s pulsing seen on H0008 must not appear. +5. Bench: thermal camera on U6/L6 during 1 h of charge at 1.3 A and 1 h of backup at 2.5 A; the 60 mV/30 s pulsing seen on H0008 must not appear. -### F6 — NTC pause invisible; charge window with RNTB 10 k pauses above ~40–42 °C +### F6 — NTC pause invisible; charge window with RNTB 10 k pauses above ~40–42 °C **What v6 does today:** `R55` (= RNTB) **10 k/1 % (C25804)** from `/VEH5V` to `/NTC` (`U6.17`, `P3.3`). `JP2` value `F2:Li-ion`, bridged 1-2 → `/F2_SEL` = `/MAIN5V` (high) = Li-ion 4.0/4.1 V float. `JP3` F1:0, `JP4` F0:1 as on V5.5. `CHRG_FAULT` → PB4 with pull-up: the firmware can show `cflt=1` as "pausa NTC" (LTC4040 keeps CHRG low during an NTC pause; only FAULT goes low). **Verdict: ⚠ partial** (visibility ✅, window ❌ until the chemistry decision). -**Changes (BOM/solder-jumper only, PCB unchanged):** if LFP-HT 26650 is chosen (ECO D1a): `JP2` 2-3 (F2 low, 3.50 V float) + `R55` **5.6 k** with a B3380 NTC (window +10…+60 °C). If Li-ion stays: keep 10 k and accept the pause (or 6.6 k = pause at 55 °C, hard on the cell). Firmware/monitor: `ltc=PAUSA NTC` when `CHRG_EN` allowed ∧ `CHRG_STAT` idle ∧ `CHRG_FAULT` low; cell-temperature inhibit threshold per chemistry (Li-ion 45 °C / LFP 55–60 °C). Silkscreen `JP2 = F2 (Li-ion / LFP)`. +**Changes (BOM/solder-jumper only, PCB unchanged):** if LFP-HT 26650 is chosen (ECO D1a): `JP2` 2-3 (F2 low, 3.50 V float) + `R55` **5.6 k** with a B3380 NTC (window +10…+60 °C). If Li-ion stays: keep 10 k and accept the pause (or 6.6 k = pause at 55 °C, hard on the cell). Firmware/monitor: `ltc=PAUSA NTC` when `CHRG_EN` allowed ∧ `CHRG_STAT` idle ∧ `CHRG_FAULT` low; cell-temperature inhibit threshold per chemistry (Li-ion 45 °C / LFP 55–60 °C). Silkscreen `JP2 = F2 (Li-ion / LFP)`. -### F7 — Power-supply margin: 5.25–5.57 V trimmed units vs PFI 4.44 V / warning 4.60 V / shed 4.90 V +### F7 — Power-supply margin: 5.25–5.57 V trimmed units vs PFI 4.44 V / warning 4.60 V / shed 4.90 V -**What v6 does today:** `U25` TPS54360B (C524806), feedback `R121` **53.6 k/1 %** / `R122` **10.2 k/1 %** → V_out = 0.8 V × (1 + 53.6/10.2) = **5.00 V** (pre-fab audit: "5.00 V, ~620 kHz"; `R120` 162 k). `R124` 523 k / `R125` 84.5 k (EN UVLO divider) are DNP → EN floats high (internal pull-up), U25 runs from ≈ 4.5 V input. LTC4040: PFI `R51` 270 k / `R52` 100 k → 1.2 V × 3.7 = **4.44 V**; boost `R53` 499 k / `R54` 100 k → 0.8 V × 5.99 = **4.79 V**. `5V_SENSE` = `/VEH5V` × 10 k/(10 k + 10 k) (`R7`/`R8`) → PA4, so the ADC scale is fine up to 6.6 V. `P2` (bench SD-15B) is in parallel on `/VEH5V` ("one source at a time"). +**What v6 does today:** `U25` TPS54360B (C524806), feedback `R121` **53.6 k/1 %** / `R122` **10.2 k/1 %** → V_out = 0.8 V × (1 + 53.6/10.2) = **5.00 V** (pre-fab audit: "5.00 V, ~620 kHz"; `R120` 162 k). `R124` 523 k / `R125` 84.5 k (EN UVLO divider) are DNP → EN floats high (internal pull-up), U25 runs from ≈ 4.5 V input. LTC4040: PFI `R51` 270 k / `R52` 100 k → 1.2 V × 3.7 = **4.44 V**; boost `R53` 499 k / `R54` 100 k → 0.8 V × 5.99 = **4.79 V**. `5V_SENSE` = `/VEH5V` × 10 k/(10 k + 10 k) (`R7`/`R8`) → PA4, so the ADC scale is fine up to 6.6 V. `P2` (bench SD-15B) is in parallel on `/VEH5V` ("one source at a time"). -Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) **0.10 V**; to the governor start line (5.05 V) **−0.05 V** — the charger would never be enabled, and a 100–200 mV LTE sag (V5.5 measured) would hit the shed line on every burst. +Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) **0.10 V**; to the governor start line (5.05 V) **−0.05 V** — the charger would never be enabled, and a 100–200 mV LTE sag (V5.5 measured) would hit the shed line on every burst. **Verdict: ❌ missing.** -**Changes:** `R121` 53.6 k → **57.6 k/1 % 0603** → 0.8 × (1 + 57.6/10.2) = **5.32 V** (56.2 k → 5.21 V is the minimum acceptable). Within LTC4040 VIN range (3.5–5.5 V) and U25 rating; `5V_SENSE` unchanged. Pick the LCSC number in the sourcing pass (basic 0603 1 %). Governor thresholds (5.05 start / 4.90 shed / 4.60 warn / 4.44 PFI) then have the same 0.3–0.9 V ladder as the field units. Also re-cluster U25 (`L22` 25.9 mm, `D34` 18–23 mm, `C149`/`C150` 5.4–8.8 mm from pins today) — pre-fab audit B5. +**Changes:** `R121` 53.6 k → **57.6 k/1 % 0603** → 0.8 × (1 + 57.6/10.2) = **5.32 V** (56.2 k → 5.21 V is the minimum acceptable). Within LTC4040 VIN range (3.5–5.5 V) and U25 rating; `5V_SENSE` unchanged. Pick the LCSC number in the sourcing pass (basic 0603 1 %). Governor thresholds (5.05 start / 4.90 shed / 4.60 warn / 4.44 PFI) then have the same 0.3–0.9 V ladder as the field units. Also re-cluster U25 (`L22` 25.9 mm, `D34` 18–23 mm, `C149`/`C150` 5.4–8.8 mm from pins today) — pre-fab audit B5. ### F8 — Robustness items (F1 PPTC, ETH_RST float, J9 ESD, DFU ESD placement, BOOT1 trap, PoE) | Item | v6 today | Verdict | Change | |---|---|---|---| -| F1 PPTC 3 A (C20627123) | `F1` between `/SYS5V` and `/SW_IN` → `Q1` → `/SW_5V` → `U21` LDO → F9P only (`/SW_5V` nodes: Q1.3, C3, C40, C119, U21). The modem is not behind it. | ⚠ | Harmless (≈ 15 mV at 150 mA) but pointless at 3 A; resize to 1–1.5 A hold so it actually protects the F9P/LDO, or keep and note. Not a blocker. | -| `ETH_RST` (PA15, pad 50 → `U11.37`) | Only two nodes; **no pull resistor**. `U12` (3V3_ETH buck) has EN tied to VIN (`U12.2` = `/SYS5V`) → `/3V3_ETH` is always up, on battery too. During an MCU reset PA15 floats, the W5500 leaves reset and draws ~130 mA for the ~4 s. | ❌ | Add 100 k 0603 (C103211) `ETH_RST` → GND (= V5.6 `R112`). Optional: drive `U12` EN from a free MCU pin (PD2 pad 54 or PB10 pad 29) with a 100 k pull-down so `/3V3_ETH` is fully off on battery and in reset. | +| F1 PPTC 3 A (C20627123) | `F1` between `/SYS5V` and `/SW_IN` → `Q1` → `/SW_5V` → `U21` LDO → F9P only (`/SW_5V` nodes: Q1.3, C3, C40, C119, U21). The modem is not behind it. | ⚠ | Harmless (≈ 15 mV at 150 mA) but pointless at 3 A; resize to 1–1.5 A hold so it actually protects the F9P/LDO, or keep and note. Not a blocker. | +| `ETH_RST` (PA15, pad 50 → `U11.37`) | Only two nodes; **no pull resistor**. `U12` (3V3_ETH buck) has EN tied to VIN (`U12.2` = `/SYS5V`) → `/3V3_ETH` is always up, on battery too. During an MCU reset PA15 floats, the W5500 leaves reset and draws ~130 mA for the ~4 s. | ❌ | Add 100 k 0603 (C103211) `ETH_RST` → GND (= V5.6 `R112`). Optional: drive `U12` EN from a free MCU pin (PD2 pad 54 or PB10 pad 29) with a 100 k pull-down so `/3V3_ETH` is fully off on battery and in reset. | | J9 modem USB-C ESD | `/USB_DP`, `/USB_DM`, `/USB_VBUS` nodes: J9 and U19 only. **No ESD device.** `Rcc1`/`Rcc2` 5.1 k present. | ❌ | Add USBLC6-2SC6 SOT-23-6 (C7519) at J9 (= V5.6 `D19`): I/O1 → USB_DM, I/O2 → USB_DP, VBUS → USB_VBUS. | -| DFU ESD at J11 | `D14` (DFU_DP) 3.0 mm, `D15` (DFU_DM) 3.7 mm, `D16` (DFU_VBUS) 6.6 mm from J11 centre. | ✅ | — | +| DFU ESD at J11 | `D14` (DFU_DP) 3.0 mm, `D15` (DFU_DM) 3.7 mm, `D16` (DFU_VBUS) 6.6 mm from J11 centre. | ✅ | — | | BOOT1 trap | `ETH_INT` = **PC0** (pad 8); PB2 (pad 28) = `/BOOT1_STRAP` with `R99` 10 k to GND; schematic note "never repurpose PB2". | ✅ | — | | PoE on J10 | `J10` HR911105A pins 7/8 unconnected; no PoE PD circuit. Firmware 0.6.0-eth documents "sin PoE". | ⚠ (decision) | Keep no PoE (external splitter). Record the decision; if PoE is ever wanted it is a v6.1 feature (PD controller + isolated DC-DC), not a patch. | | Cutoff bypass | `P5` CUTOFF-SW between `/MAIN5V` and `/SYS5V`; no solder-jumper in parallel (JP1 = fan, JP5 = RS-485 term). | ⚠ | Add `JP_CUT` (SolderJumper_2_Open) across P5, open by default (= V5.6 `JP6`). | -| Silkscreen | Not checked here (pre-fab audit: all labels 0.5 mm/0.1 mm). | — | `SW1 = RESET MCU`, `JP2 = F2 (Li-ion / LFP)`, `P5 = CUTOFF`, labels ≥ 0.8/0.15 mm. | +| Silkscreen | Not checked here (pre-fab audit: all labels 0.5 mm/0.1 mm). | — | `SW1 = RESET MCU`, `JP2 = F2 (Li-ion / LFP)`, `P5 = CUTOFF`, labels ≥ 0.8/0.15 mm. | **Verdict: ⚠ partial.** @@ -150,19 +170,19 @@ Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) | Check | Found in v6 | Assessment | |---|---|---| -| U25 output divider and margin to PFI / VSYS | `R121` 53.6 k / `R122` 10.2 k → 5.00 V; PFI 4.44 V (`R51` 270 k / `R52` 100 k); boost 4.79 V (`R53` 499 k / `R54` 100 k) | ❌ 0.56 V to PFI, 0.10 V to the 4.90 V shed line → `R121` 57.6 k (5.32 V) | -| Modem buck input on battery and UVLO margin | `/VIN_MODEM` ← `D21` PMEG3050EP ← `/MAIN5V` (boost) on battery; ← `D20` SS34 ← `/24V` on vehicle power | ⚠ ≈ 4.2–4.5 V at U20 VIN vs 3.8 V min → 0.4–0.7 V; improve with R53 511 k, lower-Vf D21 or VBAT_MODEM 3.6 V | +| U25 output divider and margin to PFI / VSYS | `R121` 53.6 k / `R122` 10.2 k → 5.00 V; PFI 4.44 V (`R51` 270 k / `R52` 100 k); boost 4.79 V (`R53` 499 k / `R54` 100 k) | ❌ 0.56 V to PFI, 0.10 V to the 4.90 V shed line → `R121` 57.6 k (5.32 V) | +| Modem buck input on battery and UVLO margin | `/VIN_MODEM` ← `D21` PMEG3050EP ← `/MAIN5V` (boost) on battery; ← `D20` SS34 ← `/24V` on vehicle power | ⚠ ≈ 4.2–4.5 V at U20 VIN vs 3.8 V min → 0.4–0.7 V; improve with R53 511 k, lower-Vf D21 or VBAT_MODEM 3.6 V | | MODEM_PWR_EN / PWRKEY / STATUS / RST to MCU | PC10 (pad 51) / PC8 (39, via Q20) / PC9 (40, via U24) / PC11 (52, via Q21); pull-downs R113/R114/R115 100 k | ✅ | -| Modem UART to MCU | USART6: PC7 RX ← `R106` 100 Ω ← `/DOUT_4G` (always); PC6 TX → `K1` NO → `/DIN_4G` (Mode B) | ✅ | -| Modem VBAT bulk near U19 | 440 µF (`C130`/`C131`) at 10.5–19.7 mm from pads 55–57; `C132` 22 µF at 5.6–7.3 mm | ⚠ move to ≤ 5 mm, pour VBAT_MODEM | -| `/SW_BAT` and `/BAT_PLUS` copper | 0.25 mm × 12.3 mm; 0.25–0.5 mm (+70 mm on In2); no pours | ❌ | +| Modem UART to MCU | USART6: PC7 RX ← `R106` 100 Ω ← `/DOUT_4G` (always); PC6 TX → `K1` NO → `/DIN_4G` (Mode B) | ✅ | +| Modem VBAT bulk near U19 | 440 µF (`C130`/`C131`) at 10.5–19.7 mm from pads 55–57; `C132` 22 µF at 5.6–7.3 mm | ⚠ move to ≤ 5 mm, pour VBAT_MODEM | +| `/SW_BAT` and `/BAT_PLUS` copper | 0.25 mm × 12.3 mm; 0.25–0.5 mm (+70 mm on In2); no pours | ❌ | | LTC4040 EP thermal vias | 0 in the EP; footprint has no ThermalVias variant | ❌ | | RNTB and JP2 default | `R55` 10 k; `JP2` 1-2 = Li-ion | ⚠ pending D1 | -| F1 / F2 fuses | `F1` PPTC 3 A on the F9P rail only; `F2` 2 A/125 V nano fuse in holder on `/24V_IN` (LCSC still TBD per pre-fab audit) | ⚠ resize F1 (optional); pick F2 part | +| F1 / F2 fuses | `F1` PPTC 3 A on the F9P rail only; `F2` 2 A/125 V nano fuse in holder on `/24V_IN` (LCSC still TBD per pre-fab audit) | ⚠ resize F1 (optional); pick F2 part | | ETH_RST pull | none | ❌ 100 k to GND | -| J9 / J11 ESD | J11 ✅ (D14/D15/D16 at 3–7 mm); J9 ❌ none | add USBLC6-2SC6 at J9 | +| J9 / J11 ESD | J11 ✅ (D14/D15/D16 at 3–7 mm); J9 ❌ none | add USBLC6-2SC6 at J9 | | W5500 PoE | none (J10 pins 7/8 open) | decision: stay without PoE | -| Switcher EP vias (U20, U25) | 0 vias within 3 mm of either EP | add thermal vias (secondary to U6) | +| Switcher EP vias (U20, U25) | 0 vias within 3 mm of either EP | add thermal vias (secondary to U6) | --- @@ -170,22 +190,22 @@ Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) | V5.6 item | Already in v6? | Action for v6 | |---|---|---| -| `MODEM_EN` sequencing (F9P first, modem 4 s later on a settled rail) | Hardware ✅ (`MODEM_PWR_EN` PC10 + `PWR_CTRL` PA1) | Firmware `board_v6.h` + `ENABLE_DUTY 1`; identical window logic to V5.6 0.7.0, plus PWRKEY pulse and `STATUS` wait. | +| `MODEM_EN` sequencing (F9P first, modem 4 s later on a settled rail) | Hardware ✅ (`MODEM_PWR_EN` PC10 + `PWR_CTRL` PA1) | Firmware `board_v6.h` + `ENABLE_DUTY 1`; identical window logic to V5.6 0.7.0, plus PWRKEY pulse and `STATUS` wait. | | RTCM / modem-UART visibility (`RTCM_TAP` PC7 = USART6_RX) | ✅ built in (`R106` → PC7; `K1` → PC6) | Byte counter on USART6 RX = "NTRIP flowing"; `rtcm_bps` field. | -| Thermal copper for U6 (ECO D2 / EMC #1 #2) | ❌ | `/SW_BAT` ≥ 2 mm pour, `/BAT_PLUS` ≥ 1.5 mm + vias, EP ≥ 9 vias, L6/C30 re-clustered. | -| `RS1` 10 mΩ (C105362) | ✅ | — | -| `R50` 1.5 k (C22843) | ❌ (825 Ω) | Change value. | +| Thermal copper for U6 (ECO D2 / EMC #1 #2) | ❌ | `/SW_BAT` ≥ 2 mm pour, `/BAT_PLUS` ≥ 1.5 mm + vias, EP ≥ 9 vias, L6/C30 re-clustered. | +| `RS1` 10 mΩ (C105362) | ✅ | — | +| `R50` 1.5 k (C22843) | ❌ (825 Ω) | Change value. | | `RNTB` 5.6 k + `JP2` 2-3 (if LFP) | ❌ (10 k, Li-ion) | Decide chemistry (D1); BOM/jumper only. | -| PSU set-point ≥ 5.2 V | ❌ (5.00 V) | `R121` 57.6 k → 5.32 V. | +| PSU set-point ≥ 5.2 V | ❌ (5.00 V) | `R121` 57.6 k → 5.32 V. | | ESD at connectors | J11 ✅ / J9 ❌ | USBLC6-2SC6 (C7519) at J9. | -| Fuse in the F9P rail | ⚠ (3 A PPTC) | Resize to 1–1.5 A or leave; document. | +| Fuse in the F9P rail | ⚠ (3 A PPTC) | Resize to 1–1.5 A or leave; document. | | `ETH_RST` pull-down 100 k | ❌ | Add (C103211). | | PoE decision | none by design | Keep; write it in the schematic block-N note. | | Second TMP102 / NTC at U6 | ❌ (no sensor near U6; TMP102 deleted in v6) | TMP102 SOT-563 (C99269, 0x48) between U6 and L6, or NTC → PC5. | | `JP_CUT` across the cutoff connector | ❌ | Solder jumper across `P5`. | -| 220 µF polymer on the F9P rail (`C3`) | `C3` 47 µF elco on `/SW_5V` | Optional on v6: `/SW_5V` only feeds the AP2112K LDO now. | -| 2 × 22 µF + 10 µF at the modem buck input | `C127` 10 µF + `C128` 1 µF | Add 2 × 22 µF (C86817) at `U20.2`. | -| AP64350 compensation (Rcomp 14 k, Ccomp 3.3 nF, 47 pF, RT 200 k, BST 100 nF) | v6 is the source (`R116` 14 k, `C141` 3.3 nF, `C142` 47 pF, `R117` 200 k, `C129` 100 nF) | Verify against the AP64350 datasheet application table for 3.8 V / 4.7 µH / 2 × 220 µF + 22 µF (same open point as V5.6 §6.1). | +| 220 µF polymer on the F9P rail (`C3`) | `C3` 47 µF elco on `/SW_5V` | Optional on v6: `/SW_5V` only feeds the AP2112K LDO now. | +| 2 × 22 µF + 10 µF at the modem buck input | `C127` 10 µF + `C128` 1 µF | Add 2 × 22 µF (C86817) at `U20.2`. | +| AP64350 compensation (Rcomp 14 k, Ccomp 3.3 nF, 47 pF, RT 200 k, BST 100 nF) | v6 is the source (`R116` 14 k, `C141` 3.3 nF, `C142` 47 pF, `R117` 200 k, `C129` 100 nF) | Verify against the AP64350 datasheet application table for 3.8 V / 4.7 µH / 2 × 220 µF + 22 µF (same open point as V5.6 §6.1). | --- @@ -193,21 +213,21 @@ Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) | # | Risk | Lesson | Item | Refdes / value / net | Owner | |---|---|---|---|---|---| -| 1 | 🔴 | F5 | LTC4040 copper + thermal vias + re-cluster | `/SW_BAT` 0.25 → ≥ 2 mm pour; `/BAT_PLUS` ≥ 1.5 mm + via farm; `U6` EP ≥ 9 × 0.3 mm vias; `L6` ≤ 5 mm; `C30`/`C31` ≤ 3 mm | Michelle | -| 2 | 🔴 | F7 | Vehicle PSU set-point | `R121` 53.6 k → **57.6 k/1 %** (5.32 V); re-cluster `L22`/`D34`/`C149`/`C150` | Leo (value) / Michelle (layout) | -| 3 | 🔴 | F4 | Charge current | `R50` 825 Ω → **1.5 k/1 %** (C22843) | Leo | -| 4 | 🟠 | F1 | Modem rail integrity on battery | `C130`/`C131` ≤ 5 mm from U19.55–57; pour `/VBAT_MODEM`; `/VIN_MODEM`, `/SW_MODEM` ≥ 0.8 mm; + 2 × 22 µF at `U20.2`; optional `R53` 511 k / D21 low-Vf / VBAT 3.6 V | Michelle / Leo | -| 5 | 🟠 | F5 | Temperature sensor at the charger | TMP102 SOT-563 (C99269, 0x48) between U6 and L6 + 100 nF, or NTC → PC5 | Leo | +| 1 | 🔴 | F5 | LTC4040 copper + thermal vias + re-cluster | `/SW_BAT` 0.25 → ≥ 2 mm pour; `/BAT_PLUS` ≥ 1.5 mm + via farm; `U6` EP ≥ 9 × 0.3 mm vias; `L6` ≤ 5 mm; `C30`/`C31` ≤ 3 mm | Michelle | +| 2 | 🔴 | F7 | Vehicle PSU set-point | `R121` 53.6 k → **57.6 k/1 %** (5.32 V); re-cluster `L22`/`D34`/`C149`/`C150` | Leo (value) / Michelle (layout) | +| 3 | 🔴 | F4 | Charge current | `R50` 825 Ω → **1.5 k/1 %** (C22843) | Leo | +| 4 | 🟠 | F1 | Modem rail integrity on battery | `C130`/`C131` ≤ 5 mm from U19.55–57; pour `/VBAT_MODEM`; `/VIN_MODEM`, `/SW_MODEM` ≥ 0.8 mm; + 2 × 22 µF at `U20.2`; optional `R53` 511 k / D21 low-Vf / VBAT 3.6 V | Michelle / Leo | +| 5 | 🟠 | F5 | Temperature sensor at the charger | TMP102 SOT-563 (C99269, 0x48) between U6 and L6 + 100 nF, or NTC → PC5 | Leo | | 6 | 🟠 | F8 | W5500 in reset while MCU resets | 100 k (C103211) `/ETH_RST` → GND; optional `U12` EN from PD2/PB10 | Leo | | 7 | 🟠 | F8 | Modem USB ESD | USBLC6-2SC6 (C7519) at `J9` | Leo | | 8 | 🟠 | F6 | NTC window / chemistry | `R55` 10 k → 5.6 k + `JP2` 2-3 if LFP-HT; else keep and display "pausa NTC" | Leo (decision D1) | | 9 | 🟡 | F8 | Cutoff bypass | `JP_CUT` solder jumper across `P5` | Michelle | -| 10 | 🟡 | F8 | F9P rail fuse | `F1` 3 A PPTC → 1–1.5 A hold (or document) ; `F2` part number (TBD) | Leo | +| 10 | 🟡 | F8 | F9P rail fuse | `F1` 3 A PPTC → 1–1.5 A hold (or document) ; `F2` part number (TBD) | Leo | | 11 | 🟡 | F9 | Identity without `$GPTXT` | `$PHID` from MCU UID on 4G too; server accepts it | Firmware / backend | | 12 | 🟡 | F1/F2/F3 | Firmware v6 | `board_v6.h` pins (PC10/PC8/PC9/PC11, USART6, PB5 K1), duty window, modem-only recovery, no stack cycle on battery | Firmware | | 13 | 🟡 | F8 | PoE | Record "no PoE, external splitter" in block N | Leo | | 14 | ⚪ | F1 | AP64350 compensation vs datasheet table | `R116`/`C141`/`C142`/`R117`/`C129` | Leo | -| 15 | ⚪ | F5 | Bench validation | Thermal camera U6/L6 at 1.3 A charge and 2.5 A backup, 1 h each; 20 battery duty cycles; U20 VIN scope at 3.5 V cell | Jesús / Leo | +| 15 | ⚪ | F5 | Bench validation | Thermal camera U6/L6 at 1.3 A charge and 2.5 A backup, 1 h each; 20 battery duty cycles; U20 VIN scope at 3.5 V cell | Jesús / Leo | **Tally: ✅ 3 (F1, F2, F3) · ⚠ 4 (F4, F6, F8, F9) · ❌ 2 (F5, F7).** @@ -215,8 +235,17 @@ Margins with 5.00 V: to PFI **0.56 V**; to the 0.6.0 governor shed line (4.90 V) ## 5. Notes and non-findings -- The v5.5 `DzG1` gate-clamp fix, the `R51` 270 k PFI choice (E-PFI 24-Jul) and the `RS1` 10 mΩ are already in v6. -- `U12` (3V3_ETH, MP1584EN from `/SYS5V`) keeps the MP1584 UVLO issue but Ethernet is not used on battery; firmware 0.6.0-eth holds the W5500 in reset without 5 V. Combined with the `ETH_RST` pull-down that is acceptable for v6. -- `C3` 47 µF and `C40` 22 µF on `/SW_5V` now only buffer the AP2112K LDO input; the V5.6 polymer upgrade is optional here. +- The v5.5 `DzG1` gate-clamp fix, the `R51` 270 k PFI choice (E-PFI 24-Jul) and the `RS1` 10 mΩ are already in v6. +- `U12` (3V3_ETH, MP1584EN from `/SYS5V`) keeps the MP1584 UVLO issue but Ethernet is not used on battery; firmware 0.6.0-eth holds the W5500 in reset without 5 V. Combined with the `ETH_RST` pull-down that is acceptable for v6. +- `C3` 47 µF and `C40` 22 µF on `/SW_5V` now only buffer the AP2112K LDO input; the V5.6 polymer upgrade is optional here. - Free MCU pins after this review: PC5 (25, ADC), PB10 (29), PA9 (42), PD2 (54). PC5 is the natural home for an on-board charger NTC; PD2/PB10 for a `U12` EN. - Nothing in this review changes the v6 architecture; every item is a value, a footprint or a layout change, so the pre-fab audit's B5/B6 pass (Michelle) can absorb items 1, 2 (layout part), 4 and 9 in one go. + +Ver también: [manual v6](../manuales/manual-tarjeta-v6.md) · [mapa de pines MCU v6](v6-pinmap.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-28 | Revisión original (inglés) con resumen ejecutivo en español. | +| 1.1 | 2026-09-29 | Resumen en español al frente, índice del cuerpo, enlaces. Sin cambios técnicos. | diff --git a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Schematic-Change-Report_v1.0.md b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Schematic-Change-Report_v1.0.md index 37808f0..f4fbfe1 100644 --- a/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Schematic-Change-Report_v1.0.md +++ b/03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Schematic-Change-Report_v1.0.md @@ -1,230 +1,231 @@ -# EinarBoard v6 — Schematic change report (v1.0) +--- +title: "EinarBoard v6 — Informe de cambios al esquemático" +tags: [project-drogheda, hardware, einarboard, v6, esquematico, auditoria, kicad] +date: 2026-09-28 +project: Project Drogheda +author: Helgen Technologies +--- -!!! warning "Tarjeta: EinarBoard **v6** — proyecto KiCad `hbox-watchdog-v6` (EN DISEÑO, no se pide todavía) / Board: v6, in design" +# EinarBoard v6 — Informe de cambios al esquemático + +!!! warning "EinarBoard v6 (`hbox-watchdog-v6`): en diseño, no se pide" Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios. +Fecha: 2026-09-28 · Proyecto: `kicad/hbox-watchdog-v6.*`, editado en su lugar (D17) · Implementa: [Auditoría completa v6](v6-auditoria-completa.md) §7.1 (Bloqueantes), §7.2 (Mayores), §7.3 Menores según D19, y las reglas de proyecto F-01 / D18 · Decisiones: `DECISIONS.md` D1–D19 (tomadas por delegación de Leo) · Autor: Helgen Technologies (elaborado con asistencia de Claude; ediciones por script sobre el texto S-expression con guarda de UUID; KiCad MCP solo para netlist, ERC, PDF, BOM, DRC y consultas de librería) · Estado: esquemático, reglas de proyecto y librería listos; **`hbox-watchdog-v6.kicad_pcb` no se tocó** (Michelle ejecuta *Update PCB from Schematic*, §10). -**Date:** 2026-09-28 · **Project:** `kicad/hbox-watchdog-v6.*`, edited in place (D17) · **Implements:** `2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md` §7.1 (Blockers), §7.2 (Majors), §7.3 Minors per D19, and F-01 / D18 project rules · **Decisions:** `DECISIONS.md` D1–D19 (taken on Leo's delegation) · **Author:** Claude (scripted span-scoped S-expression edits with a UUID guard; KiCad MCP used only for netlist, ERC, PDF, BOM, DRC, library lookups and a scratch file) · **Status:** schematic, project rules and library done; **`hbox-watchdog-v6.kicad_pcb` not touched** (Michelle runs *Update PCB from Schematic*, §10). +Traducido del original en inglés (28-sep-2026). -## Resumen (ES) +## Resumen -Se aplicaron al esquemático de v6 todos los Blockers y Majors de la auditoría que son de esquemático, y los Minors de la lista D19. El módem (U20) ahora se alimenta sólo de MAIN5V (D20/D21 eliminados), el ventilador sale de VEH5V (bloque U2 y rama Q10 en DNP) y F2 (3 A) queda antes de D10. Se añadieron limitador de antena GNSS (TPS2552), TVS en ignición, sensores TMP102 del cargador (0x48) y del módem (0x49), buffer U27 hacia el F9P, ESD en J9 y en P6/P7/P8, y se corrigieron valores (R50 1.43 k, R121 57.6 k, compensación de U20, cristales). Cada grupo se comprobó con un diff de netlist: **lo esperado coincide exactamente con lo obtenido** (137 cambios de componentes/campos/pines + 16 cambios de clase de red). ERC: **0 errores** (166 → 134 warnings, todos explicados). El PCB no se tocó; Michelle debe ejecutar *Update PCB* marcando «Delete footprints with no symbols». +Se aplicaron al esquemático de v6 todos los Bloqueantes y Mayores de la auditoría que son de esquemático, y los Menores de la lista D19. El módem (U20) ahora se alimenta sólo de MAIN5V (D20/D21 eliminados), el ventilador sale de VEH5V (bloque U2 y rama Q10 en DNP) y F2 (3 A) queda antes de D10. Se añadieron limitador de antena GNSS (TPS2552), TVS en ignición, sensores TMP102 del cargador (0x48) y del módem (0x49), buffer U27 hacia el F9P, ESD en J9 y en P6/P7/P8, y se corrigieron valores (R50 1.43 k, R121 57.6 k, compensación de U20, cristales). Cada grupo se comprobó con un diff de netlist: lo esperado coincide exactamente con lo obtenido (137 cambios de componentes/campos/pines + 16 cambios de clase de red). ERC: **0 errores** (166 → 134 avisos, todos explicados). El PCB no se tocó; Michelle debe ejecutar *Update PCB* marcando «Delete footprints with no symbols». -## 0. Summary +## 0. Tabla resumen -| Item | Result | +| Ítem | Resultado | |---|---| -| Files edited in place | `hbox-watchdog-v6.kicad_sch`, `hbox-watchdog-v6.kicad_pro` (net classes only), `hbox-watchdog-v6.kicad_dru`, `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` | -| `hbox-watchdog-v6.kicad_pcb` | **Byte-identical** (sha256 `6ddec80d…` before and after) | -| Changes applied | Group 1 Blockers: 10 finding IDs · Group 2 Majors: 13 · Group 3 Minors: 19 (D19 list) · Group 4 rules/library: F-01, H-04 | -| Parts | **37 added** (U27–U31, R135–R144, C161–C174, D35–D38, TP9–TP11, JP6), **3 removed** (D20, D21, PWR_FLAG PF15), **17 set DNP**, 1 symbol swapped (Y3 → `Device:Crystal_GND24`) | -| Netlist proof | Every group: expected == actual (0 unexpected, 0 missing). Baseline → final: 37 added / 3 removed / 125 field / 22 pin-net / 16 net-class changes; composed group expectations = final netlist with **0 differences** (`netlist_diff_total.md`) | -| ERC (kicad-cli 10.0.4) | **0 errors** before and after · warnings 166 → 134 (§5) | -| Overlaps / wire crossings | 30 → 30 overlaps (all pre-existing bbox hits) · 8 → 9 wire crossings (+1 is a tool bbox artefact on U30, checked in the PDF) | -| BOM | Every populated part has an LCSC number except the pre-existing copper pads TP1–TP8 (unchanged). New pads TP9–TP11 and JP6 are excluded from the BOM | -| PDF | `03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf` (sha256 `a2c94a49…`) | +| Archivos editados en su lugar | `hbox-watchdog-v6.kicad_sch`, `hbox-watchdog-v6.kicad_pro` (solo clases de red), `hbox-watchdog-v6.kicad_dru`, `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` | +| `hbox-watchdog-v6.kicad_pcb` | Byte-idéntico (SHA-256 `6ddec80d…` antes y después) | +| Cambios aplicados | Grupo 1 Bloqueantes: 10 hallazgos · Grupo 2 Mayores: 13 · Grupo 3 Menores: 19 (lista D19) · Grupo 4 reglas/librería: F-01, H-04 | +| Partes | **37 añadidas** (U27–U31, R135–R144, C161–C174, D35–D38, TP9–TP11, JP6), **3 eliminadas** (D20, D21, PWR_FLAG PF15), **17 puestas en DNP**, 1 símbolo sustituido (Y3 → `Device:Crystal_GND24`) | +| Prueba por netlist | En cada grupo: esperado == obtenido (0 inesperados, 0 faltantes). Línea base → final: 37 añadidos / 3 eliminados / 125 campos / 22 pin-net / 16 clases de red; la composición de las expectativas por grupo = netlist final con **0 diferencias** (`netlist_diff_total.md`) | +| ERC (kicad-cli 10.0.4) | **0 errores** antes y después · avisos 166 → 134 (§5) | +| Solapes / cruces de cables | 30 → 30 solapes (todos preexistentes, por caja envolvente) · 8 → 9 cruces de cable (+1 es un artefacto de caja envolvente de la herramienta en U30, comprobado en el PDF) | +| BOM | Toda parte poblada tiene número LCSC salvo los pads de cobre preexistentes TP1–TP8 (sin cambio). Los pads nuevos TP9–TP11 y JP6 quedan fuera del BOM | +| PDF | `03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf` | -## 1. Hashes +## 1. Integridad de archivos -| File | Before | After | -|---|---|---| -| `hbox-watchdog-v6.kicad_sch` | `ecee9fed851f02e74074340bf8361bced7c385b2502b19c368861b9851c2f04a` | `d54e330d189910afd58e18fc7cd498bdb3e6e5b7b3c4472b6cae7f95650b34c4` | -| `hbox-watchdog-v6.kicad_pro` | `25c57f3936b96a4e31cb5947668c172d318189258d6a5d2fa34d230df8958028` | `d577aa43076f5f751c291041dbf3054cb93a87facfe9f339ef91b60e073bd6ce` | -| `hbox-watchdog-v6.kicad_dru` | `47538e6cfadc0c53421ff59dadabc0e7f0ad5f11d9e2250618728788080aca1a` | `31ce0f4f23e8178b4b5e837b452e7bb8647d446ffd420559049eaaae78100831` | -| `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` | `0171be85ff9bf1d27232731a9931ad9d6c3c2bcdee2f5f3558ee94d2566413f9` | `3f38f26e435c477a7701636d4d5e1c05b4c7bd523e8dd04f9f57128657736313` | -| `hbox-watchdog-v6.kicad_pcb` | `6ddec80d1c15f79e69dff6c1a850b28345a5d826389f79cee8c61998240b36bf` | unchanged | +Los hashes SHA-256 de cada archivo antes y después están en el anexo de trazabilidad. Comprobación previa: los hashes de sch y pro coincidían con la línea base de la auditoría; no había `~hbox-watchdog-v6.*.lck` (solo existen los bloqueos de v5). No se ejecutó `git` en la carpeta montada. -Pre-flight: sch and pro hashes matched the audit baseline; no `~hbox-watchdog-v6.*.lck` (only the v5 locks exist). No git was run in the mounted folder. +## 2. Cambios por hallazgo -## 2. Changes by finding +Método: cada edición es un empalme sobre el texto original, acotado a un nodo S-expression (valor de propiedad, átomo de bandera, nombre de etiqueta, punto de cable, o el nodo completo en las eliminaciones). Antes de escribir, una guarda compara el multiconjunto de UUID: ningún UUID preexistente puede desaparecer o cambiar salvo en los elementos eliminados a propósito, y no pueden aparecer duplicados nuevos. Todos los bytes no tocados quedan idénticos. Los símbolos, cables y etiquetas nuevos se escriben en el formato canónico de KiCad; cada parte nueva se cablea con un cable de 2.54 mm a una etiqueta local con el nombre exacto de la net existente (etiquetas `GND` locales, como en el resto de la hoja). El único símbolo de librería no estándar es el TPS2552 (§7). -Method: every edit is a splice on the original text, scoped to one S-expression node (property value, flag atom, label name, wire point, or a whole node for deletions). Before writing, a guard compares the multiset of UUIDs: no pre-existing UUID may disappear or change except for deliberately deleted items, and no new duplicates may appear. All untouched bytes stay identical. New symbols, wires and labels are written in KiCad's canonical layout; each new part is wired with a 2.54 mm wire to a local label carrying the exact existing net name (local `GND` labels as in the rest of the sheet). The only non-standard library symbol is TPS2552 (§7). +### 2.1 Bloqueantes (§7.1) -### 2.1 Blockers (§7.1) - -| Finding | Ref | From → To | LCSC | Pins / nets | +| Hallazgo | Ref | De → A | LCSC | Pines / nets | |---|---|---|---|---| -| A-01 | D20 | SS34 (C8678) → **removed** | — | its labels `VIN_MODEM` (K) and `24V` (A) deleted | -| A-01 | D21 | PMEG3050EP (C50603) → **removed** | — | its labels `VIN_MODEM` (K) and `MAIN5V` (A) deleted | -| A-01 | PF15 | PWR_FLAG on `/VIN_MODEM` → **removed** with its label | — | the net no longer exists; PF2 already flags `/MAIN5V` | -| A-01 | U20.2, C127.1, C128.1 | `/VIN_MODEM` → **`/MAIN5V`** (labels renamed) | — | no `VIN_MODEM` label remains (6 of 6 handled) | -| A-01 | U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21 | fitted → **DNP** | unchanged | fan now from `/VEH5V` via JP1 | -| A-01 | JP1 | `…SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` → **`Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm`** | no part | `/5V_FAN` = `/VEH5V` in copper (net-tie footprint) | -| A-01 | Q10, DzG1, Rrp1, C10, C11, C22 | fitted → **DNP** | unchanged | `/24V` loads checked first: {C10, C11, C22, D20, DzG1, Q10, Ren1, U2} + virtual PF6 → nothing left fitted | -| A-01 + V1-01 | F2 | `2A/125V-NANO2-in-holder` C206910 → **`3A/125V-NANO2-in-holder`**, MPN 0154003.DR, Littelfuse; same holder footprint | **C206912** | P1.1 → F2 → `/VIN_FUSED` | -| V1-01 | D10 | pin 1 on `/24V_IN` → **`/VIN_FUSED`** | C224019 (unchanged) | `/VIN_FUSED` = {F2.2, D10.1, Q23.2}; topology in §8 | -| A-03 | R50 | 825R/1% C50214 → **1.43k/1%** | **C22840** | 1.316–1.483 A | -| B-03 | D28 | ESD9L5.0ST5G C82326, SOD-923 → **PESD0402-240**, `Diode_SMD:D_0402_1005Metric`, Littelfuse | **C1975527** | pin 1 `/RF_ANT_LTE`, pin 2 GND (symbol kept; pins 1/2 map to the 0402 pads) | -| C-01 | **U28 (new)** | TPS2552DBVR, SOT-23-6 | **C46506** | 1 IN `/3V3_GNSS` · 2 GND · 3 ~EN `/GNSS_ANT_OFF` · 4 ~FAULT `/GNSS_ANT_SHORT_N` · 5 ILIM `/3V3_GNSS` (75 mA) · 6 OUT **`/ANT_BIAS`** | -| C-01 | **R135 (new)** | 100k, ~EN → GND (antenna ON by default) | C25803 | `/GNSS_ANT_OFF` – GND | -| C-01 | **R136 (new)** | 10k, FAULT pull-up | C25804 | `/3V3_GNSS` – `/GNSS_ANT_SHORT_N` | -| C-01 | L21.2, C144.1, C145.1 | `/VCC_RF_GNSS` → **`/ANT_BIAS`** | unchanged | | -| C-01 | U18.7 VCC_RF | `/VCC_RF_GNSS` → **NC** (label deleted, no-connect flag added) | — | | -| C-01 | U18.5 ANT_OFF | NC flag → label **`/GNSS_ANT_OFF`** | — | | -| F-02 | **D35 (new)** | SMBJ33A, `Diode_SMD:D_SMB` (same symbol as D10) | **C224019** | 1 (cathode) `/IGN_IN`, 2 GND; place at P1.3 | -| F-02 | Rig1 | unchanged (22k C88614); move to P1.3 is layout | — | `/IGN_IN` = {P1.3, Rig1.1, D35.1} | -| H-01 | U15 | `Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm` → **`Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`** | C15846 (unchanged) | | -| H-02 | U10 | C729142 (SC16IS762) → **C57156**, MPN SC16IS752IPW,128 (value already SC16IS752IPW; symbol kept) | **C57156** | pinout identical | -| H-02 | R53 | 499k/1% C131054 → same value, MPN RCT03499KFLF, HKR | **C177479** | | -| H-04 | U25 | no `LCSC Part` in the schematic symbol; the field comes from the library footprint → removed there (§7) | C524806 | | -| F-01 | project | net classes + `.kicad_dru` (§6) | — | | -| G-01 | MH4 + heatsink pair | **not applied** — board-only (§10) | — | | +| A-01 | D20 | SS34 (C8678) → eliminado | — | sus etiquetas `VIN_MODEM` (K) y `24V` (A) borradas | +| A-01 | D21 | PMEG3050EP (C50603) → eliminado | — | sus etiquetas `VIN_MODEM` (K) y `MAIN5V` (A) borradas | +| A-01 | PF15 | PWR_FLAG en `/VIN_MODEM` → eliminado con su etiqueta | — | la net ya no existe; PF2 ya marca `/MAIN5V` | +| A-01 | U20.2, C127.1, C128.1 | `/VIN_MODEM` → **`/MAIN5V`** (etiquetas renombradas) | — | no queda ninguna etiqueta `VIN_MODEM` (6 de 6 atendidas) | +| A-01 | U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21 | montado → DNP | sin cambio | el ventilador ahora sale de `/VEH5V` vía JP1 | +| A-01 | JP1 | `…SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm` → **`Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm`** | sin parte | `/5V_FAN` = `/VEH5V` en cobre (huella tipo net-tie) | +| A-01 | Q10, DzG1, Rrp1, C10, C11, C22 | montado → DNP | sin cambio | cargas de `/24V` revisadas primero: {C10, C11, C22, D20, DzG1, Q10, Ren1, U2} + PF6 virtual → no queda nada montado | +| A-01 + V1-01 | F2 | `2A/125V-NANO2-in-holder` C206910 → **`3A/125V-NANO2-in-holder`**, MPN 0154003.DR, Littelfuse; misma huella de portafusible | **C206912** | P1.1 → F2 → `/VIN_FUSED` | +| V1-01 | D10 | pin 1 en `/24V_IN` → **`/VIN_FUSED`** | C224019 (sin cambio) | `/VIN_FUSED` = {F2.2, D10.1, Q23.2}; topología en §8 | +| A-03 | R50 | 825R/1% C50214 → **1.43k/1%** | **C22840** | 1.316–1.483 A | +| B-03 | D28 | ESD9L5.0ST5G C82326, SOD-923 → **PESD0402-240**, `Diode_SMD:D_0402_1005Metric`, Littelfuse | **C1975527** | pin 1 `/RF_ANT_LTE`, pin 2 GND (símbolo conservado; pines 1/2 mapean a los pads 0402) | +| C-01 | **U28 (nuevo)** | TPS2552DBVR, SOT-23-6 | **C46506** | 1 IN `/3V3_GNSS` · 2 GND · 3 ~EN `/GNSS_ANT_OFF` · 4 ~FAULT `/GNSS_ANT_SHORT_N` · 5 ILIM `/3V3_GNSS` (75 mA) · 6 OUT **`/ANT_BIAS`** | +| C-01 | **R135 (nuevo)** | 100k, ~EN → GND (antena encendida por omisión) | C25803 | `/GNSS_ANT_OFF` – GND | +| C-01 | **R136 (nuevo)** | 10k, pull-up de FAULT | C25804 | `/3V3_GNSS` – `/GNSS_ANT_SHORT_N` | +| C-01 | L21.2, C144.1, C145.1 | `/VCC_RF_GNSS` → **`/ANT_BIAS`** | sin cambio | | +| C-01 | U18.7 VCC_RF | `/VCC_RF_GNSS` → NC (etiqueta borrada, bandera no-connect añadida) | — | | +| C-01 | U18.5 ANT_OFF | bandera NC → etiqueta **`/GNSS_ANT_OFF`** | — | | +| F-02 | **D35 (nuevo)** | SMBJ33A, `Diode_SMD:D_SMB` (mismo símbolo que D10) | **C224019** | 1 (cátodo) `/IGN_IN`, 2 GND; colocar en P1.3 | +| F-02 | Rig1 | sin cambio (22k C88614); moverlo a P1.3 es layout | — | `/IGN_IN` = {P1.3, Rig1.1, D35.1} | +| H-01 | U15 | `Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm` → **`Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`** | C15846 (sin cambio) | | +| H-02 | U10 | C729142 (SC16IS762) → **C57156**, MPN SC16IS752IPW,128 (el valor ya era SC16IS752IPW; símbolo conservado) | **C57156** | pinout idéntico | +| H-02 | R53 | 499k/1% C131054 → mismo valor, MPN RCT03499KFLF, HKR | **C177479** | | +| H-04 | U25 | sin `LCSC Part` en el símbolo del esquemático; el campo venía de la huella de librería → eliminado ahí (§7) | C524806 | | +| F-01 | proyecto | clases de red + `.kicad_dru` (§6) | — | | +| G-01 | MH4 + par de disipador | **no aplicado** — solo tarjeta (§10) | — | | -### 2.2 Majors (§7.2) +### 2.2 Mayores (§7.2) -| Finding | Ref | From → To | LCSC | Pins / nets | +| Hallazgo | Ref | De → A | LCSC | Pines / nets | |---|---|---|---|---| | A-04 | R121 | 53.6k/1% C23074 → **57.6k/1%** | **C23082** | U25 5.18/5.32/5.46 V | -| A-05 | **C161, C162 (new)** | 47uF X7R 1210 | **C5440143** | `/MAIN5V` – GND (at U6 VSYS 1/24) | -| A-08 | U17 | AMS1117-3.3 C6186 → **TLV1117LV33DCYR** (TI); symbol `Regulator_Linear:AMS1117-3.3` kept (same 1 GND / 2 OUT / 3 IN, tab = OUT) | **C15578** | pins unchanged | -| A-09 | C78 | 220uF/10V MVG C2827940 → **220uF/16V polymer**, Lelon OVZ221M1CTR-0608, same CP_Elec_6.3x7.7 | **C881921** | pin 1 `/VEH5V` = + pad | -| B-02 | C130, C131 | same as C78 → **220uF/16V polymer** | **C881921** | | +| A-05 | **C161, C162 (nuevos)** | 47uF X7R 1210 | **C5440143** | `/MAIN5V` – GND (en U6 VSYS 1/24) | +| A-08 | U17 | AMS1117-3.3 C6186 → **TLV1117LV33DCYR** (TI); símbolo `Regulator_Linear:AMS1117-3.3` conservado (mismo 1 GND / 2 OUT / 3 IN, lengüeta = OUT) | **C15578** | pines sin cambio | +| A-09 | C78 | 220uF/10V MVG C2827940 → **220uF/16V polímero**, Lelon OVZ221M1CTR-0608, misma CP_Elec_6.3x7.7 | **C881921** | pin 1 `/VEH5V` = pad + | +| B-02 | C130, C131 | igual que C78 → **220uF/16V polímero** | **C881921** | | | B-02 | R116 | 14k C22803 → **113k/1%** | **C22862** | | | B-02 | C141 | 3.3nF C1536 → **6.8nF** X7R 0402 | **C1542** | | | B-02 | C142 | 47pF C1567 → **56pF** C0G 0402 | **C1572** | | -| B-02 | **C166, C167 (new)** | 22uF 16 V X5R 0805 | **C86817** | `/VBAT_MODEM` – GND (at L20.2) | -| F-03 | **C163, C164 (new)** | 22uF 16 V 0805 | **C86817** | `/MAIN5V` – GND (at U20.2) | -| F-03 | **C165 (new)** | 220uF/16V polymer, `Device:C_Polarized`, CP_Elec_6.3x7.7 | **C881921** | 1 (+) `/MAIN5V`, 2 GND | -| F-51 | **U29 (new)** | TMP102AIDRLR, SOT-563, **I²C 0x48** | **C99269** | 1 SCL `/I2C_SCL` · 2 GND · 3 ALERT NC · 4 ADD0 GND · 5 V+ `/3V3` · 6 SDA `/I2C_SDA` | -| F-51 | **C168 (new)** | 100nF 0603 | C14663 | `/3V3` – GND | -| F-51 | **R137 / R138 / C169 (new)** | 100k/1% top · 120k/1% bottom · 10nF 0603 | C25803 · **C25808** · C1589 | `/NTC` → R137 → **`/NTC_CELL`** → R138/C169 → GND | -| F-51 | U16.25 PC5 | NC flag → label **`/NTC_CELL`** (ADC1_IN15) | — | | -| C-02 | U21 | AP2112K-3.3 C51118 → **TPS7A2033PDBVR** (TI); symbol `Drogheda-sym:LDO_SOT23-5` kept (its generic 1 VIN / 2 GND / 3 EN / 4 NC / 5 VOUT pinout is the TPS7A20 DBV pinout) | **C2862740** | pins unchanged | -| E-01 | U12.2 EN | `/SYS5V` → **`/ETH_PWR_EN`** (label renamed; U12.7 VIN stays on `/SYS5V`) | — | | -| E-01 | U16.54 PD2 | NC flag → label **`/ETH_PWR_EN`** | — | | -| E-01 | **R139 (new)** | 100k PD | C25803 | `/ETH_PWR_EN` – GND | -| E-02 | **R140 (new)** | 4.7k | **C23162** | `/ETH_RST` – GND (at U11.37) | -| D-01 | **U27 (new)** | 74LVC1G125GV,125 (Nexperia), SOT-753 on `Package_TO_SOT_SMD:SOT-23-5` (same SC-74A land) | **C12518** | 1 ~OE GND · 2 A `/DOUT_4G` · 3 GND · 4 Y **`/DOUT_4G_F9P`** · 5 VCC `/3V3_GNSS` | -| D-01 | **C170 (new)** | 100nF 0603 | C14663 | `/3V3_GNSS` – GND | -| D-01 | U18.26 RXD2 | `/DOUT_4G` → **`/DOUT_4G_F9P`** | — | PC7/R106 stay on `/DOUT_4G` | +| B-02 | **C166, C167 (nuevos)** | 22uF 16 V X5R 0805 | **C86817** | `/VBAT_MODEM` – GND (en L20.2) | +| F-03 | **C163, C164 (nuevos)** | 22uF 16 V 0805 | **C86817** | `/MAIN5V` – GND (en U20.2) | +| F-03 | **C165 (nuevo)** | 220uF/16V polímero, `Device:C_Polarized`, CP_Elec_6.3x7.7 | **C881921** | 1 (+) `/MAIN5V`, 2 GND | +| F-51 | **U29 (nuevo)** | TMP102AIDRLR, SOT-563, **I²C 0x48** | **C99269** | 1 SCL `/I2C_SCL` · 2 GND · 3 ALERT NC · 4 ADD0 GND · 5 V+ `/3V3` · 6 SDA `/I2C_SDA` | +| F-51 | **C168 (nuevo)** | 100nF 0603 | C14663 | `/3V3` – GND | +| F-51 | **R137 / R138 / C169 (nuevos)** | 100k/1% arriba · 120k/1% abajo · 10nF 0603 | C25803 · **C25808** · C1589 | `/NTC` → R137 → **`/NTC_CELL`** → R138/C169 → GND | +| F-51 | U16.25 PC5 | bandera NC → etiqueta **`/NTC_CELL`** (ADC1_IN15) | — | | +| C-02 | U21 | AP2112K-3.3 C51118 → **TPS7A2033PDBVR** (TI); símbolo `Drogheda-sym:LDO_SOT23-5` conservado (su pinout genérico 1 VIN / 2 GND / 3 EN / 4 NC / 5 VOUT es el del TPS7A20 DBV) | **C2862740** | pines sin cambio | +| E-01 | U12.2 EN | `/SYS5V` → **`/ETH_PWR_EN`** (etiqueta renombrada; U12.7 VIN sigue en `/SYS5V`) | — | | +| E-01 | U16.54 PD2 | bandera NC → etiqueta **`/ETH_PWR_EN`** | — | | +| E-01 | **R139 (nuevo)** | 100k PD | C25803 | `/ETH_PWR_EN` – GND | +| E-02 | **R140 (nuevo)** | 4.7k | **C23162** | `/ETH_RST` – GND (en U11.37) | +| D-01 | **U27 (nuevo)** | 74LVC1G125GV,125 (Nexperia), SOT-753 sobre `Package_TO_SOT_SMD:SOT-23-5` (mismo land SC-74A) | **C12518** | 1 ~OE GND · 2 A `/DOUT_4G` · 3 GND · 4 Y **`/DOUT_4G_F9P`** · 5 VCC `/3V3_GNSS` | +| D-01 | **C170 (nuevo)** | 100nF 0603 | C14663 | `/3V3_GNSS` – GND | +| D-01 | U18.26 RXD2 | `/DOUT_4G` → **`/DOUT_4G_F9P`** | — | PC7/R106 siguen en `/DOUT_4G` | | D-01 | Rdfu1 | 22k C88614 → **100k** | **C25803** | | -| G-02 | **U30 (new)** | USBLC6-2SC6, SOT-23-6 | **C7519** | 1,6 `/USB_DM` · 3,4 `/USB_DP` · 5 `/USB_VBUS` · 2 GND | -| H-02b | R56, R57, R58, R85, R87, Rgs1 | C103211 (100k 5 %) → **C25803** (100k 1 %) | **C25803** | value text kept `100k`. R20/Ren1/Rfreq1 not changed (U2 block is DNP) | -| V1-01, F-12, F-05, F-06, C-04, A-07, A-02 | — | layout-only → §10 | | | +| G-02 | **U30 (nuevo)** | USBLC6-2SC6, SOT-23-6 | **C7519** | 1,6 `/USB_DM` · 3,4 `/USB_DP` · 5 `/USB_VBUS` · 2 GND | +| H-02b | R56, R57, R58, R85, R87, Rgs1 | C103211 (100k 5 %) → **C25803** (100k 1 %) | **C25803** | texto de valor conservado `100k`. R20/Ren1/Rfreq1 sin cambio (el bloque U2 es DNP) | +| V1-01, F-12, F-05, F-06, C-04, A-07, A-02 | — | solo layout → §10 | | | -### 2.3 Minors (D19 list) +### 2.3 Menores (lista D19) -| Finding | Ref | From → To | LCSC | Pins / nets | +| Hallazgo | Ref | De → A | LCSC | Pines / nets | |---|---|---|---|---| -| A-11 | R56.2 | GND → **`/3V3`** (label renamed): CHGOFF pulled up → charger **OFF** without MCU | C25803 | | -| A-13 | U6.20, TP2.1 | `/PFO_TP` → **`/PFO`** (labels renamed) | — | | -| A-13 | U16.29 PB10 | NC flag → label **`/PFO`** | — | | -| A-13 | **R141 (new)** | 100k PU | C25803 | `/3V3` – `/PFO` | -| B-09 | R132, R133, R134 | 0R C304185 → **22R** | **C23345** | R131 (VDD) stays 0R | -| B-09 | **C171 (new)** | 100nF 0402 at J14.C1 | **C1525** | **`/SIMB_VDD`** – GND (J14.C1 is on `/SIMB_VDD`, after R131; the report's "(`/SIM_VDD`)" names the modem side) | -| B-10 | **R142 (new)** | 100k PD | C25803 | `/MODEM_STATUS` – GND | -| B-10 | **R143 (new)** | 100k PU | C25803 | `/3V3` – `/DIN_4G` | +| A-11 | R56.2 | GND → **`/3V3` (etiqueta renombrada): CHGOFF con pull-up → cargador apagado** sin MCU | C25803 | | +| A-13 | U6.20, TP2.1 | `/PFO_TP` → **`/PFO`** (etiquetas renombradas) | — | | +| A-13 | U16.29 PB10 | bandera NC → etiqueta **`/PFO`** | — | | +| A-13 | **R141 (nuevo)** | 100k PU | C25803 | `/3V3` – `/PFO` | +| B-09 | R132, R133, R134 | 0R C304185 → **22R** | **C23345** | R131 (VDD) sigue en 0R | +| B-09 | **C171 (nuevo)** | 100nF 0402 en J14.C1 | **C1525** | **`/SIMB_VDD`** – GND (J14.C1 está en `/SIMB_VDD`, después de R131; el «(`/SIM_VDD`)» del informe nombra el lado del módem) | +| B-10 | **R142 (nuevo)** | 100k PD | C25803 | `/MODEM_STATUS` – GND | +| B-10 | **R143 (nuevo)** | 100k PU | C25803 | `/3V3` – `/DIN_4G` | | B-10 | R106 | 100R C22775 → **1k** | **C14676** | | -| C-07 | U18.50 SAFEBOOT_N | NC flag → label **`/GNSS_SAFEBOOT_N`** | — | | -| C-07 | **TP10, TP11 (new)** | `TestPoint:TestPoint_Pad_D1.0mm`, not in BOM | no part | TP10 `/GNSS_SAFEBOOT_N`, TP11 `/GNSS_RESET_N` | -| D-02 | Y3 | `Device:Crystal` HC-49SD C14872 → **`Device:Crystal_GND24`**, `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm`, SCTF SX3B25.000F1010F30 (25 MHz, CL 10 pF, ESR 30 Ω) | **C2901684** | pin 1 `/HSE_IN` · **pin 3 `/HSE_OUT`** · pins 2/4 **GND** (new wire + GND label). Symbol swap needed: a 2-pin symbol on the 4-pad land would have put HSE_OUT on GND pad 2. New pin 3 sits exactly where old pin 2 was, so the `HSE_OUT` label connects unchanged | +| C-07 | U18.50 SAFEBOOT_N | bandera NC → etiqueta **`/GNSS_SAFEBOOT_N`** | — | | +| C-07 | **TP10, TP11 (nuevos)** | `TestPoint:TestPoint_Pad_D1.0mm`, fuera del BOM | sin parte | TP10 `/GNSS_SAFEBOOT_N`, TP11 `/GNSS_RESET_N` | +| D-02 | Y3 | `Device:Crystal` HC-49SD C14872 → **`Device:Crystal_GND24`**, `Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm`, SCTF SX3B25.000F1010F30 (25 MHz, CL 10 pF, ESR 30 Ω) | **C2901684** | pin 1 `/HSE_IN` · **pin 3 `/HSE_OUT`** · pines 2/4 **GND** (cable nuevo + etiqueta GND). Hacía falta cambiar el símbolo: uno de 2 pines sobre el land de 4 pads habría puesto HSE_OUT en el pad 2 de GND. El pin 3 nuevo queda exactamente donde estaba el pin 2 viejo, así que la etiqueta `HSE_OUT` conecta sin cambio | | D-02 | C113, C114 | 15pF C1644 → **12pF** C0G | **C38523** | | -| D-03 | Y4 | FC-135 CL 12.5 pF C32346 → **FC-135 CL 7 pF** (Epson Q13FC13500002; 7 pF confirmed on distributor listings) | **C48615** | footprint unchanged | +| D-03 | Y4 | FC-135 CL 12.5 pF C32346 → **FC-135 CL 7 pF** (Epson Q13FC13500002; 7 pF confirmado en listados de distribuidores) | **C48615** | huella sin cambio | | D-03 | C115, C116 | 12pF C38523 → **6.8pF** C0G | **C1679** | | -| D-05 | Rigb1 | 3.3k C22978 → **2.2k** | **C4190** | ratio 0.0833 | -| D-09 | **R144 (new)** | 100k PD at Q5 base | C25803 | `/BASE_LS` – GND | -| D-12 | U16.42 PA9 | NC flag → label **`/USART1_TX`** | — | | -| D-12 | **TP9 (new)** | `TestPoint:TestPoint_Pad_D1.5mm`, not in BOM | no part | `/USART1_TX` | -| E-03 | C95, C96 | 18pF C1647 → **33pF** C0G (Y1 kept) | **C1663** | | +| D-05 | Rigb1 | 3.3k C22978 → **2.2k** | **C4190** | relación 0.0833 | +| D-09 | **R144 (nuevo)** | 100k PD en la base de Q5 | C25803 | `/BASE_LS` – GND | +| D-12 | U16.42 PA9 | bandera NC → etiqueta **`/USART1_TX`** | — | | +| D-12 | **TP9 (nuevo)** | `TestPoint:TestPoint_Pad_D1.5mm`, fuera del BOM | sin parte | `/USART1_TX` | +| E-03 | C95, C96 | 18pF C1647 → **33pF** C0G (Y1 conservado) | **C1663** | | | E-04 | C91 | 4.7uF C1779 0805 → **10nF** X7R, `C_0603_1608Metric` | **C1589** | `/ETH_1V2` | | E-04 | C90 | 10uF C440198 → **4.7uF** 0805 | **C1779** | `/ETH_TOCAP` | -| E-04 | **C172, C173 (new)** | 100nF 0603 at AVDD 4/8 and 11/21 | C14663 | `/3V3_ETH` – GND | -| F-52 | **U31 (new)** | TMP102AIDRLR, **I²C 0x49** (ADD0 → V+) | **C99269** | 1 `/I2C_SCL` · 2 GND · 3 NC · 4 `/3V3` · 5 `/3V3` · 6 `/I2C_SDA` | -| F-52 | **C174 (new)** | 100nF 0603 | C14663 | `/3V3` – GND | -| G-03 | P11, P12 | `…MC_1,5_3-G-3.5_1x03_P3.50mm_Vertical` (not in library) → **`Connector_Phoenix_MC:PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal`**; populated (D10) | C5160226 (unchanged) | | -| G-03 | J10 | `Connector_RJ45:…` (nickname not configured) → **`Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal`**; populated | C12074 (unchanged) | | -| G-04 | **JP6 (new)** = JP_CUT | `Jumper:SolderJumper_2_Open`, open footprint, value CUTOFF_BYPASS, not in BOM | no part | 1 `/MAIN5V`, 2 `/SYS5V` | -| G-08 | **D36, D37, D38 (new)** | PESD5V0S1BA, `Diode_SMD:D_SOD-323` (same as D14–D16) | **C2827694** | pin 1 `/NRST` / `/NTC_TEMP` / `/NTC2`, pin 2 GND | -| H-08 | C22, Y2 | value text "22uF/50V" → **"10uF/50V"**; "1.8432MHz" → **"3.6864MHz"** | unchanged | | -| B-15 | R107, R108 | value "0R-DNP" → **"0R-NEVER-FIT"** + `Note` field (still DNP) | — | | -| J-04 | 23 orphan NC flags (x = 453.898 / 484.378) | **deleted** | — | | -| J-04 | NC flags on U16.37, U16.38, U10.13, U10.14 | **deleted** (pins stay on their nets) | — | | -| J-04 | wire stubs | **2b755f7f deleted** (the dangling stub over P1.4); **7c1dbfc0 trimmed** from y 219.71 to 218.948 so it ends at its GND label (R52.2 stays on GND); **46f71e27 kept** (it carries P1.4's GND label) and the P1.4 junction kept. See §12 | — | no net change | +| E-04 | **C172, C173 (nuevos)** | 100nF 0603 en AVDD 4/8 y 11/21 | C14663 | `/3V3_ETH` – GND | +| F-52 | **U31 (nuevo)** | TMP102AIDRLR, **I²C 0x49** (ADD0 → V+) | **C99269** | 1 `/I2C_SCL` · 2 GND · 3 NC · 4 `/3V3` · 5 `/3V3` · 6 `/I2C_SDA` | +| F-52 | **C174 (nuevo)** | 100nF 0603 | C14663 | `/3V3` – GND | +| G-03 | P11, P12 | `…MC_1,5_3-G-3.5_1x03_P3.50mm_Vertical` (no está en la librería) → **`Connector_Phoenix_MC:PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal`**; poblados (D10) | C5160226 (sin cambio) | | +| G-03 | J10 | `Connector_RJ45:…` (alias no configurado) → **`Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal`**; poblado | C12074 (sin cambio) | | +| G-04 | **JP6 (nuevo)** = JP_CUT | `Jumper:SolderJumper_2_Open`, huella abierta, valor CUTOFF_BYPASS, fuera del BOM | sin parte | 1 `/MAIN5V`, 2 `/SYS5V` | +| G-08 | **D36, D37, D38 (nuevos)** | PESD5V0S1BA, `Diode_SMD:D_SOD-323` (igual que D14–D16) | **C2827694** | pin 1 `/NRST` / `/NTC_TEMP` / `/NTC2`, pin 2 GND | +| H-08 | C22, Y2 | texto de valor "22uF/50V" → **"10uF/50V"**; "1.8432MHz" → **"3.6864MHz"** | sin cambio | | +| B-15 | R107, R108 | valor "0R-DNP" → **"0R-NEVER-FIT"** + campo `Note` (siguen DNP) | — | | +| J-04 | 23 banderas NC huérfanas (x = 453.898 / 484.378) | borradas | — | | +| J-04 | banderas NC en U16.37, U16.38, U10.13, U10.14 | borradas (los pines siguen en sus nets) | — | | +| J-04 | tramos de cable | **2b755f7f borrado** (el tramo colgante sobre P1.4); **7c1dbfc0 recortado** de y 219.71 a 218.948 para que termine en su etiqueta GND (R52.2 sigue en GND); **46f71e27 conservado** (lleva la etiqueta GND de P1.4) y la unión de P1.4 conservada. Ver §12 | — | sin cambio de net | -## 3. New parts — where they are on the sheet +## 3. Partes nuevas — dónde están en la hoja -All new parts sit in free space found with an occupancy map of the sheet (symbols, pins, labels, wires, texts), on the 1.27 mm grid, each cluster with a blue note "v6 audit : …" stating the physical placement rule. Coordinates are schematic mm (A1 sheet). +Todas las partes nuevas van en espacio libre encontrado con un mapa de ocupación de la hoja (símbolos, pines, etiquetas, cables, textos), en la rejilla de 1.27 mm, cada grupo con una nota azul «v6 audit : …» que enuncia la regla de colocación física. Coordenadas en mm de esquemático (hoja A1). -| Cluster | Refs | Sheet position | Block it belongs to | +| Grupo | Refs | Posición en la hoja | Bloque al que pertenece | |---|---|---|---| -| C-01 | R135, U28, R136 | (402–475, 196) | below U18 / L21 bias-T | -| F-02 | D35 | (94, 36) | beside P1 | -| A-05 | C161, C162 | (377–391, 226) | right of C32–C34 | -| F-03 | C163, C164, C165 | (184–213, 295) | left of U20 | -| B-02 | C166, C167 | (401–415, 404) | right of U19 (VBAT caps) | -| F-51 | U29, C168 | (257–287, 141) | above the charger passives (R50/R55) | -| F-51 | R137, R138, C169 | (264–298, 220) | beside R50/R56 | -| E-01 | R139 | (674, 217) | at U12 | -| E-02 | R140 | (692, 60) | at U11 | -| D-01 | U27, C170 | (268–304, 458) | below U23/U24 | -| G-02 | U30 | (489, 307) | beside J9 | -| A-13 | R141 | (218, 246) | near TP1/TP2 | -| B-09 | C171 | (328, 460) | above J14 | -| B-10 | R142, R143 | (284–298, 498) | below U24 | -| C-07 | TP10, TP11 | (522–538, 104) | right of U18 | -| D-09 | R144 | (137, 113) | at Q5 | -| D-12 | TP9 | (547, 420) | right of U16 | -| E-04 | C172, C173 | (730–745, 183) | below C94 | -| F-52 | U31, C174 | (188–218, 414) | left of U23/U24 (modem block) | -| G-04 | JP6 | (281, 25) | beside P5 | -| G-08 | D36 / D37, D38 | (328, 133) / (476–503, 232) | at P6 / near P7–P8 | +| C-01 | R135, U28, R136 | (402–475, 196) | debajo del bias-T U18 / L21 | +| F-02 | D35 | (94, 36) | junto a P1 | +| A-05 | C161, C162 | (377–391, 226) | a la derecha de C32–C34 | +| F-03 | C163, C164, C165 | (184–213, 295) | a la izquierda de U20 | +| B-02 | C166, C167 | (401–415, 404) | a la derecha de U19 (capacitores de VBAT) | +| F-51 | U29, C168 | (257–287, 141) | arriba de los pasivos del cargador (R50/R55) | +| F-51 | R137, R138, C169 | (264–298, 220) | junto a R50/R56 | +| E-01 | R139 | (674, 217) | en U12 | +| E-02 | R140 | (692, 60) | en U11 | +| D-01 | U27, C170 | (268–304, 458) | debajo de U23/U24 | +| G-02 | U30 | (489, 307) | junto a J9 | +| A-13 | R141 | (218, 246) | cerca de TP1/TP2 | +| B-09 | C171 | (328, 460) | arriba de J14 | +| B-10 | R142, R143 | (284–298, 498) | debajo de U24 | +| C-07 | TP10, TP11 | (522–538, 104) | a la derecha de U18 | +| D-09 | R144 | (137, 113) | en Q5 | +| D-12 | TP9 | (547, 420) | a la derecha de U16 | +| E-04 | C172, C173 | (730–745, 183) | debajo de C94 | +| F-52 | U31, C174 | (188–218, 414) | a la izquierda de U23/U24 (bloque del módem) | +| G-04 | JP6 | (281, 25) | junto a P5 | +| G-08 | D36 / D37, D38 | (328, 133) / (476–503, 232) | en P6 / cerca de P7–P8 | -## 4. Netlist proof +## 4. Prueba por netlist -Netlists exported with kicad-cli through the KiCad MCP after each committed group (`kicad/_to_delete/v6-apply-20260928/netlists/00…05.xml`). `tools/ndiff.py` compares refs, value, footprint, lib_id, every field and property, DNP / BOM / position flags, **ref.pin → net** and net class. The expected change set of each group was written by the edit script *before* the file was committed and asserted against the actual diff. +Netlists exportadas con kicad-cli a través del KiCad MCP después de cada grupo confirmado (`kicad/_to_delete/v6-apply-20260928/netlists/00…05.xml`). `tools/ndiff.py` compara refs, valor, huella, lib_id, todos los campos y propiedades, banderas DNP / BOM / posición, ref.pin → net y clase de red. El conjunto de cambios esperado de cada grupo lo escribió el script de edición *antes* de confirmar el archivo y se verificó contra el diff real. -| Group | Netlist | Expected (added / removed / field / pin-net / class) | Actual | Result | +| Grupo | Netlist | Esperado (añadidos / eliminados / campos / pin-net / clase) | Obtenido | Resultado | |---|---|---|---|---| -| 1 Blockers | 00-baseline → 01-blockers | 4 / 3 / 38 / 9 / 0 = 54 | 4 / 3 / 38 / 9 / 0 | **MATCH** | -| 2 Majors | 01 → 02-majors | 17 / 0 / 36 / 4 / 0 = 57 | 17 / 0 / 36 / 4 / 0 | **MATCH** | -| 3 Minors | 02 → 03-minors | 16 / 0 / 51 / 9 / 0 = 76 | 16 / 0 / 51 / 9 / 0 | **MATCH** (after the J-04 correction, §12) | -| 4 Project rules | 03 → 04-rules (schematic untouched) | 0 / 0 / 0 / 0 / 16 | 0 / 0 / 0 / 0 / 16 | **MATCH** | -| 5 Cosmetic (U30 ref text) | 04 → 05-final | 0 | 0 | **MATCH** | -| **Total** | 00 → 05-final | composition of groups 1–5 | 37 / 3 / 125 / 22 / 16 | **0 differences** in every ref, attribute, pin and class | +| 1 Bloqueantes | 00-baseline → 01-blockers | 4 / 3 / 38 / 9 / 0 = 54 | 4 / 3 / 38 / 9 / 0 | **COINCIDE** | +| 2 Mayores | 01 → 02-majors | 17 / 0 / 36 / 4 / 0 = 57 | 17 / 0 / 36 / 4 / 0 | **COINCIDE** | +| 3 Menores | 02 → 03-minors | 16 / 0 / 51 / 9 / 0 = 76 | 16 / 0 / 51 / 9 / 0 | **COINCIDE** (tras la corrección de J-04, §12) | +| 4 Reglas de proyecto | 03 → 04-rules (esquemático sin tocar) | 0 / 0 / 0 / 0 / 16 | 0 / 0 / 0 / 0 / 16 | **COINCIDE** | +| 5 Cosmético (texto de ref de U30) | 04 → 05-final | 0 | 0 | **COINCIDE** | +| Total | 00 → 05-final | composición de los grupos 1–5 | 37 / 3 / 125 / 22 / 16 | **0 diferencias** en cada ref, atributo, pin y clase | -Field changes count both `footprint` and the `Footprint` field when a footprint changes. The 22 pin-net changes: U20.2, C127.1, C128.1 → `/MAIN5V`; D10.1 → `/VIN_FUSED`; L21.2, C144.1, C145.1 → `/ANT_BIAS`; U18.7 → NC; U18.5 → `/GNSS_ANT_OFF`; U12.2 → `/ETH_PWR_EN`; U16.54 → `/ETH_PWR_EN`; U16.25 → `/NTC_CELL`; U18.26 → `/DOUT_4G_F9P`; R56.2 → `/3V3`; U6.20, TP2.1 → `/PFO`; U16.29 → `/PFO`; U16.42 → `/USART1_TX`; U18.50 → `/GNSS_SAFEBOOT_N`; Y3.2 → GND, Y3.3 → `/HSE_OUT`, Y3.4 → GND. Full machine list: `netlist_diff_total.md`; per group: `out/0N-*/netlist_diff.md`. +Los cambios de campo cuentan tanto `footprint` como el campo `Footprint` cuando cambia una huella. Los 22 cambios pin-net: U20.2, C127.1, C128.1 → `/MAIN5V`; D10.1 → `/VIN_FUSED`; L21.2, C144.1, C145.1 → `/ANT_BIAS`; U18.7 → NC; U18.5 → `/GNSS_ANT_OFF`; U12.2 → `/ETH_PWR_EN`; U16.54 → `/ETH_PWR_EN`; U16.25 → `/NTC_CELL`; U18.26 → `/DOUT_4G_F9P`; R56.2 → `/3V3`; U6.20, TP2.1 → `/PFO`; U16.29 → `/PFO`; U16.42 → `/USART1_TX`; U18.50 → `/GNSS_SAFEBOOT_N`; Y3.2 → GND, Y3.3 → `/HSE_OUT`, Y3.4 → GND. Lista completa: `netlist_diff_total.md`; por grupo: `out/0N-*/netlist_diff.md`. -UUIDs: no existing symbol changed UUID (checked per group); the guard also held on every write. +UUID: ningún símbolo existente cambió de UUID (comprobado por grupo); la guarda también se cumplió en cada escritura. -## 5. ERC (kicad-cli 10.0.4 via KiCad MCP) +## 5. ERC (kicad-cli 10.0.4 vía KiCad MCP) -Per-category counts come from copies with narrowed ERC severities (`kicad/_to_delete/v6-apply-20260928/erc_work/`), because the MCP prints only 30 items. Baseline categories are the audit's (`evidence/erc_summary.md`, same file hash); final categories are from runs on the final file, and they add up to the full run. +Los conteos por categoría salen de copias con severidades de ERC acotadas (`kicad/_to_delete/v6-apply-20260928/erc_work/`), porque el MCP imprime solo 30 elementos. Las categorías de la línea base son las de la auditoría (`evidence/erc_summary.md`, mismo hash de archivo); las finales vienen de corridas sobre el archivo final y suman la corrida completa. -| Category | Before | After | Why | +| Categoría | Antes | Después | Por qué | |---|---|---|---| -| Errors | 0 | **0** | | -| pin_to_pin | 104 | 102 | −2 from D21 (unspecified-pin easyeda symbol) removed; new symbols have typed pins | -| no_connect_dangling | 23 | 0 | J-04 orphan flags deleted | -| lib_symbol_mismatch | 22 | 21 | Y3 now uses a fresh `Device:Crystal_GND24` copy | -| lib_symbol_issues (not in library) | 10 | 11 | +1: `Drogheda-sym:TPS2552DBV` is embedded only (§7). The 10 old ones remain (re-link skipped, §9) | +| Errores | 0 | **0** | | +| pin_to_pin | 104 | 102 | −2 por D21 eliminado (símbolo easyeda con pines sin tipo); los símbolos nuevos tienen pines tipados | +| no_connect_dangling | 23 | 0 | banderas huérfanas J-04 borradas | +| lib_symbol_mismatch | 22 | 21 | Y3 ahora usa una copia fresca de `Device:Crystal_GND24` | +| lib_symbol_issues (no está en la librería) | 10 | 11 | +1: `Drogheda-sym:TPS2552DBV` solo embebido (§7). Los 10 viejos siguen (re-enlace omitido, §9) | | footprint_link_issues | 3 | 0 | G-03 (P11, P12, J10) | | no_connect_connected | 2 | 0 | J-04 | -| unconnected_wire_endpoint | 2 | 0 | J-04 (stub deleted / tail trimmed) | -| All other checks (dangling labels, unconnected pins, power pins, …) | 0 | 0 | | -| **Total warnings** | **166** | **134** | | +| unconnected_wire_endpoint | 2 | 0 | J-04 (tramo borrado / cola recortada) | +| Todas las demás comprobaciones (etiquetas sueltas, pines sin conectar, pines de potencia, …) | 0 | 0 | | +| Total de avisos | **166** | **134** | | -During Group 3 an intermediate run showed 3 errors (label/pin not connected at P1.4 and R52.2) from my first J-04 stub deletion; the netlist diff flagged the same two pins. Both were fixed before continuing (§12). +Durante el grupo 3 una corrida intermedia mostró 3 errores (etiqueta/pin sin conectar en P1.4 y R52.2) por la primera eliminación de tramos de J-04; el diff de netlist marcó los mismos dos pines. Ambos se corrigieron antes de continuar (§12). -## 6. Project rules (F-01, D18) +## 6. Reglas de proyecto (F-01, D18) -### 6.1 Net classes (`hbox-watchdog-v6.kicad_pro`) +### 6.1 Clases de red (`hbox-watchdog-v6.kicad_pro`) -All old patterns were replaced by exact full net names (the un-prefixed duplicates and dead patterns `3V3_MODEM`, `SW3_NODE` are gone). In the final netlist every pattern resolves to a real net. +Todos los patrones viejos se sustituyeron por nombres completos exactos de net (desaparecen los duplicados sin prefijo y los patrones muertos `3V3_MODEM`, `SW3_NODE`). En la netlist final cada patrón resuelve a una net real. -| Class | Nets | Clearance | Track | Via | Priority | +| Clase | Nets | Clearance | Pista | Vía | Prioridad | |---|---|---|---|---|---| -| HV24 | `/24V_IN` `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/Q10_GATE` `/Q23_GATE` `/SW_PWRIN` `/BOOT_PWRIN` `/SW_FAN` `/BST_FAN` | 0.3 (was 0.5) | 1.0 (was 0.5) | 0.8/0.4 | 0 | -| PWR_HI | `/BAT_PLUS` `/SW_BAT` `/MAIN5V` `/VEH5V` `/SYS5V` `/VIN_SW` | 0.15 (was 0.2) | 1.5 | 0.8/0.4 | 1 | -| PWR_MODEM (new) | `/VBAT_MODEM` | 0.15 | 1.5 | 0.8/0.4 | 2 | -| PWR_MID | `/SW_5V` `/SW_IN` `/5V_FAN` `/FAN_RET` | 0.15 (was 0.2) | 0.6 (was 1.0) | 0.8/0.4 | 3 | -| RF (new) | `/RF_GNSS` `/RF_ANT_GNSS` `/RF_LTE` `/RF_ANT_LTE` | 0.2 (CPWG gap) | 0.3 (CPWG width; final value from JLC's calculator) | 0.6/0.3 (no vias intended) | 4 | -| Default | everything else, incl. `/3V3_ETH` (moved out of PWR_MID, J-02), `/EN_FAN`, `/EN_PWRIN`, `/SW_MODEM`, `/BST_MODEM` | 0.15 (was 0.2) | 0.2 | 0.6/0.3 | — | +| HV24 | `/24V_IN` `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/Q10_GATE` `/Q23_GATE` `/SW_PWRIN` `/BOOT_PWRIN` `/SW_FAN` `/BST_FAN` | 0.3 (era 0.5) | 1.0 (era 0.5) | 0.8/0.4 | 0 | +| PWR_HI | `/BAT_PLUS` `/SW_BAT` `/MAIN5V` `/VEH5V` `/SYS5V` `/VIN_SW` | 0.15 (era 0.2) | 1.5 | 0.8/0.4 | 1 | +| PWR_MODEM (nueva) | `/VBAT_MODEM` | 0.15 | 1.5 | 0.8/0.4 | 2 | +| PWR_MID | `/SW_5V` `/SW_IN` `/5V_FAN` `/FAN_RET` | 0.15 (era 0.2) | 0.6 (era 1.0) | 0.8/0.4 | 3 | +| RF (nueva) | `/RF_GNSS` `/RF_ANT_GNSS` `/RF_LTE` `/RF_ANT_LTE` | 0.2 (gap CPWG) | 0.3 (ancho CPWG; valor final con la calculadora de JLC) | 0.6/0.3 (no se pretenden vías) | 4 | +| Default | todo lo demás, incl. `/3V3_ETH` (sacada de PWR_MID, J-02), `/EN_FAN`, `/EN_PWRIN`, `/SW_MODEM`, `/BST_MODEM` | 0.15 (era 0.2) | 0.2 | 0.6/0.3 | — | -Netlist class changes (16): to HV24 `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/Q10_GATE` `/Q23_GATE` `/SW_PWRIN` `/BOOT_PWRIN` `/BST_FAN` (from Default) and `/SW_FAN` (from PWR_MID); `/3V3_ETH` PWR_MID → Default; `/VBAT_MODEM` → PWR_MODEM; the four RF nets → RF. +Cambios de clase en la netlist (16): a HV24 `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/Q10_GATE` `/Q23_GATE` `/SW_PWRIN` `/BOOT_PWRIN` `/BST_FAN` (desde Default) y `/SW_FAN` (desde PWR_MID); `/3V3_ETH` PWR_MID → Default; `/VBAT_MODEM` → PWR_MODEM; las cuatro nets RF → RF. -**Decision on the HV24 list (differs from the report table, which predates A-01):** `/VIN_MODEM` no longer exists, and **`/SW_MODEM` and `/BST_MODEM` were left out of HV24**. With A-01, U20 runs from `/MAIN5V` (≤ 5.5 V), so they are 5 V-class switch/boot nodes; in HV24 they would raise false 0.3/0.5 mm errors around U20 (like `/ETH_SW`, they stay Default with the T15 width rule). `/SW_FAN`, `/BST_FAN`, `/24V` and `/Q10_GATE` **stay HV24**: the U2 and Q10 footprints remain on the board as DNP and would carry vehicle voltage if ever fitted. +**Decisión sobre la lista HV24 (difiere de la tabla del informe, anterior a A-01):** `/VIN_MODEM` ya no existe, y **`/SW_MODEM` y `/BST_MODEM` se dejaron fuera de HV24**. Con A-01, U20 corre desde `/MAIN5V` (≤ 5.5 V), así que son nodos de conmutación/boot de clase 5 V; en HV24 levantarían errores falsos de 0.3/0.5 mm alrededor de U20 (como `/ETH_SW`, se quedan en Default con la regla de ancho T15). `/SW_FAN`, `/BST_FAN`, `/24V` y `/Q10_GATE` **siguen en HV24**: las huellas de U2 y Q10 permanecen en la tarjeta como DNP y llevarían voltaje de vehículo si alguna vez se montaran. -### 6.2 `.kicad_dru` (verify_2's corrected set, verbatim; replaces "Minimum clearance 1", "HV24 clearance", "HV24 exception: MP1584EN land pattern") +### 6.2 `.kicad_dru` (conjunto corregido por la verificación, textual; sustituye «Minimum clearance 1», «HV24 clearance», «HV24 exception: MP1584EN land pattern») ``` (rule "Floor 0.15 (non-HV24, non-RF)" @@ -252,172 +253,196 @@ Netlist class changes (16): to HV24 `/VIN_FUSED` `/VIN_PROT` `/24V` `/IGN_IN` `/ ) ``` -A 3-line comment header was added above the set. The silkscreen text rule and the three T15 power-width warning rules are unchanged (the T15 rule still names `/VIN_MODEM`, now a dead name; harmless). The U20 clause of the land-pattern rule no longer matches anything after the HV24 decision above; it was kept to stay verbatim with verify_2. +Se añadió un encabezado de comentario de 3 líneas sobre el conjunto. La regla de texto de serigrafía y las tres reglas de aviso de ancho de potencia T15 no cambian (la regla T15 todavía nombra `/VIN_MODEM`, ahora un nombre muerto; inofensivo). La cláusula U20 de la regla de land patterns ya no coincide con nada tras la decisión HV24 de arriba; se conservó para mantener el conjunto textual de la verificación. -## 7. Library +## 7. Librería -- **H-04 fixed:** `(property "LCSC Part" "C2071691")` deleted from `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` (one line, span-scoped; the rest of the file is byte-identical). That footprint is shared by U20 (AP64350, C2071691) and U25 (TPS54360B, C524806); both now resolve through their `LCSC` fields. The board copy of U25 still carries the field until Michelle updates the footprint from the library (§10). -- **Other `LCSC Part` values in `Drogheda-v6.pretty` checked against their users (not stripped):** IND-SMD_L13.5-W12.5 C840531 = L22 ✓ · LCC-LGA-102 C5120257 = U18 ✓ · LGA-124 C18548276 = U19 ✓ · LGA-12 C5126709 = U26 ✓ · RF-SMD_FRF05002 C88374 = J12, J13 ✓ · SMA_L4.4 C113952 = D22 ✓ · VSSOP-8 C730237 = U23, U24 ✓ · SOD-923 C82326 = D27 ✓ (D28 moved to 0402) · **SOD-128 C50603 now unused** (D21 removed). None is wrong. -- **TPS2552 symbol:** KiCad 10 has no TPS2552 symbol (the MIC2007/2008 SOT-23-6 switches have a different pinout), so `Drogheda-sym:TPS2552DBV` was authored and **embedded in the schematic only**: box symbol, 1 IN power_in, 2 GND power_in, 3 ~EN input, 4 ~FAULT open_collector, 5 ILIM passive, 6 OUT power_out, footprint SOT-23-6, TI datasheet link. `Drogheda-sym.kicad_sym` was not edited (outside this pass's file set; shared with v5), which is the +1 ERC "not found in library" warning. Copy it into the library in a library pass. -- New library symbols embedded from KiCad 10: `74xGxx:74LVC1G125`, `Power_Protection:USBLC6-2SC6`, `Device:Crystal_GND24`. `Sensor_Temperature:TMP102xxDRL` was already cached in the sheet and is content-identical to the library. +- **H-04 corregido:** `(property "LCSC Part" "C2071691")` borrado de `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` (una línea, acotada; el resto del archivo es byte-idéntico). Esa huella la comparten U20 (AP64350, C2071691) y U25 (TPS54360B, C524806); ambos resuelven ahora por sus campos `LCSC`. La copia de U25 en la tarjeta todavía lleva el campo hasta que Michelle actualice la huella desde la librería (§10). +- **Otros valores `LCSC Part` en `Drogheda-v6.pretty`, cotejados contra sus usuarios (no se quitaron):** IND-SMD_L13.5-W12.5 C840531 = L22 ✓ · LCC-LGA-102 C5120257 = U18 ✓ · LGA-124 C18548276 = U19 ✓ · LGA-12 C5126709 = U26 ✓ · RF-SMD_FRF05002 C88374 = J12, J13 ✓ · SMA_L4.4 C113952 = D22 ✓ · VSSOP-8 C730237 = U23, U24 ✓ · SOD-923 C82326 = D27 ✓ (D28 pasó a 0402) · **SOD-128 C50603 ahora sin uso** (D21 eliminado). Ninguno está mal. +- **Símbolo TPS2552:** KiCad 10 no tiene símbolo TPS2552 (los interruptores MIC2007/2008 SOT-23-6 tienen otro pinout), así que se creó `Drogheda-sym:TPS2552DBV` y se embebió solo en el esquemático: símbolo de caja, 1 IN power_in, 2 GND power_in, 3 ~EN input, 4 ~FAULT open_collector, 5 ILIM passive, 6 OUT power_out, huella SOT-23-6, enlace a la hoja de datos de TI. `Drogheda-sym.kicad_sym` no se editó (fuera del conjunto de archivos de este pase; compartido con v5), que es el +1 aviso ERC «not found in library». Copiarlo a la librería en un pase de librería. +- Símbolos de librería nuevos embebidos desde KiCad 10: `74xGxx:74LVC1G125`, `Power_Protection:USBLC6-2SC6`, `Device:Crystal_GND24`. `Sensor_Temperature:TMP102xxDRL` ya estaba en caché en la hoja y es idéntico en contenido a la librería. -## 8. Reverse-polarity and fusing topology after V1-01 / A-01 +## 8. Topología de polaridad inversa y fusible después de V1-01 / A-01 ``` -P1.1 ─ /24V_IN ─ F2 (3 A Nano2, socketed) ─ /VIN_FUSED ─┬─ D10 SMBJ33A (pad 1 cathode) ─ GND - └─ Q23 IRFR5305: D=/VIN_FUSED, S=/VIN_PROT, G=/Q23_GATE - D33 zener S→G clamp, R119 gate to GND +P1.1 ─ /24V_IN ─ F2 (3 A Nano2, en portafusible) ─ /VIN_FUSED ─┬─ D10 SMBJ33A (pad 1 cátodo) ─ GND + └─ Q23 IRFR5305: D=/VIN_FUSED, S=/VIN_PROT, G=/Q23_GATE + D33 zener clamp S→G, R119 gate a GND /VIN_PROT ─ D32 SMCJ33A, C149–C151, U25 (TPS54360B) → /VEH5V -/24V_IN also ─ Q10.D (Q10 branch DNP: /24V carries no fitted part) +/24V_IN también ─ Q10.D (rama Q10 DNP: /24V no lleva ninguna parte montada) ``` -- **Correct polarity:** current flows P1 → F2 → Q23 body diode (drain→source), Q23 enhances with its gate pulled to GND (V_GS clamped at −15 V by D33) → /VIN_PROT. D10 and D32 clamp transients; D10 is now behind F2, so a TVS that fails short opens F2 instead of loading the harness. -- **Reversed P1:** /VIN_FUSED goes negative; Q23's gate (to GND) is positive against its source, so Q23 stays off and its body diode is reverse-biased. D10 forward-conducts GND → /VIN_FUSED through F2 → **F2 blows** (socketed, replaceable). Before V1-01, D10 sat on /24V_IN ahead of F2 and would have carried harness-fuse current. -- The only unfused copper left on /24V_IN is P1.1 → F2.1 and the Q10.D pad of the DNP Q10. If the Q10 branch is ever re-fitted, move Q10.D to /VIN_FUSED first. -- U20 now sits on /MAIN5V, upstream of the P5 cutoff (A-01 note): P5 still removes SYS5V → MCU unpowered → R113 holds U20 EN low (µA). +- Polaridad correcta: la corriente fluye P1 → F2 → diodo de cuerpo de Q23 (drain→source), Q23 se enciende con su gate llevado a GND (V_GS recortado a −15 V por D33) → /VIN_PROT. D10 y D32 recortan transitorios; D10 queda ahora detrás de F2, así que un TVS que falle en corto abre F2 en vez de cargar el arnés. +- **P1 invertido:** /VIN_FUSED se va a negativo; el gate de Q23 (a GND) queda positivo respecto a su source, así que Q23 se mantiene apagado y su diodo de cuerpo en inversa. D10 conduce en directa GND → /VIN_FUSED a través de F2 → **F2 se funde** (en portafusible, reemplazable). Antes de V1-01, D10 estaba en /24V_IN antes de F2 y habría llevado la corriente del fusible del arnés. +- El único cobre sin fusible que queda en /24V_IN es P1.1 → F2.1 y el pad Q10.D del Q10 en DNP. Si la rama Q10 se vuelve a montar algún día, mover primero Q10.D a /VIN_FUSED. +- U20 queda ahora en /MAIN5V, aguas arriba del corte P5 (nota A-01): P5 sigue quitando SYS5V → MCU sin energía → R113 mantiene el EN de U20 en bajo (µA). -## 9. Skipped items and decisions +## 9. Elementos omitidos y decisiones -**Not applied** -1. **G-01** (restore MH4 at (193.2, 90.3), heatsink-clamp holes MH11 + partner): board-only mounting holes; Michelle (D11 makes it a Blocker). -2. **J-04, re-linking the 10 "not found" symbols** (Q_*MOS_G?S ×7, D_Zener_ANK ×2, PCF8574): needs writing their definitions into the shared `Drogheda-sym.kicad_sym` (outside the allowed file set) and swapping 10 lib_ids. Cosmetic; left as warnings. The 22 library mismatches were left alone as the report asks (no bulk update). -3. **G-08, optional 100 Ω series resistor on NRST:** optional in the report; it would split `/NRST`. Not applied. -4. **D-08** (board-ID strap), **H-03** (MWSA0804S land), **J-03** (library pin types): excluded by D19. -5. Layout-only Majors (V1-01 layout, F-12, F-05, F-06, C-04, A-07) and A-02: layout list, §10. +**No aplicados** -**Decisions taken while applying (beyond the letter of §7)** -- DNP marking follows the sheet's existing convention (`(dnp yes)` only, as on C146/C147, R107/R108, R124/R125, R127–R130, U22): footprints stay on the board with the DNP attribute, and KiCad leaves DNP parts out of BOM/CPL outputs. -- U17, U21, U10 kept their symbols (identical pin numbering) and changed fields only; the netlist diff shows value/LCSC/MPN changes only for them. -- New test pads (TP9–TP11) and JP6 are excluded from BOM and position files (no purchasable part). TP1–TP8 were left as they are. -- HV24 net list: §6.1. PF15 removal: §2.1. C171 net: §2.3. +1. **G-01** (restaurar MH4 en (193.2, 90.3), barrenos de la abrazadera del disipador MH11 + pareja): barrenos de montaje solo de tarjeta; Michelle (D11 lo vuelve Bloqueante). +2. **J-04, re-enlazar los 10 símbolos «not found»** (Q_*MOS_G?S ×7, D_Zener_ANK ×2, PCF8574): requiere escribir sus definiciones en la `Drogheda-sym.kicad_sym` compartida (fuera del conjunto de archivos permitido) y cambiar 10 lib_id. Cosmético; se dejó como avisos. Los 22 desajustes de librería se dejaron como pide el informe (sin actualización masiva). +3. **G-08, resistencia opcional de 100 Ω en serie en NRST:** opcional en el informe; partiría `/NRST`. No aplicada. +4. **D-08** (strap de identificación de tarjeta), **H-03** (land MWSA0804S), **J-03** (tipos de pin de librería): excluidos por D19. +5. Mayores solo de layout (V1-01 layout, F-12, F-05, F-06, C-04, A-07) y A-02: lista de layout, §10. -## 10. Layout delta for Michelle +**Decisiones tomadas al aplicar (más allá de la letra de §7)** -Run **Tools → Update PCB from Schematic** on `hbox-watchdog-v6.kicad_pcb` with **"Delete footprints with no symbols" ticked** (earlier runs did not delete removed footprints), and "Update footprints" on so the changed footprints are swapped. Then run DRC (new rules, below). +- El marcado DNP sigue la convención existente de la hoja (`(dnp yes)` solamente, como en C146/C147, R107/R108, R124/R125, R127–R130, U22): las huellas se quedan en la tarjeta con el atributo DNP, y KiCad deja las partes DNP fuera de las salidas BOM/CPL. +- U17, U21, U10 conservaron sus símbolos (numeración de pines idéntica) y solo cambiaron campos; el diff de netlist muestra en ellos solo cambios de valor/LCSC/MPN. +- Los pads de prueba nuevos (TP9–TP11) y JP6 quedan fuera del BOM y de los archivos de posición (sin parte comprable). TP1–TP8 se dejaron como estaban. +- Lista de nets HV24: §6.1. Eliminación de PF15: §2.1. Net de C171: §2.3. -**New footprints to place (37)** +## 10. Delta de layout para Michelle -| Ref | Footprint | Where / constraint (from the audit) | +Ejecutar Tools → Update PCB from Schematic sobre `hbox-watchdog-v6.kicad_pcb` con **«Delete footprints with no symbols» marcado** (corridas anteriores no borraban las huellas eliminadas) y «Update footprints» activo para que se sustituyan las huellas cambiadas. Después correr DRC (reglas nuevas, abajo). + +**Huellas nuevas por colocar (37)** + +| Ref | Huella | Dónde / restricción (de la auditoría) | |---|---|---| -| U28 | SOT-23-6 | GNSS bias switch next to L21/C144/C145 at J12; `/ANT_BIAS` ≥ 1 mm from the RF line with a stitched GND strip (F-06); short feed from `/3V3_GNSS` | -| R135, R136 | 0603 | at U28 pins 3 and 4 | -| D35 | D_SMB | **at P1.3**; with Rig1 moved to ≤ 3 mm of copper from P1.3 so `/IGN_IN` is ≤ 3 mm on F.Cu and the long run becomes `/IGN_SENSE` (F-02) | -| C161, C162 | 1210 | ≤ 2 mm from U6 VSYS pins 1/24, GND on the U6 EP copper (A-05/A-02) | -| C163, C164 | 0805 | ≤ 2–3 mm from U20.2, GND on the U20 EP copper (F-03) | -| C165 | CP_Elec_6.3x7.7 | at U20.2 (F-03) | -| C166, C167 | 0805 | ≤ 3 mm from L20.2 (B-02) | -| U29 + C168 | SOT-563 + 0603 | **between U6 and L6, ≤ 5 mm from the U6 EP** (F-51, R4) | -| R137, R138, C169 | 0603 | pack-NTC tap: R138/C169 at U16 pad 25 (PC5); R137 anywhere on `/NTC` | -| R139 | 0603 | at U12 pin 2 (EN); new track `/ETH_PWR_EN` to U16 pad 54 (PD2) | -| R140 | 0603 | at U11.37 (`/ETH_RST`) | -| U27 + C170 | SOT-23-5 (SOT-753) + 0603 | **at U18.26 (RXD2)**; VCC from `/3V3_GNSS` | -| U30 | SOT-23-6 | **≤ 3 mm of copper from the J9 pads**, D+/D− routed through the device pads, GND via ≤ 1 mm (G-02) | -| R141 | 0603 | `/PFO` pull-up near U16 pad 29 (PB10) | -| C171 | 0402 | at J14.C1 | -| R142, R143 | 0603 | on `/MODEM_STATUS` (PC9) and `/DIN_4G`, any convenient spot | -| TP10, TP11 | TestPoint_Pad_D1.0mm | near U18 pins 50 (SAFEBOOT_N) and 49 (RESET_N), next to a GND pad (C-07) | -| R144 | 0603 | at Q5 base | -| TP9 | TestPoint_Pad_D1.5mm | PA9 debug-TX pad next to TP3–TP5 (D-12) | -| C172, C173 | 0603 | at W5500 AVDD pins 4/8 and 11/21 | -| U31 + C174 | SOT-563 + 0603 | **between U19 and U20** (F-52) | -| JP6 | SolderJumper 2-pad, open | across P5 (`/MAIN5V`–`/SYS5V`), silk "CUTOFF BYPASS" (G-04) | -| D36, D37, D38 | SOD-323 | ≤ 3 mm from P6.1, P7.1, P8.1 to GND (G-08) | +| U28 | SOT-23-6 | interruptor de polarización GNSS junto a L21/C144/C145 en J12; `/ANT_BIAS` a ≥ 1 mm de la línea RF con una franja de GND cosida (F-06); alimentación corta desde `/3V3_GNSS` | +| R135, R136 | 0603 | en los pines 3 y 4 de U28 | +| D35 | D_SMB | **en P1.3**; con Rig1 movido a ≤ 3 mm de cobre de P1.3 para que `/IGN_IN` mida ≤ 3 mm en F.Cu y el tramo largo pase a ser `/IGN_SENSE` (F-02) | +| C161, C162 | 1210 | a ≤ 2 mm de los pines VSYS 1/24 de U6, GND en el cobre del pad térmico (EP) de U6 (A-05/A-02) | +| C163, C164 | 0805 | a ≤ 2–3 mm de U20.2, GND en el cobre del pad térmico (EP) de U20 (F-03) | +| C165 | CP_Elec_6.3x7.7 | en U20.2 (F-03) | +| C166, C167 | 0805 | a ≤ 3 mm de L20.2 (B-02) | +| U29 + C168 | SOT-563 + 0603 | **entre U6 y L6, a ≤ 5 mm del pad térmico (EP) de U6** (F-51, R4) | +| R137, R138, C169 | 0603 | derivación de la NTC del paquete: R138/C169 en el pad 25 de U16 (PC5); R137 en cualquier punto de `/NTC` | +| R139 | 0603 | en el pin 2 de U12 (EN); pista nueva `/ETH_PWR_EN` al pad 54 de U16 (PD2) | +| R140 | 0603 | en U11.37 (`/ETH_RST`) | +| U27 + C170 | SOT-23-5 (SOT-753) + 0603 | **en U18.26 (RXD2)**; VCC desde `/3V3_GNSS` | +| U30 | SOT-23-6 | **a ≤ 3 mm de cobre de los pads de J9**, D+/D− ruteados a través de los pads del dispositivo, vía a GND a ≤ 1 mm (G-02) | +| R141 | 0603 | pull-up de `/PFO` cerca del pad 29 de U16 (PB10) | +| C171 | 0402 | en J14.C1 | +| R142, R143 | 0603 | en `/MODEM_STATUS` (PC9) y `/DIN_4G`, donde convenga | +| TP10, TP11 | TestPoint_Pad_D1.0mm | cerca de los pines 50 (SAFEBOOT_N) y 49 (RESET_N) de U18, junto a un pad de GND (C-07) | +| R144 | 0603 | en la base de Q5 | +| TP9 | TestPoint_Pad_D1.5mm | pad de TX de depuración PA9 junto a TP3–TP5 (D-12) | +| C172, C173 | 0603 | en los pines AVDD 4/8 y 11/21 del W5500 | +| U31 + C174 | SOT-563 + 0603 | **entre U19 y U20** (F-52) | +| JP6 | SolderJumper de 2 pads, abierto | a través de P5 (`/MAIN5V`–`/SYS5V`), serigrafía «CUTOFF BYPASS» (G-04) | +| D36, D37, D38 | SOD-323 | a ≤ 3 mm de P6.1, P7.1, P8.1 hacia GND (G-08) | -**Removed footprints:** D20 (D_SMA), D21 (SOD-128). (PF15 is a virtual power flag, no footprint.) +Huellas eliminadas: D20 (D_SMA), D21 (SOD-128). (PF15 es una bandera de potencia virtual, sin huella.) -**Footprint changes:** U15 → narrow `SOIC-16_3.9x9.9mm` (re-place C84–C88, local reroute) · D28 → `D_0402_1005Metric` (with the F-06 LTE reroute) · Y3 → `Crystal_SMD_3225-4Pin_3.2x2.5mm` (pad 1 HSE_IN, pad 3 HSE_OUT, pads 2/4 GND; ≤ 3–5 mm from PH0/PH1, no inner track under it) · C91 → 0603 · JP1 → Bridged (net-tie) · J10 → `Connector_RJ:` nickname (same geometry) · P11/P12 → Horizontal (already so on the PCB) · U25 → re-pull the footprint from the library so its board copy loses `LCSC Part` (H-04) · Y4 and F2 keep their footprints. +Cambios de huella: U15 → `SOIC-16_3.9x9.9mm` angosto (recolocar C84–C88, re-ruteo local) · D28 → `D_0402_1005Metric` (con el re-ruteo LTE de F-06) · Y3 → `Crystal_SMD_3225-4Pin_3.2x2.5mm` (pad 1 HSE_IN, pad 3 HSE_OUT, pads 2/4 GND; a ≤ 3–5 mm de PH0/PH1, sin pista interna debajo) · C91 → 0603 · JP1 → Bridged (net-tie) · J10 → alias `Connector_RJ:` (misma geometría) · P11/P12 → Horizontal (ya así en la PCB) · U25 → volver a traer la huella de la librería para que su copia en tarjeta pierda `LCSC Part` (H-04) · Y4 y F2 conservan sus huellas. -**DNP changes:** set DNP: U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21, Q10, DzG1, Rrp1, C10, C11, C22. **Clear DNP:** J10, P11, P12 (populated per D10). +Cambios de DNP: poner DNP: U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21, Q10, DzG1, Rrp1, C10, C11, C22. Quitar DNP: J10, P11, P12 (poblados según D10). -**Nets that change routing** -- `/VIN_MODEM` disappears: U20.2, C127, C128 go to **`/MAIN5V`** (≥ 1.5–2 mm all the way to U20; delete the 48 mm `/VIN_MODEM` run, A-01/A-07). -- `/VIN_FUSED` gains D10.1: P1.1 → F2 → {D10, Q23.D}; `/24V_IN` = P1.1, F2.1, Q10.D only. -- `/ANT_BIAS` (U28.6 → L21.2, C144, C145); U18.7 is now NC; `/GNSS_ANT_OFF` (U18.5 → U28.3, R135); `/GNSS_ANT_SHORT_N` gains U28.4 and R136. -- `/ETH_PWR_EN` (U12.2, U16.54, R139); U12.2 leaves `/SYS5V`. -- `/DOUT_4G_F9P` (U27.4 → U18.26); U18.26 leaves `/DOUT_4G`; U27.2 joins `/DOUT_4G`. -- `/PFO` (renamed from `/PFO_TP`: U6.20, TP2, plus U16.29 and R141). -- `/NTC_CELL` (U16.25, R137, R138, C169); `/NTC` gains R137. +Nets que cambian de ruteo + +- `/VIN_MODEM` desaparece: U20.2, C127, C128 pasan a **`/MAIN5V`** (≥ 1.5–2 mm hasta U20; borrar el tramo de 48 mm de `/VIN_MODEM`, A-01/A-07). +- `/VIN_FUSED` gana D10.1: P1.1 → F2 → {D10, Q23.D}; `/24V_IN` = P1.1, F2.1, Q10.D solamente. +- `/ANT_BIAS` (U28.6 → L21.2, C144, C145); U18.7 ahora es NC; `/GNSS_ANT_OFF` (U18.5 → U28.3, R135); `/GNSS_ANT_SHORT_N` gana U28.4 y R136. +- `/ETH_PWR_EN` (U12.2, U16.54, R139); U12.2 sale de `/SYS5V`. +- `/DOUT_4G_F9P` (U27.4 → U18.26); U18.26 sale de `/DOUT_4G`; U27.2 entra a `/DOUT_4G`. +- `/PFO` (renombrada desde `/PFO_TP`: U6.20, TP2, más U16.29 y R141). +- `/NTC_CELL` (U16.25, R137, R138, C169); `/NTC` gana R137. - `/GNSS_SAFEBOOT_N` (U18.50, TP10); `/USART1_TX` (U16.42, TP9). -- R56.2 moves from GND to `/3V3`; Y3 pads re-netted as above. +- R56.2 pasa de GND a `/3V3`; pads de Y3 re-asignados como arriba. -**DRC with the new rules (run on a copy of the current, not-yet-updated board):** 161 clearance errors (was 0). **149 of them are zone-fill proximities** (stored fills at 0.15 mm to HV24 and RF nets); a zone refill clears them. **12 are real copper spacings:** `/IGN_IN` on In2 vs GND via 0.250, `/FAN_PWM` 0.291, `/5V_FAN` via 0.300, `/NTC2` 0.305, `/VEH5V` via 0.340 (all F-02, disappear with the P1.3 move); `/VIN_PROT` vs `/VEH5V` 0.157 and 0.191 at (175.5, 113.8); `/USB_VBUS` vs Q23.1 `/Q23_GATE` 0.225; `/SW_PWRIN` vs GND track 0.270; `/24V` vs `/COMP_FAN` 0.290 ×2 (DNP branch, but the copper exists); RF class: `/RF_LTE` via vs `/PWR_CTRL` 0.150 (goes away with the F-06 F.Cu reroute). **Caveat:** KiCad lists only one violation between the long In2 `/IGN_IN` segment and `/VEH5V` (the via at 0.340 mm); the parallel `/VEH5V` 1.0 mm tracks beside it are 0.221–0.240 mm away (recomputed from the track coordinates, matching the audit's 0.221 mm) and are not listed as separate items. So do not read the DRC count as the full list; the F-02 move removes the whole In2 `/IGN_IN` run anyway. `track_width` warnings drop 183 → 121 (`/3V3_ETH` now Default, PWR_MID width 0.6). Other DRC items unchanged (82 lib_footprint_mismatch, 4 lib_footprint_issues, 11 silk_overlap, 2 silk_over_copper, 1 silk_edge). After Update PCB, expect new HV24 items on `/VIN_FUSED` at D10 and removal of the `/VIN_MODEM` ones. Check once with Inspect → Clearance Resolution that the classes survived the GUI save (resync protocol §5). +DRC con las reglas nuevas (corrido sobre una copia de la tarjeta actual, todavía sin actualizar): 161 errores de clearance (eran 0). **149 son proximidades de relleno de zona** (rellenos guardados a 0.15 mm de nets HV24 y RF); un refill de zonas los quita. **12 son separaciones de cobre reales:** `/IGN_IN` en In2 vs vía de GND 0.250, `/FAN_PWM` 0.291, vía de `/5V_FAN` 0.300, `/NTC2` 0.305, vía de `/VEH5V` 0.340 (todos F-02, desaparecen con el movimiento a P1.3); `/VIN_PROT` vs `/VEH5V` 0.157 y 0.191 en (175.5, 113.8); `/USB_VBUS` vs Q23.1 `/Q23_GATE` 0.225; `/SW_PWRIN` vs pista de GND 0.270; `/24V` vs `/COMP_FAN` 0.290 ×2 (rama DNP, pero el cobre existe); clase RF: vía de `/RF_LTE` vs `/PWR_CTRL` 0.150 (se va con el re-ruteo F.Cu de F-06). Salvedad: KiCad lista una sola violación entre el segmento largo de `/IGN_IN` en In2 y `/VEH5V` (la vía a 0.340 mm); las pistas paralelas de 1.0 mm de `/VEH5V` a su lado están a 0.221–0.240 mm (recalculado a partir de las coordenadas de las pistas, coincide con los 0.221 mm de la auditoría) y no se listan como elementos separados. Así que no leer el conteo del DRC como la lista completa; el movimiento de F-02 elimina de todos modos todo el tramo de `/IGN_IN` en In2. Los avisos `track_width` bajan 183 → 121 (`/3V3_ETH` ahora en Default, ancho PWR_MID 0.6). Los demás elementos del DRC no cambian (82 lib_footprint_mismatch, 4 lib_footprint_issues, 11 silk_overlap, 2 silk_over_copper, 1 silk_edge). Tras Update PCB, esperar elementos HV24 nuevos en `/VIN_FUSED` en D10 y la desaparición de los de `/VIN_MODEM`. Comprobar una vez con Inspect → Clearance Resolution que las clases sobrevivieron al guardado desde la GUI (protocolo de resincronización §5). -**Order notes (from the part lookups):** C2862740 (TPS7A2033PDBVR, U21) is listed by JLC under "Pre-ordered Chips": pre-order it into the account like J14. P11/P12 C5160226 stock 512 (enough for 20 boards). Re-check stock on order day (D14). +**Notas de pedido (de las consultas de partes):** C2862740 (TPS7A2033PDBVR, U21) aparece en JLC bajo «Pre-ordered Chips»: pre-ordenarlo en la cuenta como J14. P11/P12 C5160226 stock 512 (suficiente para 20 tarjetas). Volver a revisar stock el día del pedido (D14). -## 11. Firmware notes (for FW 0.7.x `board_v6.h`, D15) +## 11. Notas de firmware (para FW 0.7.x `board_v6.h`, D15) -1. **PD2 = `ETH_PWR_EN`**: U12 (3V3_ETH) enable, R139 100 k pull-down → Ethernet OFF in reset/DFU/battery; drive HIGH only on vehicle power when Ethernet is needed; keep SPI2 and PA15 low while it is off. -2. **PB10 = `PFO`**: LTC4040 PFO, open-drain, R141 100 k pull-up to 3V3; EXTI10 falling = backup entry (VEH5V < PFI 4.40 V falling / 4.51 V rising). Update `V5_PFI` to 4.40 V. -3. **PC5 = `NTC_CELL`** (ADC1_IN15): pack NTC through 100 k/120 k (ratio 120/220) + 10 nF; Rntc = R55·Vntc/(VEH5V − Vntc) with VEH5V from PA4; valid only with VEH5V present. Feed `tcell` into `CHG_CELL_HOT/COOL`. -4. **CHGOFF default:** R56 is now a pull-**up** to 3V3 → PA8 (`CHRG_EN`, drives LTC4040 CHGOFF) high = charger **off** whenever the MCU is not driving. Polarity unchanged: firmware drives PA8 LOW to allow charging. -5. **Ignition on PA5 (ADC1_IN5), read analog**, no internal pull: Rigb1 = 2.2 k → ratio 2.0 k/24.0 k = **0.0833**: 12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V, full scale 39.6 V. Add `vign` to `$PHLG`. -6. **TMP102 at 0x48 = charger sensor (U29)**, **0x49 = modem-area sensor (U31)**; no address clash (0x18 SC7A20, 0x20 PCF8574, 0x44 SHT40, 0x4D SC16IS752). Add `tchg`, `tmodem` to `$PHLG`; shed charge on `tchg` > 85 °C. -7. GNSS antenna: F9P ANT_OFF now drives TPS2552 ~EN (set `CFG-HW-ANT_CFG_VOLTCTRL` = 1, `SHORTDET` = 1). PC2 `GNSS_ANT_SHORT_N` is driven by TPS2552 ~FAULT (open drain, 10 k to 3V3_GNSS): LOW = short or rail off. PC1 `GNSS_ANT_DETECT` remains undriven (keep hi-Z, infer open antenna from C/N0). -8. U27 now isolates F9P RXD2: F9P-only power cycles with the modem up become safe on boards that have it; keep the 0.5.5/0.5.6 back-feed rules for PA2/PA10/PC7/PC12. Rdfu1 is 100 k (≤ 27 µA into TXD2 with the F9P off). -9. `/MODEM_STATUS` (PC9) has a 100 k pull-down and `/DIN_4G` a 100 k pull-up in hardware: no internal pulls needed. R106 is 1 k. -10. PA9 is a test pad (TP9, `USART1_TX`): usable as a TX-only debug log or ROM USART bootloader. -11. U25 set-point is now 5.32 V nominal (R121 57.6 k): keep `CHG_RAIL_ON` 5.05 V / `CHG_RAIL_OFF` 4.90 V; compute VDDA from VREFINT. -12. LSE: Y4 is CL 7 pF → set `LSEMOD` (high drive) before `LSEON`, LSI fallback. HSE is still 25 MHz (new 3225 crystal); `BOARD_SER_XTAL_HZ` = 3 686 400 (Y2 value text now matches). -13. Battery mode (D9): LTE-only (`AT+CNMP=38`), Ethernet off. +1. **PD2 = `ETH_PWR_EN`**: enable de U12 (3V3_ETH), R139 100 k pull-down → Ethernet APAGADO en reset/DFU/batería; ponerlo en ALTO solo con energía de vehículo cuando se necesite Ethernet; mantener SPI2 y PA15 en bajo mientras esté apagado. +2. **PB10 = `PFO`**: PFO del LTC4040, open-drain, R141 100 k pull-up a 3V3; EXTI10 flanco de bajada = entrada a respaldo (VEH5V < PFI 4.40 V bajando / 4.51 V subiendo). Actualizar `V5_PFI` a 4.40 V. +3. **PC5 = `NTC_CELL`** (ADC1_IN15): NTC del paquete a través de 100 k/120 k (relación 120/220) + 10 nF; Rntc = R55·Vntc/(VEH5V − Vntc) con VEH5V desde PA4; válido solo con VEH5V presente. Alimentar `tcell` a `CHG_CELL_HOT/COOL`. +4. CHGOFF por omisión: R56 ahora es pull-up a 3V3 → PA8 (`CHRG_EN`, maneja CHGOFF del LTC4040) en alto = cargador apagado siempre que el MCU no lo maneje. Polaridad sin cambio: el firmware pone PA8 en BAJO para permitir la carga. +5. **Ignición en PA5 (ADC1_IN5), leer analógico**, sin pull interno: Rigb1 = 2.2 k → relación 2.0 k/24.0 k = **0.0833**: 12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V, escala completa 39.6 V. Añadir `vign` a `$PHLG`. +6. **TMP102 en 0x48 = sensor del cargador (U29)**, **0x49 = sensor de la zona del módem (U31)**; sin choque de direcciones (0x18 SC7A20, 0x20 PCF8574, 0x44 SHT40, 0x4D SC16IS752). Añadir `tchg`, `tmodem` a `$PHLG`; cortar la carga con `tchg` > 85 °C. +7. Antena GNSS: el ANT_OFF del F9P ahora maneja el ~EN del TPS2552 (poner `CFG-HW-ANT_CFG_VOLTCTRL` = 1, `SHORTDET` = 1). PC2 `GNSS_ANT_SHORT_N` lo maneja el ~FAULT del TPS2552 (open drain, 10 k a 3V3_GNSS): BAJO = corto o riel apagado. PC1 `GNSS_ANT_DETECT` sigue sin manejar (mantener en alta impedancia, inferir antena abierta por C/N0). +8. U27 ahora aísla el RXD2 del F9P: los ciclos de energía solo del F9P con el módem encendido se vuelven seguros en tarjetas que lo tengan; mantener las reglas de retorno de corriente 0.5.5/0.5.6 para PA2/PA10/PC7/PC12. Rdfu1 es 100 k (≤ 27 µA hacia TXD2 con el F9P apagado). +9. `/MODEM_STATUS` (PC9) tiene pull-down de 100 k y `/DIN_4G` pull-up de 100 k en hardware: no hacen falta pulls internos. R106 es 1 k. +10. PA9 es un pad de prueba (TP9, `USART1_TX`): usable como log de depuración solo TX o bootloader USART de ROM. +11. El punto de ajuste de U25 es ahora 5.32 V nominal (R121 57.6 k): mantener `CHG_RAIL_ON` 5.05 V / `CHG_RAIL_OFF` 4.90 V; calcular VDDA desde VREFINT. +12. LSE: Y4 es CL 7 pF → activar `LSEMOD` (alto drive) antes de `LSEON`, respaldo LSI. HSE sigue en 25 MHz (cristal 3225 nuevo); `BOARD_SER_XTAL_HZ` = 3 686 400 (el texto de valor de Y2 ahora coincide). +13. Modo batería (D9): solo LTE (`AT+CNMP=38`), Ethernet apagado. -## 12. Incidents and surprises +## 12. Incidentes y sorpresas -1. **J-04 wire stubs were not all dangling.** The audit listed three stub UUIDs. Deleting all three broke two connections: at P1.4 the GND label sits at the far end of 46f71e27 (only 2b755f7f is the dangling overhang), and at R52.2 the GND label sits mid-segment on 7c1dbfc0 (only a 0.76 mm tail past the label was dangling). ERC showed 3 new errors and the netlist diff flagged exactly P1.4 and R52.2 as unexpected. Fixed by deleting only 2b755f7f, keeping 46f71e27 and the P1.4 junction, and trimming 7c1dbfc0 to end at its label. Re-verified: expected == actual, ERC 0 errors. -2. **`device_commit_files` re-sent a cached upload** when a staged path was reused: my second commit of Group 1 wrote the first version. Caught by hashing the Mac file after every commit; from then on every commit used a unique staged path. Every committed state in this report was hash-checked on the Mac. -3. **Y3 needed a symbol swap**, not a footprint swap: `Device:Crystal` (2 pins) on the 3225-4P land would have put HSE_OUT on GND pad 2. Swapped to `Device:Crystal_GND24` in place (UUIDs kept, pins 3/4 added), proven by the netlist. -4. **The TPS2552 has no KiCad library symbol** (embedded one authored, §7). -5. **TPS7A2033PDBVR is in JLC's "Pre-ordered Chips" category** (stock 28 370): pre-order like J14. -6. One wire-crossing hit on U30 remains: the MCP tool's bounding box for the vertically asymmetric USBLC6 symbol; the PDF shows the VBUS wire leaving the pin outward. +1. **No todos los tramos de cable de J-04 estaban colgando.** La auditoría listó tres UUID de tramos. Borrar los tres rompió dos conexiones: en P1.4 la etiqueta GND está en el extremo lejano de 46f71e27 (solo 2b755f7f es el sobrante colgante), y en R52.2 la etiqueta GND está a mitad de segmento en 7c1dbfc0 (solo una cola de 0.76 mm pasada la etiqueta colgaba). ERC mostró 3 errores nuevos y el diff de netlist marcó exactamente P1.4 y R52.2 como inesperados. Se corrigió borrando solo 2b755f7f, conservando 46f71e27 y la unión de P1.4, y recortando 7c1dbfc0 para que termine en su etiqueta. Re-verificado: esperado == obtenido, ERC 0 errores. +2. **Y3 necesitaba un cambio de símbolo**, no de huella: `Device:Crystal` (2 pines) sobre el land 3225-4P habría puesto HSE_OUT en el pad 2 de GND. Se cambió a `Device:Crystal_GND24` en su lugar (UUID conservados, pines 3/4 añadidos), probado por la netlist. +3. **El TPS2552 no tiene símbolo en la librería de KiCad** (se creó uno embebido, §7). +4. **El TPS7A2033PDBVR está en la categoría «Pre-ordered Chips» de JLC** (stock 28 370): pre-ordenar como J14. +5. Queda un cruce de cable en U30: es la caja envolvente de la herramienta MCP para el símbolo USBLC6, verticalmente asimétrico; el PDF muestra el cable de VBUS saliendo del pin hacia afuera. -## 13. New LCSC numbers (JLC DB lookup via KiCad MCP, 2026-09-28) +## 13. Números LCSC nuevos (consulta a la base de datos de JLC vía KiCad MCP, 2026-09-28) -| LCSC | Part | Package | Stock | Type | Used on | +| LCSC | Parte | Encapsulado | Stock | Tipo | Usado en | |---|---|---|---|---|---| -| C206912 | Littelfuse 0154003.DR 3 A | SMD 9.7×5 (Nano2 holder) | 2 217 | Ext | F2 | -| C22840 | 1.43 kΩ 1 % | 0603 | 4 965 | Ext | R50 | +| C206912 | Littelfuse 0154003.DR 3 A | SMD 9.7×5 (portafusible Nano2) | 2 217 | Ext | F2 | +| C22840 | 1.43 kΩ 1 % | 0603 | 4 965 | Ext | R50 | | C1975527 | Littelfuse PESD0402-240 | 0402 | 9 394 | Ext | D28 | | C46506 | TI TPS2552DBVR | SOT-23-6 | 3 002 | Ext | U28 | | C224019 | Littelfuse SMBJ33A | DO-214AA | 9 624 | Ext | D35 | | C57156 | NXP SC16IS752IPW,128 | TSSOP-28 | 2 670 | Ext | U10 | | C177479 | HKR RCT03499KFLF 499 k | 0603 | 26 862 | Ext | R53 | -| C23082 | 57.6 kΩ 1 % | 0603 | 3 673 | Ext | R121 | -| C5440143 | Samwha 47 µF 16 V X7R | 1210 | 242 640 | Ext | C161, C162 | +| C23082 | 57.6 kΩ 1 % | 0603 | 3 673 | Ext | R121 | +| C5440143 | Samwha 47 µF 16 V X7R | 1210 | 242 640 | Ext | C161, C162 | | C15578 | TI TLV1117LV33DCYR | SOT-223 | 26 999 | Ext | U17 | -| C881921 | Lelon OVZ221M1CTR-0608 220 µF 16 V polymer | 6.3×7.7 | 2 442 | Ext | C78, C130, C131, C165 | -| C22862 | 113 kΩ 1 % | 0603 | 59 728 | Ext | R116 | -| C1542 | 6.8 nF 50 V X7R | 0402 | 128 063 | Pref | C141 | -| C1572 | 56 pF C0G | 0402 | 83 992 | Ext | C142 | -| C86817 | Murata 22 µF 16 V X5R | 0805 | 4 144 | Ext | C163, C164, C166, C167 | +| C881921 | Lelon OVZ221M1CTR-0608 220 µF 16 V polímero | 6.3×7.7 | 2 442 | Ext | C78, C130, C131, C165 | +| C22862 | 113 kΩ 1 % | 0603 | 59 728 | Ext | R116 | +| C1542 | 6.8 nF 50 V X7R | 0402 | 128 063 | Pref | C141 | +| C1572 | 56 pF C0G | 0402 | 83 992 | Ext | C142 | +| C86817 | Murata 22 µF 16 V X5R | 0805 | 4 144 | Ext | C163, C164, C166, C167 | | C99269 | TI TMP102AIDRLR | SOT-563 | 34 854 | Ext | U29, U31 | -| C25808 | 120 kΩ 1 % | 0603 | 773 686 | Basic | R138 | -| C1589 | 10 nF 50 V X7R | 0603 | 6 584 349 | Ext | C169, C91 | -| C2862740 | TI TPS7A2033PDBVR | SOT-23-5 | 28 370 | Ext (**pre-order category**) | U21 | -| C23162 | 4.7 kΩ 1 % | 0603 | 21 915 184 | Basic | R140 | +| C25808 | 120 kΩ 1 % | 0603 | 773 686 | Basic | R138 | +| C1589 | 10 nF 50 V X7R | 0603 | 6 584 349 | Ext | C169, C91 | +| C2862740 | TI TPS7A2033PDBVR | SOT-23-5 | 28 370 | Ext (categoría pre-orden) | U21 | +| C23162 | 4.7 kΩ 1 % | 0603 | 21 915 184 | Basic | R140 | | C12518 | Nexperia 74LVC1G125GV,125 | SOT-753 | 5 234 | Ext | U27 | | C7519 | ST USBLC6-2SC6 | SOT-23-6 | 1 415 | Ext | U30 | -| C25803 | 100 kΩ 1 % | 0603 | 10 814 547 | Basic | new pull resistors, Rdfu1, H-02b set | -| C14663 | 100 nF 50 V X7R | 0603 | 37 493 696 | Basic | C168, C170, C172–C174 | -| C23345 | 22 Ω 1 % | 0603 | 4 031 533 | Basic | R132–R134 | -| C1525 | 100 nF 16 V X7R | 0402 | 43 509 060 | Basic | C171 | -| C14676 | 1 kΩ 5 % | 0603 | 757 955 | Ext | R106 | -| C2901684 | SCTF SX3B25.000F1010F30 25 MHz CL 10 pF | 3225-4P | 11 076 | Ext | Y3 | -| C38523 | 12 pF C0G | 0603 | 3 346 489 | Basic | C113, C114 | -| C48615 | Epson Q13FC13500002 FC-135 CL 7 pF | 3215-2P | 101 342 | Ext | Y4 | -| C1679 | 6.8 pF C0G | 0603 | 1 445 998 | Pref | C115, C116 | -| C4190 | 2.2 kΩ 1 % | 0603 | 2 920 710 | Basic | Rigb1 | -| C1663 | 33 pF C0G | 0603 | 2 808 576 | Basic | C95, C96 | -| C1779 | 4.7 µF 25 V X5R | 0805 | 4 715 349 | Basic | C90 | +| C25803 | 100 kΩ 1 % | 0603 | 10 814 547 | Basic | resistencias de pull nuevas, Rdfu1, conjunto H-02b | +| C14663 | 100 nF 50 V X7R | 0603 | 37 493 696 | Basic | C168, C170, C172–C174 | +| C23345 | 22 Ω 1 % | 0603 | 4 031 533 | Basic | R132–R134 | +| C1525 | 100 nF 16 V X7R | 0402 | 43 509 060 | Basic | C171 | +| C14676 | 1 kΩ 5 % | 0603 | 757 955 | Ext | R106 | +| C2901684 | SCTF SX3B25.000F1010F30 25 MHz CL 10 pF | 3225-4P | 11 076 | Ext | Y3 | +| C38523 | 12 pF C0G | 0603 | 3 346 489 | Basic | C113, C114 | +| C48615 | Epson Q13FC13500002 FC-135 CL 7 pF | 3215-2P | 101 342 | Ext | Y4 | +| C1679 | 6.8 pF C0G | 0603 | 1 445 998 | Pref | C115, C116 | +| C4190 | 2.2 kΩ 1 % | 0603 | 2 920 710 | Basic | Rigb1 | +| C1663 | 33 pF C0G | 0603 | 2 808 576 | Basic | C95, C96 | +| C1779 | 4.7 µF 25 V X5R | 0805 | 4 715 349 | Basic | C90 | | C2827694 | PESD5V0S1BA | SOD-323 | 303 975 | Ext | D36–D38 | -| C25804 | 10 kΩ 1 % | 0603 | (existing Basic) | Basic | R136 | +| C25804 | 10 kΩ 1 % | 0603 | (Basic existente) | Basic | R136 | -Final BOM (`kicad/_to_delete/v6-apply-20260928/bom_final*.csv`, kicad-cli): 306 populated BOM lines; only TP1–TP8 have no LCSC (copper pads, as before). +BOM final (`kicad/_to_delete/v6-apply-20260928/bom_final*.csv`, kicad-cli): 306 líneas de BOM pobladas; solo TP1–TP8 no tienen LCSC (pads de cobre, como antes). -## 14. Files and backups +## 14. Archivos -- Edited in place: `03-Architecture-Hardware/kicad/hbox-watchdog-v6.kicad_sch`, `.kicad_pro`, `.kicad_dru`, `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod`. +- Editados en su lugar: `03-Architecture-Hardware/kicad/hbox-watchdog-v6.kicad_sch`, `.kicad_pro`, `.kicad_dru`, `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod`. - PDF: `03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf`. -- Backups (nothing deleted): `kicad/_to_delete/v6-apply-20260928/` — `00-pre/` (sch, pro, dru, prl, SO-8 footprint, DRC side-file), `01-blockers/`, `02-majors/`, `03-minors/`, `04-rules/`, `05-final/`, `netlists/00-baseline … 05-final.xml`, `erc_work/` (ERC isolation copies), `drc_work/` (DRC on a board copy with the new rules; report + JSON), `scratch/` (intermediate PDFs, library-extraction file), `bom_final.csv`, `bom_final_ungrouped.csv`. -- Container: `/home/claude/v6audit/apply/` — this report, `netlist_diff_total.md`, `out/0N-*/` (edit logs, expected sets, per-group diffs), `tools/` (editor, model, diff, group scripts), `drc/`, the PDF. -- The `.kicad_pcb` is untouched. If KiCad was open on v6 during this pass, close it **without saving** and reopen before Update PCB (resync protocol §5). +- El `.kicad_pcb` no se tocó. Si KiCad estaba abierto en v6 durante este pase, cerrarlo **sin guardar** y reabrir antes de Update PCB (protocolo de resincronización §5). +- Git (lo ejecuta Leo; nada se confirmó desde aquí): commit dentro del submódulo `kicad` (sch, pro, dru, huella SO-8), push a Gitea `HBox_PCB`, después actualizar el gitlink del padre; `_to_delete/` está en gitignore. -**Git (for Leo to run; nothing was committed from here):** commit inside the `kicad` submodule (sch, pro, dru, SO-8 footprint), push to Gitea `HBox_PCB`, then bump the parent gitlink; `_to_delete/` is gitignored. +Ver también: [manual v6](../manuales/manual-tarjeta-v6.md) · [auditoría completa v6](v6-auditoria-completa.md) · [mapa de pines MCU v6](v6-pinmap.md) · [revisión contra lecciones V5.5](v6-revision-lecciones-v55.md) · [informe de cambios V5.6](v56-cambios-esquematico.md) (lo que de esta auditoría se llevó a la V5.6). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-28 | Informe original (inglés): aplicación de los hallazgos de la auditoría v6 al esquemático. | +| 1.1 | 2026-09-29 | Traducción al español; hashes, respaldos y notas de proceso al anexo de trazabilidad. Sin cambios técnicos. | + +??? note "Anexo técnico — trazabilidad" + **SHA-256 antes / después:** + + | Archivo | Antes | Después | + |---|---|---| + | `hbox-watchdog-v6.kicad_sch` | `ecee9fed851f02e74074340bf8361bced7c385b2502b19c368861b9851c2f04a` | `d54e330d189910afd58e18fc7cd498bdb3e6e5b7b3c4472b6cae7f95650b34c4` | + | `hbox-watchdog-v6.kicad_pro` | `25c57f3936b96a4e31cb5947668c172d318189258d6a5d2fa34d230df8958028` | `d577aa43076f5f751c291041dbf3054cb93a87facfe9f339ef91b60e073bd6ce` | + | `hbox-watchdog-v6.kicad_dru` | `47538e6cfadc0c53421ff59dadabc0e7f0ad5f11d9e2250618728788080aca1a` | `31ce0f4f23e8178b4b5e837b452e7bb8647d446ffd420559049eaaae78100831` | + | `Drogheda-v6.pretty/SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP.kicad_mod` | `0171be85ff9bf1d27232731a9931ad9d6c3c2bcdee2f5f3558ee94d2566413f9` | `3f38f26e435c477a7701636d4d5e1c05b4c7bd523e8dd04f9f57128657736313` | + | `hbox-watchdog-v6.kicad_pcb` | `6ddec80d1c15f79e69dff6c1a850b28345a5d826389f79cee8c61998240b36bf` | sin cambio | + | `hbox-watchdog-v6-schematic.pdf` | — | `a2c94a49…` | + + Respaldos (nada se borró): `kicad/_to_delete/v6-apply-20260928/` — `00-pre/` (sch, pro, dru, prl, huella SO-8, archivo lateral de DRC), `01-blockers/`, `02-majors/`, `03-minors/`, `04-rules/`, `05-final/`, `netlists/00-baseline … 05-final.xml`, `erc_work/` (copias de aislamiento de ERC), `drc_work/` (DRC sobre una copia de la tarjeta con las reglas nuevas; reporte + JSON), `scratch/` (PDF intermedios, archivo de extracción de librería), `bom_final.csv`, `bom_final_ungrouped.csv`. Área de trabajo del contenedor: `/home/claude/v6audit/apply/` — este informe, `netlist_diff_total.md`, `out/0N-*/` (logs de edición, conjuntos esperados, diffs por grupo), `tools/` (editor, modelo, diff, scripts por grupo), `drc/`, el PDF. + + **Nota de proceso:** durante el grupo 1 una segunda confirmación de archivo reenvió una copia en caché y escribió la primera versión; se detectó por el hash del archivo en la Mac y desde entonces cada confirmación usó una ruta única. Cada estado confirmado en este informe se comprobó por hash en la Mac. diff --git a/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Datasheet_ES_v1.0.md b/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Datasheet_ES_v1.0.md index 788b61f..7d8102a 100644 --- a/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Datasheet_ES_v1.0.md +++ b/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Datasheet_ES_v1.0.md @@ -1,5 +1,5 @@ --- -title: EinarBoard V5.6 (HBOX V5) — Hoja de datos de ingeniería +title: "EinarBoard V5.6 (HBOX V5) — Hoja de datos de ingeniería" project: Project Drogheda date: 2026-09-29 version: "1.0" @@ -10,17 +10,20 @@ author: Helgen Technologies # EinarBoard V5.6 (HBOX V5) — Hoja de datos de ingeniería -!!! info "Tarjeta: EinarBoard **V5.6** — proyecto KiCad `hbox-watchdog-v5` (lote en pedido, sep-2026)" - Esta tarjeta es la evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). **No es la v6** (GNSS y 4G soldados a bordo, `hbox-watchdog-v6`, en diseño): la v6 tiene su propia sección en el sitio. Cuando este documento dice «copiado de v6» se refiere solo al origen de un valor de componente. +!!! note "Alcance y fuentes" + Evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). No es la v6 (GNSS y 4G soldados, `hbox-watchdog-v6`, en diseño); "copiado de v6" se refiere solo al origen de un valor de componente. Fuentes: netlist `kicad/_to_delete/v56-work-20260928/p5ntc-after.xml` (SHA-256 `45d3f034…8e42a7`, exportada de `kicad/hbox-watchdog-v5.kicad_sch` el 2026-09-28), `2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md` (§1, §9, §10), `2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md`, `04-Source-Code/firmware/hbox_v5_bringup/board_v5.h`, `hbox_v5_bringup.ino` 0.6.0 y `README.md`. Lo no verificado va marcado ``. +## Resumen -> **Fuentes de cada número:** netlist `kicad/_to_delete/v56-work-20260928/p5ntc-after.xml` (SHA-256 `45d3f034…8e42a7`, exportada de `kicad/hbox-watchdog-v5.kicad_sch` el 2026-09-28), `2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md` (§1, §9, §10), `2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md`, `04-Source-Code/firmware/hbox_v5_bringup/board_v5.h`, `hbox_v5_bringup.ino` 0.6.0 y `README.md`. Lo que no pudo verificarse va marcado ``. +La EinarBoard V5.6 es la tarjeta portadora/watchdog del rastreador HBOX RTK. Lleva a bordo: -## Executive summary (EN) +- MCU STM32F411RET6 (LQFP-64, HSE 25 MHz, USB-C DFU/consola en J11). +- LTC4040, respaldo de batería 1S: límite de entrada 2.5 A, carga 1.4 A, boost de respaldo 4.79 V, umbral de falla de alimentación 4.44 V. Alimenta el riel `SYS5V`, que corta el interruptor P11. +- Zócalos para los módulos ArduSimple: simpleRTK2B (u-blox ZED-F9P, formato UNO, MOD1, en el riel `SW_5V` que controla el MCU) y 4G NTRIP Master (formato XBee, J7/J8, con buck propio AP64350 de 3.3 V que el MCU enciende con `MODEM_EN` y resetea con `MODEM_RST`). +- Periféricos: Ethernet W5500 (SPI2, RJ45 J10, sin PoE); puente UART doble SC16IS752 para RS-485 (P15) y RS-232 (P16); expansor PCF8574 para el medidor de batería de 4 LEDs y el LED RGB externo (P14); SHT40 (T/HR del aire); dos TMP102 (cargador @0x48, módem @0x49); NTC del paquete leída por el LTC4040 y el MCU; entrada de NTC de punto caliente (P12); buck del ventilador (24 V → 5 V, P6); relevador K1 de Modo B a prueba de fallas, que mantiene el tráfico GNSS → módem aunque el MCU muera. +- Entradas: 24 V del vehículo (P1, solo ventilador y lectura de ignición) y 5 V de una Mean Well SD-15B-05 externa (P2). -EinarBoard V5.6 is the Helgen carrier/watchdog PCB inside the HBOX RTK tracker. It hosts an on-board **STM32F411RET6** (LQFP-64, 25 MHz HSE, USB-C DFU/console on J11), an **LTC4040** 1S battery-backup manager (2.5 A input limit, 1.4 A charge, 4.79 V backup boost, 4.44 V power-fail threshold) feeding a cut-off-switchable **SYS5V** rail, and sockets for the two ArduSimple modules: the **simpleRTK2B** (u-blox ZED-F9P, UNO-form socket MOD1, on the MCU-gated `SW_5V` rail) and the **4G NTRIP Master** (XBee-form socket J7/J8, on a dedicated **AP64350** 3.3 V buck that the MCU can now enable/disable via `MODEM_EN` and reset via `MODEM_RST`). Peripherals: W5500 **Ethernet** (SPI2, RJ45 J10, no PoE), SC16IS752 dual UART bridge giving **RS-485** (P15) and **RS-232** (P16), PCF8574 expander for the 4-LED battery gauge and the external RGB LED (P14), SHT40 air T/RH, two TMP102 (charger @0x48, modem @0x49), pack NTC read by both the LTC4040 and the MCU, hot-spot NTC input (P12), fan buck (24 V → 5 V, P6) and a fail-safe Modo-B relay K1 that keeps GNSS → modem traffic flowing even with the MCU dead. Power in: 24 V vehicle (P1, fan only + ignition sense) and 5 V from an external Mean Well SD-15B-05 (P2). V5.6 is the V5.5 board (15 pcs, JLC 22-Aug-2026) plus the 27/28-Sep ECO: modem rail moved to SYS5V under MCU control, charger re-sized for the SD-15B, LiFePO4 (LFP-HT 26650) chemistry straps, modem/charger temperature sensors, USB ESD on J9, ETH_RST pull-down, JP6 cut-off bypass, P5 probe connector removed. Firmware: `hbox_v5_bringup` 0.6.0 (single binary for V5.5/V5.6; V5.6-only features — MODEM_EN/RST, RTCM tap, tcell — land in 0.6.x). - ---- +V5.6 = V5.5 (15 pzas, JLC 22-ago-2026) + ECO 27/28-sep: riel del módem en `SYS5V` bajo control del MCU, cargador redimensionado para la SD-15B, straps de química LiFePO4 (LFP-HT 26650), sensores de temperatura de módem y cargador, ESD en J9, pull-down en `ETH_RST`, puente JP6 del corte, sin conector P5. Firmware: `hbox_v5_bringup` 0.6.0 (un binario para V5.5/V5.6; `MODEM_EN/RST`, derivación RTCM y `tcell` llegan en 0.6.x). ## 1. Qué es @@ -28,8 +31,8 @@ EinarBoard V5.6 is the Helgen carrier/watchdog PCB inside the HBOX RTK tracker. |---|---|---| | Nombre | **EinarBoard V5.6** — tarjeta portadora/watchdog del HBOX RTK (cuadro de título KiCad: *EINARBoard HBox*, Helgen Servicios Especializados) | netlist `title_block` | | Proyecto KiCad | `03-Architecture-Hardware/kicad/hbox-watchdog-v5.*` (V5.5 y V5.6 comparten proyecto; V5.6 = ECO aplicada al esquemático el 28-sep; PCB pendiente de *Update PCB from Schematic*; etiqueta git `v5.5-as-fabbed` guarda el estado del lote anterior) | Informe de cambios §9 | -| MCU | U16 **STM32F411RET6** LQFP-64 soldado (ya no hay Blackpill en zócalo) · HSE Y3 25 MHz · LSE Y4 32.768 kHz · SYSCLK 96 MHz, USB 48 MHz | `board_v5.h`, `.ino` | -| Módulos en zócalo | **MOD1** simpleRTK2B (u-blox ZED-F9P, formato UNO) · **J7/J8** 4G NTRIP Master (formato XBee, paso 2.00 mm) | netlist | +| MCU | U16 **STM32F411RET6** LQFP-64 soldado (ya no hay Blackpill en zócalo) · HSE Y3 25 MHz · LSE Y4 32.768 kHz · SYSCLK 96 MHz, USB 48 MHz | `board_v5.h`, `.ino` | +| Módulos en zócalo | **MOD1** simpleRTK2B (u-blox ZED-F9P, formato UNO) · **J7/J8** 4G NTRIP Master (formato XBee, paso 2.00 mm) | netlist | | Firmware | `hbox_v5_bringup` **0.6.0** (`hbox-v5-bringup_0.6.0.bin`), consola USB CDC en J11 | `README.md` | | Lote V5.5 | 15 pzas, JLCPCB 22-ago-2026 | FACTS / procedimiento v5 | | Lote V5.6 | Por pedir (semana del 29-sep-2026); BOM 94 LCSC comprobados para 30 tarjetas | Informe §10 | @@ -67,31 +70,31 @@ EinarBoard V5.6 is the Helgen carrier/watchdog PCB inside the HBOX RTK tracker. | Riel | Origen | Regulador / paso | Valor | Alimenta | Notas | |---|---|---|---|---|---| -| `24V_IN` → `24V` | P1.1 (vehículo 24 V nominal; ignición 12–24 V) | D10 SMBJ33A a GND, Q10 IRFR5305 (protección de polaridad, DzG1 BZX84C15 + Rrp1 10 k en compuerta) | 24 V | Solo U2 (ventilador) | El resto de la tarjeta **no** depende de 24 V | -| `5V_FAN` | `24V` | U2 MP1584EN (EN por Ren1 100 k / Ren2 20 k desde `24V`), L2 10 µH, Dbk1 SS34, FB R20 100 k / R21 19.1 k | ≈ 5.0 V (0.8 V × (1 + 100/19.1) = 4.99 V) | P6.1 ventilador; retorno conmutado por Q2 AO3400A (PA6) | JP1 (abierto) une `5V_FAN` con `VEH5V` — no cerrar | -| `VEH5V` | P2.1 (Mean Well SD-15B-05 externa, ajustada 5.2–5.4 V; unidades medidas 5.25–5.57 V) | C78 220 µF polímero + C30/C31 | 5.25–5.57 V | RS1, divisor PFI, R7/R8 (`5V_SENSE`), R55 (NTC bias), U6 VIN/OVSNS | Lección E-PFI: nunca trabajar el módem sin batería con menos de 5.2 V en P2 | -| `VIN_SW` | `VEH5V` | RS1 **10 mΩ** 1 W (límite de entrada LTC4040 = 25 mV / 10 mΩ = **2.5 A**) | — | Q7 AO4406A (diodo ideal, IGATE U6.15) | V5.5 tenía 8 mΩ (3.1 A > 3 A de la fuente → plegado) | -| `MAIN5V` (VSYS) | Q7 o boost de respaldo de U6 | **U6 LTC4040EUFD** · L6 2.2 µH/8 A · C32/C33/C34 (≥ 100 µF) | = VEH5V − caída, o **4.79 V** en respaldo (R53 499 k / R54 100 k) | P11.1, JP6.1, straps JP2/JP3/JP4 | **PFI 4.44 V** de caída (R51 270 k / R52 100 k); PFO en TP2 | -| `SYS5V` | `MAIN5V` a través de **P11 CUTOFF-SW** (o JP6 puenteado) | — | ≈ MAIN5V | F1/Q1 (etapa RTK), U7 (módem), U12 (Ethernet), D12→U17 (3V3), K1 bobina, R2 | Abrir P11 apaga **todo** salvo el LTC4040 y el cargador | -| `SW_IN` → `SW_5V` | `SYS5V` | **F1 PPTC BSMD1812-400-12V** (4 A hold / 8 A trip, ≤ 25 mΩ) → **Q1 AO3401A** (compuerta por Q5 ← R1 ← PA1 `PWR_CTRL`, R2 10 k pull-up = OFF por defecto) | ≈ 5.0 V con etapa ON | **MOD1.5** (simpleRTK2B) · C3 220 µF polímero + C40 22 µF | `PWR_CTRL` HIGH = etapa ON. Solo el F9P cuelga de aquí en V5.6 | -| `3V3_MODEM` | `SYS5V` (V5.5: `SW_5V`) | **U7 AP64350SP-13** · L7 4.7 µH/4 A · Cin C119/C120 22 µF + C121 10 µF · FB R60 100 k / R61 31.6 k · comp. Rcomp2 9.1 k / Ccomp2 10 nF / C123 68 pF · Rfreq2 200 k · Cbst2 100 nF · Dbk2 DNP | **3.33 V** (0.8 × (1 + 100/31.6)) | J7.1 / J8.7 (4G NTRIP Master) · C41 22 µF + C122 22 µF + C43 220 µF polímero | **EN = PC3 `MODEM_EN`** por R105 10 k, R106 100 k a GND → módem **apagado** con MCU en reset/DFU. Validar en banco: escalón 0→2 A < 150 mV sin oscilación (Informe §9) | -| `3V3_ETH` | `SYS5V` | **U12 MP1584EN** (EN = VIN: siempre encendido) · L8 10 µH/2 A · D11 SS34 · FB R87 100 k / R88 31.6 k | **3.33 V** (0.8 × (1 + 100/31.6)) | U11 W5500, J10 (TCT/RCT) | Sobrevive los ciclos de la etapa RTK; en batería el W5500 sigue alimentado (por eso R112 lo mantiene en reset) | -| `LDO_IN` → `3V3` | `SYS5V` por **D12** SS34 **o** `DFU_VBUS` (J11) por **D13** SS34 | **U17 TLV1117LV33** (SOT-223; V5.5: AMS1117-3.3) · C117 · C23/C80… | 3.3 V | MCU, sensores, U10/U13/U14/U15, LEDs, SW2, TP7, P14.1, H4.1, MOD1.2 (IOREF) | TLV1117LV: dropout bajo → 3V3 estable en respaldo (LDO_IN ≈ 4.25–4.65 V); Vin máx 5.5 V | -| `VDDA` | `3V3` | R104 + C109/C112 | 3.3 V | U16 VDDA (ADC) | — | -| `BAT_PLUS` | P4.1 | U6.23 BAT · L6 · C35 · R5/R6 ÷2 → `BAT_SENSE` PA0 | 1S: Li-ion 3.0–4.0 V (V5.5) / LFP 2.5–3.6 V (V5.6) | Boost de respaldo del LTC4040 | Ver §8 | -| `USB_VBUS` | J9 | D19 USBLC6-2SC6 | 5 V del portátil | J7.6 (USB de servicio del módem) | No alimenta la tarjeta | -| `DFU_VBUS` | J11 | D16 PESD5V0S1BA · D13 → `LDO_IN` | 5 V del portátil | Solo el 3V3 (MCU + sensores) | Con USB solo: W5500, módem y F9P **sin** energía | +| `24V_IN` → `24V` | P1.1 (vehículo 24 V nominal; ignición 12–24 V) | D10 SMBJ33A a GND, Q10 IRFR5305 (protección de polaridad, DzG1 BZX84C15 + Rrp1 10 k en compuerta) | 24 V | Solo U2 (ventilador) | El resto de la tarjeta **no** depende de 24 V | +| `5V_FAN` | `24V` | U2 MP1584EN (EN por Ren1 100 k / Ren2 20 k desde `24V`), L2 10 µH, Dbk1 SS34, FB R20 100 k / R21 19.1 k | ≈ 5.0 V (0.8 V × (1 + 100/19.1) = 4.99 V) | P6.1 ventilador; retorno conmutado por Q2 AO3400A (PA6) | JP1 (abierto) une `5V_FAN` con `VEH5V` — no cerrar | +| `VEH5V` | P2.1 (Mean Well SD-15B-05 externa, ajustada 5.2–5.4 V; unidades medidas 5.25–5.57 V) | C78 220 µF polímero + C30/C31 | 5.25–5.57 V | RS1, divisor PFI, R7/R8 (`5V_SENSE`), R55 (NTC bias), U6 VIN/OVSNS | Lección E-PFI: nunca trabajar el módem sin batería con menos de 5.2 V en P2 | +| `VIN_SW` | `VEH5V` | RS1 **10 mΩ** 1 W (límite de entrada LTC4040 = 25 mV / 10 mΩ = **2.5 A**) | — | Q7 AO4406A (diodo ideal, IGATE U6.15) | V5.5 tenía 8 mΩ (3.1 A > 3 A de la fuente → plegado) | +| `MAIN5V` (VSYS) | Q7 o boost de respaldo de U6 | **U6 LTC4040EUFD** · L6 2.2 µH/8 A · C32/C33/C34 (≥ 100 µF) | = VEH5V − caída, o **4.79 V** en respaldo (R53 499 k / R54 100 k) | P11.1, JP6.1, straps JP2/JP3/JP4 | **PFI 4.44 V** de caída (R51 270 k / R52 100 k); PFO en TP2 | +| `SYS5V` | `MAIN5V` a través de **P11 CUTOFF-SW** (o JP6 puenteado) | — | ≈ MAIN5V | F1/Q1 (etapa RTK), U7 (módem), U12 (Ethernet), D12→U17 (3V3), K1 bobina, R2 | Abrir P11 apaga todo salvo el LTC4040 y el cargador | +| `SW_IN` → `SW_5V` | `SYS5V` | **F1 PPTC BSMD1812-400-12V** (4 A hold / 8 A trip, ≤ 25 mΩ) → **Q1 AO3401A** (compuerta por Q5 ← R1 ← PA1 `PWR_CTRL`, R2 10 k pull-up = OFF por defecto) | ≈ 5.0 V con etapa ON | **MOD1.5** (simpleRTK2B) · C3 220 µF polímero + C40 22 µF | `PWR_CTRL` HIGH = etapa ON. Solo el F9P cuelga de aquí en V5.6 | +| `3V3_MODEM` | `SYS5V` (V5.5: `SW_5V`) | **U7 AP64350SP-13** · L7 4.7 µH/4 A · Cin C119/C120 22 µF + C121 10 µF · FB R60 100 k / R61 31.6 k · comp. Rcomp2 9.1 k / Ccomp2 10 nF / C123 68 pF · Rfreq2 200 k · Cbst2 100 nF · Dbk2 DNP | **3.33 V** (0.8 × (1 + 100/31.6)) | J7.1 / J8.7 (4G NTRIP Master) · C41 22 µF + C122 22 µF + C43 220 µF polímero | **EN = PC3 `MODEM_EN`** por R105 10 k, R106 100 k a GND → módem **apagado** con MCU en reset/DFU. Validar en banco: escalón 0→2 A < 150 mV sin oscilación (Informe §9) | +| `3V3_ETH` | `SYS5V` | **U12 MP1584EN** (EN = VIN: siempre encendido) · L8 10 µH/2 A · D11 SS34 · FB R87 100 k / R88 31.6 k | **3.33 V** (0.8 × (1 + 100/31.6)) | U11 W5500, J10 (TCT/RCT) | Sobrevive los ciclos de la etapa RTK; en batería el W5500 sigue alimentado (por eso R112 lo mantiene en reset) | +| `LDO_IN` → `3V3` | `SYS5V` por **D12** SS34 o `DFU_VBUS` (J11) por **D13** SS34 | **U17 TLV1117LV33** (SOT-223; V5.5: AMS1117-3.3) · C117 · C23/C80… | 3.3 V | MCU, sensores, U10/U13/U14/U15, LEDs, SW2, TP7, P14.1, H4.1, MOD1.2 (IOREF) | TLV1117LV: dropout bajo → 3V3 estable en respaldo (LDO_IN ≈ 4.25–4.65 V); Vin máx 5.5 V | +| `VDDA` | `3V3` | R104 + C109/C112 | 3.3 V | U16 VDDA (ADC) | — | +| `BAT_PLUS` | P4.1 | U6.23 BAT · L6 · C35 · R5/R6 ÷2 → `BAT_SENSE` PA0 | 1S: Li-ion 3.0–4.0 V (V5.5) / LFP 2.5–3.6 V (V5.6) | Boost de respaldo del LTC4040 | Ver §8 | +| `USB_VBUS` | J9 | D19 USBLC6-2SC6 | 5 V del portátil | J7.6 (USB de servicio del módem) | No alimenta la tarjeta | +| `DFU_VBUS` | J11 | D16 PESD5V0S1BA · D13 → `LDO_IN` | 5 V del portátil | Solo el 3V3 (MCU + sensores) | Con USB solo: W5500, módem y F9P sin energía | ### 3.1 Cargador LTC4040 (U6) — parámetros | Parámetro | Valor V5.6 | Componentes | V5.5 | Fuente | |---|---|---|---|---| -| Corriente de carga | **1.4 A** (2000 / 1430 ± 5 % → 1.32–1.48 A) | R50 **1.43 k** 1 % (PROG) | 2.42 A (825 Ω) | Informe §10 A-03 | -| Límite de entrada (SYSLIM) | **2.5 A** | RS1 **10 mΩ** 1 % 1 W | 3.1 A (8 mΩ) | Informe §1 | -| Umbral PFI (caída) | **4.44 V** (1.2 V × 3.7) | R51 270 k / R52 100 k | igual | README fw 0.2.1; netlist | -| Voltaje de respaldo (BSTFB = RSTFB) | **4.79 V** | R53 499 k / R54 100 k | igual | Informe §1 (R53 sin cambio) | -| Química / flotación | **LiFePO4 3.50 V** (F2=0, F1=0, F0=1) | JP2 **2-3** (`F2_SEL`→GND) · JP3 1-2 (F1→GND) · JP4 1-2 (F0→MAIN5V) | Li-ion 4.00 V (JP2 1-2) | Informe §9; Review-vs-V5.5 F6 | -| NTC de celda (propiedad del cargador) | Ventana de carga **+10…+60 °C** con NTC **B3380** en el paquete | R55 (RNTB) **5.6 k** 1 % de `VEH5V` a `NTC` (P4.3) | 10 k (Li-ion) | Informe §9 | +| Corriente de carga | **1.4 A** (2000 / 1430 ± 5 % → 1.32–1.48 A) | R50 **1.43 k** 1 % (PROG) | 2.42 A (825 Ω) | Informe §10 A-03 | +| Límite de entrada (SYSLIM) | **2.5 A** | RS1 **10 mΩ** 1 % 1 W | 3.1 A (8 mΩ) | Informe §1 | +| Umbral PFI (caída) | **4.44 V** (1.2 V × 3.7) | R51 270 k / R52 100 k | igual | README fw 0.2.1; netlist | +| Voltaje de respaldo (BSTFB = RSTFB) | **4.79 V** | R53 499 k / R54 100 k | igual | Informe §1 (R53 sin cambio) | +| Química / flotación | **LiFePO4 3.50 V** (F2=0, F1=0, F0=1) | JP2 **2-3** (`F2_SEL`→GND) · JP3 1-2 (F1→GND) · JP4 1-2 (F0→MAIN5V) | Li-ion 4.00 V (JP2 1-2) | Informe §9; Review-vs-V5.5 F6 | +| NTC de celda (propiedad del cargador) | Ventana de carga **+10…+60 °C** con NTC **B3380** en el paquete | R55 (RNTB) **5.6 k** 1 % de `VEH5V` a `NTC` (P4.3) | 10 k (Li-ion) | Informe §9 | | Fin de carga | C/8 (interno LTC4040) | — | — | FACTS | | CHGOFF | `CHRG_EN` PA8 (HIGH = carga OFF) · R56 100 k a GND | U6.4 | igual | `board_v5.h` | | CHRG / FAULT | `CHRG_STAT` PB3 · `CHRG_FAULT` PB4, colector abierto, pull-ups R57/R58 100 k (LOW = cargando / falla) | U6.8 / U6.9 | igual | `board_v5.h` | @@ -106,8 +109,8 @@ Fuente: netlist V5.6 + `board_v5.h` (0.6.0). Los pines PC1/PC2/PC3/PC4/PC5/PC7 s |---|---|---|---|---|---| | 1 | VBAT | `3V3` | — | Alimentación RTC | — | | 2 | PC13 | `LED_C13` | OUT, activo bajo | LED azul D17 | R102 1 k a 3V3 | -| 3 / 4 | PC14 / PC15 | `LSE_IN` / `LSE_OUT` | OSC32 | Y4 32.768 kHz | C115 / C116 | -| 5 / 6 | PH0 / PH1 | `HSE_IN` / `HSE_OUT` | OSC | Y3 25 MHz | C113 / C114 | +| 3 / 4 | PC14 / PC15 | `LSE_IN` / `LSE_OUT` | OSC32 | Y4 32.768 kHz | C115 / C116 | +| 5 / 6 | PH0 / PH1 | `HSE_IN` / `HSE_OUT` | OSC | Y3 25 MHz | C113 / C114 | | 7 | NRST | `NRST` | IN | Reset: SW1, P10, TP5 | C104 | | 8 | PC0 | `ETH_INT` | IN | INT del W5500 (U11.36) | — | | 9 | PC1 | `MODEM_RST_MCU` | OUT (open-drain, LOW = reset) | Reset del módem por MCU (**V5.6**) | R107 1 k → `MODEM_RST` (J7.5, SW4G1) | @@ -119,11 +122,11 @@ Fuente: netlist V5.6 + `board_v5.h` (0.6.0). Los pines PC1/PC2/PC3/PC4/PC5/PC7 s | 16 | PA2 | `GNSS_TX` | USART2_TX | → MOD1.16 (F9P UART1 RX) | — | | 17 | PA3 | `GNSS_RX` | USART2_RX | ← MOD1.15 (F9P UART1 TX), NMEA | — | | 20 | PA4 | `5V_SENSE` | ADC1_IN4 | `VEH5V` ÷ 2 | R7 / R8 10 k, C7 | -| 21 | PA5 | `IGN_SENSE` | IN digital (INPUT_PULLDOWN) | Ignición 12–24 V | Rig1 22 k / Rig2 22 k ∥ Rigb1 3.3 k, D5 BAT54, C9 | +| 21 | PA5 | `IGN_SENSE` | IN digital (INPUT_PULLDOWN) | Ignición 12–24 V | Rig1 22 k / Rig2 22 k ∥ Rigb1 3.3 k, D5 BAT54, C9 | | 22 | PA6 | `FAN_PWM` | OUT (HIGH = ventilador ON) | Compuerta de Q2 | Rg1 | | 23 | PA7 | — | — | Sin conectar | — | -| 24 | PC4 | `MODEM_ON_SLEEP` | IN (**V5.6**, DNP) | XBee ON/SLEEP (J8.3) | R109 10 k **DNP** | -| 25 | PC5 | `NTC_CELL` | ADC1_IN15 (**V5.6**) | NTC del paquete (`tcell`) | R113 100 k / R114 120 k / C125 10 nF desde P4.3 | +| 24 | PC4 | `MODEM_ON_SLEEP` | IN (**V5.6**, DNP) | XBee ON/SLEEP (J8.3) | R109 10 k DNP | +| 25 | PC5 | `NTC_CELL` | ADC1_IN15 (**V5.6**) | NTC del paquete (`tcell`) | R113 100 k / R114 120 k / C125 10 nF desde P4.3 | | 26 | PB0 | `EXT_LED` | OUT (HIGH = ON) | LED de panel D1 (P8) vía Q4 | Rled1 10 k | | 27 | PB1 | `NTC_TEMP` | ADC1_IN9 | NTC de punto caliente (P12): 3V3 – R42 10 k – NTC – GND | C24 | | 28 | PB2 | `BOOT1_STRAP` | strap | R99 10 k a GND — **no reutilizar** | — | @@ -154,24 +157,24 @@ Fuente: netlist V5.6 + `board_v5.h` (0.6.0). Los pines PC1/PC2/PC3/PC4/PC5/PC7 s | 19, 32, 48, 64 | VDD | `3V3` | — | — | C105–C108 | | 30 | VCAP1 | `VCAP1` | — | C111 | — | -## 5. Mapa de direcciones I²C (I2C1, PB6/PB7, 100 kHz, pull-ups 4.7 k) +## 5. Mapa de direcciones I²C (I2C1, PB6/PB7, 100 kHz, pull-ups 4.7 k) | Dirección | Ref | Dispositivo | Función | Pin de dirección | Fuente | |---|---|---|---|---|---| | 0x20 | U13 | PCF8574 (SOIC-16W) | P0–P3 medidor DB1–DB4 (LOW = ON) · P4–P6 RGB R/G/B en P14 (LOW = ON) · P7 libre (en V5.5/V4: puente 0.5.6 → SW4G1) | A0–A2 = GND | `board_v5.h` | | 0x44 | U3 | SHT40-AD1B | Temperatura y humedad del aire del gabinete (`tair`, `rh`) | fijo | `board_v5.h` | -| 0x48 | U4 | TMP102 (SOT-563) | Temperatura del **cargador** (`tbat`/`tchg`) — en V5.6 colocar junto a U6/L6 | ADD0 = GND | Informe §10 / FACTS | -| 0x49 | U18 | TMP102 (SOT-563) | Temperatura del **módem** — colocar entre J7/J8 y el módulo (**V5.6**) | ADD0 = 3V3 | Informe §2 | +| 0x48 | U4 | TMP102 (SOT-563) | Temperatura del cargador (`tbat`/`tchg`) — en V5.6 colocar junto a U6/L6 | ADD0 = GND | Informe §10 / FACTS | +| 0x49 | U18 | TMP102 (SOT-563) | Temperatura del módem — colocar entre J7/J8 y el módulo (**V5.6**) | ADD0 = 3V3 | Informe §2 | | 0x4D | U10 | SC16IS752IPW (TSSOP-28) | UART dual: canal A → RS-485, canal B → RS-232/TTL; ~IRQ → PB8 | A1 = A0 = GND, pin 9 = VDD (modo I²C) | `board_v5.h` | ## 6. Sensores de temperatura y humedad | Sensor | Ref / pin | Señal firmware | Qué mide | Rango útil | Fuente | |---|---|---|---|---|---| -| SHT40 | U3 @0x44 | `tair`, `rh` | Aire dentro del gabinete | −40…+125 °C, 0–100 %RH | `.ino` leyenda | -| TMP102 | U4 @0x48 | `tbat` (0.6.0) / `tchg` (V5.6) | Cargador LTC4040 / bobina L6 | −40…+125 °C | Informe §10 | -| TMP102 | U18 @0x49 | (0.6.x) `tmodem` | Módem 4G | −40…+125 °C | Informe §2 | -| NTC del paquete | P4.3 → U6.17 (LTC4040) **y** PC5 ADC1_IN15 vía R113/R114/C125 | `tcell` (V5.6, 0.6.x) | Celda del paquete (NTC B3380 en LFP-HT) | Ventana de carga +10…+60 °C (hardware) | netlist; Informe §9 | +| SHT40 | U3 @0x44 | `tair`, `rh` | Aire dentro del gabinete | −40…+125 °C, 0–100 %RH | `.ino` leyenda | +| TMP102 | U4 @0x48 | `tbat` (0.6.0) / `tchg` (V5.6) | Cargador LTC4040 / bobina L6 | −40…+125 °C | Informe §10 | +| TMP102 | U18 @0x49 | (0.6.x) `tmodem` | Módem 4G | −40…+125 °C | Informe §2 | +| NTC del paquete | P4.3 → U6.17 (LTC4040) y PC5 ADC1_IN15 vía R113/R114/C125 | `tcell` (V5.6, 0.6.x) | Celda del paquete (NTC B3380 en LFP-HT) | Ventana de carga +10…+60 °C (hardware) | netlist; Informe §9 | | NTC de punto caliente | P12.1 → PB1 ADC1_IN9 (3V3 – R42 10 k – NTC) | `tntc` (`n/c` = sin sonda) | Sonda opcional pegada al punto caliente (módem/batería) | — | `board_v5.h` | | Sensor interno del MCU | ADC canal de temperatura | `tmcu` / `tc`, `tmax` | Silicio del F411 | — | `.ino` | | *(eliminado)* | P5 TEMP_PROBE | — | Sonda externa I²C — **no existe en V5.6** | — | Informe §10 | @@ -184,33 +187,33 @@ Pinout completo pin a pin (generado de la netlist): [Pinout de arneses y conecto | Ref | Tipo | Pines | Función | Notas | |---|---|---|---|---| -| P1 | Phoenix MKDS 1.5 / 5 pos. 5.00 mm (GX16-5 en el gabinete) | 1 `24V_IN` · 2 `GND` · 3 `IGN_IN` · 4 `GND` · 5 n/c | Entrada de vehículo | Ignición **cruda** 12–24 V | -| P2 | JST-XH 2 | 1 `VEH5V` · 2 `GND` | 5 V de la SD-15B-05 | Calibre ≥ 3 A | +| P1 | Phoenix MKDS 1.5 / 5 pos. 5.00 mm (GX16-5 en el gabinete) | 1 `24V_IN` · 2 `GND` · 3 `IGN_IN` · 4 `GND` · 5 n/c | Entrada de vehículo | Ignición cruda 12–24 V | +| P2 | JST-XH 2 | 1 `VEH5V` · 2 `GND` | 5 V de la SD-15B-05 | Calibre ≥ 3 A | | P4 | JST-XH 3 | 1 `BAT_PLUS` · 2 `GND` · 3 `NTC` | Paquete 1S + NTC | V5.6: LFP-HT 26650, NTC B3380 | -| P6 | JST-XH 2 | 1 `5V_FAN` · 2 `FAN_RET` | Ventilador 5 V, 2 hilos | Q2 conmuta el retorno | +| P6 | JST-XH 2 | 1 `5V_FAN` · 2 `FAN_RET` | Ventilador 5 V, 2 hilos | Q2 conmuta el retorno | | P8 | JST-XH 2 | 1 `LED_A` · 2 `LED_K` | LED de panel (cableado en duro, PB0) | Sigue vivo aunque falle el I²C | | P10 | JST-XH 2 | 1 `NRST` · 2 `GND` | Botón de reset externo | Solo resetea el MCU | | P11 | JST-XH 2 | 1 `MAIN5V` · 2 `SYS5V` | Interruptor de corte | Abierto = tarjeta apagada (salvo LTC4040) | | P12 | JST-XH 2 | 1 `NTC_TEMP` · 2 `GND` | NTC de punto caliente | Opcional | -| P14 | JST-XH 4 | 1 `3V3` · 2 `RGBR_K` · 3 `RGBG_K` · 4 `RGBB_K` | LED RGB externo, ánodo común | R89/R90/R91 120 Ω | -| P15 | Phoenix MC 1.5 / 3 pos. 3.5 mm | 1 `RS485_A` · 2 `RS485_B` · 3 `GND` | RS-485 semidúplex (U14 SP3485, canal A de U10) | JP5 = terminación 120 Ω (R82) | -| P16 | Phoenix MC 1.5 / 3 pos. 3.5 mm | 1 `RS232_TX` · 2 `RS232_RX` · 3 `GND` | RS-232 (U15 MAX3232, canal B de U10) | No usar junto con H4 | -| H4 | Header 2.54 mm × 4 | 1 `3V3` · 2 `SER_TXB` · 3 `SER_RXB` · 4 `GND` | Canal B en TTL 3V3 | Mismo canal que P16 | -| J11 | USB-C (GCT USB4085) | D+/D− → PA12/PA11, VBUS → D13 → 3V3 | **DFU + consola** | ESD D14/D15/D16 | -| J9 | USB-C (GCT USB4085) | D+/D−/VBUS → J7.7/J7.8/J7.6 | USB de servicio del **módem** | ESD D19 (V5.6). No alimenta la tarjeta | +| P14 | JST-XH 4 | 1 `3V3` · 2 `RGBR_K` · 3 `RGBG_K` · 4 `RGBB_K` | LED RGB externo, ánodo común | R89/R90/R91 120 Ω | +| P15 | Phoenix MC 1.5 / 3 pos. 3.5 mm | 1 `RS485_A` · 2 `RS485_B` · 3 `GND` | RS-485 semidúplex (U14 SP3485, canal A de U10) | JP5 = terminación 120 Ω (R82) | +| P16 | Phoenix MC 1.5 / 3 pos. 3.5 mm | 1 `RS232_TX` · 2 `RS232_RX` · 3 `GND` | RS-232 (U15 MAX3232, canal B de U10) | No usar junto con H4 | +| H4 | Header 2.54 mm × 4 | 1 `3V3` · 2 `SER_TXB` · 3 `SER_RXB` · 4 `GND` | Canal B en TTL 3V3 | Mismo canal que P16 | +| J11 | USB-C (GCT USB4085) | D+/D− → PA12/PA11, VBUS → D13 → 3V3 | DFU + consola | ESD D14/D15/D16 | +| J9 | USB-C (GCT USB4085) | D+/D−/VBUS → J7.7/J7.8/J7.6 | USB de servicio del módem | ESD D19 (V5.6). No alimenta la tarjeta | | J10 | RJ45 HR911105A (magnéticas + LEDs) | TX± U11.1/2, RX± U11.5/6, LEDs LINK/ACT | Ethernet 10/100 | **Sin PoE** (pines 7/8 sin conectar) | | MOD1 | Zócalo UNO hembra | 5 `SW_5V` · 2 `3V3` (IOREF) · 15/16 UART1 · 17 `DOUT_4G` · 23 `USART1_RX` · GND | simpleRTK2B | Resto sin conectar (indicación ArduSimple) | -| J7 / J8 | Zócalo XBee 2×10, paso 2.00 mm | Ver pinout | 4G NTRIP Master | J8 pad k = pin XBee 21−k | +| J7 / J8 | Zócalo XBee 2×10, paso 2.00 mm | Ver pinout | 4G NTRIP Master | J8 pad k = pin XBee 21−k | ### 7.2 Puentes de soldadura | Ref | Default V5.6 | Función | Cuándo cambiarlo | |---|---|---|---| | **JP1** | Abierto | `5V_FAN` ↔ `VEH5V` | Nunca en producción (drenaría el riel de la SD-15B / respaldo) | -| **JP2** | **2-3** (`F2_SEL` → GND) = **LFP** | Strap F2 del LTC4040 | 1-2 (→ `MAIN5V`) = Li-ion 4.00 V. **Debe coincidir con la química del paquete y con R55** | +| **JP2** | **2-3** (`F2_SEL` → GND) = LFP | Strap F2 del LTC4040 | 1-2 (→ `MAIN5V`) = Li-ion 4.00 V. **Debe coincidir con la química del paquete y con R55** | | **JP3** | 1-2 (`F1_SEL` → GND) = F1:0 | Strap F1 | No cambiar | | **JP4** | 1-2 (`F0_SEL` → `MAIN5V`) = F0:1 | Strap F0 | No cambiar | -| **JP5** | Abierto | Terminación 120 Ω del RS-485 (R82 entre A y B) | Cerrar solo en el nodo terminal del bus | +| **JP5** | Abierto | Terminación 120 Ω del RS-485 (R82 entre A y B) | Cerrar solo en el nodo terminal del bus | | **JP6** | Abierto (**nuevo V5.6**) | Puentea P11 (`MAIN5V` ↔ `SYS5V`) | Cerrar solo en unidades sin interruptor de corte | ### 7.3 Botones @@ -225,32 +228,32 @@ Pinout completo pin a pin (generado de la netlist): [Pinout de arneses y conecto | Ref | Color / nombre | Control | Significado (fw 0.6.0) | |---|---|---|---| -| D18 | Verde **PWR** | R103 1 k desde `3V3` | Hay 3.3 V (USB o SYS5V) | -| D17 | Azul **C13** | PC13, activo bajo | Parpadeo rápido: esperando consola USB (hasta 4 s); después lo maneja el firmware | -| DB1–DB4 | Medidor de batería | U13 P0–P3 (RB1–RB4 120 Ω) | Umbrales **3.60 / 3.75 / 3.90 / 3.97 V** (−0.10 V de histéresis) — calibrados para Li-ion | -| RGB externo (P14) | R/G/B ánodo común | U13 P4–P6 | **Verde** = RTK fix · **Azul** = etapa ON sin RTK · **Magenta** = etapa ON sin NMEA · **Amarillo** = en batería · **Rojo** = etapa OFF | +| D18 | Verde PWR | R103 1 k desde `3V3` | Hay 3.3 V (USB o SYS5V) | +| D17 | Azul **C13** | PC13, activo bajo | Parpadeo rápido: esperando consola USB (hasta 4 s); después lo maneja el firmware | +| DB1–DB4 | Medidor de batería | U13 P0–P3 (RB1–RB4 120 Ω) | Umbrales **3.60 / 3.75 / 3.90 / 3.97 V** (−0.10 V de histéresis) — calibrados para Li-ion | +| RGB externo (P14) | R/G/B ánodo común | U13 P4–P6 | Verde = RTK fix · Azul = etapa ON sin RTK · Magenta = etapa ON sin NMEA · Amarillo = en batería · Rojo = etapa OFF | | D1 (P8) | LED de panel | PB0 → Q4 | Indicador de respaldo cableado en duro | -| D4G1 | LED del módem | J8.8 `MODEM_LED` → Rmled1 1 k | Asociación del 4G NTRIP Master (salida 1.8 V → tenue) | +| D4G1 | LED del módem | J8.8 `MODEM_LED` → Rmled1 1 k | Asociación del 4G NTRIP Master (salida 1.8 V → tenue) | | J10 LINK / ACT | Integrados en el RJ45 | U11.25 / U11.27 (R96/R97) | Enlace / actividad Ethernet | ## 8. Valores máximos y rangos de operación | Parámetro | Mín | Típ | Máx | Nota / fuente | |---|---|---|---|---| -| Entrada P1 `24V_IN` | 12 V (ignición) | 24 V | 28 V (U2 MP1584EN V_IN máx); TVS D10 SMBJ33A (V_RWM 33 V) | netlist; datasheet MP1584 | -| Ignición P1.3 | 12 V | 24 V | 24 V (divisor 22 k / 22 k ∥ 3.3 k → 2.8 V a 24 V; clamp BAT54 a 3V3) | Informe V3+V4 §obs-ign | -| Entrada P2 `VEH5V` | **5.2 V** (regla de banco sin batería) | 5.3 V | **5.5 V** (LTC4040 VIN operativo; U17 Vin máx 5.5 V − D12) | E-PFI; Informe §10 A-08 | -| Corriente de entrada P2 | — | — | 2.5 A (SYSLIM por RS1); fuente SD-15B-05 = 3 A | Informe §1 | -| Paquete P4 | 1S | LFP-HT 26650 (V5.6) / Li-ion 18650 1S4P ≈ 12 Ah (V5.5) | — | FACTS; Informe V3+V4 | -| Voltaje de celda (firmware) | Corte etapa **3.40 V**, rearme **3.70 V** o 5 V presente | — | Flotación 3.50 V (LFP) / 4.00 V (Li-ion) | `.ino` 0.4.0/0.6.0 | -| Corriente de carga | 1.32 A | 1.40 A | 1.48 A; inhibida con celda ≥ 45 °C (rearme < 40 °C) por firmware; ventana NTC +10…+60 °C por hardware | Informe §10; `.ino` `CHG_CELL_HOT_C` | -| Riel `3V3_MODEM` | — | 3.33 V | 3.5 A (AP64350) — el módem pide 1–2 A en ráfaga | Informe §1 | -| Riel `SW_5V` | — | 5.0 V | 4 A hold / 8 A trip (F1) | Informe §9 | -| Temperatura — corte térmico de la etapa (fw) | aviso 50 °C | — | corte a **60 °C** en `tbat`/`tntc`, rearme < 55 °C | `.ino` 0.4.0 | -| Temperatura — ventilador en batería (fw) | ON ≥ 48 °C | — | OFF ≤ 45 °C (termostato); con 24 V + ignición: 100 % | `.ino` 0.4.0 | -| Temperatura ambiente de operación de la tarjeta | −20 °C | — | +85 °C (rango de validación de los sensores en el autotest) | `.ino` `runTests` | -| USB J11 / J9 | 5 V | — | 5.5 V; ESD PESD5V0S1BA (J11) / USBLC6-2SC6 (J9) | netlist | -| Bus RS-485 | — | — | Terminación 120 Ω opcional (JP5); SP3485 ±7 V modo común (datasheet) | netlist | +| Entrada P1 `24V_IN` | 12 V (ignición) | 24 V | 28 V (U2 MP1584EN V_IN máx); TVS D10 SMBJ33A (V_RWM 33 V) | netlist; datasheet MP1584 | +| Ignición P1.3 | 12 V | 24 V | 24 V (divisor 22 k / 22 k ∥ 3.3 k → 2.8 V a 24 V; clamp BAT54 a 3V3) | Informe V3+V4 §obs-ign | +| Entrada P2 `VEH5V` | **5.2 V** (regla de banco sin batería) | 5.3 V | **5.5 V** (LTC4040 VIN operativo; U17 Vin máx 5.5 V − D12) | E-PFI; Informe §10 A-08 | +| Corriente de entrada P2 | — | — | 2.5 A (SYSLIM por RS1); fuente SD-15B-05 = 3 A | Informe §1 | +| Paquete P4 | 1S | LFP-HT 26650 (V5.6) / Li-ion 18650 1S4P ≈ 12 Ah (V5.5) | — | FACTS; Informe V3+V4 | +| Voltaje de celda (firmware) | Corte etapa **3.40 V**, rearme **3.70 V** o 5 V presente | — | Flotación 3.50 V (LFP) / 4.00 V (Li-ion) | `.ino` 0.4.0/0.6.0 | +| Corriente de carga | 1.32 A | 1.40 A | 1.48 A; inhibida con celda ≥ 45 °C (rearme < 40 °C) por firmware; ventana NTC +10…+60 °C por hardware | Informe §10; `.ino` `CHG_CELL_HOT_C` | +| Riel `3V3_MODEM` | — | 3.33 V | 3.5 A (AP64350) — el módem pide 1–2 A en ráfaga | Informe §1 | +| Riel `SW_5V` | — | 5.0 V | 4 A hold / 8 A trip (F1) | Informe §9 | +| Temperatura — corte térmico de la etapa (fw) | aviso 50 °C | — | corte a **60 °C** en `tbat`/`tntc`, rearme < 55 °C | `.ino` 0.4.0 | +| Temperatura — ventilador en batería (fw) | ON ≥ 48 °C | — | OFF ≤ 45 °C (termostato); con 24 V + ignición: 100 % | `.ino` 0.4.0 | +| Temperatura ambiente de operación de la tarjeta | −20 °C | — | +85 °C (rango de validación de los sensores en el autotest) | `.ino` `runTests` | +| USB J11 / J9 | 5 V | — | 5.5 V; ESD PESD5V0S1BA (J11) / USBLC6-2SC6 (J9) | netlist | +| Bus RS-485 | — | — | Terminación 120 Ω opcional (JP5); SP3485 ±7 V modo común (datasheet) | netlist | ## 9. Interfaz de firmware (`hbox_v5_bringup` 0.6.0) @@ -259,16 +262,16 @@ Pinout completo pin a pin (generado de la netlist): [Pinout de arneses y conecto | Consola | USB CDC en **J11**, 115200 (el baud no importa en CDC), líneas CR+LF. Primera línea: `hbox_v5_bringup 0.6.0 built …`, luego `board=EinarBoard v5 (HBOX v5)` | | Compilación | `arduino-cli` STM32duino 3.x, FQBN `GenF4:pnum=GENERIC_F411RETX,usb=CDCgen,xserial=generic,rtlib=nanofp`, `-DHSE_VALUE=25000000UL`; variante Ethernet de banco `-DENABLE_ETH=1` (0.6.0-eth); `-DENABLE_CHARGE=0` = cargador siempre OFF (0.5.x) | | Flasheo | DFU por J11: SW2 pulsado → SW1 pulsar/soltar → soltar SW2 → `dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0.bin` (o STM32CubeProgrammer, USB, `0x08000000`) | -| Modo por defecto | **AUTO** (flash byte `0x5A` = MANUAL): la etapa se enciende sola 3 s después de haber 5 V en P2; respaldo continuo en batería; reset del MCU al volver el 5 V tras ≥ 10 s de respaldo | -| Watchdog | IWDG 16 s | +| Modo por defecto | **AUTO** (flash byte `0x5A` = MANUAL): la etapa se enciende sola 3 s después de haber 5 V en P2; respaldo continuo en batería; reset del MCU al volver el 5 V tras ≥ 10 s de respaldo | +| Watchdog | IWDG 16 s | ### 9.1 Teclas de consola (texto de ayuda `h`) | Tecla | Acción | |---|---| | `r` | Repetir autotest · `g` recorrido del medidor/RGB · `i` escaneo I²C · `s` STAT ahora · `t` `$PHLG` ahora · `l` leyenda · `v` puntos de medición · `h` ayuda | -| `P` + `Y` | Armar (10 s) y confirmar el encendido de la etapa RTK (requiere v5 > 4.5 V); `P` de nuevo = apagar | -| `n` | Monitor NMEA 20 s (fix 4 = RTK FIX) | +| `P` + `Y` | Armar (10 s) y confirmar el encendido de la etapa RTK (requiere v5 > 4.5 V); `P` de nuevo = apagar | +| `n` | Monitor NMEA 20 s (fix 4 = RTK FIX) | | `A` | AUTO / MANUAL (se guarda en flash) | | `B` | Modo B on/off (K1 + `$PHLG` en banda) | | `M` | Pulso `MODEM_RST` (V5.5/V4: por U13 P7 y el puente 0.5.6; V5.6: por PC1 en 0.6.x) | @@ -280,22 +283,22 @@ Pinout completo pin a pin (generado de la netlist): [Pinout de arneses y conecto | Prueba | PASS si | |---|---| -| `CLOCK_HSE` | SYSCLK = 96 MHz, HSE listo, PLL desde HSE | -| `LSE_Y4` | LSERDY = 1 (Y4 32.768 kHz) | +| `CLOCK_HSE` | SYSCLK = 96 MHz, HSE listo, PLL desde HSE | +| `LSE_Y4` | LSERDY = 1 (Y4 32.768 kHz) | | `I2C` ×4 | ACK de PCF8574 0x20, SHT40 0x44, TMP102 0x48, SC16IS752 0x4D (+ escaneo 0x08–0x77) | -| `TMP102` / `SHT40` | Lectura entre −20 y +85 °C | +| `TMP102` / `SHT40` | Lectura entre −20 y +85 °C | | `SC16IS752` | Registro *scratchpad* lee lo escrito (sin *loopback* de canal todavía; previsto 0.6.1) | | `GAUGE_WALK` | Visual: DB1→DB4 y luego R, G, B | | `ADC` / `DIN` | Informativos: `vbat v5 ntc mcu` y `ign chrg fault ser_irq eth_int` | | Resultado | `---- RESULT: n PASS / m FAIL ----` → `>>> BOARD OK` o `>>> BOARD CHECK FAILED` | -### 9.3 Línea `STAT` (cada 5 s) +### 9.3 Línea `STAT` (cada 5 s) `STAT up= vbat= v5=(ok|BAJO|no) ign= chrg= flt= tntc= tbat= tair= rh= tmcu= i2cerr= stack= modo= fan= rec= [LIMP] [backup=] [duty=…] carga=FASE [+CALIENTE][+OP] pin= ltc= cortes= modoB= relay= phlg_aire= v5min= vbatmin= bkp= mrst= [eth=… ip= lineas= bytes= drop= conn=] [t_on= nmea= bad= gga= sats= hdop= age= rtcm_age= sta= rtcm_last= sag5= sagb= flat= modem=]` -Fases del gobernador de carga (`carga=`): `HOLDOFF` (< 120 s tras boot/STACK ON) · `NOTRUN` · `BATT` · `WAIT` (riel 4.90–5.05 V) · `PROVING n/30s` · `ON` · `SHED` · `COOLDOWN faltan s`. Umbrales: arranque ≥ 5.05 V estable 30 s, corte < 4.90 V (muestra rápida), enfriamiento 60 s → 30 min, celda ≥ 45 °C inhibe. +Fases del gobernador de carga (`carga=`): `HOLDOFF` (< 120 s tras boot/STACK ON) · `NOTRUN` · `BATT` · `WAIT` (riel 4.90–5.05 V) · `PROVING n/30s` · `ON` · `SHED` · `COOLDOWN faltan s`. Umbrales: arranque ≥ 5.05 V estable 30 s, corte < 4.90 V (muestra rápida), enfriamiento 60 s → 30 min, celda ≥ 45 °C inhibe. -### 9.4 Trama `$PHLG` (cada 10 s en consola, cada 30 s en banda; checksum XOR) +### 9.4 Trama `$PHLG` (cada 10 s en consola, cada 30 s en banda; checksum XOR) Campos 1–24 (formato de flota v3.x, lo lee `htracker/retranslator.py`) + 25–29 (0.5.1, *append-only*): @@ -309,20 +312,20 @@ Fuente: Informe de cambios §1 (tabla antes → después), §2–§3 (partes y p | Área | V5.5 (as-fabbed 22-ago) | V5.6 | Refs | Motivo | |---|---|---|---|---| -| Riel del módem | U7 MP1584EN desde `SW_5V` (tras F1/Q1), EN = VIN | **U7 AP64350SP-13** desde **`SYS5V`**, EN = **PC3 `MODEM_EN`** (R105 10 k, R106 100 k ↓) | U7, L7 4.7 µH/4 A, Cbst2 100 nF, Rcomp2 9.1 k, Ccomp2 10 nF, C123 68 pF, Rfreq2 200 k, C119/C120 22 µF, C121 10 µF, C122 22 µF, Dbk2 DNP | Módem oscuro en batería (MP1584 no arranca a 4.6 V); el MCU puede apagar/encender el módem | +| Riel del módem | U7 MP1584EN desde `SW_5V` (tras F1/Q1), EN = VIN | **U7 AP64350SP-13** desde **`SYS5V`**, EN = **PC3 `MODEM_EN`** (R105 10 k, R106 100 k ↓) | U7, L7 4.7 µH/4 A, Cbst2 100 nF, Rcomp2 9.1 k, Ccomp2 10 nF, C123 68 pF, Rfreq2 200 k, C119/C120 22 µF, C121 10 µF, C122 22 µF, Dbk2 DNP | Módem oscuro en batería (MP1584 no arranca a 4.6 V); el MCU puede apagar/encender el módem | | Control del módem | Solo SW4G1 (V4/V5.5 con puente 0.5.6 a U13 P7) | **PC1 `MODEM_RST`** (R107 1 k) · **PC2 `MODEM_LED`** (R108 10 k) · PC4 `XBEE_ONSLP` (R109 DNP) · **PC7 `RTCM_TAP`** USART6_RX (R111 1 k) | R107–R111 | Reset y diagnóstico del módem desde firmware; escucha de RTCM | -| Capacitores de riel | C3 47 µF elco, C43 100 µF/6.3 V elco, C78 220 µF/10 V elco 85 °C | **C3, C43, C78 = 220 µF/16 V polímero** (Lelon OVZ221M1CTR-0608, C881921) | C3, C43, C78 | Ráfagas LTE; vida a 85 °C en gabinete | -| Cargador | RS1 8 mΩ (3.1 A), R50 825 Ω (2.42 A) | **RS1 10 mΩ/1 W (2.5 A)**, **R50 1.43 k (1.40 A)** | RS1, R50 | La SD-15B (3 A) se plegaba (incidente 10-ago) | -| Química | Li-ion 4.00 V: JP2 1-2, R55 10 k | **LFP 3.50 V: JP2 2-3, R55 5.6 k** (NTC B3380, ventana +10…+60 °C) | JP2, R55 | Paquete LFP-HT 26650 para puertos a 45 °C | -| Fusible etapa | F1 PPTC 3 A (C20627123) | **F1 BSMD1812-400-12V** 4 A/8 A, 25 mΩ | F1 | Caída ≤ 60 mV a 2.5 A | -| Térmico | U4 TMP102 (posición V5.5), sonda externa P5 | **U4 junto a U6/L6 (cargador)**, **U18 TMP102 0x49 junto al módem** (+ C124), **NTC del paquete también a PC5** (R113 100 k / R114 120 k / C125 10 nF), **P5 eliminado** | U4, U18, C124, R113, R114, C125, P5 | Ver el calor donde ocurre; sin sonda externa | -| Ethernet | `ETH_RST` sin pull; C90 10 µF, C91 4.7 µF | **R112 4.7 k** `ETH_RST` → GND; **C90 4.7 µF**, **C91 10 nF** (datasheet W5500) | R112, C90, C91 | W5500 en reset mientras el MCU está en reset (130 mA en batería); valores de datasheet | +| Capacitores de riel | C3 47 µF elco, C43 100 µF/6.3 V elco, C78 220 µF/10 V elco 85 °C | **C3, C43, C78 = 220 µF/16 V polímero** (Lelon OVZ221M1CTR-0608, C881921) | C3, C43, C78 | Ráfagas LTE; vida a 85 °C en gabinete | +| Cargador | RS1 8 mΩ (3.1 A), R50 825 Ω (2.42 A) | **RS1 10 mΩ/1 W (2.5 A)**, **R50 1.43 k (1.40 A)** | RS1, R50 | La SD-15B (3 A) se plegaba (incidente 10-ago) | +| Química | Li-ion 4.00 V: JP2 1-2, R55 10 k | **LFP 3.50 V: JP2 2-3, R55 5.6 k** (NTC B3380, ventana +10…+60 °C) | JP2, R55 | Paquete LFP-HT 26650 para puertos a 45 °C | +| Fusible etapa | F1 PPTC 3 A (C20627123) | **F1 BSMD1812-400-12V** 4 A/8 A, 25 mΩ | F1 | Caída ≤ 60 mV a 2.5 A | +| Térmico | U4 TMP102 (posición V5.5), sonda externa P5 | **U4 junto a U6/L6 (cargador)**, **U18 TMP102 0x49 junto al módem** (+ C124), **NTC del paquete también a PC5** (R113 100 k / R114 120 k / C125 10 nF), **P5 eliminado** | U4, U18, C124, R113, R114, C125, P5 | Ver el calor donde ocurre; sin sonda externa | +| Ethernet | `ETH_RST` sin pull; C90 10 µF, C91 4.7 µF | **R112 4.7 k** `ETH_RST` → GND; **C90 4.7 µF**, **C91 10 nF** (datasheet W5500) | R112, C90, C91 | W5500 en reset mientras el MCU está en reset (130 mA en batería); valores de datasheet | | USB módem | Sin ESD en J9 | **D19 USBLC6-2SC6** | D19 | Robustez | | Corte | Solo P11 | **JP6** en paralelo con P11 (abierto) | JP6 | Unidades sin interruptor | -| LDO 3V3 | U17 AMS1117-3.3 | **U17 TLV1117LV33DCYR** (mismo SOT-223) | U17 | Dropout: 3V3 marginal en respaldo; Iq 0.1 mA | -| BOM / stock | U10 C729142 (15 en stock), R53 C131054 (6), 100 k C103211 | **U10 C57156**, **R53 C177479**, 100 k → **C25803** (1 %, básica) | U10, R53, ×12 | Stock JLC para 30 tarjetas | +| LDO 3V3 | U17 AMS1117-3.3 | **U17 TLV1117LV33DCYR** (mismo SOT-223) | U17 | Dropout: 3V3 marginal en respaldo; Iq 0.1 mA | +| BOM / stock | U10 C729142 (15 en stock), R53 C131054 (6), 100 k C103211 | **U10 C57156**, **R53 C177479**, 100 k → **C25803** (1 %, básica) | U10, R53, ×12 | Stock JLC para 30 tarjetas | | Huella | U15 `SOIC-16W` (campo obsoleto) | U15 **`SOIC-16_3.9x9.9mm`** (la PCB ya la usaba) | U15 | Evitar que *Update PCB* cambie la huella buena | -| Sin cambio (decisión) | R53 499 k (boost 4.79 V), C40 22 µF en `SW_5V`, U12, R60/R61, cristales HC-49, A-11 (R56), D-09, A-13 (PFO al MCU: sin pin libre) | — | — | Informe §6, §9, §10 | +| Sin cambio (decisión) | R53 499 k (boost 4.79 V), C40 22 µF en `SW_5V`, U12, R60/R61, cristales HC-49, A-11 (R56), D-09, A-13 (PFO al MCU: sin pin libre) | — | — | Informe §6, §9, §10 | ## 11. Pedido y BOM @@ -330,12 +333,14 @@ Fuente: Informe de cambios §1 (tabla antes → después), §2–§3 (partes y p |---|---| | BOM V5.6 (94 LCSC, verificados para 30 pzas el 28-sep) | Campo `LCSC` de cada componente en `kicad/hbox-watchdog-v5.kicad_sch` → exportar con `kicad-cli sch export bom` / plugin JLC; guía: `03-Architecture-Hardware/JLCPCB-Order-Guide.md` | | BOM maestro del gabinete (módulos, fuente, paquete, cables) | `03-Architecture-Hardware/Drogheda-BOM-Maestro.xlsx`, `BOM-master.md`, `Assembly-BOM-Split.md` | -| Pendientes antes de pedir | *Update PCB* + re-ruteo del bloque U7 y 17 huellas nuevas · DRC 0 · auditoría pad-a-pad contra `board_v5.h`/0.6.x · **prueba de Ethernet en una V5.5** (nunca ejercitado en hardware real) · escalón de carga en `3V3_MODEM` · carga LFP a 45 °C sin pausa NTC (Informe §8–§9) | +| Pendientes antes de pedir | *Update PCB* + re-ruteo del bloque U7 y 17 huellas nuevas · DRC 0 · auditoría pad-a-pad contra `board_v5.h`/0.6.x · **prueba de Ethernet en una V5.5** (nunca ejercitado en hardware real) · escalón de carga en `3V3_MODEM` · carga LFP a 45 °C sin pausa NTC (Informe §8–§9) | | Esquemático PDF | `03-Architecture-Hardware/hbox-watchdog-v56-schematic.pdf` | -| Cristal Y2 | Valor en esquemático `1.8432MHz`, LCSC C2238 = X49SM36864MSD2SC-1 (**3.6864 MHz**, que es lo que dice `board_v5.h` y la serigrafía del cristal) | +| Cristal Y2 | Valor en esquemático `1.8432MHz`, LCSC C2238 = X49SM36864MSD2SC-1 (**3.6864 MHz**, que es lo que dice `board_v5.h` y la serigrafía del cristal) | ## Historial de revisiones -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión (V5.6 con ECO en esquemático; PCB pendiente) | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión (V5.6 con ECO en esquemático; PCB pendiente) | + +Ver también: [manual V5](../manuales/manual-tarjeta-V5.md) · [pinout V5.6](v56-pinout.md) · [informe de cambios](v56-cambios-esquematico.md) · [ECO](v56-eco.md) · [instrucciones de layout](v56-layout-instrucciones.md). diff --git a/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Instrucciones-Layout_ES_v1.0.md b/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Instrucciones-Layout_ES_v1.0.md index cdad6a1..86dd87c 100644 --- a/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Instrucciones-Layout_ES_v1.0.md +++ b/03-Architecture-Hardware/2026-09-29_Drogheda_EinarBoard-V5.6_Instrucciones-Layout_ES_v1.0.md @@ -1,5 +1,5 @@ --- -title: EinarBoard V5.6 — Cómo pasar la ECO del esquemático a la PCB (instrucciones de layout) +title: "EinarBoard V5.6 — del esquemático a la PCB" project: Project Drogheda date: 2026-09-29 tags: [project-drogheda, hardware, kicad, v5.6, layout] @@ -7,24 +7,23 @@ tags: [project-drogheda, hardware, kicad, v5.6, layout] # EinarBoard V5.6 — del esquemático a la PCB -!!! info "Tarjeta: EinarBoard **V5.6** — proyecto KiCad `hbox-watchdog-v5` (lote en pedido, sep-2026)" +!!! note "EinarBoard V5.6 (`hbox-watchdog-v5`), lote en pedido" Esta tarjeta es la evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). **No es la v6** (GNSS y 4G soldados a bordo, `hbox-watchdog-v6`, en diseño): la v6 tiene su propia sección en el sitio. Cuando este documento dice «copiado de v6» se refiere solo al origen de un valor de componente. +Para: Michelle (layout) y Leo (revisión). Proyecto KiCad: `03-Architecture-Hardware/kicad/hbox-watchdog-v5.kicad_pro` (KiCad 10). Ya **no existe** un proyecto `-v56`: la V5.6 se edita en el mismo proyecto; el estado fabricado V5.5 es el tag git `v5.5-as-fabbed`. -**Para:** Michelle (layout) y Leo (revisión). **Proyecto KiCad:** `03-Architecture-Hardware/kicad/hbox-watchdog-v5.kicad_pro` (KiCad 10). Ya **no existe** un proyecto `-v56`: la V5.6 se edita en el mismo proyecto; el estado fabricado V5.5 es el tag git `v5.5-as-fabbed`. - -**Referencias:** [Informe de cambios al esquemático](../hardware/v56-cambios-esquematico.md) (qué cambió y por qué, §1–§10) · [ECO V5.6](../hardware/v56-eco.md) (requisitos R1–R5, sección E de EMC) · [Hoja de datos V5.6](v56-datasheet.md) · [Pinout V5.6](v56-pinout.md). +Referencias: [Informe de cambios al esquemático](../hardware/v56-cambios-esquematico.md) (qué cambió y por qué, §1–§10) · [ECO V5.6](../hardware/v56-eco.md) (requisitos R1–R5, sección E de EMC) · [Hoja de datos V5.6](v56-datasheet.md) · [Pinout V5.6](v56-pinout.md). !!! warning "Reglas" - - Trabajar **solo** en `hbox-watchdog-v5.*`; no tocar `hbox-watchdog-v6.*` ni `v3`/`v4`. + - Trabajar solo en `hbox-watchdog-v5.*`; no tocar `hbox-watchdog-v6.*` ni `v3`/`v4`. - Commit en el submódulo `kicad` primero, luego el gitlink en el repo padre (guía Git del sitio). - No ejecutar «Update footprints from library» ni marcar «Replace footprints with those specified in schematic» al actualizar la PCB: las huellas colocadas en la V5.5 son las correctas (RJ45, Phoenix, U15 angosto). -## 1. Esquemático (Leo, 15 min) +## 1. Esquemático (Leo, 15 min) -1. Abrir `hbox-watchdog-v5.kicad_pro` → eeschema → **Guardar** una vez (KiCad reescribe el archivo generado por script en formato canónico; el diff en git será grande, es normal). -2. **ERC**: se espera 1 error preexistente (etiqueta `GND` suelta en 50.8, 25.146 — borrarla deja 0 errores) y los mismos avisos de librería que la V5.5. Ningún aviso nuevo. -3. Revisar visualmente el bloque **U7** (x≈433–475, y≈185–210 mm) y el bloque **«V5.6 ECO (2026-09-28)»** (x 70–210, y 362–580 mm, 5 filas). Los componentes nuevos van por etiquetas: se pueden mover junto a su bloque sin rehacer conexiones. +1. Abrir `hbox-watchdog-v5.kicad_pro` → eeschema → Guardar una vez (KiCad reescribe el archivo generado por script en formato canónico; el diff en git será grande, es normal). +2. ERC: se espera 1 error preexistente (etiqueta `GND` suelta en 50.8, 25.146 — borrarla deja 0 errores) y los mismos avisos de librería que la V5.5. Ningún aviso nuevo. +3. Revisar visualmente el bloque **U7** (x≈433–475, y≈185–210 mm) y el bloque **«V5.6 ECO (2026-09-28)»** (x 70–210, y 362–580 mm, 5 filas). Los componentes nuevos van por etiquetas: se pueden mover junto a su bloque sin rehacer conexiones. 4. Commit del `.kicad_sch`. ## 2. Update PCB from Schematic (F8) @@ -34,63 +33,65 @@ Resultado esperado del diálogo (sin «replace footprints»): | Acción | Refs | |---|---| | Huella sustituida en su sitio (mismo UUID, pinout distinto → re-rutear) | **U7** → `Drogheda-v6:SO-8_L4.9-W3.9-P1.27-LS6.0-BL-EP` (AP64350) | -| Huella cambiada | **JP2** Bridged12 → Bridged23 (misma geometría) | +| Huella cambiada | **JP2** → `Drogheda:SolderJumper-3_P1.3mm_Bridged23_RoundedPad1.0x1.5mm` (huella del proyecto; puente en 2-3 = LFP) | | Huellas nuevas (caen en el origen) | C119 C120 C121 C122 C123 C124 **C125** · R105 R106 R107 R108 R109(DNP) R110 ya no existe R111 R112 **R113 R114** · U18 (SOT-563) · D19 (SOT-23-6) · JP6 | | Huella eliminada | **P5** (TEMP_PROBE, JST XH-4) | | DNP (quedan en placa, sin pieza) | Dbk2, R109 | | Sin cambio de huella, solo valor/LCSC | RS1, R50, R53, R55, R112, U10, U15 (campo corregido = huella ya colocada), U17, C3, C43, C78, C90, C91, L7, F1, Cbst2, Rcomp2, Ccomp2, Rfreq2, Y2 | -Si el log se queja de `Connector_RJ45` o de la huella Phoenix «Vertical»: es el desajuste de nombre de librería preexistente; ignorar (no reemplazar huellas). +Antes de F8: hacer `git pull` del repositorio HBox_PCB (trae la huella de JP2 y la tabla de librerías corregida). El log de F8 no debe mostrar «footprint not found»; si aparece, la copia local está desactualizada. ## 3. Layout — en este orden **A. Térmico del LTC4040 (bloqueante, lección F5)** -1. `SW_BAT` (U6.21/22 → L6.1): polígono en F.Cu **≥ 2 mm**, sin cuellos de 0.3 mm más allá del abanico de los pines. -2. `BAT_PLUS` (P4 → L6.2 → U6.23): **≥ 1.5 mm** + ≥ 4 vías por cambio de capa; sensado del pin 23 como Kelvin desde L6.2/C35. -3. **EP de U6: ≥ 9 vías** 0.3/0.6 mm (3×3, paso 0.9×1.2 mm), conexión sólida a la zona. -4. L6 a ≤ 5 mm de U6; C30/C31 ≤ 3 mm del pin 6; C32/C33/C34 ≤ 2 mm de los pines 1/24. -5. **U4 (TMP102, 0x48) se mueve** desde junto al MCU a **≤ 5 mm del EP de U6**, entre U6 y L6 = sensor del cargador (`tchg`). C124 no es su desacoplo (es de U18): usar el 100 nF que ya tiene U4. -6. In1/In2 sólidos ≥ 5 mm alrededor de U6/L6 (mover `VFB_BST`, `IGATE`, `CHRG_*` de In1). +1. `SW_BAT` (U6.21/22 → L6.1): polígono en F.Cu **≥ 2 mm**, sin cuellos de 0.3 mm más allá del abanico de los pines. +2. `BAT_PLUS` (P4 → L6.2 → U6.23): **≥ 1.5 mm** + ≥ 4 vías por cambio de capa; sensado del pin 23 como Kelvin desde L6.2/C35. +3. **EP de U6: ≥ 9 vías** 0.3/0.6 mm (3×3, paso 0.9×1.2 mm), conexión sólida a la zona. +4. L6 a ≤ 5 mm de U6; C30/C31 ≤ 3 mm del pin 6; C32/C33/C34 ≤ 2 mm de los pines 1/24. +5. **U4 (TMP102, 0x48) se mueve** desde junto al MCU a **≤ 5 mm del EP de U6**, entre U6 y L6 = sensor del cargador (`tchg`). C124 no es su desacoplo (es de U18): usar el 100 nF que ya tiene U4. +6. In1/In2 sólidos ≥ 5 mm alrededor de U6/L6 (mover `VFB_BST`, `IGATE`, `CHRG_*` de In1). **B. Bloque U7 (AP64350, módem)** -7. Re-rutear: Cin **C119/C120/C121 < 3 mm** del pin 2 (VIN) con GND al EP; **Cbst2** pegado a pines 1/8; **C123/Rcomp2/Ccomp2** y **Rfreq2** junto a pines 4/6 con retorno a GND corto; EP con vías; L7 ≤ 5 mm del pin 8 (SW); `SW3_NODE` ≤ 25 mm². -8. R60/R61 (FB) ≤ 3 mm del pin 5, lejos del pin 8. -9. **C3 y C43** (220 µF polímero, mismo can 6.3×7.7) en su sitio; C122 (22 µF) junto a C43 en 3V3_MODEM. +7. Re-rutear: Cin **C119/C120/C121 < 3 mm** del pin 2 (VIN) con GND al EP; **Cbst2** pegado a pines 1/8; **C123/Rcomp2/Ccomp2** y **Rfreq2** junto a pines 4/6 con retorno a GND corto; EP con vías; L7 ≤ 5 mm del pin 8 (SW); `SW3_NODE` ≤ 25 mm². +8. R60/R61 (FB) ≤ 3 mm del pin 5, lejos del pin 8. +9. **C3 y C43** (220 µF polímero, mismo can 6.3×7.7) en su sitio; C122 (22 µF) junto a C43 en 3V3_MODEM. -**C. Piezas nuevas** +C. Piezas nuevas 10. **U18 + C124** entre J7/J8 y el módem (fuente de calor). SOT-563: revisar orientación en 3D. -11. **D19** en la salida D+/D− de **J9** (flow-through), ≤ 3 mm de cobre, vía a GND ≤ 1 mm. +11. **D19** en la salida D+/D− de **J9** (flow-through), ≤ 3 mm de cobre, vía a GND ≤ 1 mm. 12. **R112 (4.7 k)** junto a U11 pin 37. **R107/R108** cerca de J7/J8; **R111** cerca de J7.2; **R105/R106** junto a U7 pin 3. 13. **R113/R114/C125** (divisor NTC → PC5) junto a P4/R55, pista corta a U16 pin 25. 14. **JP6** junto a P11 (silk «CUTOFF BYPASS — abierto»). 15. **P5 fuera**: liberar el área; no dejar pads huérfanos. -**D. EMC (sección E de la ECO)** +D. EMC (sección E de la ECO) -16. Divisor FB del ventilador (R20/R21) junto al pin 4 de U2; ESD DFU (D14/D15/D16) en línea con J11; cristales ≤ 5 mm de sus ICs; costura de vías bajo MOD1 y en cada isla de GND ≥ 20 mm²; ninguna celda de 20×20 mm sin vía de GND. -17. Cin de cada regulador (U2, U12, U7) con lazo < 3 mm. +16. Divisor FB del ventilador (R20/R21) junto al pin 4 de U2; ESD DFU (D14/D15/D16) en línea con J11; cristales ≤ 5 mm de sus ICs; costura de vías bajo MOD1 y en cada isla de GND ≥ 20 mm²; ninguna celda de 20×20 mm sin vía de GND. +17. Cin de cada regulador (U2, U12, U7) con lazo < 3 mm. -**E. Serigrafía** +E. Serigrafía -18. `SW4G1 = RESET MÓDEM`, `SW1 = RESET MCU`, `SW2 = BOOT0 (DFU)`, `JP2 = QUÍMICA 1-2 Li-ion / 2-3 LFP`, `JP5 = TERM RS-485`, `JP6 = CUTOFF BYPASS`, nombre de función en cada conector (P15 RS-485 A/B/G, P16 RS-232 TX/RX/G, J10 ETH sin PoE). Textos ≥ 0.8 mm / 0.15 mm. +18. `SW4G1 = RESET MÓDEM`, `SW1 = RESET MCU`, `SW2 = BOOT0 (DFU)`, `JP2 = QUÍMICA 1-2 Li-ion / 2-3 LFP`, `JP5 = TERM RS-485`, `JP6 = CUTOFF BYPASS`, nombre de función en cada conector (P15 RS-485 A/B/G, P16 RS-232 TX/RX/G, J10 ETH sin PoE). Textos ≥ 0.8 mm / 0.15 mm. ## 4. Salida 19. Rellenar zonas → **DRC = 0 errores**; anchos: ningún aviso en `SW_BAT`, `BAT_PLUS`, `MAIN5V`, `SYS5V`. 20. Exportar PDF de esquemático y capas a `03-Architecture-Hardware/` (`hbox-watchdog-v5_V5.6_*.pdf`). -21. **BOM y CPL desde el esquemático** (`kicad-cli sch export bom` con el campo `LCSC`, no desde la placa); comprobar: sin `TBD`, DNP marcados (Dbk2, R109), U10 = C57156, R53 = C177479, U15 = C15846 sobre huella angosta. +21. BOM y CPL desde el esquemático (`kicad-cli sch export bom` con el campo `LCSC`, no desde la placa); comprobar: sin `TBD`, DNP marcados (Dbk2, R109), U10 = C57156, R53 = C177479, U15 = C15846 sobre huella angosta. 22. Pedido JLC: lote según Leo; ENIG; verificar stock el día del pedido (U10, R53, C25803 ya son los sustitutos con stock). 23. Commit en `kicad` → gitlink en el padre → avisar a Leo. ## 5. Después de la PCB (no bloquea el pedido) - Banco en una V5.5: Ethernet con el binario `-eth` ([procedimiento](../procedimientos/v5-prueba-ethernet-serie.md)). -- Firmware 0.6.1: umbrales LFP (indicador, corte 3.40 V → LFP), `tcell` en PC5, `tchg` en U4, autoprueba U18 (0x49), lazo de puertos serie. +- Firmware 0.6.1: umbrales LFP (indicador, corte 3.40 V → LFP), `tcell` en PC5, `tchg` en U4, autoprueba U18 (0x49), lazo de puertos serie. - Paquete LFP-HT 26650 con NTC B3380 (caja y BOM mecánica). -| Versión | Fecha | Cambio | +## Historial de revisiones + +| Versión | Fecha | Cambios | |---|---|---| | 1.0 | 2026-09-29 | Primera versión. | diff --git a/03-Architecture-Hardware/2026-09-29_Drogheda_HBOX-V5_Harness-Connector-Pinout_v1.0.md b/03-Architecture-Hardware/2026-09-29_Drogheda_HBOX-V5_Harness-Connector-Pinout_v1.0.md index 581cf31..4ebad6e 100644 --- a/03-Architecture-Hardware/2026-09-29_Drogheda_HBOX-V5_Harness-Connector-Pinout_v1.0.md +++ b/03-Architecture-Hardware/2026-09-29_Drogheda_HBOX-V5_Harness-Connector-Pinout_v1.0.md @@ -1,5 +1,5 @@ --- -title: HBOX EinarBoard V5.6 — Pinout de arneses y conectores +title: "HBOX EinarBoard V5.6 — Pinout de arneses y conectores" project: Project Drogheda date: 2026-09-29 version: "1.0" @@ -8,11 +8,10 @@ tags: [project-drogheda, hardware, harness, pinout, einarboard, v5.6] # HBOX EinarBoard V5.6 — Pinout de arneses y conectores -!!! info "Tarjeta: EinarBoard **V5.6** — proyecto KiCad `hbox-watchdog-v5` (lote en pedido, sep-2026)" +!!! note "EinarBoard V5.6 (`hbox-watchdog-v5`), lote en pedido" Esta tarjeta es la evolución de la V5.5 fabricada (STM32F411 a bordo + zócalos simpleRTK2B y 4G NTRIP Master). **No es la v6** (GNSS y 4G soldados a bordo, `hbox-watchdog-v6`, en diseño): la v6 tiene su propia sección en el sitio. Cuando este documento dice «copiado de v6» se refiere solo al origen de un valor de componente. - -Auto-generated from the PCB netlist (placement-independent) / **Generado automáticamente desde la netlist del esquemático** (independiente de la colocación). `GND` = plano de tierra de la tarjeta; su lista completa de pads se omite. Las nets de potencia van marcadas ⚡ para elegir calibre de cable. Se omiten las banderas `PWR_FLAG` (PFx). +Generado automáticamente desde la netlist del esquemático (independiente de la colocación). `GND` = plano de tierra de la tarjeta; su lista completa de pads se omite. Las nets de potencia van marcadas ⚡ para elegir calibre de cable. Se omiten las banderas `PWR_FLAG` (PFx). | Netlist | Valor | |---|---| @@ -220,7 +219,7 @@ Fila 1 del zócalo XBee (pines 1–10 del módulo, en orden). Módem ArduSimple ### J8 — XBEE-ROW-2 -Fila 2 del zócalo XBee: **pad k = pin XBee (21 − k)** (espejo; regla verificada en el Informe técnico V3+V4 contra el footprint-R00 de ArduSimple: J8.8 = pin 13 LED, J8.6 = pin 15 GND, J8.10 = pin 11 GND). La net `XBEE_ONSLP` en J8.3 (R109 **DNP**) corresponde por esa regla al pin XBee 18; el ECO la etiqueta «pin 13 ON/SLEEP». +Fila 2 del zócalo XBee: **pad k = pin XBee (21 − k)** (espejo; regla verificada en el Informe técnico V3+V4 contra el footprint-R00 de ArduSimple: J8.8 = pin 13 LED, J8.6 = pin 15 GND, J8.10 = pin 11 GND). La net `XBEE_ONSLP` en J8.3 (R109 DNP) corresponde por esa regla al pin XBee 18; el ECO la etiqueta «pin 13 ON/SLEEP». | Pin | Señal | Net | Conecta con | |---|---|---|---| @@ -309,16 +308,16 @@ Zócalo UNO del simpleRTK2B Pro (ArduSimple). Solo se usan 5V, IOREF, GND, D0/D1 | Conector | V5.5 (lote 22-ago) | V5.6 | Fuente | |---|---|---|---| -| **P5** TEMP_PROBE (3V3/GND/SDA/SCL) | Presente | **Eliminado** — ya no hay sonda externa de T/RH; la temperatura del cargador la mide U4 y la del módem U18 en la tarjeta | Informe de cambios §10 / netlist `p5ntc-after.xml` (sin P5) | -| **P4.3** NTC | Solo al LTC4040 (U6.17) con R55 10 k (Li-ion) | Además al MCU **PC5** por R113 100 k / R114 120 k / C125 10 nF (`NTC_CELL`); R55 **5.6 k** para química **LFP-HT** (NTC B3380) | netlist; Informe §9 | +| **P5** TEMP_PROBE (3V3/GND/SDA/SCL) | Presente | Eliminado — ya no hay sonda externa de T/RH; la temperatura del cargador la mide U4 y la del módem U18 en la tarjeta | Informe de cambios §10 / netlist `p5ntc-after.xml` (sin P5) | +| **P4.3** NTC | Solo al LTC4040 (U6.17) con R55 10 k (Li-ion) | Además al MCU **PC5** por R113 100 k / R114 120 k / C125 10 nF (`NTC_CELL`); R55 **5.6 k** para química **LFP-HT** (NTC B3380) | netlist; Informe §9 | | **JP2** | `F2:Li-ion` puente 1-2 | **`F2:LFP` puente 2-3** (flotación LiFePO4) | Informe §9 | -| **JP6** | No existía | Nuevo, en paralelo con P11 (`MAIN5V`↔`SYS5V`), **abierto** — puentear solo si la unidad no lleva interruptor de corte | Informe §2 | +| **JP6** | No existía | Nuevo, en paralelo con P11 (`MAIN5V`↔`SYS5V`), abierto — puentear solo si la unidad no lleva interruptor de corte | Informe §2 | | **J7.2** DOUT_4G | Solo a MOD1.17 | Además al MCU **PC7** (USART6_RX) por R111 1 k — escucha RTCM | Informe §3 | | **J7.5** MODEM_RST | Solo SW4G1 | Además al MCU **PC1** por R107 1 k | Informe §3 | | **J8.8** MODEM_LED | Solo Rmled1/D4G1 | Además al MCU **PC2** por R108 10 k | Informe §3 | -| **J8.3** | Sin conexión | `XBEE_ONSLP` → PC4 por R109 10 k **DNP** | Informe §2–3 | +| **J8.3** | Sin conexión | `XBEE_ONSLP` → PC4 por R109 10 k DNP | Informe §2–3 | | **J9** USB-C módem | Sin ESD | **D19 USBLC6-2SC6** en D+/D−/VBUS | Informe §2 | -| **J10** RJ45 | Sin cambio (sin PoE) | Sin cambio; U11 con R112 4.7 k pull-down en `ETH_RST`, C90 4.7 µF, C91 10 nF | Informe §10 | +| **J10** RJ45 | Sin cambio (sin PoE) | Sin cambio; U11 con R112 4.7 k pull-down en `ETH_RST`, C90 4.7 µF, C91 10 nF | Informe §10 | | **P11** CUTOFF-SW | `MAIN5V`/`SYS5V` | Sin cambio (JP6 lo puentea si se desea) | netlist | | **P1, P2, P6, P8, P10, P12, P14, P15, P16, J11, MOD1** | — | **Sin cambio** eléctrico | diff de netlist v55-baseline → V5.6 (Informe §4) | @@ -327,7 +326,7 @@ Zócalo UNO del simpleRTK2B Pro (ArduSimple). Solo se usan 5V, IOREF, GND, D0/D1 ## Historial de revisiones -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies (generado por script desde la netlist) | Primera versión para V5.6 | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión para V5.6 | diff --git a/03-Architecture-Hardware/Assembly-BOM-Split.md b/03-Architecture-Hardware/Assembly-BOM-Split.md index a016014..ca62332 100644 --- a/03-Architecture-Hardware/Assembly-BOM-Split.md +++ b/03-Architecture-Hardware/Assembly-BOM-Split.md @@ -1,32 +1,35 @@ --- -title: HBOX Watchdog v3 PROD — Assembly BOM Split +title: "HBOX Watchdog V3 (PROD) — BOM dividido para ensamble" project: Project Drogheda date: 2026-07-05 -tags: [project-drogheda, hardware, pcb, assembly, jlcpcb, bom] -status: Board routed, DRC fab-clean — assembly reference for JLCPCB PCBA order +tags: [project-drogheda, hardware, pcb, assembly, jlcpcb, bom, v3] +author: Helgen Technologies +status: HISTÓRICO — referencia de ensamble del pedido PCBA V3 en JLCPCB (jul-2026) --- -# HBOX Watchdog v3 PROD — Assembly BOM Split +# HBOX Watchdog V3 (PROD) — BOM dividido para ensamble -Audit of the routed board (`kicad/hbox-watchdog-v3-PROD.kicad_pcb`, 126 footprints) -for the JLCPCB assembly order. Three buckets: **(A)** what JLC solders onto the -board, **(B)** the plug-in modules that sit on top (you install), and **(C)** what -lives off-board and connects through the JST harness. +Tarjeta: V3 (EinarBoard 1.0, `kicad/hbox-watchdog-v3-PROD`, 126 huellas). -| Bucket | Count | JLC assembles? | +!!! note "Solo V3 — para V5.6 usa [Pinout V5.6](../hardware/v56-pinout.md)" + El BOM de la V5.6 (94 LCSC) se exporta desde el esquemático `hbox-watchdog-v5`; ver [hoja de datos V5.6 §11](../hardware/v56-datasheet.md). + +Traducido del original en inglés (05-jul-2026). + +Auditoría de la tarjeta ruteada (`kicad/hbox-watchdog-v3-PROD.kicad_pcb`, 126 huellas) para el pedido de ensamble en JLCPCB. Tres grupos: (A) lo que JLC suelda en la tarjeta, (B) los módulos enchufables que van encima (los instala Helgen) y (C) lo que vive fuera de la tarjeta y se conecta por el arnés JST. + +| Grupo | Cantidad | ¿JLC lo ensambla? | |---|---|---| -| A. On-board parts (SMD + THT) | 103 parts + 12 connectors + 5 sockets | **Yes** | -| B. Plug-in modules (on top) | 3 modules | No — you install | -| C. External via JST harness | wired to 12 connectors | No — off-board | -| Fab features (2 test points, 4 mounting holes) | 6 | n/a | +| A. Partes en la tarjeta (SMD + THT) | 103 partes + 12 conectores + 5 zócalos | Sí | +| B. Módulos enchufables (encima) | 3 módulos | No — los instala Helgen | +| C. Externos por el arnés JST | cableados a 12 conectores | No — fuera de la tarjeta | +| Elementos de fabricación (2 puntos de prueba, 4 barrenos de montaje) | 6 | n/a | ---- +## A. Ensamblado por JLC — en la PCB -## A. Assembled by JLC — on the PCB +### A1 · Partes SMD (PCBA estándar — 98 partes) -### A1 · SMD parts (standard PCBA — 98 parts) - -| Qty | Value | Package | Refs | +| Cant. | Valor | Encapsulado | Refs | |---|---|---|---| | 10 | 10k | R0603 | R2, R5, R6, R7, R8, R41, Rigb, Rled, Rrp, Rtp | | 8 | 100k | R0603 | R20, R56, R57, R58, Ren1, Rfreq, Rfreq2, Rgs | @@ -37,7 +40,7 @@ lives off-board and connects through the JST harness. | 3 | SS34 | D_SMA | D2, Dbk, Dbk2 | | 3 | 22uF | C0805 | C35, C40, C41 | | 3 | 100k/1% | R0603 | R52, R54, R60 | -| 2 | MP1584EN | SOIC-8-EP | U2 (fan buck), U7 (modem buck) | +| 2 | MP1584EN | SOIC-8-EP | U2 (buck del ventilador), U7 (buck del módem) | | 2 | 2.2nF | C0603 | Ccomp, Ccomp2 | | 2 | 100R | R0603 | Rg, Rig | | 2 | 10uF | C0805 | C30, C34 | @@ -48,7 +51,7 @@ lives off-board and connects through the JST harness. | 2 | AO3400A | SOT-23 | Q2, Q4 | | 2 | 10k/1% | R0603 | R42, R55 | | 2 | 47uF | C1210 | C32, C33 | -| 1 | **LTC4040EUFD** | QFN-24 | U6 (backup-supply/charger) | +| 1 | **LTC4040EUFD** | QFN-24 | U6 (respaldo/cargador) | | 1 | AO4406A | SOIC-8 | Q7 | | 1 | AO3401A | SOT-23 | Q1 | | 1 | IRFR5305 | TO-252 | Q10 | @@ -56,85 +59,81 @@ lives off-board and connects through the JST harness. | 1 | BAT54 | SOD-123 | D5 | | 1 | 1N4148W | SOD-123 | D6 | | 1 | SMBJ33A | D_SMB | D10 | -| 1 | **SHT40-AD1B** | DFN-4 | U3 (humidity/temp) | -| 1 | **TMP102** | SOT-563 | U4 (temp) | -| 1 | 8mR/1% | R1206 | RS1 (current sense) | +| 1 | **SHT40-AD1B** | DFN-4 | U3 (humedad/temperatura) | +| 1 | **TMP102** | SOT-563 | U4 (temperatura) | +| 1 | 8mR/1% | R1206 | RS1 (sensado de corriente) | | 1 | PPTC 3A | Fuse1812 | F1 | | 3 | 2.2uH / 10uH / 10uH-2A | SRU8028 8×8 | L6, L2, L7 | | 1 | 22uF/50V | C1210 | C22 | | 1 | 22uF/16V | C0805 | C23 | | 1 | 2.2uF | C0603 | C31 | -| — | *(single-value R's)* | R0603 | Ren2 20k, Rdfu 22k, R21 19.1k, R50 825R, R51 287k, R53 499k, R61 31.6k | -| 4 | jumpers | SolderJumper | JP1 (0R), JP2 (F2), JP3 (F1), JP4 (F0) | +| — | *(resistencias de un solo valor)* | R0603 | Ren2 20k, Rdfu 22k, R21 19.1k, R50 825R, R51 287k, R53 499k, R61 31.6k | +| 4 | puentes | SolderJumper | JP1 (0R), JP2 (F2), JP3 (F1), JP4 (F0) | -### A2 · Through-hole parts (THT — JLC "through-hole assembly" surcharge, or hand-solder) +### A2 · Partes through-hole (THT — recargo de JLC por «through-hole assembly», o soldar a mano) -| Ref | Part | Note | +| Ref | Parte | Nota | |---|---|---| -| K1 | Omron G5V-1 DC5 relay | Modo-B fail-safe bypass | -| SW1 | 6 mm push (RESET) | | -| C3, C10, C43 | Radial electrolytics (47µF, 47µF/50V, 100µF) | | +| K1 | Relevador Omron G5V-1 DC5 | Bypass fail-safe del Modo B | +| SW1 | Botón de 6 mm (RESET) | | +| C3, C10, C43 | Electrolíticos radiales (47 µF, 47 µF/50 V, 100 µF) | | -### A3 · Connectors & module sockets (THT — soldered to board) +### A3 · Conectores y zócalos de módulos (THT — soldados a la tarjeta) -| Ref | Part | Purpose | +| Ref | Parte | Propósito | |---|---|---| -| P1 | Phoenix MKDS 1.5-5 (5-pos terminal) | GX16 machine power in | -| P2, P8, P10, P11, P12 | JST-XH 2-pin | see bucket C | +| P1 | Phoenix MKDS 1.5-5 (terminal de 5 posiciones) | Entrada de energía de la máquina (GX16) | +| P2, P8, P10, P11, P12 | JST-XH 2-pin | ver grupo C | | P4, P13 | JST-XH 3-pin | | | P3, P5, P6 | JST-XH 4-pin | | -| H3 | 1×3 pin header | USART1 reserved | -| **J1, J2** | 1×20 female 2.54 | **Blackpill socket** | -| **J7, J8** | 1×10 female 2.00 | **4G XBee socket** | -| **MOD1** | Arduino-UNO-form female headers | **simpleRTK2B Pro socket** | +| H3 | Header de 1×3 pines | USART1 reservado | +| **J1, J2** | Hembra 1×20 de 2.54 mm | Zócalo del Blackpill | +| **J7, J8** | Hembra 1×10 de 2.00 mm | **Zócalo XBee del 4G** | +| **MOD1** | Headers hembra formato Arduino UNO | **Zócalo del simpleRTK2B Pro** | -> ⚠️ **Confirm before ordering:** engineering notes flag **P3 / P13 / H3 as DNP** -> (Modo-B + K1 NC bypass makes them redundant), but they are **not** marked DNP in -> the board file — so JLC would populate them. Decide per-connector. +!!! warning "Confirmar antes de pedir" + Las notas de ingeniería marcan **P3 / P13 / H3 como DNP** (Modo B + el bypass NC de K1 los vuelven redundantes), pero **no** están marcados DNP en el archivo de la tarjeta — JLC los poblaría. Decidir conector por conector. ---- +## B. Módulos enchufables — montados encima (los instala Helgen; no van en el pedido a JLC) -## B. Plug-in modules — mounted ON TOP (you install, NOT in the JLC order) +Son tarjetas completas que se asientan en los zócalos de arriba. **No** añadirlos al BOM de JLC — se colocan a mano cuando llega el PCBA. -These are complete boards that seat into the sockets above. Do **not** add them to -the JLC BOM — they're hand-fitted after the PCBA arrives. - -| Module | Seats into | Notes | +| Módulo | Se asienta en | Notas | |---|---|---| -| **simpleRTK2B Pro** (ZED-F9P) | MOD1 (Arduino headers) | GNSS RTK receiver | -| **STM32F411 Blackpill** | J1 + J2 (2×20) | watchdog MCU | -| **4G NTRIP Master** (XBee LTE) | J7 + J8 (2×10, 2 mm) | modem, 3V3 socket | +| **simpleRTK2B Pro** (ZED-F9P) | MOD1 (headers Arduino) | receptor GNSS RTK | +| **STM32F411 Blackpill** | J1 + J2 (2×20) | MCU del watchdog | +| **4G NTRIP Master** (XBee LTE) | J7 + J8 (2×10, 2 mm) | módem, zócalo a 3V3 | ---- +## C. Externos — conectados por el arnés JST (NO en la tarjeta) -## C. External — connected via the JST harness (NOT on the board) +Todo lo que se enchufa en los conectores de borde y vive fuera del HBOX (o en el gabinete). Cablear según el [pinout de arneses](pinout-arneses.md). -Everything that plugs into the edge connectors and lives outside the HBOX (or in the -cabinet). Wire per the harness pinout (`harness-connector-pinout.md`). - -| Conn | Wires to (external) | Key pins | +| Conector | Se cablea a (externo) | Pines clave | |---|---|---| -| **P1** GX16-5 | Machine power + ignition from the cabinet | 1 = 24V_IN ⚡, 3 = IGN_IN, 2 = GND | -| **P2** 5V-IN | Mean Well SD-15B-05 5 V supply (VEH5V rail) | 1 = VEH5V ⚡, 2 = GND | -| **P3** RTK2B-UART1 | RTK2B UART1 tap (GNSS TX/RX) | 1 = SW_5V ⚡, 3 = GNSS_TX, 4 = GNSS_RX | -| **P4** BATT | 1S4P 12 Ah pack + NTC | 1 = BAT_PLUS ⚡, 3 = NTC, 2 = GND | -| **P5** TEMP_PROBE | External I²C temp/probe header | 1 = 3V3, 3 = SDA, 4 = SCL | -| **P6** FAN | Cooling fan (5 V, tach) | 1 = 5V_FAN ⚡, 2 = FAN_RET, 4 = TACH | -| **P8** PANEL_LED | Panel status LED | 1 = LED_A, 2 = LED_K | -| **P10** RESET-EXT | External reset button | 1 = NRST, 2 = GND | -| **P11** CUTOFF-SW | Power cutoff switch (SYS→MAIN 5 V) | 1 = MAIN5V ⚡, 2 = SYS5V ⚡ | -| **P12** NTC-HOTSPOT | Cabinet hotspot NTC | 1 = NTC_TEMP, 2 = GND | -| **P13** MODO-B-UPLINK | Modo-B uplink to 4G | 1 = USART1_RX, 2 = DIN_4G, 3 = GND | +| **P1** GX16-5 | Energía de la máquina + ignición desde el gabinete | 1 = 24V_IN ⚡, 3 = IGN_IN, 2 = GND | +| **P2** 5V-IN | Fuente Mean Well SD-15B-05 de 5 V (riel VEH5V) | 1 = VEH5V ⚡, 2 = GND | +| **P3** RTK2B-UART1 | Derivación del UART1 del RTK2B (GNSS TX/RX) | 1 = SW_5V ⚡, 3 = GNSS_TX, 4 = GNSS_RX | +| **P4** BATT | Paquete 1S4P 12 Ah + NTC | 1 = BAT_PLUS ⚡, 3 = NTC, 2 = GND | +| **P5** TEMP_PROBE | Header externo de sonda I²C de temperatura | 1 = 3V3, 3 = SDA, 4 = SCL | +| **P6** FAN | Ventilador de enfriamiento (5 V, tacómetro) | 1 = 5V_FAN ⚡, 2 = FAN_RET, 4 = TACH | +| **P8** PANEL_LED | LED de estado del panel | 1 = LED_A, 2 = LED_K | +| **P10** RESET-EXT | Botón de reset externo | 1 = NRST, 2 = GND | +| **P11** CUTOFF-SW | Interruptor de corte de energía (SYS→MAIN 5 V) | 1 = MAIN5V ⚡, 2 = SYS5V ⚡ | +| **P12** NTC-HOTSPOT | NTC de punto caliente del gabinete | 1 = NTC_TEMP, 2 = GND | +| **P13** MODO-B-UPLINK | Enlace de subida Modo B al 4G | 1 = USART1_RX, 2 = DIN_4G, 3 = GND | ---- +## Pendientes antes del pedido a JLCPCB -## Action items before the JLCPCB order +1. Añadir números de parte LCSC al BOM (`fab-jlcpcb/…-BOM.csv`) — exporta solo valor + huella; el PCBA de JLC empareja por número LCSC. Cuidado con los raros: **LTC4040EUFD, SHT40-AD1B, TMP102, MP1584EN, AO4406A, Bourns SRU8028** — verificar stock en JLC/LCSC. +2. Decidir el ensamble THT — JLC cobra extra por through-hole (K1, SW1, C3/C10/C43, todos los conectores/zócalos). Enfoque común: JLC hace SMD y los conectores + zócalos se sueldan a mano (también evita pagarle a JLC las partes grandes Phoenix/JST). +3. **Resolver la pregunta DNP de P3 / P13 / H3** de arriba. +4. **No** poner en el BOM los tres módulos enchufables (grupo B). -1. **Add LCSC part numbers** to the BOM (`fab-jlcpcb/…-BOM.csv`) — it exports value + - footprint only; JLC PCBA matches on LCSC part #. Watch the odd ones: - **LTC4040EUFD, SHT40-AD1B, TMP102, MP1584EN, AO4406A, Bourns SRU8028** — verify JLC/LCSC stock. -2. **Decide THT assembly** — JLC charges extra for through-hole (K1, SW1, C3/C10/C43, - all connectors/sockets). Common approach: JLC does SMD, you hand-solder the - connectors + sockets (also avoids paying JLC for the big Phoenix/JST parts). -3. **Resolve the P3 / P13 / H3 DNP question** above. -4. Do **not** BOM the three plug-in modules (bucket B). +Ver también: [manual V3](../manuales/manual-tarjeta-V3.md) · [guía de ensamble y QC](guia-ensamble-qc.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-07-05 | Auditoría original (inglés). | +| 1.1 | 2026-09-29 | Traducción al español, nota de alcance V3 / V5.6 y enlaces. Tablas sin cambios. | diff --git a/03-Architecture-Hardware/harness-connector-pinout.md b/03-Architecture-Hardware/harness-connector-pinout.md index e6a0a90..1a3f7b2 100644 --- a/03-Architecture-Hardware/harness-connector-pinout.md +++ b/03-Architecture-Hardware/harness-connector-pinout.md @@ -1,15 +1,21 @@ --- -title: HBOX Watchdog v3 PROD — Harness / Connector Pinout +title: "HBOX Watchdog V3 (PROD) — Pinout de arneses y conectores" project: Project Drogheda date: 2026-07-04 -tags: [project-drogheda, hardware, harness, pinout] +tags: [project-drogheda, hardware, harness, pinout, v3] +author: Helgen Technologies --- -# HBOX Watchdog v3 PROD — Harness / Connector Pinout +# HBOX Watchdog V3 (PROD) — Pinout de arneses y conectores -Auto-generated from the PCB netlist (placement-independent). `GND` = the board ground plane (In1.Cu); its full pad list is omitted. Power nets flagged for wire gauge. +Tarjeta: V3 (EinarBoard 1.0, `kicad/hbox-watchdog-v3-PROD`). -| Conn | Function | Pins | +!!! note "Solo V3 — para V5.6 usa [Pinout V5.6](../hardware/v56-pinout.md)" + Este pinout es de la tarjeta V3 (registro congelado tal como se fabricó). La V4 comparte conectores con la V5 salvo lo indicado en el [manual V4](../manuales/manual-tarjeta-V4.md). + +Generado automáticamente desde la netlist de la PCB (independiente de la colocación). `GND` = plano de tierra de la tarjeta (In1.Cu); se omite su lista completa de pads. Las nets de potencia van marcadas ⚡ para elegir el calibre del cable. + +| Conector | Función | Pines | |---|---|---| | **P1** | GX16-5 | 5 | | **P2** | 5V-IN-SD15B05 | 2 | @@ -25,88 +31,97 @@ Auto-generated from the PCB netlist (placement-independent). `GND` = the board g ## P1 — GX16-5 -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `24V_IN` ⚡power | D10.1, Q10.2 | -| 2 | `GND` | board ground plane | +| 1 | `24V_IN` ⚡ potencia | D10.1, Q10.2 | +| 2 | `GND` | plano de tierra de la tarjeta | | 3 | `IGN_IN` | Rig.1 | -| 4 | — | *(no net)* | -| 5 | — | *(no net)* | +| 4 | — | *(sin net)* | +| 5 | — | *(sin net)* | ## P2 — 5V-IN-SD15B05 -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `VEH5V` ⚡power | C30.1, C31.1, JP1.2, R51.1, R55.1, R7.1, RS1.1, U6.6, U6.16 | -| 2 | `GND` | board ground plane | +| 1 | `VEH5V` ⚡ potencia | C30.1, C31.1, JP1.2, R51.1, R55.1, R7.1, RS1.1, U6.6, U6.16 | +| 2 | `GND` | plano de tierra de la tarjeta | ## P3 — RTK2B-UART1 -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `SW_5V` ⚡power | C3.1, C40.1, MOD1.5, Q1.3, U7.2, U7.7 | -| 2 | `GND` | board ground plane | +| 1 | `SW_5V` ⚡ potencia | C3.1, C40.1, MOD1.5, Q1.3, U7.2, U7.7 | +| 2 | `GND` | plano de tierra de la tarjeta | | 3 | `GNSS_TX` | J1.8, MOD1.16 | | 4 | `GNSS_RX` | J1.9, MOD1.15 | ## P4 — BATT-1S4P+NTC -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `BAT_PLUS` ⚡power | C35.1, L6.2, R5.1, U6.23 | -| 2 | `GND` | board ground plane | +| 1 | `BAT_PLUS` ⚡ potencia | C35.1, L6.2, R5.1, U6.23 | +| 2 | `GND` | plano de tierra de la tarjeta | | 3 | `NTC` | R55.2, U6.17 | ## P5 — TEMP_PROBE -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `3V3` ⚡power | Cu3.1, Cu4.1, D5.1, J1.18, J2.20, MOD1.2, R3.1, R30.1, R31.1, R42.1, R57.1, R58.1, Rdfu.2, Rtp.1, U3.3, U4.5 | -| 2 | `GND` | board ground plane | +| 1 | `3V3` ⚡ potencia | Cu3.1, Cu4.1, D5.1, J1.18, J2.20, MOD1.2, R3.1, R30.1, R31.1, R42.1, R57.1, R58.1, Rdfu.2, Rtp.1, U3.3, U4.5 | +| 2 | `GND` | plano de tierra de la tarjeta | | 3 | `I2C_SDA` | J2.15, R31.2, U3.1, U4.6 | | 4 | `I2C_SCL` | J2.14, R30.2, U3.2, U4.1 | ## P6 — FAN -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `5V_FAN` ⚡power | C23.1, D2.1, JP1.1, L2.2, R20.1 | +| 1 | `5V_FAN` ⚡ potencia | C23.1, D2.1, JP1.1, L2.2, R20.1 | | 2 | `FAN_RET` | D2.2, Q2.3 | -| 3 | `GND` | board ground plane | +| 3 | `GND` | plano de tierra de la tarjeta | | 4 | `FAN_TACH_RAW` | Rts.1 | ## P8 — PANEL_LED -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| | 1 | `LED_A` | D1.2, R3.2 | | 2 | `LED_K` | D1.1, Q4.3 | ## P10 — RESET-EXT -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| | 1 | `NRST` | J1.5, SW1.1 | -| 2 | `GND` | board ground plane | +| 2 | `GND` | plano de tierra de la tarjeta | ## P11 — CUTOFF-SW -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| -| 1 | `MAIN5V` ⚡power | C32.1, C33.1, C34.1, JP2.1, JP3.3, JP4.1, Q7.1, Q7.2, Q7.3, R53.1, U6.1, U6.24 | -| 2 | `SYS5V` ⚡power | D6.1, F1.1, J1.20, J2.18, K1.2, R2.2 | +| 1 | `MAIN5V` ⚡ potencia | C32.1, C33.1, C34.1, JP2.1, JP3.3, JP4.1, Q7.1, Q7.2, Q7.3, R53.1, U6.1, U6.24 | +| 2 | `SYS5V` ⚡ potencia | D6.1, F1.1, J1.20, J2.18, K1.2, R2.2 | ## P12 — NTC-HOTSPOT -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| | 1 | `NTC_TEMP` | C24.1, J1.15, R42.2 | -| 2 | `GND` | board ground plane | +| 2 | `GND` | plano de tierra de la tarjeta | ## P13 — MODO-B-UPLINK -| Pin | Net | Ties to | +| Pin | Net | Conecta con | |---|---|---| | 1 | `USART1_RX` | H3.2, J2.7, K1.1, MOD1.23, Rdfu.1 | | 2 | `DIN_4G` | J7.3, K1.5, K1.6 | -| 3 | `GND` | board ground plane | +| 3 | `GND` | plano de tierra de la tarjeta | + +Ver también: [manual V3](../manuales/manual-tarjeta-V3.md) · [BOM dividido para ensamble (V3)](bom-split.md) · [guía de ensamble y QC](guia-ensamble-qc.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-07-04 | Generado desde la netlist V3 PROD (inglés). | +| 1.1 | 2026-09-29 | Encabezados en español, nota de alcance V3 / V5.6 y enlaces. Tablas sin cambios. | diff --git a/03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf b/03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf index 969ef6d..5244dab 100644 Binary files a/03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf and b/03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf differ diff --git a/03-Architecture-Hardware/manuales/index.md b/03-Architecture-Hardware/manuales/index.md index c23b5b7..3aab4a5 100644 --- a/03-Architecture-Hardware/manuales/index.md +++ b/03-Architecture-Hardware/manuales/index.md @@ -1,26 +1,29 @@ --- -title: Manuales por tarjeta — índice +title: "Manuales por tarjeta" project: Project Drogheda date: 2026-09-29 -version: "1.0" +version: "1.1" tags: [project-drogheda, hardware, einarboard, manual, indice] author: Helgen Technologies --- # Manuales por tarjeta -Una página por generación de tarjeta EinarBoard: cómo reconocerla, conectores, puentes, botones, LEDs, flasheo y limitaciones. **El firmware se elige por la tarjeta, nunca por el número de versión** — el nombre del binario lleva la tarjeta. +Cada manual cubre cómo reconocer la tarjeta, conectores, puentes, botones, LEDs, flasheo y limitaciones. El binario lleva la tarjeta en el nombre; reglas en [Descargas](../descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta). | Tarjeta | Nombre | Estado (sep-2026) | Firmware | Proyecto KiCad | Manual | |---|---|---|---|---|---| -| **V3** | EinarBoard 1.0 (Blackpill en zócalo) | 10 pzas jul-2026; 3 unidades en campo (RTK-003/006/014); registro congelado | `hbox-tarjetaV3_4.0.0.bin` | `hbox-watchdog-v3-PROD` | [manual-tarjeta-V3](manual-tarjeta-V3.md) | -| **V4** | EinarBoard 2.0 (Blackpill + Ethernet + serie) | Fabricada ago-2026; en prueba con 0.6.0 | `hbox-tarjetaV4_0.6.0.bin` | `hbox-watchdog-v4` | [manual-tarjeta-V4](manual-tarjeta-V4.md) | -| **V5.5** | EinarBoard 4.0 (serigrafía) / HBOX v5 — MCU soldado | 15 pzas 22-ago-2026; en ensamble y campo | `hbox-v5-bringup_0.6.0.bin` | `hbox-watchdog-v5` (tag `v5.5-as-fabbed`) | [manual-tarjeta-V5](manual-tarjeta-V5.md) | -| **V5.6** | HBOX v5 + ECO 27/28-sep (módem controlado por MCU, LFP, sensores) | Esquemático listo; PCB y pedido pendientes | `hbox-v5-bringup_0.6.0.bin` (0.6.x para las funciones nuevas) | `hbox-watchdog-v5` | [manual-tarjeta-V5](manual-tarjeta-V5.md) §9 | -| **v6** | GNSS + 4G a bordo | En diseño | — | `hbox-watchdog-v6` | [manual-tarjeta-v6](manual-tarjeta-v6.md) | +| V3 | EinarBoard 1.0 (Blackpill en zócalo) | 10 pzas jul-2026; 3 unidades en campo (RTK-003/006/014); registro congelado | `hbox-tarjetaV3_4.0.0.bin` | `hbox-watchdog-v3-PROD` | [Manual V3](manual-tarjeta-V3.md) | +| V4 | EinarBoard 2.0 (Blackpill + Ethernet + serie) | Fabricada ago-2026; en prueba con 0.6.0 | `hbox-tarjetaV4_0.6.0.bin` | `hbox-watchdog-v4` | [Manual V4](manual-tarjeta-V4.md) | +| V5.5 | EinarBoard 4.0 (serigrafía) / HBOX v5, MCU soldado | 15 pzas 22-ago-2026; en ensamble y campo | `hbox-v5-bringup_0.6.0.bin` | `hbox-watchdog-v5` (tag `v5.5-as-fabbed`) | [Manual V5](manual-tarjeta-V5.md) | +| V5.6 | HBOX v5 + ECO 27/28-sep (módem controlado por MCU, LFP, sensores) | Esquemático cerrado; PCB en layout; pedido pendiente | `hbox-v5-bringup_0.6.0.bin` (0.6.x para las funciones nuevas) | `hbox-watchdog-v5` | [Manual V5](manual-tarjeta-V5.md) §9 | +| v6 | GNSS + 4G a bordo | En diseño; no pedir | — | `hbox-watchdog-v6` | [Manual v6](manual-tarjeta-v6.md) | -Documentos de ingeniería: [Hoja de datos V5.6](../hardware/v56-datasheet.md) · [Pinout V5.6](../hardware/v56-pinout.md) · [Pinout V3](../montaje/pinout-arneses.md) · [Descargas de firmware](../descargas/index.md). +Documentos de ingeniería: [Tarjetas y hardware](../hardware/index.md). -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión | +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión. | +| 1.1 | 2026-09-29 | Edición breve; estado V5.6 alineado con la portada. | diff --git a/03-Architecture-Hardware/manuales/manual-tarjeta-V3.md b/03-Architecture-Hardware/manuales/manual-tarjeta-V3.md index 1b262b1..4a48155 100644 --- a/03-Architecture-Hardware/manuales/manual-tarjeta-V3.md +++ b/03-Architecture-Hardware/manuales/manual-tarjeta-V3.md @@ -1,8 +1,8 @@ --- -title: Manual de tarjeta — EinarBoard V3 (EinarBoard 1.0, hbox-watchdog-v3-PROD) +title: "Manual de tarjeta — EinarBoard V3 (EinarBoard 1.0)" project: Project Drogheda date: 2026-09-29 -version: "1.0" +version: "1.1" tags: [project-drogheda, hardware, einarboard, v3, manual, tecnicos, blackpill] author: Helgen Technologies audience: técnicos de banco y de campo @@ -10,17 +10,17 @@ audience: técnicos de banco y de campo # Manual de tarjeta — EinarBoard V3 (EinarBoard 1.0) -Primera tarjeta de producción del HBOX. **Registro congelado tal como se fabricó** (`kicad/hbox-watchdog-v3-PROD.*`, no editar). Fuente: *Informe técnico interno V3+V4* v1.5 (§4 y §5), `harness-connector-pinout.md` (netlist V3) y `reflasheo-unidades.md`. +Primera tarjeta de producción del HBOX, Blackpill en zócalo. Registro congelado como se fabricó (`kicad/hbox-watchdog-v3-PROD.*`, no editar). Fuente: *Informe técnico interno V3+V4* v1.5 (§4 y §5), `harness-connector-pinout.md` (netlist V3) y `reflasheo-unidades.md`. | Ítem | Valor | |---|---| | Proyecto KiCad | `kicad/hbox-watchdog-v3-PROD.*` (cuadro de título *EINARBoard HBOX* rev. 1.1, 2026-07-07) | -| Tamaño / capas | 135 × 100 mm · 4 capas (In1 = plano GND) · ENIG · máscara azul | -| MCU | **WeAct Blackpill STM32F411CEU6** en zócalos J1/J2 | -| Fabricación | JLCPCB orden `W2026070815023249` (08-jul-2026): **10 PCB + 10 PCBA** (J1/J2 soldados a mano con el módulo como escantillón) | -| Unidades en campo | **RTK-003, RTK-006, RTK-014** | -| Firmware | **`hbox-tarjetaV3_4.0.0.bin`** (`blackpillrtkcode_v4`: lógica v3.0.3 + telemetría en banda). ⚠ publicado sin prueba de banco (sep-2026) | -| Paquete | Li-ion 18650 1S4P ≈ 12 Ah · JP2 1-2 (`F2:Li-ion`, 4.00 V) · carga 2.42 A (R50 825 Ω) | +| Tamaño / capas | 135 × 100 mm · 4 capas (In1 = plano GND) · ENIG · máscara azul | +| MCU | WeAct Blackpill STM32F411CEU6 en zócalos J1/J2 | +| Fabricación | JLCPCB orden `W2026070815023249` (08-jul-2026): 10 PCB + 10 PCBA (J1/J2 soldados a mano con el módulo como escantillón) | +| Unidades en campo | RTK-003, RTK-006, RTK-014 | +| Firmware | `hbox-tarjetaV3_4.0.0.bin` (`blackpillrtkcode_v4`: lógica v3.0.3 + telemetría en banda). Publicado sin prueba de banco (sep-2026) | +| Paquete | Li-ion 18650 1S4P ≈ 12 Ah · JP2 1-2 (`F2:Li-ion`, 4.00 V) · carga 2.42 A (R50 825 Ω) | @@ -28,11 +28,11 @@ Primera tarjeta de producción del HBOX. **Registro congelado tal como se fabric | Rasgo | V3 | |---|---| -| Blackpill en zócalo, **sin RJ45, sin clemas verdes, sin P14** | Sí (la V4 tiene RJ45 y clemas; la V5 no tiene Blackpill) | -| Un solo USB-C en la tarjeta (**J9**, módem); consola por el USB del Blackpill | Sí | -| Medidor DB1–DB4 cableado **directo** a PB12–PB15 (sin expansor) | Sí | +| Blackpill en zócalo, sin RJ45, sin clemas verdes, sin P14 | Sí (la V4 tiene RJ45 y clemas; la V5 no tiene Blackpill) | +| Un solo USB-C en la tarjeta (J9, módem); consola por el USB del Blackpill | Sí | +| Medidor DB1–DB4 cableado directo a PB12–PB15 (sin expansor) | Sí | | Serigrafía | `Advanced Engineering Division · www.helgen.tech`, `STM32F411 BLACKPILL`, `ArduSimple simpleRTK2B Pro`, `4G NTRIP MASTER`, `BP3.0`; etiquetas de J1/J2 `G-TX G-RX U-TX U-RX CHEN CSTA CFLT PCTL BSNS FPWM ELED FTAC` | -| Conectores DNP con huella vacía | **P3** (RTK2B-UART1), **P13** (MODO-B-UPLINK), **H3** (USART1-RSV) | +| Conectores DNP con huella vacía | P3 (RTK2B-UART1), P13 (MODO-B-UPLINK), H3 (USART1-RSV) | ## 2. Conectores @@ -40,69 +40,62 @@ Pinout pin a pin (generado de la netlist V3): [Pinout de arneses y conectores (V | Ref | Qué se conecta | Pines | |---|---|---| -| P1 | Vehículo GX16-5 | 1 = +24 V · 2 = GND · 3 = ignición **cruda** 12–24 V · 4–5 = n/c | -| P2 | SD-15B-05 | 1 = +5 V · 2 = GND — **ajustar a 5.2–5.4 V en P2** (errata E-PFI) | +| P1 | Vehículo GX16-5 | 1 = +24 V · 2 = GND · 3 = ignición cruda 12–24 V · 4–5 = n/c | +| P2 | SD-15B-05 | 1 = +5 V · 2 = GND. Ajustar a 5.2–5.4 V en P2 (errata E-PFI) | | P4 | Paquete Li-ion | 1 = BAT+ · 2 = GND · 3 = NTC | | P5 | Sonda T/RH externa I²C | 1 = 3V3 · 2 = GND · 3 = SDA · 4 = SCL | | P6 | Ventilador | 1 = +5V_FAN · 2 = retorno · 3 = GND · 4 = tach (no usado) | | P8 | LED de panel | 1 = ánodo · 2 = cátodo | | P10 | Reset externo | 1 = NRST · 2 = GND | -| P11 | **Interruptor de corte** | 1 = MAIN5V · 2 = SYS5V (abierto = todo apagado salvo el cargador) | +| P11 | Interruptor de corte | 1 = MAIN5V · 2 = SYS5V (abierto = todo apagado salvo el cargador) | | P12 | NTC de punto caliente | 1 = NTC · 2 = GND | | J9 | USB del módem | Configuración del 4G NTRIP Master | | MOD1 · J7/J8 | simpleRTK2B · 4G NTRIP Master | J8 pad k = pin XBee 21−k | -| J1 / J2 | Blackpill | **Ver errata E-J1 (§3)** | +| J1 / J2 | Blackpill | Errata E-J1 (§3) | -## 3. Erratas obligatorias de la V3 +## 3. Erratas de la V3 -!!! warning "E-J1 — el zócalo J1 está espejado" - En la tarjeta física, con el Blackpill sentado de la única forma posible, **J2 queda correcto y J1 invertido extremo por extremo** (J1.k → pin 21−k del módulo). J1.20 (5 V) cae en VBAT del módulo: **nunca energizar una V3 con el Blackpill sentado directamente**. Mitigación de banco: módulo fuera del zócalo + **arnés "adaptador inversor"** Dupont en J1 (5→NRST · 6→A0 · 7→A1 · 8→A2 · 9→A3 · 10→A4 · 11→A5 · 12→A6 · 14→B0 · 15→B1 · 18→3V3 · 19→GND · 20→5V; 1–4/13/16 sin conectar; 17 se omite); J2 directo pad n → pin n. No hay parche por software. +!!! warning "Erratas E-J1 y E-CLR" + E-J1, zócalo J1 espejado. Con el Blackpill sentado de la única forma posible, J2 queda correcto y J1 invertido extremo por extremo (J1.k → pin 21−k del módulo). J1.20 (5 V) cae en VBAT del módulo: nunca energices una V3 con el Blackpill sentado directamente. En banco: módulo fuera del zócalo + arnés "adaptador inversor" Dupont en J1 (5→NRST · 6→A0 · 7→A1 · 8→A2 · 9→A3 · 10→A4 · 11→A5 · 12→A6 · 14→B0 · 15→B1 · 18→3V3 · 19→GND · 20→5V; 1–4/13/16 sin conectar; 17 se omite); J2 directo pad n → pin n. No hay parche por software. -!!! warning "E-CLR — prueba de recepción obligatoria (corto interno de 24 V)" - Sin energía, medir continuidad **P2.1 ↔ P1.1** y **P11.1 ↔ P1.1**: en una tarjeta sana ambas están **abiertas**. Un bip = puente interno 24 V → 5 V = tarjeta chatarra (no retrabajable). + E-CLR, prueba de recepción obligatoria (corto interno de 24 V). Sin energía, continuidad P2.1 ↔ P1.1 y P11.1 ↔ P1.1: en una tarjeta sana ambas abiertas. Un bip = puente interno 24 V → 5 V = tarjeta chatarra (no retrabajable). -!!! note "E-PFI — hipo del módem en banco sin batería" - Con menos de 5.2 V en P2 y sin paquete, las ráfagas del módem cruzan el umbral PFI (4.60 V en V3) y el LTC4040 desconecta la entrada en bucle. Regla: fuente a **5.2–5.4 V medidos en P2** (nunca > 5.4) **o** paquete conectado. +E-PFI — hipo del módem en banco sin batería: con menos de 5.2 V en P2 y sin paquete, las ráfagas del módem cruzan el PFI (4.60 V en V3) y el LTC4040 desconecta la entrada en bucle. Fuente a 5.2–5.4 V medidos en P2 (nunca > 5.4) o paquete conectado ([reglas de banco](../procedimientos/diagnostico-banco.md#reglas-de-banco)). ## 4. Puentes, botones y LEDs | Ref | Default / función | |---|---| -| JP2 / JP3 / JP4 | F2:Li-ion (1-2) / F1:0 / F0:1 → 4.00 V. No tocar | +| JP2 / JP3 / JP4 | F2:Li-ion (1-2) / F1:0 / F0:1 → 4.00 V. No tocar | | JP1 | Abierto (5V_FAN ↔ VEH5V). Nunca cerrar | | SW1 | Reset del MCU (= P10 = NRST del Blackpill) | | SW4G1 | Reset del módem | | KEY (Blackpill) | BOOT0 para DFU | -| DB1–DB4 | Medidor de batería, directo en PB12–PB15 (330 Ω) | +| DB1–DB4 | Medidor de batería, directo en PB12–PB15 (330 Ω) | | LED de panel (P8) | PB0 vía Q4 | | D4G1 | Actividad del módem (tenue) | | TP1 / TP2 | CLPROG / PFO del LTC4040 | -## 5. Cómo flashear +## 5. Flasheo -Procedimiento con verificación: [Reflasheo de unidades](../procedimientos/reflasheo-unidades.md) §4–§5. - -1. Solo el USB-C del **Blackpill** a la laptop. -2. Mantener **KEY (BOOT0)** → pulsar y soltar **NRST** → soltar KEY. Aparece `0483:DF11`. -3. `dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV3_4.0.0.bin` (o STM32CubeProgrammer, `0x08000000`). -4. Verificar en consola que arranca la versión 4.0.0 y que llega telemetría al monitor. - -!!! warning - Nunca `hbox-tarjetaV4_*.bin` ni `hbox-v5-bringup_*.bin` en una V3 (en V3 PB12–PB15 son LEDs; en V4/V5 son el bus SPI del W5500 — el mapa de pines es distinto). +Solo el USB-C del Blackpill; KEY (BOOT0) + NRST → `0483:DF11`; `hbox-tarjetaV3_4.0.0.bin` en `0x08000000`. Verifica en consola la versión 4.0.0 y que llega telemetría al monitor. Procedimiento: [reflasheo](../procedimientos/reflasheo-unidades.md). Solo binarios `hbox-tarjetaV3_…` ([Descargas](../descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta)). ## 6. Limitaciones conocidas - Sin Ethernet, sin RS-485/RS-232, sin LED RGB, sin expansor I²C. -- Módem oscuro en batería (igual que V4/V5.5); sin puente 0.5.6 posible (no hay PCF8574): solo SW4G1 o 24 V. -- PFI 4.60 V (más alto que V4/V5: 4.40–4.44 V) → más sensible a caídas de la fuente. +- Módem oscuro en batería (igual que V4/V5.5); sin puente de reset posible (no hay PCF8574): solo SW4G1 o 24 V. +- PFI 4.60 V (más alto que V4/V5: 4.40–4.44 V) → más sensible a caídas de la fuente. - Firmware 4.0.0 (blackpillrtkcode_v4) con consola y comandos propios, distintos de `hbox_v5_bringup`; la ventilación sigue la política v3.0.3 ([prueba de banco](../procedimientos/fan-policy-bench-test.md)). ## 7. Referencias -[Pinout V3](../montaje/pinout-arneses.md) · [Bring-up EinarBoard 1.0](../procedimientos/einarboard-1.0-bringup.md) · [Reflasheo](../procedimientos/reflasheo-unidades.md) · Informe técnico V3+V4 (PDF, repo `03-Architecture-Hardware/Informe-Tecnico-V3-V4/`). +[Diagnóstico en campo](../diagnostico/procedimiento-diagnostico-campo.md) · [Diagnóstico en banco](../procedimientos/diagnostico-banco.md) · [Pinout V3](../montaje/pinout-arneses.md) · [Bring-up EinarBoard 1.0](../procedimientos/einarboard-1.0-bringup.md) · [Reflasheo](../procedimientos/reflasheo-unidades.md) · Informe técnico V3+V4 (PDF, repo `03-Architecture-Hardware/Informe-Tecnico-V3-V4/`). ## Historial de revisiones -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión. | +| 1.1 | 2026-09-29 | Edición breve; flasheo remite al reflasheo. | + +Versiones anteriores en git. diff --git a/03-Architecture-Hardware/manuales/manual-tarjeta-V4.md b/03-Architecture-Hardware/manuales/manual-tarjeta-V4.md index e6fe8bf..a18c06e 100644 --- a/03-Architecture-Hardware/manuales/manual-tarjeta-V4.md +++ b/03-Architecture-Hardware/manuales/manual-tarjeta-V4.md @@ -1,8 +1,8 @@ --- -title: Manual de tarjeta — EinarBoard V4 (EinarBoard 2.0, Blackpill en zócalo) +title: "Manual de tarjeta — EinarBoard V4 (EinarBoard 2.0)" project: Project Drogheda date: 2026-09-29 -version: "1.0" +version: "1.1" tags: [project-drogheda, hardware, einarboard, v4, manual, tecnicos, blackpill] author: Helgen Technologies audience: técnicos de banco y de campo @@ -10,16 +10,16 @@ audience: técnicos de banco y de campo # Manual de tarjeta — EinarBoard V4 (EinarBoard 2.0) -La V4 es **el diseño de la V5 con el MCU en un módulo Blackpill enchufado** en vez de soldado: mismas nets, mismos pines, mismas direcciones I²C. Fuente: `board_v4.h` (verificado pad a pad contra `hbox-watchdog-v4.kicad_pcb` el 21-sep-2026) y el *Informe técnico interno V3+V4* (`03-Architecture-Hardware/Informe-Tecnico-V3-V4/…_v1.5.pdf`, §6). +Blackpill en zócalo + Ethernet y puertos serie. Es el diseño de la V5 con el MCU en un módulo Blackpill enchufado: mismas redes, pines y direcciones I²C. Fuente: `board_v4.h` (verificado pad a pad contra `hbox-watchdog-v4.kicad_pcb` el 21-sep-2026) y el *Informe técnico interno V3+V4* (`03-Architecture-Hardware/Informe-Tecnico-V3-V4/…_v1.5.pdf`, §6). | Ítem | Valor | |---|---| | Proyecto KiCad | `kicad/hbox-watchdog-v4.*` (cuadro de título rev. 2.0) | -| Serigrafía | **`EINARBoard 2.0` · `HBOX v4 - 2026-07` · `Advanced Engineering` · `www.helgen.tech`**; etiquetas `STM32F411 BLACKPILL`, `ArduSimple simpleRTK2B Pro`, `4G NTRIP MASTER`, `MASTER RESET`, `4G NTRIP RESET` | -| Tamaño | 155 × 100 mm (20 mm más ancha que la V3, lado derecho) | -| MCU | **WeAct Blackpill STM32F411CEU6** en zócalos J1/J2 (J1 con pads renumerados: corrige la errata E-J1 de la V3) | +| Serigrafía | `EINARBoard 2.0` · `HBOX v4 - 2026-07` · `Advanced Engineering` · `www.helgen.tech`; etiquetas `STM32F411 BLACKPILL`, `ArduSimple simpleRTK2B Pro`, `4G NTRIP MASTER`, `MASTER RESET`, `4G NTRIP RESET` | +| Tamaño | 155 × 100 mm (20 mm más ancha que la V3, lado derecho) | +| MCU | WeAct Blackpill STM32F411CEU6 en zócalos J1/J2 (J1 con pads renumerados: corrige la errata E-J1 de la V3) | | Fabricación | JLCPCB, orden preparada 02/03-ago-2026 (lote Y5) | -| Firmware | **`hbox-tarjetaV4_0.6.0.bin`** (mismo sketch `hbox_v5_bringup` compilado con `-DHBOX_BOARD_V4` para Blackpill). SHA-256 `1458470bbdd95b49…` | +| Firmware | `hbox-tarjetaV4_0.6.0.bin` (mismo sketch `hbox_v5_bringup` compilado con `-DHBOX_BOARD_V4` para Blackpill). SHA-256 `1458470bbdd95b49…` | | Paquete | Li-ion 18650 1S4P · JP2 en 1-2 (`F2:Li-ion`) · R55 10 k | @@ -28,76 +28,62 @@ La V4 es **el diseño de la V5 con el MCU en un módulo Blackpill enchufado** en | Rasgo | V4 | Comparar con | |---|---|---| -| Módulo Blackpill enchufado + **RJ45** + clemas verdes P15/P16 | Sí | V3: Blackpill pero **sin** RJ45 ni clemas. V5: RJ45 y clemas pero **sin** Blackpill | -| USB-C en la tarjeta | Solo **J9** (módem). La consola/DFU es el **USB-C del propio Blackpill** | V5 tiene J11 aparte | -| Botones | **SW1** RESET (`MASTER RESET`), **SW4G1** (`4G NTRIP RESET`) + los dos del Blackpill (NRST y KEY = BOOT0) | — | +| Blackpill enchufado + RJ45 + clemas verdes P15/P16 | Sí | V3: Blackpill sin RJ45 ni clemas. V5: RJ45 y clemas sin Blackpill | +| USB-C en la tarjeta | Solo J9 (módem); consola y DFU por el USB-C del Blackpill | V5 tiene J11 | +| Botones | SW1 RESET (`MASTER RESET`), SW4G1 (`4G NTRIP RESET`) + los dos del Blackpill (NRST y KEY = BOOT0) | — | | Silk de J1/J2 | `E-CS / E-SCK / E-MISO / E-MOSI`, `CHEN`, `U-TX / U-RX`, `CSTA / CFLT / BYP / SCL / SDA`… | — | ## 2. Conectores -Mismos conectores que la V5.5 (ver [pinout V5.6](../hardware/v56-pinout.md) y la tabla de diferencias al final de ese documento) **más P5** (sonda T/RH externa, JST 4: 3V3/GND/SDA/SCL) y **P6 de 4 pines** (5V_FAN / FAN_RET / GND / FAN_TACH). Sin J11 (la consola va por el Blackpill). `P3`, `P13` y `H3` de la V3 ya no existen. +Como la V5.5 ([pinout V5.6](../hardware/v56-pinout.md), tabla de diferencias al final) más P5 (sonda T/RH externa, JST 4) y P6 de 4 pines. Sin J11. `P3`, `P13` y `H3` de la V3 ya no existen. | Ref | Qué se conecta | Pines | |---|---|---| -| P1 | Vehículo (GX16-5) | 1 = +24 V · 2 = GND · 3 = ignición 12–24 V · 4 = GND · 5 = n/c | -| P2 | SD-15B-05 | 1 = +5 V · 2 = GND (ajustar a 5.2–5.4 V en P2) | +| P1 | Vehículo (GX16-5) | 1 = +24 V · 2 = GND · 3 = ignición 12–24 V · 4 = GND · 5 = n/c | +| P2 | SD-15B-05 | 1 = +5 V · 2 = GND (ajustar a 5.2–5.4 V en P2) | | P4 | Paquete Li-ion | 1 = BAT+ · 2 = GND · 3 = NTC | | P5 | Sonda externa I²C (opcional) | 1 = 3V3 · 2 = GND · 3 = SDA · 4 = SCL | | P6 | Ventilador | 1 = +5V_FAN · 2 = retorno · 3 = GND · 4 = tacómetro (no usado) | -| P8 / P10 / P11 / P12 | LED de panel / reset externo / **interruptor de corte** / NTC de punto caliente | Como en V5 | +| P8 / P10 / P11 / P12 | LED de panel / reset externo / interruptor de corte / NTC de punto caliente | Como en V5 | | P14 | LED RGB externo | 1 = 3V3 · 2 = R · 3 = G · 4 = B | | P15 / P16 / H4 | RS-485 / RS-232 / TTL del canal B | Como en V5 (no usar P16 y H4 a la vez) | | J9 | USB del módem | Solo configuración del 4G NTRIP Master | -| J10 | Ethernet (sin PoE) | Solo con 5 V presente | +| J10 | Ethernet (sin PoE) | Solo con 5 V presente | | MOD1 · J7/J8 | simpleRTK2B · 4G NTRIP Master | Como en V5 | -| **J1 / J2** | Blackpill | J1 = fila VBAT…5V; J2 = fila PB12…3V3. **Sentar el módulo con el USB hacia J2** | +| J1 / J2 | Blackpill | J1 = fila VBAT…5V; J2 = fila PB12…3V3. Módulo con el USB hacia J2 | ## 3. Puentes y botones | Ref | Default | Función | |---|---|---| -| JP2 | 1-2 (`F2:Li-ion`) | Química: Li-ion 4.00 V. **No cambiar** salvo que se cambie el paquete a LFP (entonces 2-3 + R55 5.6 k) | +| JP2 | 1-2 (`F2:Li-ion`) | Química: Li-ion 4.00 V. Solo cambia con paquete LFP (2-3 + R55 5.6 k) | | JP3 / JP4 | 1-2 | Straps F1/F0 — no tocar | | JP1 | abierto | Nunca cerrar | -| JP5 | abierto | Terminación 120 Ω RS-485 | +| JP5 | abierto | Terminación 120 Ω RS-485 ([regla](../procedimientos/v5-prueba-ethernet-serie.md#conexion-en-la-instalacion)) | | SW1 | — | Reset del MCU (= NRST del Blackpill = P10) | -| SW4G1 | — | Reset del módem. Con el **puente 0.5.6** el firmware lo pulsa solo (tecla `M`, y 3 s después de cada STACK ON) | +| SW4G1 | — | Reset del módem. Con el puente U13-P7 el firmware lo pulsa solo (tecla `M` y 3 s después de cada STACK ON) | | KEY (Blackpill) | — | BOOT0: para entrar en DFU | -!!! note "Puente 0.5.6 (obligatorio para que el MCU pueda resetear el módem)" - Diodo Schottky (BAT54 / 1N5819; sirve 1N4148) del **pin 12 de U13 (P7, SOIC-16 ancho)** al **pad 1 de SW4G1** (`MODEM_RST`), **cátodo en U13**. Verificar con `M` en consola: el pad 1 de SW4G1 baja a < 0.4 V durante 0.5 s y el módem reinicia. Procedimiento y foto: [V4 — preparación y prueba](../procedimientos/v4-prueba-fw-0.5.6.md). +Puente de reset del módem (necesario para que el MCU resetee el módem): diodo Schottky de señal del pin 12 de U13 (P7, SOIC-16 ancho) al pad 1 de SW4G1 (`MODEM_RST`), cátodo en U13. Diodo, soldadura y prueba con `M`: [V4 — preparación 1](../procedimientos/v4-prueba-fw-0.5.6.md#preparacion-1-puente-de-reset-del-modem). ## 4. LEDs | LED | Significado | |---|---| -| DB1–DB4 (medidor, vía PCF8574) | Batería 3.60 / 3.75 / 3.90 / 3.97 V | +| DB1–DB4 (medidor, vía PCF8574) | Batería 3.60 / 3.75 / 3.90 / 3.97 V | | RGB (P14, vía PCF8574) | Verde RTK fix · Azul etapa ON sin RTK · Magenta sin NMEA · Amarillo en batería · Rojo etapa OFF | | LED azul del Blackpill (PC13) | Lo maneja el firmware (parpadeo rápido = esperando consola) | | LED de panel (P8) | Respaldo cableado en duro (PB0) | | D4G1 | Actividad del módem (tenue) | | J10 LINK / ACT | Ethernet | -## 5. Cómo flashear +## 5. Flasheo -1. Conectar **solo** el USB-C del **Blackpill** a la laptop. **Nada en P2** (con el W5500 alimentado, `ETH_INT` = PB2 = BOOT1 puede impedir entrar en DFU). -2. Mantener **KEY (BOOT0)** del Blackpill → pulsar y soltar **NRST** (o SW1) → soltar KEY. Aparece `0483:DF11`. -3. Flashear: - -```bash -dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV4_0.6.0.bin -``` - - (o STM32CubeProgrammer, USB, `0x08000000`). - -4. Consola: la primera línea debe decir **`board=EinarBoard v4 (HBOX v4)`**. Si dice `v5`, es el binario equivocado. - -!!! warning - No flashear `blackpillrtkcode` (V3) ni `hbox-v5-bringup_x.y.z.bin` (V5) en una V4. Solo `hbox-tarjetaV4_x.y.z.bin`. Binarios: [Descargas](../descargas/index.md). +Solo el USB-C del Blackpill, nada en P2 (con el W5500 alimentado, `ETH_INT` = PB2 = BOOT1 puede impedir el DFU). KEY (BOOT0) + NRST (o SW1) → `0483:DF11`. Solo `hbox-tarjetaV4_…` ([Descargas](../descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta)). La consola debe decir `board=EinarBoard v4 (HBOX v4)`; si dice `v5`, es el binario equivocado. Procedimiento: [V4 — flasheo](../procedimientos/v4-prueba-fw-0.5.6.md#flasheo-de-060). ## 6. Consola y autotest -Idénticos a la V5 (mismo firmware): teclas `h l r s t i g v P Y n A B M R C`, línea `STAT` cada 5 s, `$PHLG` cada 10 s, autotest con `CLOCK_HSE`, `LSE`, I²C (0x20 / 0x44 / 0x48 / 0x4D), `SC16IS752`, `GAUGE_WALK`. Ver el [manual V5](manual-tarjeta-V5.md) §7–§8. +Iguales a la V5 (mismo firmware): teclas `h l r s t i g v P Y n A B M R C`, línea `STAT` cada 5 s, `$PHLG` cada 10 s, autotest con `CLOCK_HSE`, `LSE`, I²C (0x20 / 0x44 / 0x48 / 0x4D), `SC16IS752`, `GAUGE_WALK`. Ver el [manual V5](manual-tarjeta-V5.md) §7–§8. ## 7. Diferencias eléctricas frente a la V5.5 @@ -108,22 +94,25 @@ Idénticos a la V5 (mismo firmware): teclas `h l r s t i g v P Y n A B M R C`, l | Consola/DFU | USB-C del Blackpill | J11 | | Sonda externa | P5 presente | P5 presente (se elimina en V5.6) | | Ventilador | P6 de 4 pines (tach sin uso) | P6 de 2 pines | -| Ignición | Divisor 22 k / 3.3 k (nodo ≈ 3.1 V a 24 V) | Igual | -| PFI / amortiguación | 4.40 V (R51 270 k) + C78 220 µF | Igual | +| Ignición | Divisor 22 k / 3.3 k (nodo ≈ 3.1 V a 24 V) | Igual | +| PFI / amortiguación | 4.40 V (R51 270 k) + C78 220 µF | Igual | | Lo demás | Mismo cargador, mismo módem (MP1584 desde `SW_5V`), mismo Ethernet/serie/expansor | — | ## 8. Limitaciones conocidas (iguales a V5.5) -- **Módem oscuro en batería**: no arranca sobre el boost; solo SW4G1 (o el puente 0.5.6 + `M`) o los 24 V lo reviven. Firmware ≥ 0.5.9: sin ciclos de etapa en batería; reset del MCU al volver el 5 V. -- **Cargador**: apagado en firmware < 0.6.0; el gobernador de 0.6.0 lo habilita con 24 V y riel estable. +- Módem oscuro en batería: no arranca sobre el boost; solo SW4G1 (o el puente 0.5.6 + `M`) o los 24 V lo reviven. Firmware ≥ 0.5.9: sin ciclos de etapa en batería; reset del MCU al volver el 5 V. +- Cargador: apagado en firmware < 0.6.0; el gobernador de 0.6.0 lo habilita con 24 V y riel estable. - Ethernet y serie sin prueba en hardware real. ## 9. Procedimientos relacionados -[V4 — preparación y prueba con 0.5.6/0.6.0](../procedimientos/v4-prueba-fw-0.5.6.md) · [Acta V4](../formularios/v4.html) · [Reflasheo de unidades](../procedimientos/reflasheo-unidades.md) · [Prueba módem en batería](../procedimientos/prueba-bateria-modem.md) · [Manual V5](manual-tarjeta-V5.md). +[V4 — preparación y prueba con firmware 0.6.0](../procedimientos/v4-prueba-fw-0.5.6.md) · [Política de ventilador (banco)](../procedimientos/fan-policy-bench-test.md) · [Acta V4](../formularios/v4.html) · [Reflasheo de unidades](../procedimientos/reflasheo-unidades.md) · [Prueba módem en batería](../procedimientos/prueba-bateria-modem.md) · [Manual V5](manual-tarjeta-V5.md). ## Historial de revisiones -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión. | +| 1.1 | 2026-09-29 | Edición breve; puente y flasheo remiten al procedimiento V4 (el manual listaba 1N5819, que el procedimiento prohíbe). | + +Versiones anteriores en git. diff --git a/03-Architecture-Hardware/manuales/manual-tarjeta-V5.md b/03-Architecture-Hardware/manuales/manual-tarjeta-V5.md index ba88c81..8c30d45 100644 --- a/03-Architecture-Hardware/manuales/manual-tarjeta-V5.md +++ b/03-Architecture-Hardware/manuales/manual-tarjeta-V5.md @@ -1,8 +1,8 @@ --- -title: Manual de tarjeta — EinarBoard V5 (V5.5 y V5.6) +title: "Manual de tarjeta — EinarBoard V5 (V5.5 y V5.6)" project: Project Drogheda date: 2026-09-29 -version: "1.0" +version: "1.1" tags: [project-drogheda, hardware, einarboard, v5, v5.5, v5.6, manual, tecnicos] author: Helgen Technologies audience: técnicos de banco y de campo @@ -10,14 +10,14 @@ audience: técnicos de banco y de campo # Manual de tarjeta — EinarBoard V5 (V5.5 y V5.6) -Una página por tarjeta. Aquí está lo que un técnico necesita para **reconocerla, conectarla, flashearla y leer su consola**. Los números de ingeniería (voltajes, valores de componentes) están en la [hoja de datos V5.6](../hardware/v56-datasheet.md); el pinout pin a pin en el [pinout V5.6](../hardware/v56-pinout.md). +Valores de ingeniería: [hoja de datos V5.6](../hardware/v56-datasheet.md). Pin a pin: [pinout V5.6](../hardware/v56-pinout.md). | | V5.5 | V5.6 | |---|---|---| -| Estado | **15 tarjetas fabricadas** (JLCPCB, 22-ago-2026), en ensamble y en campo | Esquemático listo (ECO 27/28-sep); **PCB y pedido pendientes** | -| Proyecto KiCad | `kicad/hbox-watchdog-v5.*` (etiqueta git `v5.5-as-fabbed`) | `kicad/hbox-watchdog-v5.*` (mismo proyecto, ECO aplicada) | +| Estado | 15 tarjetas fabricadas (JLCPCB, 22-ago-2026), en ensamble y en campo | Esquemático listo (ECO 27/28-sep); PCB y pedido pendientes | +| Proyecto KiCad | `kicad/hbox-watchdog-v5.*` (etiqueta git `v5.5-as-fabbed`) | `kicad/hbox-watchdog-v5.*` (ECO aplicada) | | Firmware | `hbox-v5-bringup_0.6.0.bin` | `hbox-v5-bringup_0.6.0.bin` (0.6.x añadirá el control del módem) | -| Paquete de batería | Li-ion 18650 1S4P · JP2 en 1-2 · R55 10 k | **LFP-HT 26650** · **JP2 en 2-3** · R55 5.6 k · NTC B3380 | +| Paquete de batería | Li-ion 18650 1S4P · JP2 en 1-2 · R55 10 k | LFP-HT 26650 · JP2 en 2-3 · R55 5.6 k · NTC B3380 | ## 1. Identificación @@ -26,180 +26,149 @@ Una página por tarjeta. Aquí está lo que un técnico necesita para **reconoce | Rasgo | Cómo reconocerla | |---|---| -| Serigrafía | **`EINARBoard 4.0` · `HBOX v5 - 2026-08` · `www.helgen.tech`** (los nombres de serigrafía y de proyecto no coinciden: la serigrafía dice 4.0, la tarjeta es V5) | -| MCU | **STM32F411 soldado** (LQFP-64, U16) — **no hay Blackpill** en zócalo. Si ves un módulo Blackpill, es V3 o V4 | -| Dos USB-C en la tarjeta | **J11** DFU/consola (junto a SW1/SW2 y al RJ45) y **J9** USB del módem (junto al zócalo XBee) | -| RJ45 | **J10** con LEDs integrados (sin PoE) | -| Clemas verdes | **P15** RS-485 y **P16** RS-232 (Phoenix 3.5 mm) | -| Cristales | Y3 25 MHz (MCU), Y1 25 MHz (W5500), **Y2 3.6864 MHz** (SC16IS752), Y4 32.768 kHz | -| V5.5 vs V5.6 (a simple vista) | V5.6: U7 en encapsulado SO-8 con *exposed pad* (AP64350) y tres 220 µF polímero (C3, C43, C78); **sin P5** (JST 4 pines TEMP_PROBE); JP6 junto a P11; U18 (SOT-563) junto al zócalo XBee. Ver §9 | +| Serigrafía | `EINARBoard 4.0` · `HBOX v5 - 2026-08` · `www.helgen.tech` (la serigrafía dice 4.0; la tarjeta es V5) | +| MCU | STM32F411 soldado (LQFP-64, U16), sin Blackpill. Con Blackpill es V3 o V4 | +| Dos USB-C | J11 DFU/consola (junto a SW1/SW2 y al RJ45) y J9 USB del módem (junto al zócalo XBee) | +| RJ45 | J10 con LEDs integrados, sin PoE | +| Clemas verdes | P15 RS-485 y P16 RS-232 (Phoenix 3.5 mm) | +| Cristales | Y3 25 MHz (MCU), Y1 25 MHz (W5500), Y2 3.6864 MHz (SC16IS752), Y4 32.768 kHz | +| V5.5 vs V5.6 | V5.6: U7 en SO-8 con exposed pad (AP64350), tres 220 µF polímero (C3, C43, C78), sin P5, JP6 junto a P11, U18 (SOT-563) junto al zócalo XBee (§9) | -## 2. Conectores (resumen) +## 2. Conectores -Pinout completo: [Pinout de arneses y conectores V5.6](../hardware/v56-pinout.md) (V5.5 idéntico salvo lo listado en §9). +V5.5 igual al [pinout V5.6](../hardware/v56-pinout.md) salvo lo listado en §9. -| Ref | Qué se conecta | Pines | Cuidado | +| Ref | Qué va | Pines | Cuidado | |---|---|---|---| -| **P1** | Arnés del vehículo (GX16-5 del gabinete) | 1 = +24 V · 2 = GND · 3 = ignición (12–24 V cruda) · 4 = GND · 5 = n/c | Solo alimenta el ventilador y la lectura de ignición | -| **P2** | Mean Well SD-15B-05 (5 V) | 1 = +5 V · 2 = GND | Ajustar la fuente a **5.2–5.4 V medidos en P2**; cable corto, ≥ 3 A | -| **P4** | Paquete de batería | 1 = BAT+ · 2 = GND · 3 = NTC | **La química debe coincidir con JP2** (§3). Nunca conectar el paquete en las pruebas de tarjeta desnuda | -| **P6** | Ventilador 5 V, 2 hilos | 1 = +5V_FAN · 2 = retorno conmutado | — | -| **P8** | LED de panel | 1 = ánodo · 2 = cátodo | — | -| **P10** | Botón de reset externo | 1 = NRST · 2 = GND | Solo reinicia el MCU | -| **P11** | Interruptor de corte | 1 = MAIN5V · 2 = SYS5V | **Abierto = tarjeta apagada**. En banco, puentear con un jumper | -| **P12** | NTC de punto caliente (opcional) | 1 = NTC · 2 = GND | Sin sonda, la consola muestra `tntc=n/c` | -| **P14** | LED RGB externo (ánodo común) | 1 = 3V3 · 2 = R · 3 = G · 4 = B | — | -| **P15** | RS-485 | 1 = A · 2 = B · 3 = GND | JP5 = terminación 120 Ω | -| **P16** | RS-232 | 1 = TX · 2 = RX · 3 = GND | No usar a la vez que H4 (TTL) | -| **J11** | USB-C **DFU + consola** | — | Alimenta solo el 3.3 V (MCU + sensores). No enciende módem ni F9P | -| **J9** | USB-C del **módem** | — | Solo para configurar el 4G NTRIP Master desde la laptop | -| **J10** | Ethernet RJ45 | — | Sin PoE. Solo con 5 V presente (en USB solo, el W5500 está en reset) | -| **MOD1** | simpleRTK2B (zócalo UNO) | — | Interruptores del módulo: ver [Módulos RTK y 4G](../procedimientos/v5-modulos-integracion.md) | -| **J7/J8** | 4G NTRIP Master (zócalo XBee) | — | Orientación: pin 1 (VCC) en J7.1 | -| **P5** | Sonda T/RH externa | 1 = 3V3 · 2 = GND · 3 = SDA · 4 = SCL | **Solo V5.5**; no existe en V5.6 | +| P1 | Arnés del vehículo (GX16-5) | 1 = +24 V · 2 = GND · 3 = ignición (12–24 V cruda) · 4 = GND · 5 = n/c | Solo alimenta el ventilador y la lectura de ignición | +| P2 | Mean Well SD-15B-05 | 1 = +5 V · 2 = GND | Ajustar a 5.2–5.4 V medidos en P2; cable corto, ≥ 3 A | +| P4 | Paquete de batería | 1 = BAT+ · 2 = GND · 3 = NTC | Química = JP2 ([ensamble §2](../procedimientos/v5-ensamble.md#2-tarjeta-sin-energia)). Nunca en pruebas de tarjeta desnuda | +| P6 | Ventilador 5 V, 2 hilos | 1 = +5V_FAN · 2 = retorno conmutado | — | +| P8 | LED de panel | 1 = ánodo · 2 = cátodo | — | +| P10 | Botón de reset externo | 1 = NRST · 2 = GND | Solo reinicia el MCU | +| P11 | Interruptor de corte | 1 = MAIN5V · 2 = SYS5V | Abierto = tarjeta apagada. En banco, jumper | +| P12 | NTC de punto caliente (opcional) | 1 = NTC · 2 = GND | Sin sonda, `tntc=n/c` | +| P14 | LED RGB externo (ánodo común) | 1 = 3V3 · 2 = R · 3 = G · 4 = B | — | +| P15 | RS-485 | 1 = A · 2 = B · 3 = GND | JP5 = terminación 120 Ω | +| P16 | RS-232 | 1 = TX · 2 = RX · 3 = GND | No usar a la vez que H4 (TTL) | +| J11 | USB-C DFU + consola | — | Alimenta solo el 3.3 V (MCU + sensores); no enciende módem ni F9P | +| J9 | USB-C del módem | — | Solo para configurar el módem desde la laptop | +| J10 | Ethernet RJ45 | — | Sin PoE; solo con 5 V (con USB solo el W5500 queda en reset) | +| MOD1 | simpleRTK2B (zócalo UNO) | — | Interruptores del módulo: [módulos RTK y 4G](../procedimientos/v5-modulos-integracion.md) | +| J7/J8 | Módem (zócalo XBee) | — | Pin 1 (VCC) en J7.1 | +| P5 | Sonda T/RH externa | 1 = 3V3 · 2 = GND · 3 = SDA · 4 = SCL | Solo V5.5 | ## 3. Puentes de soldadura | Ref | V5.5 | V5.6 | Función | |---|---|---|---| -| **JP2** | 1-2 (`F2:Li-ion`) | **2-3 (`F2:LFP`)** | **Química del paquete.** Li-ion → 4.00 V; LFP → 3.50 V. Un paquete Li-ion con JP2 en 2-3 nunca carga del todo; un paquete LFP con JP2 en 1-2 se **sobrecarga**. Comprobar con lupa antes de conectar P4 | -| JP3 / JP4 | 1-2 / 1-2 | igual | Straps F1/F0 del LTC4040 — no tocar | -| JP1 | abierto | abierto | Une el 5 V del ventilador con el de la SD-15B — **nunca cerrar** | -| **JP5** | abierto | abierto | Terminación 120 Ω del RS-485 (cerrar solo si la tarjeta es el último nodo del bus) | -| **JP6** | — | abierto | Puentea P11 (corte). Cerrar solo en unidades **sin** interruptor de corte | +| JP2 | 1-2 (`F2:Li-ion`) | 2-3 (`F2:LFP`) | Química del paquete: Li-ion flota a 4.00 V, LFP a 3.50 V. Regla: [ensamble §2](../procedimientos/v5-ensamble.md#2-tarjeta-sin-energia) | +| JP3 / JP4 | 1-2 / 1-2 | Igual | Straps F1/F0 del LTC4040; no tocar | +| JP1 | Abierto | Abierto | Une el 5 V del ventilador con el de la SD-15B; nunca cerrar | +| JP5 | Abierto | Abierto | Terminación 120 Ω del RS-485 ([regla](../procedimientos/v5-prueba-ethernet-serie.md#conexion-en-la-instalacion)) | +| JP6 | — | Abierto | Puentea P11; cerrar solo en unidades sin interruptor de corte | ## 4. Botones -| Ref | Serigrafía | Qué hace | +| Ref | Serigrafía | Función | |---|---|---| -| **SW1** | RESET | Reinicia el MCU (igual que P10). No apaga el módem ni el F9P | -| **SW2** | BOOT / BOOT0 | Con SW2 pulsado + SW1 → modo DFU (para flashear) | -| **SW4G1** | 4G NTRIP RESET | Reinicia el módem. Es lo único que revive un módem oscuro en una V5.5 en batería (además de volver a los 24 V) | +| SW1 | RESET | Reinicia el MCU (igual que P10); no apaga módem ni F9P | +| SW2 | BOOT / BOOT0 | SW2 pulsado + SW1 → modo DFU | +| SW4G1 | 4G NTRIP RESET | Reinicia el módem. Con los 24 V, lo único que revive un módem oscuro en una V5.5 en batería | -## 5. LEDs — qué significan +## 5. LEDs | LED | Estado | Significado | |---|---|---| -| **D18 PWR** (verde) | Encendido | Hay 3.3 V (USB en J11 o 5 V en P2 con P11 cerrado) | -| **D17 C13** (azul) | Parpadeo rápido al arrancar | Espera la consola USB (máx. 4 s). Chip virgen = apagado | -| **DB1–DB4** (medidor) | 1–4 encendidos | Batería: 3.60 / 3.75 / 3.90 / 3.97 V (umbrales Li-ion; los de LFP se ajustan en 0.6.x) | -| **RGB** (P14) | Verde | RTK fix | -| | Azul | Etapa ON, sin RTK fix | -| | Magenta | Etapa ON, sin NMEA (F9P no habla) | +| D18 PWR (verde) | Encendido | Hay 3.3 V (USB en J11, o 5 V en P2 con P11 cerrado) | +| D17 C13 (azul) | Parpadeo rápido al arrancar | Espera la consola USB (máx. 4 s). Chip virgen: apagado | +| DB1–DB4 (medidor) | 1–4 encendidos | Batería 3.60 / 3.75 / 3.90 / 3.97 V (umbrales Li-ion; LFP en 0.6.x) | +| RGB (P14) | Verde | RTK FIX | +| | Azul | Etapa ON, sin RTK FIX | +| | Magenta | Etapa ON, sin NMEA (el F9P no habla) | | | Amarillo | En batería (sin 5 V en P2) | -| | Rojo | Etapa OFF | -| **D4G1** (junto al XBee) | Parpadeo tenue | Actividad/asociación del módem 4G (es tenue por diseño) | -| **J10** LINK / ACT | Verde / amarillo | Enlace y actividad Ethernet | +| | Rojo | Etapa OFF (sin 5 V, batería < 3.40 V, > 60 °C o apagada por operador) | +| D4G1 (junto al XBee) | Parpadeo tenue | Actividad del módem (tenue por diseño) | +| J10 LINK / ACT | Verde / amarillo | Enlace y actividad Ethernet | -## 6. Cómo flashear (DFU por J11) +## 6. Flasheo -Procedimiento completo con inspección y pruebas de rieles: [1 · Prueba y flasheo de tarjetas](../procedimientos/v5-prueba-y-flasheo.md). Binario: [Descargas](../descargas/index.md) → `hbox-v5-bringup_0.6.0.bin` (verificar SHA-256 contra `SHA256SUMS.txt`). +DFU por J11, solo USB, sin P1/P2 ni batería: mantén SW2, pulsa y suelta SW1, suelta SW2 (`STM32 BOOTLOADER`, `0483:DF11`). Procedimiento completo: [prueba y flasheo §5](../procedimientos/v5-prueba-y-flasheo.md#5-flasheo-por-usb-dfu-j11-5-min). Binario: [Descargas](../descargas/index.md). La consola debe decir `hbox_v5_bringup 0.6.0` y `board=EinarBoard v5 (HBOX v5)`. -1. Conectar **solo** el USB-C en **J11** (nada en P1/P2, sin batería en P4). -2. Mantener pulsado **SW2**. -3. Sin soltar SW2, pulsar y soltar **SW1**. -4. Soltar SW2. La laptop detecta **`STM32 BOOTLOADER`** (`0483:DF11`). -5. Flashear: +Nunca flashees `blackpillrtkcode` (V3) en una V5: usa PB12–PB15 como LEDs y en la V5 son el SPI del W5500. -```bash -dfu-util -l # debe listar [0483:df11] -dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0.bin -``` +## 7. Consola - o con **STM32CubeProgrammer**: USB → Connect → *Erasing & Programming* → archivo `.bin`, dirección `0x08000000`, marcar *Verify* y *Run after programming* → Start. +USB CDC en J11 a 115200 (CoolTerm, `screen`, monitor de Arduino), CR+LF. `h` = ayuda, `l` = leyenda. Cada 5 s sale `STAT …` y cada 10 s `$PHLG,…`. Para reportar: líneas `EVT` + la última `STAT`. -6. Abrir la consola serie (puerto USB CDC, 115200): la primera línea debe decir `hbox_v5_bringup 0.6.0` y luego `board=EinarBoard v5 (HBOX v5)`. - -!!! warning "Nunca flashear `blackpillrtkcode` (V3) en una V5" - Ese firmware usa PB12–PB15 como LEDs; en la V5 esos pines son el bus SPI del chip Ethernet. - -## 7. Consola — lo básico - -Terminal serie sobre USB (J11): CoolTerm, `screen`, monitor de Arduino. Líneas terminan en CR+LF. Tecla **`h`** = ayuda, **`l`** = leyenda de campos. - -| Tecla | Uso en banco | +| Tecla | Uso | |---|---| | `r` | Repetir el autotest (§8) | -| `s` / `t` | `STAT` ahora / `$PHLG` ahora | +| `s` / `t` | `STAT` / `$PHLG` ahora | | `i` / `g` | Escaneo I²C / recorrido de LEDs (DB1→DB4, R, G, B) | -| `v` | Puntos de medición con multímetro (SYS5V, PWR_CTRL, GATE_LS, SW_5V, 3V3_MODEM, MODEM_RST) | -| `P` → `Y` | Encender la etapa RTK (solo con 5 V en P2); `P` otra vez = apagar | -| `n` | Ver NMEA 20 s (fix 4 = RTK FIX) | -| `A` | Modo AUTO ↔ MANUAL (de fábrica AUTO: la etapa enciende sola con 5 V) | -| `M` | Pulso de reset al módem (V5.5: requiere el puente 0.5.6 U13-P7 → SW4G1) | +| `v` | Puntos de medición (SYS5V, PWR_CTRL, GATE_LS, SW_5V, 3V3_MODEM, MODEM_RST) | +| `P` → `Y` | Encender la etapa RTK (solo con 5 V en P2); `P` otra vez apaga | +| `n` | NMEA 20 s (fix 4 = RTK FIX) | +| `A` | AUTO ↔ MANUAL (de fábrica AUTO: la etapa enciende sola con 5 V) | +| `M` | Pulso de reset al módem (V5.5: requiere el puente U13-P7 → SW4G1) | | `R` | Reset por software del MCU | -| `C` | Bloquear/permitir el cargador (veto del operador) | +| `C` | Bloquear/permitir el cargador | -Cada 5 s sale una línea `STAT …` y cada 10 s una `$PHLG,…`. Para un reporte: copiar las líneas `EVT` + la última `STAT`. +## 8. Autotest -## 8. Autotest — lista PASS/FAIL +Al arrancar y con `r`. Termina en `>>> BOARD OK` o `>>> BOARD CHECK FAILED`. -Se ejecuta al arrancar y con `r`. Resultado final: `>>> BOARD OK` o `>>> BOARD CHECK FAILED`. - -| Línea | PASS significa | Si sale FAIL | +| Línea | PASS significa | Si FAIL | |---|---|---| -| `[PASS] CLOCK_HSE` | Cristal Y3 25 MHz y PLL a 96 MHz | Y3 / C113 / C114 | -| `[PASS] LSE_Y4` | Cristal Y4 32.768 kHz oscila | Y4 / C115 / C116 (no impide operar) | -| `[PASS] I2C PCF8574 U13 @0x20` | Expansor de LEDs responde | U13, pull-ups R30/R31 | -| `[PASS] I2C SHT40 U3 @0x44` | Sensor de aire responde | U3 | -| `[PASS] I2C TMP102 U4 @0x48` | Sensor de temperatura responde | U4 | -| `[PASS] I2C SC16IS752 U10 @0x4D` | Puente serie responde | U10, Y2 | +| `[PASS] CLOCK_HSE` | Y3 25 MHz y PLL a 96 MHz | Y3 / C113 / C114 | +| `[PASS] LSE_Y4` | Y4 32.768 kHz oscila | Y4 / C115 / C116 (no impide operar) | +| `[PASS] I2C PCF8574 U13 @0x20` | Expansor de LEDs | U13, pull-ups R30/R31 | +| `[PASS] I2C SHT40 U3 @0x44` | Sensor de aire | U3 | +| `[PASS] I2C TMP102 U4 @0x48` | Sensor de temperatura | U4 | +| `[PASS] I2C SC16IS752 U10 @0x4D` | Puente serie | U10, Y2 | | `[PASS] TMP102` / `[PASS] SHT40` | Lecturas entre −20 y 85 °C | Sensor o bus | -| `[PASS] SC16IS752` | Registro *scratchpad* OK | U10 | -| `[PASS] GAUGE_WALK` | **Visual**: DB1→DB4 y luego R, G, B encienden en orden | LED, resistencia RB1–4 / R89–91, U13 | -| `[PASS] ADC` | Informativo: `vbat v5 ntc mcu` | Con USB solo, `v5≈0` y `vbat≈0` es normal | +| `[PASS] SC16IS752` | Scratchpad OK | U10 | +| `[PASS] GAUGE_WALK` | Visual: DB1→DB4 y R, G, B en orden | LED, RB1–4 / R89–91, U13 | +| `[PASS] ADC` | Informativo: `vbat v5 ntc mcu` | Con solo USB, `v5≈0` y `vbat≈0` es normal | | `[PASS] DIN` | Informativo: `ign chrg fault ser_irq eth_int` | — | -En V5.6 el escaneo I²C (`i`) debe mostrar además **0x49** (U18, sensor del módem). +En V5.6 el escaneo I²C (`i`) muestra además 0x49 (U18, sensor del módem). -## 9. Diferencias V5.5 → V5.6 (lo que cambia para el técnico) +## 9. Diferencias V5.5 → V5.6 | Tema | V5.5 | V5.6 | |---|---|---| -| Módem en batería | El módem cuelga del riel de la etapa; si se apaga en batería **no vuelve** hasta SW4G1 o 24 V | El módem tiene su propio regulador (U7 AP64350) desde SYS5V; el MCU lo enciende/apaga (`MODEM_EN`) y lo resetea (`MODEM_RST`) sin puente | -| Puente 0.5.6 (U13 pin 12 → SW4G1) | Necesario para que `M` funcione | **No hace falta** (PC1 hace el reset) | -| Paquete | Li-ion 18650 1S4P, JP2 1-2 | **LFP-HT 26650**, **JP2 2-3**, R55 5.6 k | -| Corriente de carga | 2.4 A programada (la fuente se plegaba) | **1.4 A**, límite de entrada 2.5 A | -| Sonda externa | P5 (JST 4) | **No existe.** U4 mide el cargador; U18 (0x49) mide el módem; el NTC del paquete lo lee también el MCU | +| Módem en batería | Cuelga del riel de la etapa; apagado en batería no vuelve hasta SW4G1 o 24 V | Regulador propio (U7 AP64350) desde SYS5V; el MCU lo enciende (`MODEM_EN`) y resetea (`MODEM_RST`) sin puente | +| Puente U13 pin 12 → SW4G1 | Necesario para `M` | No hace falta (PC1 hace el reset) | +| Paquete | Li-ion 18650 1S4P, JP2 1-2 | LFP-HT 26650, JP2 2-3, R55 5.6 k | +| Corriente de carga | 2.4 A (la fuente se plegaba) | 1.4 A, límite de entrada 2.5 A | +| Sonda externa | P5 (JST 4) | No existe. U4 mide el cargador, U18 (0x49) el módem; el MCU también lee el NTC del paquete | | Interruptor de corte | Solo P11 | P11 o JP6 puenteado | -| USB del módem J9 | Sin protección ESD | Con ESD (D19) | -| Ethernet | W5500 puede salir de reset solo (130 mA en batería) | Se queda en reset mientras el MCU no lo levante (R112) | -| Regulador 3.3 V | AMS1117 | TLV1117LV (funciona bien en batería baja) | +| USB del módem J9 | Sin ESD | Con ESD (D19) | +| Ethernet | El W5500 puede salir de reset solo (130 mA en batería) | Queda en reset hasta que el MCU lo levante (R112) | +| Regulador 3.3 V | AMS1117 | TLV1117LV (funciona con batería baja) | ## 10. Ethernet y puertos serie -- **Ethernet (J10):** solo con el firmware de banco `0.6.0-eth`; pide DHCP o usa `192.168.7.2/24` y abre un TCP a `192.168.7.1:5010` por donde salen NMEA + `$PHLG` + `$PHEV` + `$PHID`. Tecla `E`. Sin PoE. -- **RS-485 (P15) / RS-232 (P16):** el firmware 0.6.0 solo comprueba que el SC16IS752 responde; no hay tráfico de aplicación aún (loopback previsto en 0.6.1). -- Procedimiento: [Prueba de banco de Ethernet y puertos serie](../procedimientos/v5-prueba-ethernet-serie.md) — obligatoria en una V5.5 antes de pedir la V5.6. +- Ethernet (J10): solo con el build de banco `0.6.0-eth`; DHCP o `192.168.7.2/24`, TCP a `192.168.7.1:5010` con NMEA + `$PHLG` + `$PHEV` + `$PHID`. Tecla `E`. +- RS-485 (P15) / RS-232 (P16): 0.6.0 solo comprueba que el SC16IS752 responde; loopback previsto en 0.6.1. +- Procedimiento: [Ethernet y puertos serie](../procedimientos/v5-prueba-ethernet-serie.md), obligatorio en una V5.5 antes de pedir la V5.6. -## 11. Limitaciones conocidas de la V5.5 +## 11. Limitaciones de la V5.5 -!!! warning "Módem oscuro en batería" - En una V5.5 en batería, si el módem se apaga (ciclo de etapa, brown-out) **no arranca** sobre el boost del LTC4040. Solo lo reviven **SW4G1** o el regreso de los 24 V. Por eso el firmware ≥ 0.5.9 nunca cicla la etapa en batería y resetea el MCU al volver el 5 V. +- Módem oscuro en batería: si el módem se apaga en batería (ciclo de etapa, brown-out) no arranca sobre el boost del LTC4040; solo lo reviven SW4G1 o los 24 V. Por eso el firmware ≥ 0.5.9 nunca cicla la etapa en batería y resetea el MCU al volver el 5 V ([hallazgos](../procedimientos/prueba-bateria-modem.md#3-hallazgos-2527-sep)). +- Hasta 0.5.9 el cargador estaba apagado por firmware. 0.6.0 carga con 24 V, etapa ON > 120 s y riel ≥ 5.05 V, y corta bajo 4.90 V. Reflashea unidades con firmware anterior. +- La consola no sabe si el módem está vivo: `modem=vivo|SOSPECHOSO|?` es una inferencia por RTCM y caídas del riel. +- Ethernet y serie no se han probado en hardware real (sep-2026). +- Y2: la pieza dice 3.6864; el esquemático V5.6 dice `1.8432MHz` . -!!! note "Cargador apagado en firmware < 0.6.0" - Hasta 0.5.9 el cargador estaba **apagado por firmware** ("paquete de un solo uso"). Con 0.6.0 el gobernador carga solo con 24 V, etapa ON > 120 s y riel ≥ 5.05 V; corta bajo 4.90 V. Unidades con firmware anterior: reflashear. - -- La consola V5.5 no puede saber si el módem está vivo (`modem=vivo|SOSPECHOSO|?` es una inferencia por RTCM y por caídas del riel). -- Ethernet y serie **no** se han ejercitado en hardware real (sep-2026). -- Cristal Y2: la serigrafía del cristal dice 3.6864; el esquemático V5.6 dice `1.8432MHz` . - -## 12. Procedimientos relacionados - -| Paso | Documento | -|---|---| -| Prueba y flasheo de la tarjeta desnuda | [v5-prueba-y-flasheo](../procedimientos/v5-prueba-y-flasheo.md) · [acta](../formularios/v5.html) | -| Módulos RTK y 4G | [v5-modulos-integracion](../procedimientos/v5-modulos-integracion.md) | -| Ensamble de la unidad | [v5-ensamble](../procedimientos/v5-ensamble.md) | -| Prueba final | [v5-prueba-final-unidad](../procedimientos/v5-prueba-final-unidad.md) | -| Módem en batería (0.6.0) | [prueba-bateria-modem](../procedimientos/prueba-bateria-modem.md) | -| Ethernet y serie | [v5-prueba-ethernet-serie](../procedimientos/v5-prueba-ethernet-serie.md) | -| Configuración de la unidad | [v5-configuracion-unidad](../procedimientos/v5-configuracion-unidad.md) | -| Reflasheo en taller | [reflasheo-unidades](../procedimientos/reflasheo-unidades.md) | -| Hoja de datos / pinout | [v56-datasheet](../hardware/v56-datasheet.md) · [v56-pinout](../hardware/v56-pinout.md) | +Procedimientos V5: [Producción](../produccion/index.md) · [Taller](../taller/index.md). ## Historial de revisiones -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión (V5.5 fabricada + V5.6 en esquemático) | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión (V5.5 fabricada + V5.6 en esquemático). | +| 1.1 | 2026-09-29 | Edición breve; flasheo, química/JP2 y JP5 remiten a su procedimiento. | + +Versiones anteriores en git. diff --git a/03-Architecture-Hardware/manuales/manual-tarjeta-v6.md b/03-Architecture-Hardware/manuales/manual-tarjeta-v6.md index 4312979..d3b1231 100644 --- a/03-Architecture-Hardware/manuales/manual-tarjeta-v6.md +++ b/03-Architecture-Hardware/manuales/manual-tarjeta-v6.md @@ -1,21 +1,22 @@ --- -title: Manual de tarjeta — EinarBoard v6 (en diseño) +title: "Manual de tarjeta — EinarBoard v6 (en diseño)" project: Project Drogheda date: 2026-09-29 -version: "0.1" +version: "0.2" tags: [project-drogheda, hardware, einarboard, v6, manual, placeholder] author: Helgen Technologies --- # Manual de tarjeta — EinarBoard v6 (en diseño) -**Estado:** en diseño (`kicad/hbox-watchdog-v6.*`). No hay tarjetas fabricadas; **no aplica a ningún procedimiento de técnicos todavía.** +En diseño (`kicad/hbox-watchdog-v6.*`). No hay tarjetas fabricadas y no aplica a ningún procedimiento de técnicos. Este manual se escribe con el primer lote. -- Qué cambia: GNSS (u-blox ZED-F9P) y módem 4G (A7670SA) **soldados en la tarjeta**, sin zócalos MOD1/J7-J8; fuente de 5 V a bordo (U25) en vez de la Mean Well externa. -- Referencia técnica vigente: [Auditoría pre-fabricación (ES)](../hardware/v6-auditoria-prefab.md) · [Pre-fabrication audit (EN)](../hardware/v6-prefab-audit.md) · [Plan de cobre y colocación EMC](../hardware/EinarBoard-v6_Plan-de-Cobre_ES.html). -- Lecciones de V5.5 aplicadas a v6: `03-Architecture-Hardware/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md` y auditoría completa `2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md` (repo). -- Este manual se redactará cuando exista el primer lote. +- Qué cambia: GNSS (u-blox ZED-F9P) y módem 4G (A7670SA) soldados en la tarjeta, sin zócalos MOD1/J7-J8; fuente de 5 V a bordo (U25) en lugar de la Mean Well externa. +- Referencia técnica: [auditoría pre-fabricación](../hardware/v6-auditoria-prefab.md) ([inglés](../hardware/v6-prefab-audit.md)) · [plan de cobre y colocación EMC](../hardware/EinarBoard-v6_Plan-de-Cobre_ES.html) · [revisión contra lecciones V5.5](../hardware/v6-revision-lecciones-v55.md) · [auditoría completa](../hardware/v6-auditoria-completa.md) · [cambios al esquemático](../hardware/v6-cambios-esquematico.md) · [mapa de pines del MCU](../hardware/v6-pinmap.md). -| Versión | Fecha | Autor | Cambio | -|---|---|---|---| -| 0.1 | 2026-09-29 | Helgen Technologies | Marcador de posición | +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 0.1 | 2026-09-29 | Marcador de posición. | +| 0.2 | 2026-09-29 | Edición breve. | diff --git a/03-Architecture-Hardware/pinmap-v6.md b/03-Architecture-Hardware/pinmap-v6.md index d4a1f00..2e0e6b5 100644 --- a/03-Architecture-Hardware/pinmap-v6.md +++ b/03-Architecture-Hardware/pinmap-v6.md @@ -1,165 +1,179 @@ -# EinarBoard v6 — MCU pin map (U16 STM32F411RET6, LQFP64) for `board_v6.h` / FW 0.7.x +--- +title: "EinarBoard v6 — Mapa de pines del MCU (U16 STM32F411RET6, LQFP64) para board_v6.h / FW 0.7.x" +tags: [project-drogheda, hardware, einarboard, v6, pinmap, stm32, firmware] +date: 2026-09-28 +project: Project Drogheda +author: Helgen Technologies +--- -!!! warning "Tarjeta: EinarBoard **v6** — proyecto KiCad `hbox-watchdog-v6` (EN DISEÑO, no se pide todavía) / Board: v6, in design" +# EinarBoard v6 — Mapa de pines del MCU (U16 STM32F411RET6, LQFP64) para `board_v6.h` / FW 0.7.x + +!!! warning "EinarBoard v6 (`hbox-watchdog-v6`): en diseño, no se pide" Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios. -Snapshot: sch ecee9fed… / pcb 6ddec80d… (evidence pack 2026-09-28) · Author: D/G auditor (read-only) +Prosa y encabezados en español; la tabla de 64 pines y el borrador de `board_v6.h` se dejan en inglés (fuente directa para firmware). Fuente: `findings/pinmap-v6.md` de la [auditoría completa v6](v6-auditoria-completa.md) (§4), mismo snapshot del 2026-09-28. La tabla describe **la v6 tal como está dibujada**. Las filas marcadas ▶ audit llevan la consecuencia a nivel de pin de un hallazgo verificado de forma independiente, o de la asignación de pines libres que ambas verificaciones aceptan. Nada de esto se ha aplicado al esquemático (ver el [informe de cambios v6](v6-cambios-esquematico.md) para lo que sí se aplicó); las notas «▶ audit» dicen qué cambia si se adopta la corrección. -> **Editorial header (v1.0, 2026-09-28).** Source: the D/G auditor's `findings/pinmap-v6.md` (same date, same snapshot), republished as the standalone companion of `2026-09-28_Drogheda_EinarBoard-v6_Full-Audit_v1.0.md` (§4). The table describes **v6 as drawn**. Rows marked **▶ audit** carry the pin-level consequence of a finding that was independently verified (verify_1 = power/RF, verify_2 = layout/BOM/MCU) or of the spare-pin allocation both verifiers accept. Nothing below has been applied to the schematic; the "▶ audit" notes say what changes **if** the fix is adopted. Corrections applied to the auditor's text: -> 1. **PA15 / ETH_RST:** pull-down is **4.7 kΩ (C23162)**, not 100 kΩ. The W5500 RSTn has its own internal 62–112 kΩ pull-up (DS v1.0.2 §5.3) on top of the PA15 JTDI 30–50 kΩ pull-up; 4.7 k gives ≤ 0.62 V worst case. D-04's alternative "move to PD2 + 100 k" fails (1.56–2.04 V) and is withdrawn (verify_1, E-02 absorbs D-04). -> 2. **Spare-pin allocation (verify_1 conflict (h)):** PD2 = `ETH_PWR_EN` (E-01), PB10 = `PFO` (A-13, absorbs D-10), PC5 = pack-NTC tap (F-51), PA9 = spare (D-12 test pad). D-10's CLPROG → PC5 is dropped. **Open:** D-08's board-ID strap also wanted PD2; no free pin is left for it except PA9 (Leo to choose). -> 3. **D-01:** the isolating gate is the **Nexperia 74LVC1G125GV, C12518** (verified Ioff), not the TECH PUBLIC clone C3040595; Rdfu1 22 k → 100 k (C25803). The 10 k series-R alternative is withdrawn (≈ 0.28 mA, same order as the V5.5 back-feed) (verify_2). -> 4. **D-06 is merged into F-02 and rated Blocker** (Rig1 ≤ 3 mm of copper from P1.3 + SMBJ33A C224019), not ≤ 5 mm/Major (verify_2). -> 5. **HSE distances** are pad-edge **8.32 / 11.30 mm** (the 10.30 / 14.21 mm below are pad-centre) (verify_2, D-02). -> 6. **C-01 (Blocker, absorbs D-07):** with the TPS2552 antenna feed, PC2 (`/GNSS_ANT_SHORT_N`) becomes a real short-fault input (FAULT̅, 10 k to /3V3_GNSS); PC1 stays undriven. -> 7. **PB4 decode:** the power auditor, citing the LTC4040 datasheet table (p.14), decodes "pausa NTC" = CHRG low ∧ FAULT low and bad battery = CHRG high ∧ FAULT low; this governs over the wording in the PB4 row. +**Correcciones aplicadas al texto original (v1.0, 2026-09-28):** -**Coverage: 64 / 64 pins.** Sources: `evidence/mcu_pins.csv` (netlist), `evidence/pcb_pads.csv` (distances, pad-centre to pad-centre, same net), `evidence/firmware_pins.csv` (V5 `board_v5.h` + `hbox_v5_bringup.ino` 0.6.0), ST DS10314 (DocID026289 Rev 7) Table 8 (pin definitions, I/O structure) and Table 53 (I/O static), and ST's own alternate-function database (`STM32_open_pin_data`: `mcu/STM32F411R(C-E)Tx.xml` + `mcu/IP/GPIO-STM32F411_gpio_v1_0_Modes.xml`, the CubeMX source for DS10314 Table 9). The embedded schematic symbol was checked against the ST LQFP64 pinout: **64/64 pin numbers and names match** (the ERC "symbol differs from library" warning on U16 is cosmetic). +1. **PA15 / ETH_RST:** el pull-down es **4.7 kΩ (C23162)**, no 100 kΩ. El RSTn del W5500 tiene su propio pull-up interno de 62–112 kΩ (DS v1.0.2 §5.3) además del pull-up JTDI de 30–50 kΩ de PA15; 4.7 k da ≤ 0.62 V en el peor caso. La alternativa de D-04 «mover a PD2 + 100 k» falla (1.56–2.04 V) y se retira (verificación, E-02 absorbe D-04). +2. Asignación de pines libres (conflicto (h) de la verificación): PD2 = `ETH_PWR_EN` (E-01), PB10 = `PFO` (A-13, absorbe D-10), PC5 = derivación de la NTC del paquete (F-51), PA9 = libre (pad de prueba D-12). El CLPROG → PC5 de D-10 se descarta. Abierto: el strap de identificación de tarjeta de D-08 también quería PD2; no queda pin libre salvo PA9 (Leo decide). +3. **D-01:** la compuerta aislante es la **Nexperia 74LVC1G125GV, C12518** (Ioff verificado), no el clon TECH PUBLIC C3040595; Rdfu1 22 k → 100 k (C25803). La alternativa de 10 k en serie se retira (≈ 0.28 mA, mismo orden que el retorno de corriente de la V5.5). +4. **D-06 se fusiona en F-02 y queda como Bloqueante** (Rig1 a ≤ 3 mm de cobre de P1.3 + SMBJ33A C224019), no ≤ 5 mm/Mayor. +5. Distancias del HSE: borde a borde de pad **8.32 / 11.30 mm** (los 10.30 / 14.21 mm de abajo son centro a centro) (D-02). +6. **C-01 (Bloqueante, absorbe D-07):** con la alimentación de antena por TPS2552, PC2 (`/GNSS_ANT_SHORT_N`) se vuelve una entrada real de falla por corto (FAULT̅, 10 k a /3V3_GNSS); PC1 sigue sin manejar. +7. **Decodificación de PB4:** citando la tabla de la hoja de datos del LTC4040 (p. 14), «pausa NTC» = CHRG bajo ∧ FAULT bajo y batería mala = CHRG alto ∧ FAULT bajo; esto prevalece sobre el texto de la fila PB4. -Legend. **FT** = 5 V-tolerant in digital mode only (DS10314 Table 8 note 4: not in analog or oscillator mode; Table 53 note 5: internal pull-up/down must be off above VDD+0.3 V). **TC** = 3.3 V-only. On this LQFP64 only **PA0** and **PB5** are TC; every other GPIO is FT. PC13–PC15 are backup-domain pins (Table 8 note 2: sink ≤ 3 mA, ≤ 2 MHz, ≤ 30 pF, never a source). **No MCU pin on v6 carries a 5 V or a 1.8 V signal**: all modem 1.8 V lines go through U23/U24 (74LVC2T45) or open-drain Q20/Q21, and every pull-up is to /3V3. -"Same?" = does the V5 macro on this pin mean the same thing on v6. +**Cobertura: 64 / 64 pines.** Fuentes: `evidence/mcu_pins.csv` (netlist), `evidence/pcb_pads.csv` (distancias centro a centro de pad, misma net), `evidence/firmware_pins.csv` (`board_v5.h` de V5 + `hbox_v5_bringup.ino` 0.6.0), ST DS10314 (DocID026289 Rev 7) tabla 8 (definición de pines, estructura de E/S) y tabla 53 (E/S estática), y la base de datos de funciones alternas de ST (`STM32_open_pin_data`: `mcu/STM32F411R(C-E)Tx.xml` + `mcu/IP/GPIO-STM32F411_gpio_v1_0_Modes.xml`, la fuente de CubeMX para la tabla 9 del DS10314). El símbolo embebido del esquemático se cotejó contra el pinout LQFP64 de ST: **64/64 números y nombres de pin coinciden** (el aviso ERC «symbol differs from library» en U16 es cosmético). -## 1. Pin table (physical pins 1–64) +Leyenda. FT = tolerante a 5 V solo en modo digital (DS10314 tabla 8 nota 4: no en modo analógico ni de oscilador; tabla 53 nota 5: el pull-up/down interno debe estar apagado por encima de VDD+0.3 V). TC = solo 3.3 V. En este LQFP64 solo **PA0** y **PB5** son TC; todos los demás GPIO son FT. PC13–PC15 son pines del dominio de respaldo (tabla 8 nota 2: sumidero ≤ 3 mA, ≤ 2 MHz, ≤ 30 pF, nunca fuente). **Ningún pin del MCU en v6 lleva una señal de 5 V ni de 1.8 V**: todas las líneas de 1.8 V del módem pasan por U23/U24 (74LVC2T45) o por Q20/Q21 en open-drain, y todo pull-up es a /3V3. «¿Igual?» = si la macro de V5 en ese pin significa lo mismo en v6. -| Pin | Name | v6 net | Connected parts (short) | Function on v6 | Dir / mode (FW) | Peripheral + AF / ADC / EXTI | 5 V needed? / pin | V5 macro on this pin → same? | Proposed v6 macro | Notes / conflicts | +## 1. Tabla de pines (pines físicos 1–64) + +| Pin | Nombre | Net v6 | Partes conectadas (resumen) | Función en v6 | Dir / modo (FW) | Periférico + AF / ADC / EXTI | ¿Necesita 5 V? / pin | Macro V5 en este pin → ¿igual? | Macro v6 propuesta | Notas / conflictos | |---|---|---|---|---|---|---|---|---|---|---| | 1 | VBAT | /3V3 | 3V3 big net | Backup-domain supply, tied to 3V3 (no coin cell) | power | — | — / S | — | — | RTC + BKP regs + LSE lost whenever /3V3 drops (P5 cut-off open, no USB) | -| 2 | PC13 | /LED_C13 | D17 blue LED (K) ← R102 1 k ← /3V3 | Board status LED, active LOW (sink) | OUT, LOW = on | GPIO, EXTI13 | No / FT backup-domain | `PIN_LED_C13` → **same** | `PIN_LED_C13` | I = (3.3 − 2.8 V Vf, C125103) / 1 k ≈ 0.5 mA ≤ 3 mA sink limit ✓ (dim) | -| 3 | PC14-OSC32_IN | /LSE_IN | Y4.1 (32.768 kHz C32346, CL 12.5 pF), C115 12 pF | LSE | oscillator | RCC_OSC32_IN | — | `BOARD_LSE_HZ` → same | `BOARD_LSE_HZ 32768UL` | Y4.1 5.54 mm, C115 2.96 mm. Crystal/caps mismatch → D-03 | -| 4 | PC15-OSC32_OUT | /LSE_OUT | Y4.2, C116 12 pF | LSE | oscillator | RCC_OSC32_OUT | — | same | — | Y4.2 7.91 mm, C116 6.49 mm (> 5 mm) | -| 5 | PH0-OSC_IN | /HSE_IN | Y3.1 (25 MHz HC-49S C14872, CL 20 pF), C113 15 pF | HSE (USB, PLL, **ROM DFU needs it**) | oscillator | RCC_OSC_IN | — | `BOARD_HSE_HZ` → same | `BOARD_HSE_HZ 25000000UL` | Y3.1 **10.30 mm** ctr (**8.32 mm pad edge**, verify_2), C113 13.72 mm, track 14.5 mm → D-02. ▶ audit: Y3 → C2901684 + C113/C114 12 pF C38523 (alt. C9006 + 15 pF C1644) | -| 6 | PH1-OSC_OUT | /HSE_OUT | Y3.2, C114 15 pF | HSE | oscillator | RCC_OSC_OUT | — | same | — | Y3.2 **14.21 mm** ctr (**11.30 mm pad edge**, verify_2), C114 17.02 mm, track 20.7 mm → D-02 | -| 7 | NRST | /NRST | C104 100 nF (3.26 mm), SW1 RESET, P6.1 RESET-EXT, TP5 | MCU reset only | RST (int. pull-up 30–50 kΩ) | — | — | — (V5: P10) | — | NRST reaches only the MCU. Route 108.6 mm (91.9 F.Cu + 16.8 In2). P6 external cable has no ESD → G-08 | -| 8 | PC0 | /ETH_INT | U11.36 ~INT (W5500) | W5500 interrupt, active LOW | IN pull-up | GPIO, ADC1_IN10, **EXTI0** | No / FT | `PIN_ETH_INT` → **same** | `PIN_ETH_INT` | BOOT1 trap avoided (V4 had it on PB2) ✓ | -| 9 | PC1 | /GNSS_ANT_DETECT | U18.4 ANT_DETECT — **F9P input** | none usable (see D-07) | **ANALOG / hi-Z**, never drive HIGH while F9P off | GPIO, ADC1_IN11, EXTI1 | No / FT | V5: NC · **V5.6: MODEM_RST_MCU** → different | `PIN_GNSS_ANT_DET` (reserved) | No antenna-current supervisor on v6: MCU cannot learn antenna state here. ▶ audit C-01: stays undriven (open-antenna detect not implemented; infer from C/N0) | +| 2 | PC13 | /LED_C13 | D17 blue LED (K) ← R102 1 k ← /3V3 | Board status LED, active LOW (sink) | OUT, LOW = on | GPIO, EXTI13 | No / FT backup-domain | `PIN_LED_C13` → same | `PIN_LED_C13` | I = (3.3 − 2.8 V Vf, C125103) / 1 k ≈ 0.5 mA ≤ 3 mA sink limit ✓ (dim) | +| 3 | PC14-OSC32_IN | /LSE_IN | Y4.1 (32.768 kHz C32346, CL 12.5 pF), C115 12 pF | LSE | oscillator | RCC_OSC32_IN | — | `BOARD_LSE_HZ` → same | `BOARD_LSE_HZ 32768UL` | Y4.1 5.54 mm, C115 2.96 mm. Crystal/caps mismatch → D-03 | +| 4 | PC15-OSC32_OUT | /LSE_OUT | Y4.2, C116 12 pF | LSE | oscillator | RCC_OSC32_OUT | — | same | — | Y4.2 7.91 mm, C116 6.49 mm (> 5 mm) | +| 5 | PH0-OSC_IN | /HSE_IN | Y3.1 (25 MHz HC-49S C14872, CL 20 pF), C113 15 pF | HSE (USB, PLL, ROM DFU needs it) | oscillator | RCC_OSC_IN | — | `BOARD_HSE_HZ` → same | `BOARD_HSE_HZ 25000000UL` | Y3.1 **10.30 mm** ctr (**8.32 mm pad edge**, verify_2), C113 13.72 mm, track 14.5 mm → D-02. ▶ audit: Y3 → C2901684 + C113/C114 12 pF C38523 (alt. C9006 + 15 pF C1644) | +| 6 | PH1-OSC_OUT | /HSE_OUT | Y3.2, C114 15 pF | HSE | oscillator | RCC_OSC_OUT | — | same | — | Y3.2 **14.21 mm** ctr (**11.30 mm pad edge**, verify_2), C114 17.02 mm, track 20.7 mm → D-02 | +| 7 | NRST | /NRST | C104 100 nF (3.26 mm), SW1 RESET, P6.1 RESET-EXT, TP5 | MCU reset only | RST (int. pull-up 30–50 kΩ) | — | — | — (V5: P10) | — | NRST reaches only the MCU. Route 108.6 mm (91.9 F.Cu + 16.8 In2). P6 external cable has no ESD → G-08 | +| 8 | PC0 | /ETH_INT | U11.36 ~INT (W5500) | W5500 interrupt, active LOW | IN pull-up | GPIO, ADC1_IN10, **EXTI0** | No / FT | `PIN_ETH_INT` → same | `PIN_ETH_INT` | BOOT1 trap avoided (V4 had it on PB2) ✓ | +| 9 | PC1 | /GNSS_ANT_DETECT | U18.4 ANT_DETECT — **F9P input** | none usable (see D-07) | ANALOG / hi-Z, never drive HIGH while F9P off | GPIO, ADC1_IN11, EXTI1 | No / FT | V5: NC · **V5.6: MODEM_RST_MCU** → different | `PIN_GNSS_ANT_DET` (reserved) | No antenna-current supervisor on v6: MCU cannot learn antenna state here. ▶ audit C-01: stays undriven (open-antenna detect not implemented; infer from C/N0) | | 10 | PC2 | /GNSS_ANT_SHORT_N | U18.6 ANT_SHORT_N — **F9P input** | none usable (D-07) | ANALOG / hi-Z | GPIO, ADC1_IN12 (SPI2_MISO AF5 unused) | No / FT | V5: NC · **V5.6: MODEM_LED_MCU** → different | `PIN_GNSS_ANT_SHORT_N` (reserved) | as PC1. ▶ audit C-01: TPS2552DBVR (C46506) FAULT̅ drives this net (10 k C25804 to /3V3_GNSS) → LOW = antenna short; input, no MCU pull; valid only while the F9P rail is on | | 11 | PC3 | /GNSS_RTK_STAT | U18.20 RTK_STAT (output) | RTK status: 0 = fixed, blinking = corrections in use, 1 = none | IN, pull-DOWN while F9P off | GPIO, ADC1_IN13, **EXTI3** (shared with PB3) | No / FT | V5: NC · **V5.6: MODEM_EN (output!)** → different | `PIN_GNSS_RTK_STAT` | A V5.6 binary would drive this against the F9P output → D-08 | | 12 | VSSA | GND | — | analog ground | power | — | — | — | — | | -| 13 | VDDA | /VDDA | R104 10 Ω ← 3V3, C109 100 nF (3.13 mm), C112 1 µF (4.61 mm) | ADC reference (VREF+ bonded) | power | — | — | `ADC_REF 3.3f` → same | — | ✓ DS10314 recommendation | -| 14 | PA0-WKUP | /BAT_SENSE | R5 10 k ← /BAT_PLUS, R6 10 k → GND, C5 100 nF (5.6 mm) | Pack voltage / 2 | ANALOG | **ADC1_IN0** (WKUP1 spare) | No (≤ 2.10 V at 4.2 V) / **TC** | `PIN_BAT_SENSE` → **same** | `PIN_BAT_SENSE` | `DIV_RATIO 2.0` unchanged. 0.21 mA permanent pack drain | +| 13 | VDDA | /VDDA | R104 10 Ω ← 3V3, C109 100 nF (3.13 mm), C112 1 µF (4.61 mm) | ADC reference (VREF+ bonded) | power | — | — | `ADC_REF 3.3f` → same | — | ✓ DS10314 recommendation | +| 14 | PA0-WKUP | /BAT_SENSE | R5 10 k ← /BAT_PLUS, R6 10 k → GND, C5 100 nF (5.6 mm) | Pack voltage / 2 | ANALOG | **ADC1_IN0** (WKUP1 spare) | No (≤ 2.10 V at 4.2 V) / TC | `PIN_BAT_SENSE` → same | `PIN_BAT_SENSE` | `DIV_RATIO 2.0` unchanged. 0.21 mA permanent pack drain | | 15 | PA1 | /PWR_CTRL | R1 1 k → Q5 MMBT3904 base (**no base pull-down**) → /GATE_LS (R2 10 k to SYS5V) → Q1 AO3401A → /SW_5V → U21 AP2112K → /3V3_GNSS | **F9P rail enable**, HIGH = on | OUT PP, LOW at boot | GPIO / TIM2_CH2 AF1 (soft-start PWM) | No / FT | `PIN_PWR_CTRL` → **CHANGED**: V5 = RTK + 4G stack; v6 = F9P only (modem has PC10) | `PIN_GNSS_PWR` (keep `PIN_PWR_CTRL` alias) | Floats in reset/DFU → D-09 (absorbs A-12). ▶ audit: 100 k C25803 `/BASE_LS` → GND next to Q5 | | 16 | PA2 | /GNSS_TX | U18.43 RXD (F9P UART1 in) | MCU → F9P UART1 (UBX config) | AF PP only while F9P on; INPUT no-pull when off | **USART2_TX AF7** | No / FT | `PIN_GNSS_TX` → same (was simpleRTK2B UART1) | `PIN_GNSS_TX` | 0.5.5 float rule is mandatory (direct into F9P) | | 17 | PA3 | /GNSS_RX | U18.42 TXD (F9P UART1 out) | F9P → MCU NMEA/UBX | AF; pull-up only while F9P on | **USART2_RX AF7** | No / FT | `PIN_GNSS_RX` → same | `PIN_GNSS_RX` | `GNSS = Serial2` | | 18 | VSS | GND | — | ground | power | — | — | — | — | | -| 19 | VDD | /3V3 | nearest C106 3.29 mm | supply | power | — | — | — | — | per-pin cap target ≤ 2 mm (Note) | -| 20 | PA4 | /5V_SENSE | R7 10 k ← /VEH5V, R8 10 k, C7 100 nF (5.5 mm) | VEH5V / 2 (now U25 output or bench P2) | ANALOG | **ADC1_IN4** | No (2.50 V at 5.00 V, 2.66 V at 5.32 V) / FT | `PIN_5V_SENSE` → same net; source is now on-board U25 | `PIN_5V_SENSE` | LTC4040 PFI real threshold 1.19 V × 3.7 = 4.40 V (LTC4040 DS pin 19) | -| 21 | PA5 | /IGN_SENSE | Rig1 22 k ← /IGN_IN (P1.3); Rig2 22 k ∥ Rigb1 3.3 k → GND; C9 100 nF (3.09 mm); D5 BAT54 → /3V3 | Ignition present / vehicle-voltage estimate | **ANALOG** on v6 (V5 read it digital) | **ADC1_IN5** (EXTI5 if digital) | No at the pin (3.23 V at 28 V; clamp ≈ 3.55 V above 30.3 V) / FT (not in analog mode) | `PIN_IGN_SENSE` → same net, **digital read no longer adequate** (12 V vehicles) | `PIN_IGN_SENSE` | Divider midpoint, pin and C9 on one net (junction verified) · D-05, D-06. ▶ audit F-02 (Blocker, absorbs D-06): Rig1 moves ≤ 3 mm of copper from P1.3 + SMBJ33A C224019 at P1.3, so the long run becomes the 22 k-limited `/IGN_SENSE`; pin net unchanged. D-05: Rigb1 3.3 k → 2.2 k C4190 → ratio 0.0833 (12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V) | -| 22 | PA6 | /FAN_PWM | Rg1 100 Ω → Q2 AO3400A gate, Rgs1 100 k | Fan low-side switch, HIGH = on | OUT PP (ON/OFF policy) | GPIO / **TIM3_CH1 AF2** | No / FT | `PIN_FAN_PWM` → **same** | `PIN_FAN` | TIM3 is also PA7's capture timer (§2.4) | +| 19 | VDD | /3V3 | nearest C106 3.29 mm | supply | power | — | — | — | — | per-pin cap target ≤ 2 mm (Note) | +| 20 | PA4 | /5V_SENSE | R7 10 k ← /VEH5V, R8 10 k, C7 100 nF (5.5 mm) | VEH5V / 2 (now U25 output or bench P2) | ANALOG | **ADC1_IN4** | No (2.50 V at 5.00 V, 2.66 V at 5.32 V) / FT | `PIN_5V_SENSE` → same net; source is now on-board U25 | `PIN_5V_SENSE` | LTC4040 PFI real threshold 1.19 V × 3.7 = 4.40 V (LTC4040 DS pin 19) | +| 21 | PA5 | /IGN_SENSE | Rig1 22 k ← /IGN_IN (P1.3); Rig2 22 k ∥ Rigb1 3.3 k → GND; C9 100 nF (3.09 mm); D5 BAT54 → /3V3 | Ignition present / vehicle-voltage estimate | **ANALOG** on v6 (V5 read it digital) | **ADC1_IN5** (EXTI5 if digital) | No at the pin (3.23 V at 28 V; clamp ≈ 3.55 V above 30.3 V) / FT (not in analog mode) | `PIN_IGN_SENSE` → same net, **digital read no longer adequate** (12 V vehicles) | `PIN_IGN_SENSE` | Divider midpoint, pin and C9 on one net (junction verified) · D-05, D-06. ▶ audit F-02 (Blocker, absorbs D-06): Rig1 moves ≤ 3 mm of copper from P1.3 + SMBJ33A C224019 at P1.3, so the long run becomes the 22 k-limited `/IGN_SENSE`; pin net unchanged. D-05: Rigb1 3.3 k → 2.2 k C4190 → ratio 0.0833 (12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V) | +| 22 | PA6 | /FAN_PWM | Rg1 100 Ω → Q2 AO3400A gate, Rgs1 100 k | Fan low-side switch, HIGH = on | OUT PP (ON/OFF policy) | GPIO / **TIM3_CH1 AF2** | No / FT | `PIN_FAN_PWM` → same | `PIN_FAN` | TIM3 is also PA7's capture timer (§2.4) | | 23 | PA7 | /GNSS_TIMEPULSE | U18.53 TIMEPULSE | F9P 1 PPS | IN, pull-down while F9P off | **TIM3_CH2 AF2** input capture / EXTI7 | No / FT | V5: NC → new | `PIN_GNSS_PPS` | | -| 24 | PC4 | /NTC2 | R126 10 k/1 % → 3V3, C157 100 nF (3.11 mm), P8.1 | External NTC probe 2 (10 k B3950) | ANALOG | **ADC1_IN14** | No / FT | V5: NC (V5.6: MODEM_ON_SLEEP, DNP) → new | `PIN_NTC2` | `$PHLG tntc2` (append) | -| 25 | PC5 | unconnected (NC flag) | — | **spare** | ANALOG (lowest Idd) | ADC1_IN15 | — | V5: NC (V5.6: MODEM_ASSOC, DNP) | `PIN_SPARE_PC5` → `PIN_NTC_CELL` | ▶ audit F-51 (verify_1 (h)): pack-NTC tap, `/NTC` → 100 k (C25803) / 120 k (C25808) + 10 nF → PC5; PC5 ≤ 2.98 V; valid only with VEH5V present. D-10's CLPROG use dropped | +| 24 | PC4 | /NTC2 | R126 10 k/1 % → 3V3, C157 100 nF (3.11 mm), P8.1 | External NTC probe 2 (10 k B3950) | ANALOG | **ADC1_IN14** | No / FT | V5: NC (V5.6: MODEM_ON_SLEEP, DNP) → new | `PIN_NTC2` | `$PHLG tntc2` (append) | +| 25 | PC5 | unconnected (NC flag) | — | spare | ANALOG (lowest Idd) | ADC1_IN15 | — | V5: NC (V5.6: MODEM_ASSOC, DNP) | `PIN_SPARE_PC5` → `PIN_NTC_CELL` | ▶ audit F-51 (verify_1 (h)): pack-NTC tap, `/NTC` → 100 k (C25803) / 120 k (C25808) + 10 nF → PC5; PC5 ≤ 2.98 V; valid only with VEH5V present. D-10's CLPROG use dropped | | 26 | PB0 | /EXT_LED | Q4 AO3400A gate, Rled1 10 k → panel LED D1 at **P9** | Panel LED, HIGH = on | OUT PP | GPIO (TIM3_CH3 AF2) | No / FT | `PIN_EXT_LED` → same (connector P8 → P9) | `PIN_EXT_LED` | | -| 27 | PB1 | /NTC_TEMP | R42 10 k/1 % → 3V3, C24 100 nF (6.63 mm), P7.1 | External NTC probe 1 (hot-spot, `tntc`) | ANALOG | **ADC1_IN9** | No / FT | `PIN_NTC` → same (connector P12 → P7) | `PIN_NTC` | | -| 28 | PB2 | /BOOT1_STRAP | R99 10 k → GND (2.84 mm) | BOOT1 = 0 strap (DFU entry) | never reconfigure | BOOT1 | — | — (V4: ETH_INT!) | — | "never repurpose PB2" ✓ | -| 29 | PB10 | unconnected (NC flag) | — | **spare** | ANALOG | TIM2_CH3 AF1, I2C2_SCL AF4, SPI2_SCK AF5, EXTI10 | — | V5: NC | `PIN_SPARE_PB10` → `PIN_PFO` | ▶ audit A-13 (absorbs D-10): U6.20 PFO → PB10, 100 k C25803 pull-up to /3V3, EXTI10 falling = backup entry at VEH5V < 4.40 V | -| 30 | VCAP1 | /VCAP1 | C111 4.7 µF (3.19 mm) | core regulator cap | power | — | — | — | — | ✓ | +| 27 | PB1 | /NTC_TEMP | R42 10 k/1 % → 3V3, C24 100 nF (6.63 mm), P7.1 | External NTC probe 1 (hot-spot, `tntc`) | ANALOG | **ADC1_IN9** | No / FT | `PIN_NTC` → same (connector P12 → P7) | `PIN_NTC` | | +| 28 | PB2 | /BOOT1_STRAP | R99 10 k → GND (2.84 mm) | BOOT1 = 0 strap (DFU entry) | never reconfigure | BOOT1 | — | — (V4: ETH_INT!) | — | "never repurpose PB2" ✓ | +| 29 | PB10 | unconnected (NC flag) | — | spare | ANALOG | TIM2_CH3 AF1, I2C2_SCL AF4, SPI2_SCK AF5, EXTI10 | — | V5: NC | `PIN_SPARE_PB10` → `PIN_PFO` | ▶ audit A-13 (absorbs D-10): U6.20 PFO → PB10, 100 k C25803 pull-up to /3V3, EXTI10 falling = backup entry at VEH5V < 4.40 V | +| 30 | VCAP1 | /VCAP1 | C111 4.7 µF (3.19 mm) | core regulator cap | power | — | — | — | — | ✓ | | 31 | VSS | GND | — | ground | power | — | — | — | — | | -| 32 | VDD | /3V3 | nearest C105 3.65 mm | supply | power | — | — | — | — | | -| 33 | PB12 | /ETH_CS | U11.32 SCSn | W5500 chip select | OUT PP (INPUT_PULLUP while W5500 idle) | GPIO (SPI2_NSS AF5 unused) | No / FT | `PIN_ETH_CS` → **same** | `PIN_ETH_CS` | | +| 32 | VDD | /3V3 | nearest C105 3.65 mm | supply | power | — | — | — | — | | +| 33 | PB12 | /ETH_CS | U11.32 SCSn | W5500 chip select | OUT PP (INPUT_PULLUP while W5500 idle) | GPIO (SPI2_NSS AF5 unused) | No / FT | `PIN_ETH_CS` → same | `PIN_ETH_CS` | | | 34 | PB13 | /ETH_SCK | U11.33 | SPI2 SCK | AF | **SPI2_SCK AF5** | No / FT | `PIN_ETH_SCK` → same | `PIN_ETH_SCK` | | | 35 | PB14 | /ETH_MISO | U11.34 | SPI2 MISO (W5500 output) | AF in | **SPI2_MISO AF5** | No / FT | `PIN_ETH_MISO` → same | `PIN_ETH_MISO` | | | 36 | PB15 | /ETH_MOSI | U11.35 | SPI2 MOSI | AF | **SPI2_MOSI AF5** | No / FT | `PIN_ETH_MOSI` → same | `PIN_ETH_MOSI` | | -| 37 | PC6 | /USART6_TX | K1.10 (NO contact) → /DIN_4G → U23 (3.3 → 1.8 V) → U19.10 RXD | MCU → modem (AT, GGA, `$PHLG`) when K1 energised (Mode B) | AF PP while modem on; INPUT otherwise | **USART6_TX AF8** | No / FT | V5: NC. **Takes over V5 PA9 `PIN_USART1_TX` (RELAY TX)** | `PIN_MODEM_TX` | NC flag on a connected pin (cosmetic) → D-11 | -| 38 | PC7 | /USART6_RX | R106 100 Ω ← /DOUT_4G ← U24 (1.8 → 3.3 V) ← U19.9 TXD; /DOUT_4G also → U18.26 F9P RXD2 | modem → MCU (AT replies + RTCM byte count) | AF, **no pull while F9P off** | **USART6_RX AF8** | No / FT | V5: NC (V5.6 RTCM_TAP, same peripheral) | `PIN_MODEM_RX` | NC flag cosmetic (D-11 → J-04). A pull-up here back-feeds the F9P (D-01). ▶ audit D-01: U27 74LVC1G125GV C12518 on /3V3_GNSS isolates U18.26 (new net `/DOUT_4G_F9P`); PC7/R106 stay on `/DOUT_4G`. B-10: R106 100 Ω → 1 kΩ C14676 | -| 39 | PC8 | /MODEM_PWRKEY | Q20 2N7002 gate, R114 100 k PD → U19.1 PWRKEY (int. pull-up to VBAT) | Modem power key; MCU HIGH = key pressed | OUT PP, LOW at boot | GPIO (TIM3_CH3) | No / FT | V5: NC → new | `PIN_MODEM_PWRKEY` | on ≥ 50 ms, off ≥ 2.5 s (Phase-1 spec / Phase-2 delta) | -| 40 | PC9 | /MODEM_STATUS | U24.6 (2B) ← U19.66 STATUS (1.8 V) | Modem powered/ready (≈ 11.2 s after power-on) | IN **pull-DOWN** (floats when modem off: U24 Ioff) | GPIO, **EXTI9** (shared with PB9) | No / FT | V5: NC → new | `PIN_MODEM_STATUS` | poll it (EXTI9 belongs to the accelerometer) → D-14 (merged into B-10). ▶ audit B-10: 100 k C25803 `/MODEM_STATUS` → GND | -| 41 | PA8 | /CHRG_EN | U6.4 CHGOFF, R56 100 k → GND | Charger disable; HIGH = charge OFF | OUT PP | GPIO (TIM1_CH1 AF1) | No / FT | `PIN_CHRG_EN` → **same** | `PIN_CHRG_EN` | In reset/DFU R56 → charger ON (as V5). ▶ audit A-11: R56 100 k re-netted to /3V3 → charger OFF by default; polarity unchanged | -| 42 | PA9 | unconnected (NC flag) | — | **spare** | ANALOG | USART1_TX AF7, OTG_FS_VBUS AF10 | — | `PIN_USART1_TX` → **REMOVED** (role now PC6) | `PIN_DBG_TX` if a pad is added | USART1 is RX-only on v6 (TX alternates PA15/PB6 are taken). Add a test pad → D-12. ▶ audit: only remaining spare after (h); also the only candidate left for D-08's board-ID strap (open) | -| 43 | PA10 | /USART1_RX | U18.27 TXD2 (F9P UART2 out), K1.1 (NC → modem DIN), Rdfu1 22 k → /3V3 (2.28 mm) | Passive tap on the F9P → modem stream (fail-safe path through K1 NC) | AF RX, **no internal pull** (PA10 pull-up is 7–14 kΩ, DS Table 53) | **USART1_RX AF7** | No / FT | `PIN_USART1_RX` → **same** (tap), now RX-only | `PIN_F9P_TX2_TAP` | `Uart RELAY(PA10, PA9)` → RX-only instance. ▶ audit D-01: Rdfu1 22 k → 100 k C25803 (back-feed ≤ 27 µA) | -| 44 | PA11 | /DFU_DM | J11 A7/B7, D15 PESD5V0S1BA (6.74 mm from J11) | USB FS D− (ROM DFU + CDC console) | AF | **OTG_FS_DM AF10** | No / FT | `CON SerialUSB` → same | — | route 55.1 mm | -| 45 | PA12 | /DFU_DP | J11 A6/B6, D14 (3.19 mm) | USB FS D+ | AF | **OTG_FS_DP AF10** | No / FT | same | — | route 50.1 mm | -| 46 | PA13 | /SWDIO | TP3 (6.04 mm) | SWD data | AF0 (pull-up at reset) | SYS_JTMS-SWDIO AF0 | — | — | — | | +| 37 | PC6 | /USART6_TX | K1.10 (NO contact) → /DIN_4G → U23 (3.3 → 1.8 V) → U19.10 RXD | MCU → modem (AT, GGA, `$PHLG`) when K1 energised (Mode B) | AF PP while modem on; INPUT otherwise | **USART6_TX AF8** | No / FT | V5: NC. **Takes over V5 PA9 `PIN_USART1_TX` (RELAY TX)** | `PIN_MODEM_TX` | NC flag on a connected pin (cosmetic) → D-11 | +| 38 | PC7 | /USART6_RX | R106 100 Ω ← /DOUT_4G ← U24 (1.8 → 3.3 V) ← U19.9 TXD; /DOUT_4G also → U18.26 F9P RXD2 | modem → MCU (AT replies + RTCM byte count) | AF, **no pull while F9P off** | **USART6_RX AF8** | No / FT | V5: NC (V5.6 RTCM_TAP, same peripheral) | `PIN_MODEM_RX` | NC flag cosmetic (D-11 → J-04). A pull-up here back-feeds the F9P (D-01). ▶ audit D-01: U27 74LVC1G125GV C12518 on /3V3_GNSS isolates U18.26 (new net `/DOUT_4G_F9P`); PC7/R106 stay on `/DOUT_4G`. B-10: R106 100 Ω → 1 kΩ C14676 | +| 39 | PC8 | /MODEM_PWRKEY | Q20 2N7002 gate, R114 100 k PD → U19.1 PWRKEY (int. pull-up to VBAT) | Modem power key; MCU HIGH = key pressed | OUT PP, LOW at boot | GPIO (TIM3_CH3) | No / FT | V5: NC → new | `PIN_MODEM_PWRKEY` | on ≥ 50 ms, off ≥ 2.5 s (Phase-1 spec / Phase-2 delta) | +| 40 | PC9 | /MODEM_STATUS | U24.6 (2B) ← U19.66 STATUS (1.8 V) | Modem powered/ready (≈ 11.2 s after power-on) | IN pull-DOWN (floats when modem off: U24 Ioff) | GPIO, **EXTI9** (shared with PB9) | No / FT | V5: NC → new | `PIN_MODEM_STATUS` | poll it (EXTI9 belongs to the accelerometer) → D-14 (merged into B-10). ▶ audit B-10: 100 k C25803 `/MODEM_STATUS` → GND | +| 41 | PA8 | /CHRG_EN | U6.4 CHGOFF, R56 100 k → GND | Charger disable; HIGH = charge OFF | OUT PP | GPIO (TIM1_CH1 AF1) | No / FT | `PIN_CHRG_EN` → same | `PIN_CHRG_EN` | In reset/DFU R56 → charger ON (as V5). ▶ audit A-11: R56 100 k re-netted to /3V3 → charger OFF by default; polarity unchanged | +| 42 | PA9 | unconnected (NC flag) | — | spare | ANALOG | USART1_TX AF7, OTG_FS_VBUS AF10 | — | `PIN_USART1_TX` → **REMOVED** (role now PC6) | `PIN_DBG_TX` if a pad is added | USART1 is RX-only on v6 (TX alternates PA15/PB6 are taken). Add a test pad → D-12. ▶ audit: only remaining spare after (h); also the only candidate left for D-08's board-ID strap (open) | +| 43 | PA10 | /USART1_RX | U18.27 TXD2 (F9P UART2 out), K1.1 (NC → modem DIN), Rdfu1 22 k → /3V3 (2.28 mm) | Passive tap on the F9P → modem stream (fail-safe path through K1 NC) | AF RX, **no internal pull** (PA10 pull-up is 7–14 kΩ, DS Table 53) | **USART1_RX AF7** | No / FT | `PIN_USART1_RX` → same (tap), now RX-only | `PIN_F9P_TX2_TAP` | `Uart RELAY(PA10, PA9)` → RX-only instance. ▶ audit D-01: Rdfu1 22 k → 100 k C25803 (back-feed ≤ 27 µA) | +| 44 | PA11 | /DFU_DM | J11 A7/B7, D15 PESD5V0S1BA (6.74 mm from J11) | USB FS D− (ROM DFU + CDC console) | AF | **OTG_FS_DM AF10** | No / FT | `CON SerialUSB` → same | — | route 55.1 mm | +| 45 | PA12 | /DFU_DP | J11 A6/B6, D14 (3.19 mm) | USB FS D+ | AF | **OTG_FS_DP AF10** | No / FT | same | — | route 50.1 mm | +| 46 | PA13 | /SWDIO | TP3 (6.04 mm) | SWD data | AF0 (pull-up at reset) | SYS_JTMS-SWDIO AF0 | — | — | — | | | 47 | VSS | GND | — | ground | power | — | — | — | — | | -| 48 | VDD | /3V3 | C107 2.10 mm | supply | power | — | — | — | — | ✓ | -| 49 | PA14 | /SWCLK | TP4 (5.43 mm) | SWD clock | AF0 (pull-down at reset) | SYS_JTCK-SWCLK AF0 | — | — | — | | -| 50 | PA15 | /ETH_RST | U11.37 RSTn | W5500 reset, LOW = held | OUT PP, drive LOW first thing | GPIO (**JTDI AF0 at reset, 30–50 kΩ pull-up**) | No / FT | `PIN_ETH_RST` → **same** | `PIN_ETH_RST` | W5500 is released during MCU reset/boot → E-02 (absorbs D-04). ▶ audit (verified): **4.7 k C23162 `/ETH_RST` → GND at U11.37** → ≤ 0.62 V worst case (W5500 internal 62–112 kΩ pull-up + PA15 30–50 kΩ); 100 k gives 2.75 V and fails | -| 51 | PC10 | /MODEM_PWR_EN | U20.3 EN (AP64350), R113 100 k PD | Modem buck enable, HIGH = on | OUT PP, LOW at boot | GPIO | No / FT | V5: NC (**V5.6 used PC3**) → new | `PIN_MODEM_PWR_EN` | any MCU reset power-cycles the modem (by design). ▶ audit A-01: U20 input moves to /MAIN5V only (D20 removed, no D21); EN control unchanged (R113 100 k PD, EN pull-up 1.5 µA → 0.15 V = OFF) | +| 48 | VDD | /3V3 | C107 2.10 mm | supply | power | — | — | — | — | ✓ | +| 49 | PA14 | /SWCLK | TP4 (5.43 mm) | SWD clock | AF0 (pull-down at reset) | SYS_JTCK-SWCLK AF0 | — | — | — | | +| 50 | PA15 | /ETH_RST | U11.37 RSTn | W5500 reset, LOW = held | OUT PP, drive LOW first thing | GPIO (**JTDI AF0 at reset, 30–50 kΩ pull-up**) | No / FT | `PIN_ETH_RST` → same | `PIN_ETH_RST` | W5500 is released during MCU reset/boot → E-02 (absorbs D-04). ▶ audit (verified): **4.7 k C23162 `/ETH_RST` → GND at U11.37** → ≤ 0.62 V worst case (W5500 internal 62–112 kΩ pull-up + PA15 30–50 kΩ); 100 k gives 2.75 V and fails | +| 51 | PC10 | /MODEM_PWR_EN | U20.3 EN (AP64350), R113 100 k PD | Modem buck enable, HIGH = on | OUT PP, LOW at boot | GPIO | No / FT | V5: NC (**V5.6 used PC3**) → new | `PIN_MODEM_PWR_EN` | any MCU reset power-cycles the modem (by design). ▶ audit A-01: U20 input moves to /MAIN5V only (D20 removed, no D21); EN control unchanged (R113 100 k PD, EN pull-up 1.5 µA → 0.15 V = OFF) | | 52 | PC11 | /MODEM_RST | Q21 2N7002 gate, R115 100 k PD → U19.16 RESET | Modem reset; MCU HIGH = asserted | OUT PP, LOW at boot | GPIO | No / FT | V5: NC (**V5.6 used PC1**) → new | `PIN_MODEM_RST` | | | 53 | PC12 | /GNSS_RESET_N | U18.49 RESET_N, R105 10 k → /3V3_GNSS | F9P hard reset, LOW = reset | **OUTPUT_OPEN_DRAIN** (or INPUT); never push HIGH | GPIO | No / FT | V5: NC → new | `PIN_GNSS_RESET_N` | push-HIGH with F9P off = back-feed | -| 54 | PD2 | unconnected (NC flag) | — | **spare** | ANALOG | TIM3_ETR AF2, EXTI2 | — | V5: NC | `PIN_ETH_PWR_EN` (▶ audit) | ▶ audit E-01 (verify_1 (h)): `/ETH_PWR_EN` → U12.2 EN, 100 k C25803 → GND; HIGH = 3V3_ETH on. D-08's 10 k board-ID strap on this pin **conflicts** and is unresolved | -| 55 | PB3 | /CHRG_STAT | U6.8 CHRG (open-drain), R57 100 k → /3V3 | LOW = charging | IN, no pull | GPIO, **EXTI3** (JTDO/SWO AF0 at reset; TIM2_CH2) | No (3V3 pull-up) / FT | `PIN_CHRG_STAT` → **same** | `PIN_CHRG_STAT` | SWO trace unavailable | -| 56 | PB4 | /CHRG_FAULT | U6.9 FAULT (open-drain), R58 100 k → /3V3 | LOW = fault / NTC pause | IN | GPIO, EXTI4 (NJTRST pull-up at reset) | No / FT | `PIN_CHRG_FAULT` → **same** | `PIN_CHRG_FAULT` | "pausa NTC" = EN allowed ∧ STAT idle ∧ FAULT low. ▶ audit: the power auditor decodes from the LTC4040 datasheet table (p.14) "pausa NTC" = CHRG low ∧ FAULT low, bad battery = CHRG high ∧ FAULT low; use that decode | -| 57 | PB5 | /BYP_CTRL | R40 1 k → Q6 MMBT3904 (R41 10 k B–E) → K1 coil (/SYS5V) | K1 Mode B; HIGH = energised = modem DIN ← PC6 | OUT PP, LOW at boot | GPIO (TIM3_CH2 AF2) | No / **TC** (output only ✓) | `PIN_BYP_CTRL` → same pin; NO contact now = PC6 (was PA9) | `PIN_BYP_CTRL` | K1 0.15 W while held | +| 54 | PD2 | unconnected (NC flag) | — | spare | ANALOG | TIM3_ETR AF2, EXTI2 | — | V5: NC | `PIN_ETH_PWR_EN` (▶ audit) | ▶ audit E-01 (verify_1 (h)): `/ETH_PWR_EN` → U12.2 EN, 100 k C25803 → GND; HIGH = 3V3_ETH on. D-08's 10 k board-ID strap on this pin conflicts and is unresolved | +| 55 | PB3 | /CHRG_STAT | U6.8 CHRG (open-drain), R57 100 k → /3V3 | LOW = charging | IN, no pull | GPIO, **EXTI3** (JTDO/SWO AF0 at reset; TIM2_CH2) | No (3V3 pull-up) / FT | `PIN_CHRG_STAT` → same | `PIN_CHRG_STAT` | SWO trace unavailable | +| 56 | PB4 | /CHRG_FAULT | U6.9 FAULT (open-drain), R58 100 k → /3V3 | LOW = fault / NTC pause | IN | GPIO, EXTI4 (NJTRST pull-up at reset) | No / FT | `PIN_CHRG_FAULT` → same | `PIN_CHRG_FAULT` | "pausa NTC" = EN allowed ∧ STAT idle ∧ FAULT low. ▶ audit: the power auditor decodes from the LTC4040 datasheet table (p.14) "pausa NTC" = CHRG low ∧ FAULT low, bad battery = CHRG high ∧ FAULT low; use that decode | +| 57 | PB5 | /BYP_CTRL | R40 1 k → Q6 MMBT3904 (R41 10 k B–E) → K1 coil (/SYS5V) | K1 Mode B; HIGH = energised = modem DIN ← PC6 | OUT PP, LOW at boot | GPIO (TIM3_CH2 AF2) | No / TC (output only ✓) | `PIN_BYP_CTRL` → same pin; NO contact now = PC6 (was PA9) | `PIN_BYP_CTRL` | K1 0.15 W while held | | 58 | PB6 | /I2C_SCL | R30 4.7 k; U3 SHT40, U10 SC16IS752, U13 PCF8574, U26 SC7A20 | I2C1 SCL | AF OD | **I2C1_SCL AF4** | No / FT | `PIN_I2C_SCL` → same | `PIN_I2C_SCL` | Map: 0x18 SC7A20 (new), 0x20 PCF8574, 0x44 SHT40, 0x4D SC16IS752. **No TMP102** (0x48/0x49) on v6 as drawn. ▶ audit F-51: TMP102 C99269 at 0x48 (ADD0 → GND) between U6 and L6; F-52 option: second TMP102 at 0x49 | | 59 | PB7 | /I2C_SDA | R31 4.7 k; same devices | I2C1 SDA | AF OD | **I2C1_SDA AF4** | No / FT | `PIN_I2C_SDA` → same | `PIN_I2C_SDA` | | -| 60 | BOOT0 | /BOOT0 | R98 10 k → GND (3.65 mm), SW2 → 3V3 | Boot select | I (B) | — | — | — | — | route 73.2 mm (61.4 mm on In1) | -| 61 | PB8 | /SER_IRQ | U10.15 IRQ (open-drain), R81 10 k → 3V3 | SC16IS752 IRQ | IN | GPIO, **EXTI8** | No / FT | `PIN_SER_IRQ` → **same** | `PIN_SER_IRQ` | | +| 60 | BOOT0 | /BOOT0 | R98 10 k → GND (3.65 mm), SW2 → 3V3 | Boot select | I (B) | — | — | — | — | route 73.2 mm (61.4 mm on In1) | +| 61 | PB8 | /SER_IRQ | U10.15 IRQ (open-drain), R81 10 k → 3V3 | SC16IS752 IRQ | IN | GPIO, **EXTI8** | No / FT | `PIN_SER_IRQ` → same | `PIN_SER_IRQ` | | | 62 | PB9 | /ACC_INT1 | U26.5 INT1 (push-pull, active HIGH default) | Motion interrupt / STOP wake | IN, EXTI rising | GPIO, **EXTI9** (TIM4_CH4, TIM11_CH1) | No / FT | V5: NC → new | `PIN_ACC_INT1` | owns EXTI9 | | 63 | VSS | GND | — | ground | power | — | — | — | — | | -| 64 | VDD | /3V3 | C110 3.90 mm (shared with pin 1), C108 4.63 mm | supply | power | — | — | — | — | | +| 64 | VDD | /3V3 | C110 3.90 mm (shared with pin 1), C108 4.63 mm | supply | power | — | — | — | — | | Count check: 50 GPIO pads (PA0–PA15 = 16, PB0–PB10 + PB12–PB15 = 15, PC0–PC15 = 16, PD2 = 1, PH0/PH1 = 2) + NRST, BOOT0, VBAT, VCAP1, VDDA, VSSA (6) + VDD ×4 + VSS ×4 = **64**. 60 pins are connected; the 4 truly unconnected spares are **PA9, PB10, PC5, PD2**. -## 2. Conflicts and flags +## 2. Conflictos y banderas -### 2.1 Firmware pins that are gone or change meaning on v6 -| V5 item | v6 status | Replacement / action | +### 2.1 Pines de firmware que desaparecen o cambian de significado en v6 + +| Ítem V5 | Estado en v6 | Sustituto / acción | |---|---|---| -| `PIN_USART1_TX` PA9 + `Uart RELAY(PA10, PA9)` | PA9 unconnected (NC flag) | The **console was never on PA9**: `CON = SerialUSB` (PA11/PA12, J11) is unchanged. PA9 was the Mode-B injection path into the modem through K1 NO. On v6 that path is **PC6 USART6_TX → K1.10 (NO)**, and the MCU now also hears the modem on **PC7 USART6_RX**. USART1 stays as an **RX-only** tap on PA10 (F9P TXD2). No UART TX debug pin exists on v6 (D-12). | -| `PIN_PWR_CTRL` PA1 | GNSS rail only | Modem power is `PIN_MODEM_PWR_EN` PC10. Stack cycles must never be used for modem recovery. | -| PCF8574 P7 → SW4G1 `MODEM_RST` bodge (`PCF_MODEM_RST_BIT 0x80`, `ENABLE_MODEM_RST`) | U13.12 (P7) unconnected; no SW4G1 | Delete the bodge path; use PC11 (reset) / PC8 (PWRKEY) / PC10 (power). | -| TMP102 0x48 (`I2C_ADDR_TMP102`, `CHG_CELL_HOT/COOL` source) | **no TMP102 on v6** | Cell temperature for the governor has no on-board source. ▶ audit F-51 (Major, verified): TMP102 C99269 at 0x48 next to U6 (`tchg`) + pack-NTC tap on PC5 (`tcell`, valid with VEH5V present). | -| `PIN_ETH_INT` V4 = PB2 | PC0 on v6 (as V5) | ✓ | -| V5.6 `board_v56.h` (ECO §H): MODEM_EN PC3, MODEM_RST PC1, MODEM_LED PC2, ONSLP PC4, ASSOC PC5, RTCM_TAP PC7 | v6: PC1/PC2 = F9P inputs, **PC3 = F9P RTK_STAT output**, PC4 = NTC2 | `board_v56.h` and `board_v6.h` must never share a binary: a V5.6 build drives PC3 HIGH into the F9P's push-pull RTK_STAT. Hardware board-ID strap proposed (D-08); its PD2 pin is now claimed by E-01, so the strap pin is open (PA9 is the only spare left). | +| `PIN_USART1_TX` PA9 + `Uart RELAY(PA10, PA9)` | PA9 sin conexión (bandera NC) | La **consola nunca estuvo en PA9**: `CON = SerialUSB` (PA11/PA12, J11) no cambia. PA9 era el camino de inyección del Modo B hacia el módem por K1 NO. En v6 ese camino es **PC6 USART6_TX → K1.10 (NO)**, y el MCU ahora también escucha al módem en **PC7 USART6_RX**. USART1 queda como derivación **solo RX** en PA10 (TXD2 del F9P). En v6 no existe pin TX de depuración por UART (D-12). | +| `PIN_PWR_CTRL` PA1 | Solo riel del GNSS | La alimentación del módem es `PIN_MODEM_PWR_EN` PC10. Los ciclos de etapa nunca deben usarse para recuperar el módem. | +| Puente PCF8574 P7 → SW4G1 `MODEM_RST` (`PCF_MODEM_RST_BIT 0x80`, `ENABLE_MODEM_RST`) | U13.12 (P7) sin conexión; no hay SW4G1 | Eliminar el camino del puente; usar PC11 (reset) / PC8 (PWRKEY) / PC10 (alimentación). | +| TMP102 0x48 (`I2C_ADDR_TMP102`, fuente de `CHG_CELL_HOT/COOL`) | **no hay TMP102 en v6** | La temperatura de celda para el gobernador no tiene fuente en la tarjeta. ▶ audit F-51 (Mayor, verificado): TMP102 C99269 en 0x48 junto a U6 (`tchg`) + derivación de la NTC del paquete en PC5 (`tcell`, válida con VEH5V presente). | +| `PIN_ETH_INT` V4 = PB2 | PC0 en v6 (como V5) | ✓ | +| `board_v56.h` de V5.6 (ECO §H): MODEM_EN PC3, MODEM_RST PC1, MODEM_LED PC2, ONSLP PC4, ASSOC PC5, RTCM_TAP PC7 | v6: PC1/PC2 = entradas del F9P, **PC3 = salida RTK_STAT del F9P**, PC4 = NTC2 | `board_v56.h` y `board_v6.h` nunca deben compartir binario: un build V5.6 maneja PC3 en ALTO contra el RTK_STAT push-pull del F9P. Se propuso un strap de identificación de tarjeta (D-08); su pin PD2 ahora lo reclama E-01, así que el pin del strap queda abierto (PA9 es el único libre). | -### 2.2 v6 nets with no firmware counterpart (new for 0.7.x) -PA7 GNSS_TIMEPULSE · PC1/PC2 ANT_DETECT/ANT_SHORT_N (F9P inputs, reserve) · PC3 GNSS_RTK_STAT · PC4 NTC2 · PC6/PC7 USART6 · PC8 PWRKEY · PC9 STATUS · PC10 MODEM_PWR_EN · PC11 MODEM_RST · PC12 GNSS_RESET_N · PB9 ACC_INT1 (SC7A20 at 0x18). +### 2.2 Nets de v6 sin contraparte en firmware (nuevas para 0.7.x) -### 2.3 ADC and 5 V checks -- Every analog net sits on an ADC-capable pad: BAT_SENSE PA0/IN0, 5V_SENSE PA4/IN4, IGN_SENSE PA5/IN5, NTC_TEMP PB1/IN9, NTC2 PC4/IN14. Spare ADC pad: PC5/IN15. ✅ -- No 5 V signal on any pin; the two TC pins carry PA0 ≤ 2.10 V and PB5 (output). ✅ -- IGN_SENSE is the only pin that can exceed VDD: it reaches 3.23 V at 28 V, and the BAT54 clamp holds it at ≈ 3.55–3.65 V above ≈ 30.3 V (0.24 mA at 36 V, 1.2 mA at 58 V into /3V3). In analog mode the FT tolerance is lost, so the clamp is what protects it. There is no negative clamp (D-06). +PA7 GNSS_TIMEPULSE · PC1/PC2 ANT_DETECT/ANT_SHORT_N (entradas del F9P, reserva) · PC3 GNSS_RTK_STAT · PC4 NTC2 · PC6/PC7 USART6 · PC8 PWRKEY · PC9 STATUS · PC10 MODEM_PWR_EN · PC11 MODEM_RST · PC12 GNSS_RESET_N · PB9 ACC_INT1 (SC7A20 en 0x18). -### 2.4 Alternate-function, timer and EXTI allocation -- **No AF conflicts.** USART2 PA2/PA3 AF7 · USART6 PC6/PC7 AF8 · USART1_RX PA10 AF7 (TX-less) · SPI2 PB13/PB14/PB15 AF5 (CS PB12 as GPIO) · I2C1 PB6/PB7 AF4 · OTG_FS PA11/PA12 AF10 · SWD PA13/PA14 AF0. Every peripheral uses one consistent AF set. -- USART1 TX cannot be recovered: its alternates are PA9 (NC), PA15 (ETH_RST) and PB6 (I2C1_SCL). -- **Timers:** fan PA6 = TIM3_CH1 and PPS PA7 = TIM3_CH2 share TIM3's time base. The fan policy is ON/OFF (GPIO, `drogheda-fan-policy`), so TIM3 is free for PPS capture. If PWM on the fan is ever restored, time-stamp the PPS on EXTI7 (DWT cycle counter) instead. PA1 soft-start uses TIM2_CH2 (free). -- **EXTI collisions** (one port per line, SYSCFG_EXTICR): **EXTI3** = PC3 RTK_STAT and PB3 CHRG_STAT; **EXTI9** = PB9 ACC_INT1 and PC9 MODEM_STATUS. Assign EXTI9 to the accelerometer (motion wake) and poll STATUS. Assign EXTI3 to RTK_STAT only if blink timing is wanted, and poll CHRG_STAT. EXTI0 (ETH_INT), EXTI7 (PPS) and EXTI8 (SER_IRQ) are unique. +### 2.3 Comprobaciones de ADC y de 5 V -### 2.5 Pins that touch the ZED-F9P (back-feed rule, lesson 0.5.5/0.5.6) -While `PIN_GNSS_PWR` is LOW: PA2 INPUT no-pull; PA10 no pull (its internal pull-up is 7–14 kΩ); PC7 no pull-up; PC12 released (open-drain); PA7/PC3 no pull-up; PC1/PC2 analog. **The hardware path U24 → /DOUT_4G → U18.26 cannot be fixed in firmware** except by keeping the modem off whenever the F9P is off (D-01, Major, absorbs C-06). ▶ audit fix (verify_2): U27 = Nexperia 74LVC1G125GV **C12518** (Ioff ±2 µA) powered from /3V3_GNSS, OE̅ = GND, 100 nF C14663; Rdfu1 → 100 k C25803. Bench check: /3V3_GNSS < 0.3 V with PA1 LOW and the modem on. +- Toda net analógica está en un pad con ADC: BAT_SENSE PA0/IN0, 5V_SENSE PA4/IN4, IGN_SENSE PA5/IN5, NTC_TEMP PB1/IN9, NTC2 PC4/IN14. Pad ADC libre: PC5/IN15. ✅ +- Ninguna señal de 5 V en ningún pin; los dos pines TC llevan PA0 ≤ 2.10 V y PB5 (salida). ✅ +- IGN_SENSE es el único pin que puede exceder VDD: llega a 3.23 V con 28 V, y el clamp BAT54 lo sostiene en ≈ 3.55–3.65 V por encima de ≈ 30.3 V (0.24 mA a 36 V, 1.2 mA a 58 V hacia /3V3). En modo analógico se pierde la tolerancia FT, así que el clamp es lo que lo protege. No hay clamp negativo (D-06). -## 3. Boot and debug +### 2.4 Asignación de funciones alternas, temporizadores y EXTI -| Item | v6 | Verdict | +- **Sin conflictos de AF.** USART2 PA2/PA3 AF7 · USART6 PC6/PC7 AF8 · USART1_RX PA10 AF7 (sin TX) · SPI2 PB13/PB14/PB15 AF5 (CS PB12 como GPIO) · I2C1 PB6/PB7 AF4 · OTG_FS PA11/PA12 AF10 · SWD PA13/PA14 AF0. Cada periférico usa un conjunto de AF consistente. +- El TX de USART1 no se puede recuperar: sus alternativas son PA9 (NC), PA15 (ETH_RST) y PB6 (I2C1_SCL). +- Temporizadores: ventilador PA6 = TIM3_CH1 y PPS PA7 = TIM3_CH2 comparten la base de tiempo de TIM3. La política del ventilador es ON/OFF (GPIO, `drogheda-fan-policy`), así que TIM3 queda libre para capturar el PPS. Si algún día se restaura el PWM del ventilador, marcar el tiempo del PPS por EXTI7 (contador de ciclos DWT). El arranque suave de PA1 usa TIM2_CH2 (libre). +- Colisiones EXTI (un puerto por línea, SYSCFG_EXTICR): **EXTI3** = PC3 RTK_STAT y PB3 CHRG_STAT; **EXTI9** = PB9 ACC_INT1 y PC9 MODEM_STATUS. Asignar EXTI9 al acelerómetro (despertar por movimiento) y sondear STATUS. Asignar EXTI3 a RTK_STAT solo si se quiere medir el parpadeo, y sondear CHRG_STAT. EXTI0 (ETH_INT), EXTI7 (PPS) y EXTI8 (SER_IRQ) son únicos. + +### 2.5 Pines que tocan al ZED-F9P (regla de retorno de corriente, lección 0.5.5/0.5.6) + +Mientras `PIN_GNSS_PWR` esté en BAJO: PA2 INPUT sin pull; PA10 sin pull (su pull-up interno es de 7–14 kΩ); PC7 sin pull-up; PC12 liberado (open-drain); PA7/PC3 sin pull-up; PC1/PC2 analógicos. **El camino de hardware U24 → /DOUT_4G → U18.26 no se puede corregir por firmware** salvo manteniendo el módem apagado siempre que el F9P esté apagado (D-01, Mayor, absorbe C-06). ▶ audit (corrección verificada): U27 = Nexperia 74LVC1G125GV **C12518** (Ioff ±2 µA) alimentado de /3V3_GNSS, OE̅ = GND, 100 nF C14663; Rdfu1 → 100 k C25803. Comprobación de banco: /3V3_GNSS < 0.3 V con PA1 en BAJO y el módem encendido. + +## 3. Arranque y depuración + +| Ítem | v6 | Veredicto | |---|---|---| -| BOOT0 | R98 10 k → GND at 3.65 mm; SW2 to 3V3 (silk "BOOT") | ✅ | -| BOOT1 / PB2 DFU trap | PB2 only on R99 10 k → GND (2.84 mm); ETH_INT on PC0 | ✅ (memory `drogheda-einarboard-30-mcu-integration`) | -| ROM DFU needs HSE | Y3 25 MHz is supported, but crystal placement and gm margin are poor | ⚠ D-02 | -| NRST | C104 100 nF (3.26 mm, DS10314 value) · SW1 (6 mm tact, NRST on the 6.5 mm pad pair, GND on the other) · P6 RESET-EXT (JST-XH, was P10 on V5) · TP5. Reaches only the MCU. | ✅ circuit / ⚠ no ESD at P6 (G-08) | -| SWD | TP3 SWDIO (6.04 mm), TP4 SWCLK (5.43 mm), TP5 NRST, TP6 GND (17.6 mm away), TP7 3V3. No header. SWO impossible (PB3 = CHRG_STAT). | ⚠ usable with clips; D-12 | -| USB DFU | PA11/PA12 → J11 (USB-C, CC 5.1 k ×2), D14/D15/D16 PESD5V0S1BA at 3.19 / 6.74 / 6.83 mm from J11; VBUS → D13 → AMS1117 (diode-OR with SYS5V via D12, no back-feed into SYS5V) | ✅ ECO E.5 (DFU part) met | -| HSE | Y3 C14872 YXC HC-49S 25 MHz, **CL 20 pF**, −20…+70 °C, with C113/C114 15 pF → CL_eff = 7.5 + (5…10) pF stray = 12.5–17.5 pF. Pads 8.32/11.30 mm edge (10.30/14.21 mm centre) from PH0/PH1 (target ≤ 5). | ❌ D-02 (Minor, verified) | -| LSE | Y4 C32346 Epson FC-135, **CL 12.5 pF, ESR 70 kΩ**, with 12 pF caps → CL_eff ≈ 9 pF. Pads 5.54/7.91 mm. | ⚠ D-03 | +| BOOT0 | R98 10 k → GND a 3.65 mm; SW2 a 3V3 (serigrafía «BOOT») | ✅ | +| BOOT1 / trampa DFU en PB2 | PB2 solo en R99 10 k → GND (2.84 mm); ETH_INT en PC0 | ✅ (memoria `drogheda-einarboard-30-mcu-integration`) | +| El DFU de ROM necesita HSE | Y3 25 MHz está soportado, pero la colocación del cristal y el margen de gm son pobres | ⚠ D-02 | +| NRST | C104 100 nF (3.26 mm, valor del DS10314) · SW1 (táctil 6 mm, NRST en el par de pads de 6.5 mm, GND en el otro) · P6 RESET-EXT (JST-XH, era P10 en V5) · TP5. Llega solo al MCU. | ✅ circuito / ⚠ sin ESD en P6 (G-08) | +| SWD | TP3 SWDIO (6.04 mm), TP4 SWCLK (5.43 mm), TP5 NRST, TP6 GND (a 17.6 mm), TP7 3V3. Sin header. SWO imposible (PB3 = CHRG_STAT). | ⚠ usable con pinzas; D-12 | +| USB DFU | PA11/PA12 → J11 (USB-C, CC 5.1 k ×2), D14/D15/D16 PESD5V0S1BA a 3.19 / 6.74 / 6.83 mm de J11; VBUS → D13 → AMS1117 (OR con SYS5V vía D12, sin retorno hacia SYS5V) | ✅ ECO E.5 (parte DFU) cumplida | +| HSE | Y3 C14872 YXC HC-49S 25 MHz, **CL 20 pF**, −20…+70 °C, con C113/C114 15 pF → CL_eff = 7.5 + (5…10) pF parásitos = 12.5–17.5 pF. Pads a 8.32/11.30 mm borde (10.30/14.21 mm centro) de PH0/PH1 (objetivo ≤ 5). | ❌ D-02 (Menor, verificado) | +| LSE | Y4 C32346 Epson FC-135, **CL 12.5 pF, ESR 70 kΩ**, con capacitores de 12 pF → CL_eff ≈ 9 pF. Pads a 5.54/7.91 mm. | ⚠ D-03 | -## 4. Specific signals +## 4. Señales específicas -- **CHRG_STAT PB3 / CHRG_FAULT PB4:** LTC4040 open-drain (abs max 6 V), R57/R58 100 k to /3V3 (always-on MCU rail, so no back-feed). ✅ **PFO** (U6.20) goes only to TP2, with no pull-up and no MCU pin. **RST** (U6.11) is unconnected. **CLPROG** goes only to TP1 (D-10). ▶ audit: PFO → PB10 (A-13); CLPROG stays on TP1 (no ADC pin left once PC5 takes the pack NTC). -- **IGN_SENSE:** 22 k / (22 k ∥ 3.3 k = 2.870 k) → ratio 0.1154 (±1 % parts: 0.1134–0.1174). Pin voltage: **12 V → 1.385 V** (1.30 V with the internal pull-down the V5 firmware enables), **24 V → 2.769 V**, **28 V → 3.231 V**, **36 V → 4.154 V open-circuit, clamped to ≈ 3.55 V** (BAT54 0.24 mA). 58 V: 1.2 mA clamp current; Rig1 dissipates 0.135 W (> 0.1 W 0603 rating, transient only). ADC full scale is reached at 28.6 V. Digital thresholds (DS10314 Table 53, production-tested VIL 0.3 VDD = 0.99 V, VIH 0.7 VDD = 2.31 V): a HIGH is guaranteed only above **20.0 V**. **A 12–14.4 V ignition sits in the undefined band.** Junction check: /IGN_SENSE = {Rig1.2, Rig2.1, Rigb1.1, C9.1, D5.2 (A), U16.21}, one net in the netlist and on the PCB (6 pads, 1 connected group, 14.2 mm F.Cu). **The V5.6 junction loss is not present on v6.** ✅ ▶ audit F-02 (Blocker): the raw `/IGN_IN` runs 106.47 mm on In2 at 0.221 mm from `/VEH5V`; moving Rig1 to P1.3 makes that run the current-limited `/IGN_SENSE` (≤ 1.4 mA at 36 V, 2.5 mA at 58 V); C9 at the MCU keeps τ = 0.25 ms. D-05 changes the ratio to 0.0833 if Rigb1 = 2.2 k. -- **Modem control:** PC10 → U20 EN (R113 100 k PD); PC8 → Q20 → PWRKEY (R114 PD); PC11 → Q21 → RESET (R115 PD); PC9 ← U24 ← STATUS 1.8 V. All default OFF or released in reset/DFU. ✅ -- **GNSS:** RESET_N PC12 with R105 10 k to /3V3_GNSS (open-drain drive) ✅; TIMEPULSE PA7 ✅; RTK_STAT PC3 ✅; ANT_DETECT/ANT_SHORT_N are receiver inputs with nothing to drive them (D-07). -- **Accelerometer INT1 (T11):** PB9 EXTI9, push-pull ✅. -- **NTC2:** PC4, R126 10 k/1 % + C157 100 nF (3.11 mm), P8 ✅. -- **USART6 PC6/PC7:** AF8 on both ✅. TX goes via K1 NO (Mode B only). RX goes via R106 100 Ω and is always connected. -- **ERC NC flags on U16.37/38 and U10.13/14:** cosmetic. All four pins are on their nets in the netlist (U16.37 ∈ /USART6_TX {K1.10}; U16.38 ∈ /USART6_RX {R106.2}; U10.13/14 ∈ /I2C_SCL/SDA), the PCB pads carry the same nets (IPC-356 verified) and all four nets are routed. The flags should still be deleted (D-11). +- **CHRG_STAT PB3 / CHRG_FAULT PB4:** open-drain del LTC4040 (máx. absoluto 6 V), R57/R58 100 k a /3V3 (riel del MCU siempre encendido, así que no hay retorno). ✅ PFO (U6.20) va solo a TP2, sin pull-up y sin pin del MCU. RST (U6.11) sin conexión. **CLPROG** va solo a TP1 (D-10). ▶ audit: PFO → PB10 (A-13); CLPROG se queda en TP1 (no queda pin ADC una vez que PC5 toma la NTC del paquete). +- **IGN_SENSE:** 22 k / (22 k ∥ 3.3 k = 2.870 k) → relación 0.1154 (partes ±1 %: 0.1134–0.1174). Voltaje en el pin: **12 V → 1.385 V** (1.30 V con el pull-down interno que habilita el firmware V5), **24 V → 2.769 V**, **28 V → 3.231 V**, **36 V → 4.154 V en circuito abierto, recortado a ≈ 3.55 V** (BAT54 0.24 mA). 58 V: 1.2 mA de corriente de clamp; Rig1 disipa 0.135 W (> 0.1 W del 0603, solo transitorio). La escala completa del ADC se alcanza a 28.6 V. Umbrales digitales (DS10314 tabla 53, probados en producción VIL 0.3 VDD = 0.99 V, VIH 0.7 VDD = 2.31 V): un ALTO está garantizado solo por encima de **20.0 V**. **Una ignición de 12–14.4 V queda en la banda indefinida.** Comprobación de unión: /IGN_SENSE = {Rig1.2, Rig2.1, Rigb1.1, C9.1, D5.2 (A), U16.21}, una sola net en la netlist y en la PCB (6 pads, 1 grupo conectado, 14.2 mm en F.Cu). **La pérdida de unión de la V5.6 no está presente en v6.** ✅ ▶ audit F-02 (Bloqueante): el `/IGN_IN` crudo corre 106.47 mm en In2 a 0.221 mm de `/VEH5V`; mover Rig1 a P1.3 convierte ese tramo en `/IGN_SENSE` limitado en corriente (≤ 1.4 mA a 36 V, 2.5 mA a 58 V); C9 en el MCU mantiene τ = 0.25 ms. D-05 cambia la relación a 0.0833 si Rigb1 = 2.2 k. +- Control del módem: PC10 → U20 EN (R113 100 k PD); PC8 → Q20 → PWRKEY (R114 PD); PC11 → Q21 → RESET (R115 PD); PC9 ← U24 ← STATUS 1.8 V. Todos apagados o liberados por omisión en reset/DFU. ✅ +- **GNSS:** RESET_N PC12 con R105 10 k a /3V3_GNSS (manejo open-drain) ✅; TIMEPULSE PA7 ✅; RTK_STAT PC3 ✅; ANT_DETECT/ANT_SHORT_N son entradas del receptor sin nada que las maneje (D-07). +- **INT1 del acelerómetro (T11):** PB9 EXTI9, push-pull ✅. +- **NTC2:** PC4, R126 10 k/1 % + C157 100 nF (3.11 mm), P8 ✅. +- **USART6 PC6/PC7:** AF8 en ambos ✅. TX va por K1 NO (solo Modo B). RX va por R106 100 Ω y siempre está conectado. +- **Banderas NC de ERC en U16.37/38 y U10.13/14:** cosméticas. Los cuatro pines están en sus nets en la netlist (U16.37 ∈ /USART6_TX {K1.10}; U16.38 ∈ /USART6_RX {R106.2}; U10.13/14 ∈ /I2C_SCL/SDA), los pads de la PCB llevan las mismas nets (verificado por IPC-356) y las cuatro nets están ruteadas. Las banderas deben borrarse de todos modos (D-11). -## 5. Firmware delta list — `board_v6.h` / FW 0.7.x +## 5. Lista de cambios de firmware — `board_v6.h` / FW 0.7.x -**Pins whose meaning changes vs V5:** PA1 (GNSS only), PA9 (gone), PA10 (RX-only tap, direct F9P), PB5 (K1 NO is now PC6), PA5 (read analog), PC1/PC2/PC3/PC4/PC6–PC12/PA7/PB9 (new), TMP102 and the PCF P7 reset (gone). +**Pines cuyo significado cambia respecto a V5:** PA1 (solo GNSS), PA9 (desaparece), PA10 (derivación solo RX, F9P directo), PB5 (el NO de K1 ahora es PC6), PA5 (leer analógico), PC1/PC2/PC3/PC4/PC6–PC12/PA7/PB9 (nuevos), TMP102 y el reset por P7 del PCF (desaparecen). -**New peripherals to initialise:** USART6 (PC7 RX, PC6 TX, 115200, AT + RTCM byte counter); USART1 RX-only on PA10; TIM3_CH2 capture or EXTI7 on PA7 (PPS); EXTI9 on PB9 and the SC7A20 at 0x18 (LIS3DH-compatible: CTRL_REG1/3, INT1_CFG/THS/DURATION); ADC channels IN5 (IGN) and IN14 (NTC2); LSE in high-drive mode (`LSEMOD`) with an LSI fallback for the RTC wake; W5500 as V5. +Periféricos nuevos por inicializar: USART6 (PC7 RX, PC6 TX, 115200, AT + contador de bytes RTCM); USART1 solo RX en PA10; captura TIM3_CH2 o EXTI7 en PA7 (PPS); EXTI9 en PB9 y el SC7A20 en 0x18 (compatible LIS3DH: CTRL_REG1/3, INT1_CFG/THS/DURATION); canales ADC IN5 (IGN) e IN14 (NTC2); LSE en modo de alto drive (`LSEMOD`) con respaldo LSI para el despertar por RTC; W5500 como en V5. -**Default LOW as the very first lines of `setup()`** (before any delay or USB init): PC10 MODEM_PWR_EN, PC8 PWRKEY, PC11 MODEM_RST, PA1 GNSS_PWR, PB5 BYP_CTRL, **PA15 ETH_RST** (it comes out of reset pulled HIGH by JTDI; the 4.7 k of E-02 holds it low until then), PA6 FAN, PB0 EXT_LED, and **PD2 ETH_PWR_EN** if E-01 is adopted. PA8 CHRG_EN is owned by the governor (HIGH until it decides). +**En BAJO por omisión en las primerísimas líneas de `setup()`** (antes de cualquier delay o inicialización de USB): PC10 MODEM_PWR_EN, PC8 PWRKEY, PC11 MODEM_RST, PA1 GNSS_PWR, PB5 BYP_CTRL, **PA15 ETH_RST** (sale del reset en ALTO por el pull-up JTDI; el 4.7 k de E-02 lo mantiene bajo hasta entonces), PA6 FAN, PB0 EXT_LED y **PD2 ETH_PWR_EN** si se adopta E-01. PA8 CHRG_EN pertenece al gobernador (ALTO hasta que decida). -**New inputs if the audit fixes are adopted:** PB10 PFO (EXTI10 falling, A-13); PC5 ADC1_IN15 pack NTC, ratio 120/220 (F-51); TMP102 at 0x48 (F-51) and optionally 0x49 (F-52); PC2 antenna-short fault from the TPS2552 (C-01). +Entradas nuevas si se adoptan las correcciones de la auditoría: PB10 PFO (EXTI10 flanco de bajada, A-13); PC5 ADC1_IN15 NTC del paquete, relación 120/220 (F-51); TMP102 en 0x48 (F-51) y opcionalmente 0x49 (F-52); PC2 falla de corto de antena desde el TPS2552 (C-01). -**Leave hi-Z / analog:** PA9, PB10, PC5, PD2 (unless E-01 / A-13 / F-51 are adopted, which take PD2 / PB10 / PC5), PC1, PC2; all F9P-facing pins while the F9P is off (§2.5); PC7/PC9 while the modem is off (PC9 with pull-down). +Dejar en alta impedancia / analógico: PA9, PB10, PC5, PD2 (salvo que se adopten E-01 / A-13 / F-51, que toman PD2 / PB10 / PC5), PC1, PC2; todos los pines hacia el F9P mientras el F9P esté apagado (§2.5); PC7/PC9 mientras el módem esté apagado (PC9 con pull-down). -**Open-drain:** PC12. The PC8/PC11 drivers are external FETs, so the MCU pins are push-pull. +Open-drain: PC12. Los drivers de PC8/PC11 son FET externos, así que los pines del MCU son push-pull. -**Sequencing:** PA1 HIGH → ≥ 4 s → PC10 HIGH → 100 ms → PC8 pulse HIGH ≥ 50 ms → wait PC9 HIGH (≈ 11.2 s) or AT `RDY` → work → AT power-off or PC8 HIGH ≥ 2.5 s → PC10 LOW → PA1 LOW. **Never** leave PC10 HIGH with PA1 LOW (D-01) unless the D-01 hardware fix is fitted. Any MCU reset power-cycles the modem (R113) and the F9P (PA1 floats), so recovery logic must assume a cold modem after every reset. +Secuencia: PA1 ALTO → ≥ 4 s → PC10 ALTO → 100 ms → pulso PC8 ALTO ≥ 50 ms → esperar PC9 ALTO (≈ 11.2 s) o `RDY` por AT → trabajo → apagado por AT o PC8 ALTO ≥ 2.5 s → PC10 BAJO → PA1 BAJO. **Nunca** dejar PC10 en ALTO con PA1 en BAJO (D-01) salvo que esté montada la corrección de hardware de D-01. Cualquier reset del MCU apaga y enciende el módem (R113) y el F9P (PA1 flota), así que la lógica de recuperación debe asumir un módem frío después de cada reset. + +Borrador del encabezado: -**Draft header:** ```c // board_v6.h — EinarBoard v6 (hbox-watchdog-v6), STM32F411RET6 LQFP64 #define HBOX_BOARD_NAME "EinarBoard v6 (HBOX v6)" @@ -223,3 +237,15 @@ While `PIN_GNSS_PWR` is LOW: PA2 INPUT no-pull; PA10 no pull (its internal pull- // #define I2C_ADDR_TMP102_MODEM 0x49 // F-52 option // PA9 stays spare (D-12 test pad); board-ID strap (D-08) pin unresolved ``` + +Ver también: [manual v6](../manuales/manual-tarjeta-v6.md) · [auditoría completa v6](v6-auditoria-completa.md) · [informe de cambios al esquemático v6](v6-cambios-esquematico.md) · [revisión contra lecciones V5.5](v6-revision-lecciones-v55.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-28 | Mapa de pines de la auditoría v6, republicado con 7 correcciones editoriales (inglés). | +| 1.1 | 2026-09-29 | Prosa y encabezados en español; tabla y borrador de `board_v6.h` sin cambios. | + +??? note "Anexo técnico — trazabilidad" + Snapshot: sch `ecee9fed…` / pcb `6ddec80d…` (paquete de evidencia 2026-09-28). Los archivos `evidence/*.csv` citados arriba están en `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/`. diff --git a/03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md b/03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md index 1599d9b..1ba9d8b 100644 --- a/03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md +++ b/03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md @@ -1,196 +1,136 @@ --- -title: Watchdog v3 — Proto Bench Bring-up & Build-Readiness (DEV board) -tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bring-up, readiness] -project: Project Drogheda -author: Helgen CTO +title: "Watchdog v3 — Preparación y bring-up del prototipo en protoboard" +tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bring-up, readiness, historico] date: 2026-06-24 -status: Active — tomorrow's bench guide (supersedes the procedure half of watchdog-protoboard-bringup.md for v3) +project: Project Drogheda +author: Helgen Technologies +status: HISTÓRICO — guía de banco del 25-jun-2026 (sustituyó la mitad de procedimiento de la lista de compras para v3) --- -# Watchdog v3 — Proto Build Readiness & Bench Bring-up +# Watchdog v3 — Preparación y bring-up del prototipo en protoboard -> **Scope:** breadboard the **DEV** watchdog on the existing Blackpill and prove the state -> machine + sensing + load switch + fan/temp loop. **PCB layout is explicitly out of scope -> for tomorrow** (do it after the proto works). Authority: [[watchdog-electrical-design-state]] -> (canonical) · firmware `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) · -> schematic `kicad/hbox-watchdog-v3.kicad_sch`. +Tarjeta: V3 en protoboard (prototipo DEV sobre Blackpill, antes de la EinarBoard 1.0). -> **⚠ UPDATE 2026-07-03 — sensor suite changed to parts in hand.** Proto sensors are now -> **AHT10** (0x38, I²C1 **alone**, 3V3) + **LM35 → PA7** + **NTC → PB1** (no SHT40/TMP102 on -> proto — PCB-only). The kit's TP4056 has **no TEMP pin** → charge cutoff is **PA8 `CHRG_RUN`** -> (IRF9540N on TP4056 IN+, **inverted vs PROD CHRG_EN**). Cutoff switch wired: nodo SYS → SPST -> → MAIN5V. **The fan in hand is 2-wire** → PB10 tach test drops. §1/§3 rows below are patched; -> the authoritative wiring = ledger xlsx + `Drogheda_Guia-Conexion-Protoboard_ES_v2.2.pdf`. -> **Firmware v2.3 still reads SHT40 (0x44)** — the AHT10 driver / LM35 channel / CHRG_RUN flag -> are a pending firmware pass; until then the I²C and charge-cut rows are wire-now/test-later. +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: ingeniería (banco QRO) + - Cuándo: documento histórico — bring-up del prototipo en protoboard del watchdog v3 (jun-2026), antes de la primera PCB. El paso siguiente fue el [bring-up de la EinarBoard 1.0](einarboard-1.0-bringup.md) + - Tiempo: un día de banco + - Necesitas: la [lista de compras del protoboard](historico-protoboard.md), Blackpill, fuente de 5 V, multímetro, fuente de calor ---- +Traducido del original en inglés (24-jun-2026, actualizado 03-jul-2026). -## 0. Verdict — are you ready to build? **Yes, with three caveats** +Alcance: armar en protoboard el watchdog DEV sobre el Blackpill existente y probar la máquina de estados + sensado + interruptor de carga + lazo ventilador/temperatura. El layout de la PCB queda explícitamente fuera del alcance (se hace después de que el prototipo funcione). Autoridad: `watchdog-electrical-design-state` (canónico, repo) · firmware `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) · esquemático `kicad/hbox-watchdog-v3.kicad_sch`. -You can build and bring up the **core watchdog** tomorrow. Nothing about the schematic or its -ERC state blocks a breadboard build. The caveats are about *firmware coverage* and *scope -discipline*, not readiness: +!!! warning "Actualización 2026-07-03 — el conjunto de sensores cambió a las partes en mano" + Los sensores del prototipo ahora son **AHT10** (0x38, I²C1 solo, 3V3) + **LM35 → PA7** + **NTC → PB1** (sin SHT40/TMP102 en el prototipo — solo en PCB). El TP4056 del kit **no tiene pin TEMP** → el corte de carga es **PA8 `CHRG_RUN`** (IRF9540N en IN+ del TP4056, **invertido respecto a `CHRG_EN` de PROD**). Interruptor de corte cableado: nodo SYS → SPST → MAIN5V. **El ventilador en mano es de 2 hilos** → la prueba de tacómetro en PB10 se elimina. Las filas de §1/§3 están parchadas; el cableado autoritativo = libro de conexiones xlsx + `Drogheda_Guia-Conexion-Protoboard_ES_v2.2.pdf`. **El firmware v2.3 todavía lee el SHT40 (0x44)** — el driver del AHT10, el canal LM35 y la bandera CHRG_RUN quedaron pendientes de un pase de firmware; hasta entonces las filas de I²C y corte de carga son «cablear ahora / probar después». -1. **ERC "issues" are cosmetic — not a blocker.** File-based ERC on `hbox-watchdog-v3.kicad_sch` - = **0 errors, 1 warning** (a `Q_NPN_BCE` symbol-cache mismatch). The ground net is unified - (4 `GND` symbols, **0** placed `GNDREF` instances — the GNDREF you may see is just an orphaned - library-cache entry, not a real second ground). None of this affects a breadboard. *(Clean it - only before you go to PCB layout — see §2.)* -2. **Two v3 sub-circuits aren't in firmware yet.** The flashed v2.3 build does **not** drive the - 4-LED battery gauge (PB12–15) or `CHRG_EN` (PA8). You can wire them, but they'll sit dark/idle - until a firmware pass. Decide per §4 whether to build them now or defer. -3. **v2.3 has never been hardware-validated.** Repo invariant: *bench-test before flash.* - Tomorrow is its first real bench test — treat step 1 (flash + confirm telemetry) as the gate - before trusting any later step. +## 0. Veredicto: se puede construir, con tres salvedades -**The one thing I couldn't verify:** your exact purchased parts. The two proto BOM `.xlsx` -(`watchdog-protoboard-BOM-3boards.xlsx`, `watchdog-LISTA-DE-COMPRAS-ES.xlsx`) are locked open in -LibreOffice, so I rebuilt the checklist (§3) from the design docs. Close LibreOffice and I'll diff -your actual list against it. +Se puede construir y arrancar el núcleo del watchdog. Nada del esquemático ni de su estado de ERC bloquea un armado en protoboard. Las salvedades son de *cobertura de firmware* y *disciplina de alcance*, no de preparación: ---- +1. **Los «problemas» de ERC son cosméticos — no bloquean.** ERC sobre el archivo `hbox-watchdog-v3.kicad_sch` = **0 errores, 1 aviso** (un símbolo `Q_NPN_BCE` que no coincide con la caché). La red de tierra está unificada (4 símbolos `GND`, **0** instancias `GNDREF` colocadas — el GNDREF que se ve es solo una entrada huérfana de la caché de librería, no una segunda tierra real). Nada de esto afecta al protoboard. *(Limpiarlo solo antes de pasar al layout — ver §2.)* +2. **Dos subcircuitos de v3 todavía no están en firmware.** El build v2.3 flasheado **no** maneja el indicador de batería de 4 LEDs (PB12–15) ni `CHRG_EN` (PA8). Se pueden cablear, pero quedarán apagados hasta un pase de firmware. Decidir según §4 si se arman ahora o después. +3. **v2.3 nunca se ha validado en hardware.** Invariante del repositorio: *probar en banco antes de flashear.* Este es su primer banco real — tratar el paso 1 (flash + confirmar telemetría) como la compuerta antes de confiar en cualquier paso posterior. -## 1. What you can prove tomorrow (firmware v2.3 supports it) vs. not +**Lo que no se pudo verificar:** las partes compradas exactas. Los dos BOM del prototipo en `.xlsx` (`watchdog-protoboard-BOM-3boards.xlsx`, `watchdog-LISTA-DE-COMPRAS-ES.xlsx`) estaban abiertos en LibreOffice, así que el checklist (§3) se reconstruyó desde los documentos de diseño; se compara con la lista real al cerrarlos. -| Sub-circuit | Pins | v2.3 firmware | Testable tomorrow? | +## 1. Qué se puede probar (el firmware v2.3 lo soporta) y qué no + +| Subcircuito | Pines | Firmware v2.3 | ¿Se prueba? | |---|---|---|---| -| Boot + `$PHLG`/STREAM telemetry (USB) | USB-C | ✅ `ENABLE_PHLG=1` | **Yes** — this is the gate | -| Status LED (blink codes) | PB0 | ✅ | **Yes** | -| **RTK-stack load switch** (the recovery heart) | PA1 → 2N3904 → IRF9540 | ✅ OFF-at-reset, MCU-asserts-ON | **Yes** | -| Sense: battery / 5 V / ignition | PA0 / PA4 / PA5 | ✅ hysteresis + debounce | **Yes** | -| Smart fan (PWM) | PA6 · *(PB10 tach = DNP, fan in hand is 2-wire)* | ✅ 25 kHz PWM · RPM/stall **n/a** | **Yes** (PWM ramp; no tach) | -| I²C temp/RH — **AHT10 0x38, alone on the bus** [2026-07-03] | PB6/PB7 | ❌ v2.3 reads SHT40 0x44 → **AHT10 driver pending** (+ MCU-temp fallback works) | wire OK, **reads after firmware patch** | -| Analog temp ×2 — NTC→PB1 + **LM35→PA7** [2026-07-03] | PB1 / PA7 | ❌ channels not coded | wire OK, verify with multimeter meanwhile | -| 4-LED battery gauge | PB12–15 | ❌ not coded | wire OK, **stays dark** | -| Temp-qualified charge cut — **`CHRG_RUN`** [2026-07-03] | PA8 → 2N3904 → IRF9540N on TP4056 IN+ | ❌ not coded (**inverted vs PROD `CHRG_EN`** — needs flag) | wire OK; hand-test by jumpering PA8 high/low | -| Reset (hardware) | NRST | n/a (HW only) | **Yes** — button just works | +| Arranque + telemetría `$PHLG`/STREAM (USB) | USB-C | ✅ `ENABLE_PHLG=1` | Sí — es la compuerta | +| LED de estado (códigos de parpadeo) | PB0 | ✅ | Sí | +| Interruptor de carga de la etapa RTK (el corazón de la recuperación) | PA1 → 2N3904 → IRF9540 | ✅ OFF al reset, el MCU lo enciende | Sí | +| Sensado: batería / 5 V / ignición | PA0 / PA4 / PA5 | ✅ histéresis + debounce | Sí | +| Ventilador inteligente (PWM) | PA6 · *(PB10 tacómetro = DNP, el ventilador en mano es de 2 hilos)* | ✅ PWM 25 kHz · RPM/atasco n/a | Sí (rampa PWM; sin tacómetro) | +| Temperatura/HR por I²C — **AHT10 0x38, solo en el bus** [2026-07-03] | PB6/PB7 | ❌ v2.3 lee SHT40 0x44 → **driver AHT10 pendiente** (+ el respaldo de temperatura del MCU funciona) | cablear OK, lee después del parche de firmware | +| Temperatura analógica ×2 — NTC→PB1 + **LM35→PA7** [2026-07-03] | PB1 / PA7 | ❌ canales no codificados | cablear OK, verificar con multímetro mientras tanto | +| Indicador de batería de 4 LEDs | PB12–15 | ❌ no codificado | cablear OK, queda apagado | +| Corte de carga por temperatura — **`CHRG_RUN`** [2026-07-03] | PA8 → 2N3904 → IRF9540N en IN+ del TP4056 | ❌ no codificado (**invertido respecto a `CHRG_EN` de PROD** — necesita bandera) | cablear OK; probar a mano puenteando PA8 alto/bajo | +| Reset (hardware) | NRST | n/a (solo HW) | Sí — el botón simplemente funciona | -**Fan note [updated 2026-07-03]:** the fan in hand is **2-wire** → no tach; PB10 stays DNP and -v2.3's RPM/stall check reads nothing (harmless). Fan-fault will be inferred from temperature in -the firmware pass. PWM drive on PA6 through the IRLZ44N tests exactly the same. +**Nota del ventilador [actualizada 2026-07-03]:** el ventilador en mano es de **2 hilos** → sin tacómetro; PB10 queda DNP y la comprobación de RPM/atasco de v2.3 no lee nada (inofensivo). La falla de ventilador se inferirá por temperatura en el pase de firmware. El manejo PWM en PA6 a través del IRLZ44N se prueba exactamente igual. ---- +## 2. La situación del ERC -## 2. The ERC situation (so you can stop worrying about it tonight) +- Lo que ERC reporta en el archivo DEV: 0 errores, 1 aviso (`Q_NPN_BCE` no encontrado en la librería `Device`). Ese aviso significa que el símbolo del esquemático viene de la caché del proyecto y la librería `Device` instalada tiene un nombre/pines ligeramente distintos — puramente cosmético, de enlace de librería. +- El GNDREF: **no hay símbolos GNDREF colocados** — solo la *definición* sobrante en la caché embebida. La tierra es una sola red. +- **Por qué no bloquea el protoboard:** ERC valida una *netlist para fabricación*. En protoboard todas las tierras se unen físicamente; la colocación fuera de rejilla y un nombre de caché distinto son invisibles para el cobre que se cablea a mano. +- Antes del layout (después), limpiar en KiCad: Tools → *Update Symbols from Library* (quita el aviso de caché de `Q_NPN_BCE`), después *Annotate* y volver a correr ERC; mover cualquier parte fuera de rejilla a la rejilla de 1.27 mm. No editar el esquemático por script mientras KiCad lo tiene abierto (conflicto de bloqueo de archivo). -- **What ERC actually reports on the DEV file:** 0 errors, 1 warning (`Q_NPN_BCE` not found in - lib `Device`). That warning means the symbol in your schematic is from the project cache and the - installed `Device` lib has a slightly different name/pins — **purely a library-link cosmetic**. -- **The GNDREF you may have seen:** there are **no placed GNDREF symbols** — only the leftover - symbol *definition* in the embedded cache. Your ground is one net. -- **Why it doesn't block the breadboard:** ERC validates a *netlist for fabrication*. On a - breadboard you tie all grounds together physically; off-grid placement and a cache-name mismatch - are invisible to copper you wire by hand. -- **Before PCB layout (later), clean these in KiCAD:** Tools → *Update Symbols from Library* - (clears the `Q_NPN_BCE` cache warning), then *Annotate* and re-run ERC; nudge any off-grid parts - onto the 1.27 mm grid. **Don't let me edit the schematic while you have KiCAD open** (file-lock - conflict) — close it first and I'll do the cleanup pass. +## 3. Checklist de partes antes de armar (reconstruido — confirmar contra la caja) ---- +**Ya se tiene (no comprar):** Blackpill STM32F411, cable USB-C, 18650 + PowerBoost (o fuente de banco), Mean Well SD-15B-05 (o 5 V de banco), multímetro, una fuente de calor (secadora / taza de agua caliente) para la prueba del ventilador. *F9P + 4G master NO se necesitan para este bring-up.* -## 3. Pre-build parts checklist (reconstructed — confirm against your box) +Núcleo (los «cerebros» — indispensable): -**Already have (don't buy):** Blackpill STM32F411, USB-C cable, 18650 + PowerBoost (or bench PSU), -Mean Well SD-15B-05 (or bench 5 V), multimeter, a heat source (hair-dryer/cup of hot water) for the -fan test. *F9P + 4G master are NOT needed for this bring-up.* +- [ ] Protoboard ×2 (830 puntos) + kits de jumpers (M-M y M-F) +- [ ] Surtido de resistencias incl. **330 Ω, 1 k, 4.7 k, 10 k, 100 k, 220 Ω** +- [ ] **2N3904** ×3 (driver del interruptor de carga, TO-92) +- [ ] **IRF9540 / IRF9540N** ×2 (P-FET lado alto para 5 V, TO-220) +- [ ] LED ×5 (estado) · **100 nF** cerámico ×10 (filtros ADC/desacoplo) · 100 µF ≥ 16 V ×4 (bulk) +- [ ] **Potenciómetro de 10 kΩ** ×2 + botón táctil/interruptor deslizante ×2 (barrer VBAT / simular ignición) +- [ ] Tira de header macho 1×40 (para pinar cualquier módulo sin pines) -**Core (the "brains" — must-have):** +**Térmico (nuevo en v3):** -- [ ] Breadboard ×2 (830-pt) + jumper kits (M-M and M-F) -- [ ] Resistor assortment incl. **330 Ω, 1 k, 4.7 k, 10 k, 100 k, 220 Ω** -- [ ] **2N3904** ×3 (load-switch driver, TO-92) -- [ ] **IRF9540 / IRF9540N** ×2 (P-FET high-side 5 V switch, TO-220) -- [ ] LED ×5 (status) · **100 nF** ceramic ×10 (ADC filters/decoupling) · 100 µF ≥16 V ×4 (bulk) -- [ ] **10 kΩ trim pot** ×2 + tactile button/slide switch ×2 (sweep VBAT / simulate ignition) -- [ ] Male header strip 1×40 (to pin any bare module) +- [x] Ventilador 5 V, 40–60 mm — **2 hilos, en mano** [2026-07-03] (sin tacómetro; PB10 DNP) +- [ ] **IRLZ44N** ×2 (N-FET de nivel lógico, lado bajo del ventilador) — *un IRF540/IRFZ44 común no enciende con 3.3 V; si no hay IRLZ44N usar 2N2222A/TIP120 + 1 kΩ en base* +- [ ] **1N5819** ×3 (flyback del ventilador; 1N4007 aceptable) +- [x] Breakout I²C **AHT10** (0x38) — en mano [2026-07-03]; **solo en el bus**, 3V3 únicamente; parche de lectura de firmware pendiente (v2.3 habla SHT40) +- [x] **LM35** (TO-92) — en mano [2026-07-03]; temperatura analógica #2 en **PA7**, alimentado de 5 V -**Thermal (v3 new):** +**Adiciones de v3 (armar solo si se quieren cableadas ahora — ver §4):** -- [x] 5 V fan, 40–60 mm — **2-wire, in hand** [2026-07-03] (no tach; PB10 DNP) -- [ ] **IRLZ44N** ×2 (logic-level N-FET, fan low-side) — *plain IRF540/IRFZ44 won't turn on from - 3.3 V; if out of IRLZ44N use 2N2222A/TIP120 + 1 kΩ base* -- [ ] **1N5819** ×3 (fan flyback; 1N4007 acceptable) -- [x] I²C **AHT10** breakout (0x38) — **in hand** [2026-07-03]; **alone on the bus**, 3V3 only; - firmware read patch pending (v2.3 speaks SHT40) -- [x] **LM35** (TO-92) — **in hand** [2026-07-03]; analog temp #2 on **PA7**, powered from 5 V +- [ ] Reset: botón táctil → NRST↔GND (+ header de 2 pines opcional para reset externo) +- [ ] Indicador de batería: **4× LED + 4× 330 Ω** en PB12–15 *(quedan apagados hasta el firmware)* +- [ ] Sustituto del respaldo de batería: módulo **TP4056** + boost **MT3608** + **2× 1N5819** (OR-ing) *(reproduce carga / pérdida de energía→respaldo / BAT_SENSE)*. **[2026-07-03]** El TP4056 del kit **no tiene pin TEMP** → la NTC de 10 kΩ del cargador no se usa; el corte por temperatura ahora está en el prototipo en hardware: PA8 `CHRG_RUN` → 1 k → 2N3904 → IRF9540N (pull-up 10 k) en IN+ del TP4056 (ALTO = carga; sin MCU = sin carga — invertido respecto a PROD). Más el interruptor de corte: nodo SYS → SPST → MAIN5V (corta vehículo y batería) -**v3 additions (build only if you want them wired now — see §4):** +## 4. Decisión antes de sentarse: cuánto de v3 cablear -- [ ] Reset: tactile button → NRST↔GND (+ optional 2-pin header for external reset) -- [ ] Battery gauge: **4× LED + 4× 330 Ω** on PB12–15 *(will stay dark until firmware)* -- [ ] Battery-backup stand-in: **TP4056** module + **MT3608** boost + **2× 1N5819** (OR-ing) - *(reproduces charge / power-loss→backup / BAT_SENSE)*. **[2026-07-03]** The kit's TP4056 has - **no TEMP pin** → the 10 kΩ charger-NTC is unused; the temp-qualified cutoff **is now on the - proto in hardware**: PA8 `CHRG_RUN` → 1 k → 2N3904 → IRF9540N (10 k pull-up) on TP4056 IN+ - (HIGH = charge; MCU absent = no charge — inverted vs PROD). Plus the **cutoff switch**: - nodo SYS → SPST → MAIN5V (kills vehicle **and** battery) +- Recomendado — armar el núcleo probable + térmico (todo lo marcado *Sí* en §1). Prueba toda la lógica del watchdog y el nuevo lazo ventilador/temperatura, que es el objetivo del prototipo. Añadir el botón de reset (gratis — funciona sin firmware). +- **Indicador (PB12–15):** cablearlo si se quiere el layout/sensación, pero no encenderá hasta que exista el driver del indicador. *Más barato añadirlo después.* +- **Sustituto del respaldo de batería (TP4056+MT3608):** vale la pena si se quiere observar específicamente la transferencia pérdida de energía → respaldo y que `BAT_SENSE` siga a la celda. Omitir si el día es solo para la lógica del watchdog. ---- +## 5. Secuencia de bring-up (correr en orden — cada paso habilita el siguiente) -## 4. Decision before you sit down: how much of v3 to wire +1. **Solo USB — flashear y compuerta.** Compilar v2.3 (Arduino IDE / STM32duino, tarjeta = Blackpill F411CE), flashear por DFU (mantener BOOT0). Abrir serie a 115200. **Confirmar líneas `BOOT` / `COLS` / `TLM` y un `$PHLG,...*CS` cada 30 s.** Si falla, detenerse y corregir el firmware antes de cablear nada. +2. LED de estado — PB0 → 330 Ω → LED → GND. Observar que los códigos de parpadeo cambien con el estado. +3. Interruptor de carga (el corazón de la recuperación) — PA1 → 1 kΩ → base del 2N3904; colector → gate del IRF9540; 10 kΩ gate→5 V; drain → 5 V conmutado; poner un LED+330 Ω en la salida conmutada. **Confirmar: OFF al reset, ON cuando PA1 lo pide.** (Apagado es el estado seguro.) +4. Divisores de sensado — 10 k/10 k ÷2 hacia **PA0** (batería vía 18650/pot) y **PA4** (riel 5 V); pot de 10 kΩ hacia **PA5** (ignición). Barrer y observar que `veh`/`ign`/`vbat` cambien en TLM con histéresis (V5V_ON 4.20 / V5V_OFF 3.80; BAT_CRIT 3.40 / BAT_REC 3.70). +5. Ventilador + tacómetro — PA6 → 220 Ω → gate del IRLZ44N; ventilador(−) en el drain; 1N5819 ∥ ventilador; 100 kΩ gate→GND. Tacómetro de 3 hilos → pull-up 10 kΩ a 3V3 → PB10. Verlo girar/rampar; **desconectar el ventilador → `fan_fault`** en telemetría. +6. Temperatura I²C — SHT40/TMP102 en PB6/PB7 (+4.7 kΩ pull-up cada uno). Calentarlo → el ventilador rampa en la curva 45→70 °C. *¿Sin sensor? El respaldo de temperatura del MCU también rampa el ventilador — calentar toda la tarjeta.* +7. (Opcional) botón de reset — NRST↔GND momentáneo; presionar → reinicio limpio, línea de causa de reset en el log. +8. (Opcional) sustituto del respaldo de batería — 5 V del vehículo → IN del TP4056; celda en BAT del TP4056; TP4056/celda → MT3608 → 5 V vía OR-ing 1N5819 al riel; NTC junto a la celda. Quitar los 5 V del vehículo → observar que el respaldo sostenga el riel y `BAT_SENSE` siga. -- **Recommended for tomorrow — build the testable core + thermal** (everything in §1 marked - *Yes*). It proves the whole watchdog logic and the new fan/temp loop, which is the point of the - proto. Add the **reset button** (free — works with no firmware). -- **Gauge (PB12–15):** wire it if you want the layout/feel, but it won't light until I write the - gauge driver. *Cheaper to add later.* — **I can write that firmware pass tonight/tomorrow if you - want the LEDs live.** -- **Battery-backup stand-in (TP4056+MT3608):** worth wiring if you specifically want to watch - power-loss → backup hand-off and `BAT_SENSE` track the cell. Skip if tomorrow is about the - watchdog logic only. - ---- - -## 5. Bring-up sequence (run in order — each step gates the next) - -1. **USB only — flash & gate.** Compile v2.3 (Arduino IDE / STM32duino, board = Blackpill F411CE), - flash via DFU (hold BOOT0). Open serial @115200. **Confirm `BOOT` / `COLS` / `TLM` lines and a - `$PHLG,...*CS` every 30 s.** If this fails, stop and fix firmware before wiring anything. -2. **Status LED** — PB0 → 330 Ω → LED → GND. Watch blink codes change with state. -3. **Load switch (the recovery heart)** — PA1 → 1 kΩ → 2N3904 base; collector → IRF9540 gate; - 10 kΩ gate→5 V; drain → switched 5 V; put an LED+330 Ω on the switched output. - **Confirm: OFF at reset, ON when PA1 asserts.** (Power-off is the safe state.) -4. **Sense dividers** — 10 k/10 k ÷2 into **PA0** (battery via 18650/pot) and **PA4** (5 V rail); - 10 kΩ pot into **PA5** (ignition). Sweep and watch `veh`/`ign`/`vbat` flip in TLM with - hysteresis (V5V_ON 4.20 / V5V_OFF 3.80; BAT_CRIT 3.40 / BAT_REC 3.70). -5. **Fan + tach** — PA6 → 220 Ω → IRLZ44N gate; fan(−) at the drain; 1N5819 ∥ fan; 100 kΩ - gate→GND. 3-wire tach → 10 kΩ pull-up to 3V3 → PB10. Watch it spin/ramp; **unplug fan → - `fan_fault`** in telemetry. -6. **I²C temp** — SHT40/TMP102 on PB6/PB7 (+4.7 kΩ pull-ups each). Heat it → fan ramps on the - 45→70 °C curve. *No sensor? The MCU-temp fallback still ramps the fan — warm the whole board.* -7. **(Optional) reset button** — NRST↔GND momentary; press → clean reboot, reset-cause line in log. -8. **(Optional) battery-backup stand-in** — vehicle 5 V → TP4056 IN; cell on TP4056 BAT; TP4056/cell - → MT3608 → 5 V via 1N5819 OR-ing into the rail; NTC by the cell. Pull vehicle 5 V → watch backup - hold the rail and `BAT_SENSE` track. - ---- - -## 6. Wiring cheat-sheet (Blackpill side, v3) +## 6. Hoja de cableado (lado Blackpill, v3) ``` -PA0 ← BAT ÷2 (10k/10k) from 18650+ / pot PA6 → 220Ω → IRLZ44N gate; fan(−); 1N5819 ∥ fan -PA4 ← 5V ÷2 (10k/10k) from 5V rail PB10 ← fan tach, 10k pull-up → 3V3 -PA5 ← IGN ÷2 (10k/10k) from pot/switch PB6/PB7 → I²C SCL/SDA (+4.7k each → 3V3) -PA1 → 1k → 2N3904 base; collector → IRF9540 PB0 → 330Ω → LED → GND - gate; 10k gate→5V; drain → switched 5V NRST ← reset button → GND (optional) - → stack (LED+330Ω as a test load) PB12–15 → 330Ω → LED → GND (gauge; dark till FW) -GND / 5V / 3V3 rails common. Fan 5V from a SEPARATE 5V (2nd PSU / LM2596) — not the switched stack rail. +PA0 ← BAT ÷2 (10k/10k) desde 18650+ / pot PA6 → 220Ω → gate IRLZ44N; ventilador(−); 1N5819 ∥ ventilador +PA4 ← 5V ÷2 (10k/10k) desde riel 5V PB10 ← tacómetro, pull-up 10k → 3V3 +PA5 ← IGN ÷2 (10k/10k) desde pot/interruptor PB6/PB7 → I²C SCL/SDA (+4.7k cada uno → 3V3) +PA1 → 1k → base 2N3904; colector → gate IRF9540 PB0 → 330Ω → LED → GND + ; 10k gate→5V; drain → 5V conmutado NRST ← botón de reset → GND (opcional) + → etapa (LED+330Ω como carga de prueba) PB12–15 → 330Ω → LED → GND (indicador; apagado hasta FW) +Rieles GND / 5V / 3V3 comunes. 5 V del ventilador desde una fuente de 5 V SEPARADA (2ª fuente / LM2596) — no del riel conmutado de la etapa. ``` -> **Proto↔PCB part map (don't get confused):** the schematic uses SMD equivalents (Q1 **AO3401A** -> P-FET, Q5 **MMBT3904**, Q2 **AO3400A** fan FET). On the breadboard you use the through-hole -> stand-ins above (**IRF9540N / 2N3904 / IRLZ44N**) — same topology, same firmware. +!!! note "Mapa de partes prototipo↔PCB (para no confundirse)" + El esquemático usa equivalentes SMD (Q1 **AO3401A** P-FET, Q5 **MMBT3904**, Q2 **AO3400A** FET del ventilador). En el protoboard se usan los sustitutos through-hole de arriba (**IRF9540N / 2N3904 / IRLZ44N**) — misma topología, mismo firmware. ---- +## 7. Después de que el prototipo funcione — siguientes pasos -## 7. After the proto works — next steps (not tomorrow) +- Pase de firmware: driver del indicador de LEDs (PB12–15 desde `BAT_SENSE`) + lógica `CHRG_EN` de corte de carga en caliente. +- KiCad: limpieza cosmética de ERC → huellas → después layout de PCB (DEV primero, después PROD según `watchdog-production-schematic-delta`). +- Capacidad del paquete confirmada **~12 Ah** (2026-06-30; la etiqueta «40 Ah» estaba mal) — dimensiona la corriente de carga del LTC4040 (≈ C/5, ≤ 2.5 A). -- Firmware pass: gauge-LED driver (PB12–15 from `BAT_SENSE`) + `CHRG_EN` cut-charge-when-hot logic. -- KiCAD: cosmetic ERC cleanup → footprints → **then** PCB layout (DEV first, then build PROD per - [[watchdog-production-schematic-delta]]). -- Pack Ah confirmed **~12 Ah** (2026-06-30; "40 Ah" label was wrong) — sizes the LTC4040 charge current (≈C/5, ≤2.5 A). +## Relacionados -## Related -[[watchdog-electrical-design-state]] (CANONICAL) · [[watchdog-protoboard-bringup]] (Jun-22 shop -list) · [[watchdog-production-schematic-delta]] (PROD build spec) · `kicad/hbox-watchdog-v3.kicad_sch` +`watchdog-electrical-design-state` (canónico, repo) · [lista de compras del protoboard](historico-protoboard.md) (22-jun) · `watchdog-production-schematic-delta` (especificación del build PROD, repo) · `kicad/hbox-watchdog-v3.kicad_sch` · lo que siguió: [bring-up de la EinarBoard 1.0](einarboard-1.0-bringup.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-06-24 | Guía de banco original (inglés); actualización de sensores 03-jul. | +| 1.1 | 2026-09-29 | Traducción al español, encabezado uniforme y enlaces. Sin cambios técnicos. | diff --git a/03-Architecture-Hardware/watchdog-protoboard-bringup.md b/03-Architecture-Hardware/watchdog-protoboard-bringup.md index ebbfc09..f6d3e44 100644 --- a/03-Architecture-Hardware/watchdog-protoboard-bringup.md +++ b/03-Architecture-Hardware/watchdog-protoboard-bringup.md @@ -1,130 +1,114 @@ --- -tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bom, bring-up] -project: Project Drogheda -author: Helgen CTO +title: "Watchdog — Lista de compras para el bring-up en protoboard" +tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bom, bring-up, historico] date: 2026-06-22 -status: Active — shop list for the Blackpill bring-up +project: Project Drogheda +author: Helgen Technologies +status: HISTÓRICO — lista de compras del prototipo en Blackpill (jun-2026) --- -# Watchdog Bring‑up — Protoboard Shopping List (print me) +# Watchdog — Lista de compras para el bring-up en protoboard -> **⚠ SUPERSEDED for sensors (2026-07-03):** the proto suite is now **AHT10 (0x38, alone on -> I²C1, 3V3) + LM35→PA7 + NTC→PB1** — no SHT40/SHT31/BME280/TMP102 on the proto (PCB-only). -> Charge cutoff = **PA8 `CHRG_RUN`** on the TP4056 IN+ (the kit module has no TEMP pin). -> Current shop lists = `watchdog-protoboard-BOM-3boards.xlsx` / `watchdog-LISTA-DE-COMPRAS-ES.xlsx`; -> wiring = ledger xlsx + Guía v2.2. The sensor/substitute rows below are kept for history only. +Tarjeta: V3 en protoboard (prototipo sobre Blackpill, antes de la EinarBoard 1.0). -> Goal: breadboard the v2.2 watchdog on your **existing Blackpill**, prove the -> state machine + sensing + load switch + fans + temp loop, **before** any PCB. -> All parts are **through‑hole / breadboard‑friendly** and stocked at a normal MX -> electronics shop (Steren / AG Electrónica / local). Quantities include spares. -> Pin map: [[03-Architecture-Hardware/watchdog-pcb-v3-design#2|design §2]] · -> firmware: `blackpillrtkcode_v2.ino` (v2.2). +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: ingeniería (banco QRO) + - Cuándo: documento histórico — compras para el prototipo en protoboard del watchdog v2.2/v3 (jun-2026). El procedimiento de banco es [Bring-up del prototipo v3](historico-proto-bench-v3.md) + - Tiempo: una visita a la tienda de electrónica + - Necesitas: el Blackpill y lo listado en §0 -## 0. Already have — do NOT buy -STM32F411 Blackpill · USB‑C/micro cable · 18650 + PowerBoost · Mean Well SD‑15B‑05 -(or a bench PSU) · multimeter · the F9P + 4G master (only needed later, not for the -bring‑up). A **heat source** (hair dryer / lighter / hot water cup) to trigger the -thermal/fan test — household, no need to buy. +Traducido del original en inglés (22-jun-2026, sustituido en parte el 03-jul-2026). ---- +!!! warning "Sustituido para sensores (2026-07-03)" + El conjunto de sensores del prototipo pasó a ser **AHT10 (0x38, solo en I²C1, 3V3) + LM35→PA7 + NTC→PB1** — sin SHT40/SHT31/BME280/TMP102 en el prototipo (solo en PCB). Corte de carga = **PA8 `CHRG_RUN`** en IN+ del TP4056 (el módulo del kit no tiene pin TEMP). Listas de compras vigentes = `watchdog-protoboard-BOM-3boards.xlsx` / `watchdog-LISTA-DE-COMPRAS-ES.xlsx`; cableado = libro de conexiones xlsx + Guía v2.2. Las filas de sensores/sustitutos de abajo se conservan solo por historia. -## 1. Core — bring up the "brains" (buy this even if the shop is sparse) +Objetivo: armar en protoboard el watchdog v2.2 sobre el Blackpill existente y probar la máquina de estados + sensado + interruptor de carga + ventiladores + lazo de temperatura, antes de cualquier PCB. Todas las partes son through-hole / aptas para protoboard y se consiguen en una tienda de electrónica normal en México (Steren / AG Electrónica / local). Las cantidades incluyen repuestos. Mapa de pines: `watchdog-pcb-v3-design` §2 (repo) · firmware: `blackpillrtkcode_v2.ino` (v2.2). -| # | Item | Qty | Value / part | ~MXN | For | +## 0. Ya se tiene — no comprar + +STM32F411 Blackpill · cable USB-C/micro · 18650 + PowerBoost · Mean Well SD-15B-05 (o una fuente de banco) · multímetro · el F9P + 4G master (solo hacen falta después, no para el bring-up). Una fuente de calor (secadora / encendedor / taza de agua caliente) para disparar la prueba térmica/de ventilador — de casa, no hay que comprarla. + +## 1. Núcleo — arrancar los «cerebros» (comprar esto aunque la tienda esté escasa) + +| # | Ítem | Cant. | Valor / parte | ~MXN | Para | |---|---|---|---|---|---| -| 1 | Breadboard 830‑pt | 2 | half/full | 120 | build surface (2 = room for fans/sensors) | -| 2 | Jumper wires M‑M | 1 pk | 65 pcs | 60 | board wiring | -| 3 | Jumper wires M‑F | 1 pk | 40 pcs | 50 | to Blackpill / modules | -| 4 | Resistor assortment box | 1 | ¼ W (incl. 330Ω,1k,4.7k,10k,100k,220Ω) | 120 | dividers, gates, pull‑ups | -| 5 | LED (any) | 5 | 3/5 mm | 10 | status LED on PB0 | -| 6 | Ceramic cap 100 nF | 10 | 0.1 µF (104) | 20 | ADC filters + decoupling | -| 7 | Electrolytic 100 µF / ≥16 V | 4 | — | 20 | rail bulk / modem‑burst reservoir | -| 8 | **2N3904** (NPN, TO‑92) | 3 | load‑switch driver | 15 | PA1 → P‑FET gate | -| 9 | **IRF9540 / IRF9540N** (P‑MOSFET, TO‑220) | 2 | high‑side 5 V switch | 40 | switched 5 V to "stack" | -| 10 | **10 kΩ trim pot** | 2 | breadboard trimmer | 30 | sweep VBAT / ignition to test thresholds | -| 11 | Tactile button or slide switch | 2 | — | 20 | simulate ignition on/off | -| 12 | Male header strip | 1 | 1×40, 2.54 mm | 15 | solder onto any module that needs pins | +| 1 | Protoboard 830 puntos | 2 | media/completa | 120 | superficie de armado (2 = espacio para ventiladores/sensores) | +| 2 | Jumpers M-M | 1 pq | 65 pzas | 60 | cableado de la placa | +| 3 | Jumpers M-F | 1 pq | 40 pzas | 50 | hacia el Blackpill / módulos | +| 4 | Caja surtida de resistencias | 1 | ¼ W (incl. 330 Ω, 1 k, 4.7 k, 10 k, 100 k, 220 Ω) | 120 | divisores, gates, pull-ups | +| 5 | LED (cualquiera) | 5 | 3/5 mm | 10 | LED de estado en PB0 | +| 6 | Capacitor cerámico 100 nF | 10 | 0.1 µF (104) | 20 | filtros ADC + desacoplo | +| 7 | Electrolítico 100 µF / ≥ 16 V | 4 | — | 20 | bulk del riel / reserva para ráfagas del módem | +| 8 | **2N3904** (NPN, TO-92) | 3 | driver del interruptor de carga | 15 | PA1 → gate del P-FET | +| 9 | **IRF9540 / IRF9540N** (P-MOSFET, TO-220) | 2 | interruptor lado alto de 5 V | 40 | 5 V conmutado hacia la «etapa» | +| 10 | **Potenciómetro de 10 kΩ** | 2 | trimmer para protoboard | 30 | barrer VBAT / ignición para probar umbrales | +| 11 | Botón táctil o interruptor deslizante | 2 | — | 20 | simular ignición on/off | +| 12 | Tira de header macho | 1 | 1×40, 2.54 mm | 15 | soldar en cualquier módulo que necesite pines | -**Core subtotal ≈ 520 MXN.** With this you can flash v2.2, watch the `$PHLG`/TLM log, -and validate the **load switch + the three sense dividers + LED** — the whole watchdog -logic — without the thermal parts. +**Subtotal del núcleo ≈ 520 MXN.** Con esto se puede flashear v2.2, ver el log `$PHLG`/TLM y validar el interruptor de carga + los tres divisores de sensado + LED — toda la lógica del watchdog — sin las partes térmicas. ---- +## 2. Adiciones térmicas — ventiladores + temperatura (lo nuevo de v3) -## 2. Thermal add‑ons — fans + temperature (the v3 new stuff) - -| # | Item | Qty | Value / part | ~MXN | For / note | +| # | Ítem | Cant. | Valor / parte | ~MXN | Para / nota | |---|---|---|---|---|---| -| 13 | 5 V fan, 40–60 mm, **3‑wire** | 1 | 3‑wire = has tach | 60 | one extraction fan; 3‑wire so PB10 reads RPM. Grab a 2nd as a spare if cheap | -| 14 | **IRLZ44N** (logic‑level N‑MOSFET, TO‑220) | 2 | fan low‑side PWM | 30 | 1 + spare; **must be logic‑level**; see substitute below | -| 15 | Schottky **1N5819** | 3 | fan flyback | 10 | one across the fan (1N4007 ok if out) | -| 16 | I²C temp+RH breakout | 1 | **SHT31 / SHT40** ideal | 120 | matches firmware (0x44). RH catches condensation | -| 17 | Analog temp **LM35** (TO‑92) | 2 | sure‑thing fallback | 25 | every shop has it; heat it → watch fans ramp | -| 18 | **DS18B20** waterproof probe | 1 | 1‑wire | 45 | great as the battery/modem hot‑spot probe | -| 19 | LM2596 buck module (adj.) | 1 | 24/12 → 5 V | 35 | dedicated **fan 5 V** rail (caveat §0a) if no 2nd bench PSU | +| 13 | Ventilador 5 V, 40–60 mm, **3 hilos** | 1 | 3 hilos = tiene tacómetro | 60 | un ventilador de extracción; de 3 hilos para que PB10 lea RPM. Tomar un 2º como repuesto si es barato | +| 14 | **IRLZ44N** (N-MOSFET de nivel lógico, TO-220) | 2 | PWM lado bajo del ventilador | 30 | 1 + repuesto; debe ser de nivel lógico; ver sustituto abajo | +| 15 | Schottky **1N5819** | 3 | flyback del ventilador | 10 | uno en paralelo con el ventilador (1N4007 sirve si no hay) | +| 16 | Breakout I²C temp+HR | 1 | **SHT31 / SHT40** ideal | 120 | coincide con el firmware (0x44). La HR detecta condensación | +| 17 | Temperatura analógica **LM35** (TO-92) | 2 | respaldo seguro | 25 | lo tienen en todas las tiendas; calentarlo → ver rampar los ventiladores | +| 18 | Sonda **DS18B20** sumergible | 1 | 1-wire | 45 | excelente como sonda de punto caliente de batería/módem | +| 19 | Módulo buck LM2596 (ajustable) | 1 | 24/12 → 5 V | 35 | riel de **5 V del ventilador** dedicado (salvedad §0a) si no hay 2ª fuente de banco | -**Thermal subtotal ≈ 260 MXN** (one fan + driver + one temp option). Grab #13–15 for the fan, and **one** temperature option -(#16 ideal, else #17/#18). +**Subtotal térmico ≈ 260 MXN** (un ventilador + driver + una opción de temperatura). Tomar #13–15 para el ventilador y una opción de temperatura (#16 ideal; si no, #17/#18). ---- +## 3. Sustituciones (el inventario de la tienda varía — todas funcionan) -## 3. Substitutions (shop stock varies — these all work) - -| If they're out of… | Buy instead | Catch | +| Si no tienen… | Comprar en su lugar | Detalle | |---|---|---| -| IRLZ44N (logic‑level FET) | **2N2222A** (TO‑92) or **TIP120** (Darlington) | BJT: add 1 kΩ base resistor; fine for a <0.5 A fan. **Plain IRF540/IRFZ44 won't fully turn on from 3.3 V — avoid.** | -| SHT31/SHT40 I²C breakout | **BME280/BMP280** (I²C, common) | address 0x76/0x77 → small firmware change | -| Any I²C sensor | **LM35** (analog) or **DS18B20** (1‑wire) | not I²C → firmware reads ADC / 1‑wire instead (I'll patch it) | -| IRF9540 P‑MOSFET | keep your original, or **2N2222 high‑side** is awkward — ask for any P‑channel ≥30 V | gate fully pulled to GND by the 2N3904, so a standard P‑FET is OK here | -| 1N5819 Schottky | **1N4007** | slightly slower; fine at fan PWM | +| IRLZ44N (FET de nivel lógico) | **2N2222A** (TO-92) o **TIP120** (Darlington) | BJT: añadir resistencia de base de 1 kΩ; bien para un ventilador < 0.5 A. **Un IRF540/IRFZ44 común no enciende del todo con 3.3 V — evitar.** | +| Breakout I²C SHT31/SHT40 | **BME280/BMP280** (I²C, común) | dirección 0x76/0x77 → cambio pequeño de firmware | +| Cualquier sensor I²C | **LM35** (analógico) o **DS18B20** (1-wire) | no es I²C → el firmware lee ADC / 1-wire en su lugar (parche de firmware) | +| P-MOSFET IRF9540 | conservar el original; un **2N2222 en lado alto** es incómodo — pedir cualquier canal P ≥ 30 V | el gate lo lleva a GND por completo el 2N3904, así que un P-FET estándar sirve aquí | +| Schottky 1N5819 | **1N4007** | un poco más lento; bien a la PWM del ventilador | ---- +## 4. Orden de bring-up (para que la lista se corresponda con acciones) -## 4. Bring‑up order (so the list maps to actions) +1. **Solo USB** — flashear v2.2, abrir serie a 115200. Confirmar líneas `BOOT/COLS/TLM` **y un `$PHLG,...*CS` cada 30 s**. (Sin partes externas — esto prueba el firmware.) +2. **LED en PB0** vía 330 Ω → observar que los códigos de parpadeo cambien con el estado. +3. Interruptor de carga — 2N3904 + IRF9540 + 1 kΩ (base) + 10 kΩ (pull-up de gate) desde un riel de 5 V; poner un LED+330 Ω en la salida conmutada. Conmutar: confirmar OFF al reset, ON cuando PA1 lo maneja. (Este es el corazón de la recuperación.) +4. Divisores de sensado — dos de 10 kΩ cada uno (÷2) hacia **PA0** (batería vía 18650) y **PA4** (riel 5 V); un pot de 10 kΩ hacia **PA5** (ignición). Barrerlos y ver `veh`/`ign` cambiar en el TLM con histéresis/debounce. +5. Ventilador — PA6 → gate (220 Ω) del IRLZ44N → ventilador(−); diodo de flyback en paralelo con el ventilador; 100 kΩ gate→GND. Verlo girar/rampar; hilo de tacómetro → pull-up 10 kΩ a 3V3 → PB10 → RPM en el log; **desconectar el ventilador → `FAN_FAULT`**. +6. Temperatura — breakout I²C en PB6/PB7 (+4.7 kΩ pull-ups), o LM35 en un pin ADC. Calentarlo → los ventiladores rampan según la curva 45→70 °C; a 75 °C entra el derate térmico existente. -1. **Just USB** — flash v2.2, open serial @115200. Confirm `BOOT/COLS/TLM` lines **and a - `$PHLG,...*CS` every 30 s**. (No external parts — this proves the firmware.) -2. **LED on PB0** via 330 Ω → watch the blink codes change with state. -3. **Load switch** — 2N3904 + IRF9540 + 1 kΩ (base) + 10 kΩ (gate pull‑up) from a 5 V rail; - put an LED+330 Ω on the switched output. Toggle: confirm **OFF at reset**, ON when PA1 - drives. (This is the heart of recovery.) -4. **Sense dividers** — two 10 kΩ each (÷2) into **PA0** (battery via 18650) and **PA4** - (5 V rail); a 10 kΩ pot into **PA5** (ignition). Sweep them and watch `veh`/`ign` flip in - the TLM with hysteresis/debounce. -5. **Fan** — PA6 → gate (220 Ω) of IRLZ44N → fan(−); flyback diode across the fan; - 100 kΩ gate→GND. Watch it spin/ramp; tach wire → 10 kΩ pull‑up to 3V3 → PB10 → - RPM in the log; **unplug the fan → `FAN_FAULT`**. -6. **Temperature** — I²C breakout on PB6/PB7 (+4.7 kΩ pull‑ups), or LM35 on an ADC pin. - Heat it → fans ramp per the 45→70 °C curve; at 75 °C the existing thermal derate kicks in. - ---- - -## 5. Wiring cheat‑sheet (Blackpill side) +## 5. Hoja de cableado (lado Blackpill) ``` -PA0 ← BAT ÷2 (10k/10k) from 18650+ PA6 → 220Ω → IRLZ44N gate; fan(−); 1N5819 ∥ fan -PA4 ← 5V ÷2 (10k/10k) from 5V rail PB10 ← fan tach, 10k pull-up → 3V3 (1k series) -PA5 ← IGN ÷2 (10k/10k) from pot/switch PB6/PB7 → I²C SCL/SDA (+4.7k each → 3V3) -PA1 → 1k → 2N3904 base; collector → IRF9540 PB0 → 330Ω → LED → GND - gate; 10k gate→5V; drain → switched (PA7/PB12 left free — 2nd fan if ever needed) - 5V → stack (use an LED load to test) -GND/5V/3V3 rails common; fan 5V from a SEPARATE 5V (LM2596 or 2nd PSU) — not the stack rail. +PA0 ← BAT ÷2 (10k/10k) desde 18650+ PA6 → 220Ω → gate IRLZ44N; ventilador(−); 1N5819 ∥ ventilador +PA4 ← 5V ÷2 (10k/10k) desde riel 5V PB10 ← tacómetro, pull-up 10k → 3V3 (1k en serie) +PA5 ← IGN ÷2 (10k/10k) desde pot/interr. PB6/PB7 → I²C SCL/SDA (+4.7k cada uno → 3V3) +PA1 → 1k → base 2N3904; colector → gate PB0 → 330Ω → LED → GND + IRF9540; 10k gate→5V; drain → 5V (PA7/PB12 libres — 2º ventilador si algún día hace falta) + conmutado → etapa (LED como carga) +Rieles GND/5V/3V3 comunes; 5 V del ventilador desde una fuente de 5 V SEPARADA (LM2596 o 2ª fuente) — no del riel de la etapa. ``` ---- +## 6. Nota sobre el sensor de temperatura y el firmware -## 6. Note on the temp sensor + firmware -The v2.2 firmware reads **I²C SHT40 (0x44) + TMP102 (0x48)**. Whatever you bring back: -- **SHT31/SHT40** → works as‑is (SHT40) or a 1‑line address tweak (SHT31). -- **BME280** → change address + read call. -- **LM35 / DS18B20** → analog / 1‑wire; tell me which and I'll patch `buildPHLG()` + - the fan‑curve input to read it. For *tomorrow's* bring‑up the fan loop can also be - driven off the **MCU‑internal** temp (already in firmware) — heat the whole board and - the derate still triggers, so you can prove the fan path even before the sensor arrives. +El firmware v2.2 lee **I²C SHT40 (0x44) + TMP102 (0x48)**. Según lo que se consiga: -## Related -- **3-board PROTO BOM (use this for bring-up):** `watchdog-protoboard-BOM-3boards.xlsx` (engineering, ≈MXN 5,341) + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (plain-Spanish shop list). **v3 adds:** reset (on-board + external), 4-LED battery gauge, power-cutoff switch, and battery backup (proto: TP4056+MT3608+OR-diodes+NTC; PCB: **LTC4040**). Canonical electrical state: [[03-Architecture-Hardware/watchdog-electrical-design-state|watchdog-electrical-design-state.md]]. -- [[03-Architecture-Hardware/watchdog-pcb-v3-bom|v3 BOM (production + bench, xlsx)]] · - [[03-Architecture-Hardware/watchdog-pcb-v3-design|v3 design (pin map, sub‑circuits)]] · - `04-Source-Code/firmware/blackpillrtkcode_v2/blackpillrtkcode_v2.ino` +- **SHT31/SHT40** → funciona tal cual (SHT40) o con un ajuste de dirección de una línea (SHT31). +- **BME280** → cambiar dirección + llamada de lectura. +- **LM35 / DS18B20** → analógico / 1-wire; se parcha `buildPHLG()` + la entrada de la curva del ventilador para leerlo. Para el bring-up inmediato el lazo del ventilador también puede manejarse con la temperatura interna del MCU (ya está en el firmware) — calentar toda la tarjeta y el derate se dispara igual, así que se puede probar el camino del ventilador antes de que llegue el sensor. + +## Relacionados + +- **BOM PROTO de 3 tarjetas (usar para el bring-up):** `watchdog-protoboard-BOM-3boards.xlsx` (ingeniería, ≈ MXN 5,341) + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (lista de compras en español llano). **v3 añade:** reset (en tarjeta + externo), indicador de batería de 4 LEDs, interruptor de corte de energía y respaldo de batería (prototipo: TP4056+MT3608+diodos OR+NTC; PCB: **LTC4040**). Estado eléctrico canónico: `watchdog-electrical-design-state.md` (repo). +- `watchdog-pcb-v3-bom` (BOM v3 producción + banco, xlsx) · `watchdog-pcb-v3-design` (diseño v3: mapa de pines, subcircuitos) · `04-Source-Code/firmware/blackpillrtkcode_v2/blackpillrtkcode_v2.ino` — todos en el repo. +- Lo que siguió: [Bring-up del prototipo v3](historico-proto-bench-v3.md) → [Bring-up de la EinarBoard 1.0](einarboard-1.0-bringup.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-06-22 | Lista original (inglés); nota de sustitución 03-jul. | +| 1.1 | 2026-09-29 | Traducción al español, encabezado uniforme y enlaces. Sin cambios técnicos. | diff --git a/06-Testing-Validation/2026-07-08_Drogheda_EinarBoard-1.0_BringUp-Runbook_v1.0.md b/06-Testing-Validation/2026-07-08_Drogheda_EinarBoard-1.0_BringUp-Runbook_v1.0.md index c96d718..8586097 100644 --- a/06-Testing-Validation/2026-07-08_Drogheda_EinarBoard-1.0_BringUp-Runbook_v1.0.md +++ b/06-Testing-Validation/2026-07-08_Drogheda_EinarBoard-1.0_BringUp-Runbook_v1.0.md @@ -1,102 +1,80 @@ --- -title: EinarBoard 1.0 (rev 1.1) — Bring-Up Runbook & Anticipated-Trouble Register -tags: [project-drogheda, hardware, einarboard, bringup, testing, runbook] -project: Project Drogheda -author: Helgen CTO +title: "EinarBoard 1.0 — Runbook de bring-up" +tags: [project-drogheda, hardware, einarboard, v3, bringup, testing, runbook, historico] date: 2026-07-08 -status: ACTIVE — execute in order when boards arrive +project: Project Drogheda +author: Helgen Technologies +status: HISTÓRICO — se ejecutó en orden cuando llegaron las tarjetas (jul-2026) --- -# EinarBoard 1.0 — Bring-Up Runbook +# EinarBoard 1.0 — Runbook de bring-up -**Order (FINAL — replacement of 2026-07-08):** original PCBA SMT026070860564 cancelled (2 BOM -lines lost at matching); replacement placed 2026-07-08, **live-verified complete: 53 lines, -116/118 designators assembled** incl. D2/DBK2/DBK1 and all six LEDs. Rotations confirmed by Leo -in the placement viewer. Deltas vs the original parts map: LEDs = **C2295 KT-0805R (RED — all -indicators red by choice)** · RS1 = **C2988654** (HoLLR1206-1W-8mR-1%, spec-compliant alternate) · -100nF = C1591 · 22µF ×4 = C76637 · R51 = C22972 · 22k = C31850. **J1/J2 NOT assembled (the only -unselected parts)** → bench jig-solder; buy two 1×20 2.54 female sockets locally (the C50984 reel -is locked in JLC inventory for future PCBA). Setpoints re-derived from ordered values 2026-07-08: fan 4.99 V · modem 3.33 V · -I_chg 2.42 A · input limit 3.12 A · PFI 4.61 V · backup 4.79 V — all on target. +Tarjeta: V3 (EinarBoard 1.0, rev 1.1, Blackpill en zócalo). ---- +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: ingeniería (banco QRO) + - Cuándo: documento histórico — se aplicó a la primera tarjeta V3 al llegar de JLCPCB (jul-2026). Para las V3 que hoy están en campo, usa [diagnóstico en banco](diagnostico-banco.md) y [reflasheo](reflasheo-unidades.md) + - Tiempo: medio día para la tarjeta #1 (secciones C–D); 1 h por tarjeta en la réplica (F) + - Necesitas: fuente de banco con límite de corriente, multímetro, lupa, Blackpill, simpleRTK2B Pro, módem 4G, paquete 1S4P o celda de banco, resistencia de 10 kΩ (emulación de NTC) -## A. NOW — before production starts (the $479 gate) +Traducido del original en inglés (08-jul-2026). -- [ ] **DFM Analysis check (4–6 h after ordering, Order History → DFM Analysis).** Verify the - polarity dozen against the answer sheet: **U6 pin-1 TOP-LEFT · U2/U7 pin-1 BOTTOM-RIGHT · - Q7 pin-1 TOP-LEFT · bands: D2/Dbk2/D5/D10 LEFT, Dbk1 TOP, D6 RIGHT · electrolytics "+": - C3 BOTTOM, C10/C43 LEFT · LED cathodes LEFT (D1, D4G1, DB1–4)**. The preview already caught - U6 and U2 turned 180° once — assume nothing. -- [ ] **Confirm Production File is set to Yes with 48 h auto-confirm** — an unwatched weekend - approves itself. Approve only after the DFM check passes. -- [ ] Answer every JLC review email **same day** (schedule protection). +**Pedido (FINAL — reemplazo del 2026-07-08):** el PCBA original SMT026070860564 se canceló (2 líneas del BOM se perdieron en el emparejamiento); el reemplazo se colocó el 2026-07-08, **verificado completo en vivo: 53 líneas, 116/118 designadores ensamblados**, incluidos D2/DBK2/DBK1 y los seis LEDs. Rotaciones confirmadas por Leo en el visor de colocación. Diferencias contra el mapa de partes original: LEDs = **C2295 KT-0805R (ROJO — todos los indicadores rojos por decisión)** · RS1 = **C2988654** (HoLLR1206-1W-8mR-1%, alterno conforme a especificación) · 100 nF = C1591 · 22 µF ×4 = C76637 · R51 = C22972 · 22 k = C31850. **J1/J2 NO ensamblados (las únicas partes no seleccionadas)** → soldar en banco con escantillón; comprar localmente dos zócalos hembra 1×20 de 2.54 mm (el carrete C50984 quedó bloqueado en el inventario de JLC para PCBA futuros). Puntos de ajuste re-derivados de los valores pedidos el 2026-07-08: ventilador 4.99 V · módem 3.33 V · I_chg 2.42 A · límite de entrada 3.12 A · PFI 4.61 V · respaldo 4.79 V — todos en objetivo. -## B. Reception (day of delivery) +## A. Ahora — antes de que arranque la producción (la compuerta de US$479) -- [ ] Visual vs the ordered renders: DNPs bare (P3/P13/H3, MOD1 field), all sockets present, - P1 wire-entry toward the edge, J9 opening at the edge. -- [ ] Polarity dozen again, on physical boards, one board, 5 minutes with a loupe. -- [ ] Measure J1↔J2 socket spacing on one board (decision record says 15.00 mm) and test-insert - a Blackpill — expect light preload if the module measures wider; note insertion force. +- [ ] **Revisión del análisis DFM (4–6 h después de pedir, Order History → DFM Analysis).** Verificar la «docena de polaridad» contra la hoja de respuestas: **U6 pin 1 ARRIBA-IZQUIERDA · U2/U7 pin 1 ABAJO-DERECHA · Q7 pin 1 ARRIBA-IZQUIERDA · bandas: D2/Dbk2/D5/D10 IZQUIERDA, Dbk1 ARRIBA, D6 DERECHA · «+» de electrolíticos: C3 ABAJO, C10/C43 IZQUIERDA · cátodos de LED IZQUIERDA (D1, D4G1, DB1–4)**. La vista previa ya atrapó una vez U6 y U2 girados 180°: no dar nada por sentado. +- [ ] **Confirmar que Production File está en Yes con autoconfirmación a 48 h** — un fin de semana sin vigilancia se aprueba solo. Aprobar solo después de que pase la revisión DFM. +- [ ] Contestar cada correo de revisión de JLC el mismo día (protección del calendario). -## C. Board #1 electrical bring-up — NO modules socketed, current-limited bench supply +## B. Recepción (día de entrega) -1. **Resistance sanity (unpowered):** 24V_IN→GND, MAIN5V→GND, 3V3_MODEM→GND — no shorts (>1 kΩ). -2. **24 V path:** bench supply 24 V, limit 200 mA → P1 pins 1/2. Check: 24V rail after Q10 ≈ 24 V - (reverse-protection FET conducting), **5V_FAN = 5.0 V** (U2 running), fan header P6 pin 1. -3. **Vehicle 5 V path:** 5 V, limit 500 mA → P2. Check: **MAIN5V ≈ 5 V** (LTC4040 input FET - passing), SYS5V after P11 jumpered/switched ON, Blackpill socket pins J1-20/J2-18 = 5 V. -4. **Load switch default-OFF (invariant #1):** with no MCU, SW_5V must be **0 V**. Then short - J1-7 (PWR_CTRL) to 3V3 momentarily → SW_5V = 5 V, **3V3_MODEM = 3.33 V** (U7 up). -5. **Ignition sense:** 12 V and 24 V through P1-3 → IGN_SENSE (J1-11) clamps ≈ 3.5–3.6 V; 0 V → <0.3 V. -6. **⚠ CHARGER NTC TRAP (this WILL look like a dead charger):** with no battery-harness NTC on - P4-3, the LTC4040's NTC pin is pulled to VIN by R55 → reads "battery too cold" → **charging - silently paused**. For bench charge tests, connect **10 kΩ from P4-3 to P4-2 (GND)** to emulate - 25 °C. Do not debug the charger without it. -7. **Charger (with NTC emulation + real 1S4P pack or bench cell):** connect pack to P4 → - CHRG (J2-11) low while charging; charge current ramps ≤ 2.42 A; input current never exceeds - ~3.1 A (watch the bench meter — this validates RS1/CLPROG behavior). -8. **Backup event (THE LTC4040 validation — this block never saw a proto):** system running on - P2 5 V with pack connected → pull P2 → **VSYS holds ≈ 4.79 V** from boost, board keeps running. - Measure: no back-feed voltage appearing on the disconnected P2 pins (validates Q7 orientation - fix). Restore P2 → seamless return + recharge. **Do this before any fleet commitment.** -9. **K1 fail-safe:** unpowered board: continuity K1 pin 1 ↔ pins 5/6 (NC closed = corrections - path exists with dead MCU). Powered + PB5 high: path opens to NO (pin 10). +- [ ] Visual contra los renders pedidos: DNP vacíos (P3/P13/H3, campo de MOD1), todos los zócalos presentes, entrada de cable de P1 hacia el borde, apertura de J9 en el borde. +- [ ] La docena de polaridad otra vez, sobre tarjetas físicas, una tarjeta, 5 minutos con lupa. +- [ ] Medir la separación de zócalos J1↔J2 en una tarjeta (el registro de decisiones dice 15.00 mm) e insertar de prueba un Blackpill — esperar una precarga ligera si el módulo mide más ancho; anotar la fuerza de inserción. -## D. Module integration (board #1 only, then replicate) +## C. Bring-up eléctrico de la tarjeta #1 — sin módulos en zócalos, fuente de banco con límite de corriente -- [ ] **MOD1 socket strips: solder using the simpleRTK2B Pro as the jig** (strips on module → - insert → solder → remove). Same jig trick for any stiff J1/J2 fit. -- [ ] Blackpill in (USB end toward board-left / VB-B12 corner at pads-1 — sockets don't key!). - Flash bench firmware via module USB. -- [ ] **Firmware flag: PROD `CHRG_EN` (PA8) is HIGH = charge OFF** — the proto TP4056 logic was - INVERTED (`CHRG_RUN` HIGH = ON). Port the flag before flashing, or units will disable charging - when they mean to enable it. -- [ ] Pro into MOD1 (antenna top-left, USBs bottom, per the validated orientation). **Old-rev - Pros: XBee switch → UART1. All revs: Pro's own XBee socket stays EMPTY; never plug the Pro's - "USB XBee" port in service** (its FTDI sits on the RTCM3 downlink on new revs). -- [ ] **F9P config: write to FLASH, not RAM** (Jun-20 finding — RAM-only config dies at power - cycle). Verify with a power cycle before shipping any unit. -- [ ] 4G NTRIP Master into J7/J8 (VCC row = J7). Telcel micro-SIM installed first. Board USB-C - (J9) enables the modem's USB only when a host provides VBUS — bench console via J9 is safe; - it does not fight the uplink. -- [ ] End-to-end: open sky, corrections from caster → **GGA quality 4 (RTK fixed)** — the - fleet's first-ever verified fix ≥4 per the Jun-20 gap. +1. Verificación de resistencias (sin energía): 24V_IN→GND, MAIN5V→GND, 3V3_MODEM→GND — sin cortos (> 1 kΩ). +2. **Camino de 24 V:** fuente de banco a 24 V, límite 200 mA → P1 pines 1/2. Verificar: riel de 24 V después de Q10 ≈ 24 V (FET de protección inversa conduciendo), **5V_FAN = 5.0 V** (U2 funcionando), header del ventilador P6 pin 1. +3. **Camino de 5 V del vehículo:** 5 V, límite 500 mA → P2. Verificar: **MAIN5V ≈ 5 V** (FET de entrada del LTC4040 pasando), SYS5V después de P11 con puente o interruptor en ON, pines del zócalo del Blackpill J1-20/J2-18 = 5 V. +4. **Interruptor de carga apagado por omisión (invariante #1):** sin MCU, SW_5V debe ser **0 V**. Después, cortocircuitar momentáneamente J1-7 (PWR_CTRL) a 3V3 → SW_5V = 5 V, **3V3_MODEM = 3.33 V** (U7 arriba). +5. Sensado de ignición: 12 V y 24 V por P1-3 → IGN_SENSE (J1-11) recorta a ≈ 3.5–3.6 V; 0 V → < 0.3 V. +6. **⚠ Trampa de la NTC del cargador (esto VA a parecer un cargador muerto):** sin la NTC del arnés de batería en P4-3, el pin NTC del LTC4040 queda llevado a VIN por R55 → lee «batería demasiado fría» → carga pausada en silencio. Para pruebas de carga en banco, conectar **10 kΩ de P4-3 a P4-2 (GND)** para emular 25 °C. No depurar el cargador sin esto. +7. **Cargador (con emulación de NTC + paquete 1S4P real o celda de banco):** conectar el paquete a P4 → CHRG (J2-11) en bajo mientras carga; la corriente de carga sube hasta ≤ 2.42 A; la corriente de entrada nunca pasa de ~3.1 A (observar el amperímetro de la fuente — esto valida el comportamiento de RS1/CLPROG). +8. **Evento de respaldo (LA validación del LTC4040 — este bloque nunca pasó por un prototipo):** sistema corriendo con los 5 V de P2 y el paquete conectado → quitar P2 → **VSYS se sostiene en ≈ 4.79 V** desde el boost, la tarjeta sigue funcionando. Medir: no aparece voltaje de retorno en los pines desconectados de P2 (valida la corrección de orientación de Q7). Restaurar P2 → regreso sin interrupción + recarga. Hacer esto antes de cualquier compromiso de flota. +9. **Fail-safe de K1:** tarjeta sin energía: continuidad K1 pin 1 ↔ pines 5/6 (NC cerrado = el camino de correcciones existe con el MCU muerto). Energizada + PB5 en alto: el camino se abre hacia NO (pin 10). -## E. Known-accepted risks (decision register — watch, don't re-litigate) +## D. Integración de módulos (solo tarjeta #1, después replicar) -| Risk | Decision/owner | Watch for | +- [ ] **Tiras del zócalo MOD1: soldar usando el simpleRTK2B Pro como escantillón** (tiras en el módulo → insertar → soldar → retirar). Mismo truco para cualquier ajuste rígido de J1/J2. +- [ ] Blackpill puesto (extremo USB hacia la izquierda de la tarjeta / esquina VB-B12 en los pads 1 — ¡los zócalos no tienen guía!). Flashear el firmware de banco por el USB del módulo. +- [ ] **Bandera de firmware: en PROD `CHRG_EN` (PA8) en ALTO = carga APAGADA** — la lógica del TP4056 del prototipo estaba INVERTIDA (`CHRG_RUN` en ALTO = ENCENDIDA). Portar la bandera antes de flashear, o las unidades desactivarán la carga cuando quieran activarla. +- [ ] Pro en MOD1 (antena arriba a la izquierda, USB abajo, según la orientación validada). **Pros de revisión vieja: interruptor XBee → UART1. Todas las revisiones: el zócalo XBee propio del Pro se queda VACÍO; nunca conectar el puerto «USB XBee» del Pro en servicio** (su FTDI queda sobre el enlace de bajada RTCM3 en las revisiones nuevas). +- [ ] **Configuración del F9P: escribir en FLASH, no en RAM** (hallazgo del 20-jun — la configuración solo en RAM muere con el ciclo de energía). Verificar con un ciclo de energía antes de embarcar cualquier unidad. +- [ ] 4G NTRIP Master en J7/J8 (fila VCC = J7). Micro-SIM Telcel instalada primero. El USB-C de la tarjeta (J9) habilita el USB del módem solo cuando un host entrega VBUS — la consola de banco por J9 es segura; no pelea con el enlace de subida. +- [ ] Extremo a extremo: cielo abierto, correcciones desde el caster → **calidad GGA 4 (RTK fijo)** — el primer fix ≥ 4 verificado de la flota, según la brecha del 20-jun. + +## E. Riesgos conocidos y aceptados (registro de decisiones — vigilar, no reabrir) + +| Riesgo | Decisión / responsable | Qué vigilar | |---|---|---| -| J1/J2 rows at 15.00 mm vs 15.24 reading of module | Leo, vernier-verified, 2026-07-07 | Insertion force; pin preload; use jig-solder trick if stiff | -| LTC4040 block fab'd without proto validation | Gate waived consciously (boards cheap) | Step C.8 is the validation — run it FIRST | -| C22 = 35 V part on 24 V node (spec said 50 V) | Accepted at order | Nothing expected; note for rev 1.2 BOM | -| C778721/C90142 ceramic bias derating | Within design margins | — | -| D4G1 modem LED driven from 1.8 V pin | Known-dim (audit L4) | Don't debug as a fault | -| Backup boost budget 1.93 A of 2.5 A at modem TX burst | Margin accepted; 104 µF VSYS bank | Brownout during TX only if budget exceeded — scope VSYS during TX test | +| Filas J1/J2 a 15.00 mm vs lectura de 15.24 del módulo | Leo, verificado con vernier, 2026-07-07 | Fuerza de inserción; precarga de pines; usar el truco del escantillón si queda rígido | +| Bloque LTC4040 fabricado sin validación en prototipo | Compuerta omitida a conciencia (tarjetas baratas) | El paso C.8 es la validación — correrlo PRIMERO | +| C22 = parte de 35 V en el nodo de 24 V (la especificación decía 50 V) | Aceptado al pedir | No se espera nada; nota para el BOM de la rev 1.2 | +| Derating por polarización de cerámicos C778721/C90142 | Dentro de los márgenes de diseño | — | +| LED del módem D4G1 manejado desde un pin de 1.8 V | Se sabe que es tenue (auditoría L4) | No depurarlo como falla | +| Presupuesto del boost de respaldo 1.93 A de 2.5 A en ráfaga TX del módem | Margen aceptado; banco de 104 µF en VSYS | Brownout durante TX solo si se excede el presupuesto — osciloscopio en VSYS durante la prueba de TX | -## F. Fleet replication (after board #1 passes everything) +## F. Réplica en flota (después de que la tarjeta #1 pase todo) -Per-unit checklist: NTC harness populated (removes the C.6 emulation) · module orientations · -switch-to-UART1 on old Pros · F9P FLASH config verified by power cycle · jig-soldered strips · -GGA≥4 open-sky check · then HBOX integration per the enclosure docs (fit verified 2026-07-07). +Checklist por unidad: arnés con NTC poblado (elimina la emulación de C.6) · orientación de módulos · interruptor a UART1 en Pros viejos · configuración del F9P en FLASH verificada con ciclo de energía · tiras soldadas con escantillón · verificación de GGA ≥ 4 a cielo abierto · después integración en el HBOX según los documentos del gabinete (ajuste verificado el 2026-07-07). + +Ver también: [manual V3](../manuales/manual-tarjeta-V3.md) · [pinout V3](../montaje/pinout-arneses.md) · [BOM dividido V3](../montaje/bom-split.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-07-08 | Runbook original (inglés). | +| 1.1 | 2026-09-29 | Traducción al español, encabezado uniforme y enlaces. Sin cambios técnicos. | diff --git a/06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md b/06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md index b6afa9b..5165a37 100644 --- a/06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md +++ b/06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md @@ -1,33 +1,40 @@ --- -title: "Procedimiento de banco — Validación de la política de ventilador FW v3.0.3" -project: Project Drogheda +title: "Validación en banco — política de ventilador por potencia (FW v3.0.3)" +tags: [project-drogheda, testing, ventilador, firmware, banco, v3, v4, procedimiento] date: 2026-08-18 +project: Project Drogheda version: v1.0 audience: ingeniería (banco) target: EinarBoard 1.0 / 2.0 (V4) + firmware blackpillrtkcode_v3 v3.0.3 -tags: [project-drogheda, testing, ventilador, firmware, banco] --- # Validación en banco — política de ventilador por potencia (FW v3.0.3) +Tarjeta: V3 (EinarBoard 1.0) y V4 (EinarBoard 2.0) con firmware `blackpillrtkcode_v3` v3.0.3. + +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: ingeniería (banco) + - Cuándo: al validar un binario V3/V4 con la política de ventilador por potencia (v3.0.3 o posterior que la conserve) + - Tiempo: ~30 min por unidad (incluye 5 min al 100 % y el ciclo de calentamiento) + - Necesitas: fuente 24 V, fuente 5 V a 5.2 V, fuente de ignición 12–24 V, multímetro, laptop con terminal 115200, pistola de aire caliente y osciloscopio opcional + ## 0. Qué se está probando Desde v3.0.3 el ventilador **ya no se modula**: solo tiene dos estados. | Condición | Ventilador | |---|---| -| VEH5V presente **Y** ignición ON | **100 % fijo (DC), a cualquier temperatura** | -| Falta VEH5V **o** falta ignición ("modo batería") | Termostato: **enciende ≥ 48 °C, apaga < 45 °C** (temperatura de control = la más alta de aire SHT40 / batería TMP102 / MCU) | +| VEH5V presente Y ignición ON | **100 % fijo (DC), a cualquier temperatura** | +| Falta VEH5V o falta ignición ("modo batería") | Termostato: **enciende ≥ 48 °C, apaga < 45 °C** (temperatura de control = la más alta de aire SHT40 / batería TMP102 / MCU) | -La lógica reacciona en ≤ 2 s (cadencia térmica) más el debounce de entradas (~0.75 s). No hay sensado de 24 V: la **ignición es el testigo** de que el riel de 24 V existe. +La lógica reacciona en ≤ 2 s (cadencia térmica) más el debounce de entradas (~0.75 s). No hay sensado de 24 V: la ignición es el testigo de que el riel de 24 V existe. -> ⚠️ **PELIGRO:** hay 24 V en P1. Verifique polaridad antes de energizar. No conecte ni desconecte el ventilador (P6) con la tarjeta energizada. - -> 🛑 **ALTO:** en banco sin batería, el riel de 5 V debe estar en **≥ 5.2 V** o con el pack conectado (disparo PFI 4.60 V del LTC4040 bajo ráfaga LTE — nota 24-jul). Si la unidad se reinicia sola durante la prueba, revise esto primero. +!!! danger "24 V en P1 y riel de 5 V" + Verifica la polaridad antes de energizar. No conectes ni desconectes el ventilador (P6) con la tarjeta energizada. En banco sin batería, 5 V ≥ 5.2 V o paquete conectado ([reglas de banco](diagnostico-banco.md#reglas-de-banco)); si la unidad se reinicia sola, revisa esto primero. ## 1. Equipo -Fuente de 24 V (≥ 1 A), fuente de 5 V ajustada a 5.2 V (o el SD-15B de la unidad), fuente o puente de 12–24 V para ignición, multímetro, laptop con terminal serie (USB del Blackpill, **115200 8N1**), pistola de aire caliente (a baja, < 70 °C), osciloscopio (opcional, para confirmar DC). +Fuente de 24 V (≥ 1 A), fuente de 5 V ajustada a 5.2 V (o el SD-15B de la unidad), fuente o puente de 12–24 V para ignición, multímetro, laptop con terminal serie (USB del Blackpill, **115200 8N1**), pistola de aire caliente (a baja, < 70 °C), osciloscopio (opcional, para confirmar DC). ## 2. Puntos de medición @@ -35,18 +42,18 @@ Fuente de 24 V (≥ 1 A), fuente de 5 V ajustada a 5.2 V (o el SD-15B de la unid |---|---|---|---| | **P1** (GX16-5 / Phoenix) | 1 | `24V_IN` | Alimenta SOLO el buck del ventilador (U2 → `5V_FAN`) | | | 2 | `GND` | Retorno común | -| | 3 | `IGN_IN` | Ignición cruda 12–24 V (divisor Rig 22k / Rigb 10k → PA5) | -| **P2** | 1 | `VEH5V` | 5 V del SD-15B (= "vehículo presente" para el firmware, umbral ON > 4.2 V / OFF < 3.8 V) | -| **P6** (ventilador) | 1 | `5V_FAN` | +5 V del buck — debe medir ~5 V siempre que haya 24 V en P1.1 | -| | 2 | `FAN_RET` | Drenaje de Q2 (lado bajo). **Fan ON → ~0 V; fan OFF → ~5 V** | +| | 3 | `IGN_IN` | Ignición cruda 12–24 V (divisor Rig 22k / Rigb 10k → PA5) | +| **P2** | 1 | `VEH5V` | 5 V del SD-15B (= "vehículo presente" para el firmware, umbral ON > 4.2 V / OFF < 3.8 V) | +| **P6** (ventilador) | 1 | `5V_FAN` | +5 V del buck — debe medir ~5 V siempre que haya 24 V en P1.1 | +| | 2 | `FAN_RET` | Drenaje de Q2 (lado bajo). **Fan ON → ~0 V; fan OFF → ~5 V** | | | 4 | `FAN_TACH_RAW` | No usado (ventilador de 2 hilos) — debe quedar al aire | -| **PA6** (Blackpill / Rg) | — | `FAN_PWM` | Comando del MCU vía Rg (100 Ω) → gate de Q2. **ON → 3.3 V DC plano; OFF → 0 V** | +| **PA6** (Blackpill / Rg) | — | `FAN_PWM` | Comando del MCU vía Rg (100 Ω) → gate de Q2. **ON → 3.3 V DC plano; OFF → 0 V** | -La medición que decide es **P6.2 respecto a GND** (o la tensión P6.1↔P6.2 a través del ventilador: ~5 V girando, ~0 V parado). PA6 confirma qué está comandando el firmware; P6.2 confirma que Q2 y el ventilador obedecen. +La medición que decide es **P6.2 respecto a GND** (o la tensión P6.1↔P6.2 a través del ventilador: ~5 V girando, ~0 V parado). PA6 confirma qué está comandando el firmware; P6.2 confirma que Q2 y el ventilador obedecen. ## 3. Telemetría de referencia -Abra la terminal serie antes de empezar. Cada 2 s sale una línea `TLM`; las columnas relevantes (ver línea `COLS` al arranque): +Abra la terminal serie antes de empezar. Cada 2 s sale una línea `TLM`; las columnas relevantes (ver línea `COLS` al arranque): `...,veh,ign,...,tair,rh,tbat,fan_rpm,fan_pwm,fan_fault,...` @@ -56,30 +63,40 @@ Abra la terminal serie antes de empezar. Cada 2 s sale una línea `TLM`; las col ## 4. Procedimiento -Estado inicial: P1 con 24 V, P2 con 5.2 V, **ignición desconectada**, ventilador en P6, unidad a temperatura ambiente (< 40 °C). +Estado inicial: P1 con 24 V, P2 con 5.2 V, ignición desconectada, ventilador en P6, unidad a temperatura ambiente (< 40 °C). | # | Acción | Resultado esperado | Verificar | |---|---|---|---| -| 1 | Energizar la unidad (arranque en frío) | **Self-test**: los 4 LEDs de gauge encienden en secuencia y el ventilador da un soplo de ~0.8 s | Confirma que Q2 + ventilador funcionan, independiente de la lógica | -| 2 | Esperar 10 s, sin ignición | Ventilador **apagado** | P6.2 ≈ 5 V · PA6 = 0 V · TLM: `veh=1 ign=0 fan_pwm=0` | -| 3 | Aplicar 12–24 V a P1.3 (ignición) | En ≤ 3 s el ventilador arranca al **100 %**, aun frío | P6.2 ≈ 0 V · PA6 = 3.3 V **DC plano** (sin PWM en el osciloscopio) · TLM: `ign=1 fan_pwm=100` | -| 4 | Mantener 5 min | Sigue al 100 % sin interrupciones; `fan_fault=0` | Sin parpadeos en P6.2 | -| 5 | Quitar ignición (24 V y 5 V se quedan) | En ≤ 3 s el ventilador **se apaga** (modo batería, unidad fría) | P6.2 ≈ 5 V · `ign=0 fan_pwm=0` | -| 6 | Sin ignición: calentar el sensor SHT40 (sonda P5) con aire caliente, gradual | Al llegar `tair` a **48 °C** el ventilador arranca al 100 % | TLM: `tair≥48 → fan_pwm=100`. **No** debe arrancar a 45–47 °C (histéresis) | -| 7 | Retirar el calor y dejar enfriar | Sigue girando entre 45–47 °C; **se apaga solo por debajo de 45 °C** | `tair=46 → fan_pwm=100` · `tair=44 → fan_pwm=0` | -| 8 | Reconectar ignición con la unidad aún tibia | 100 % inmediato sin importar la temperatura | `fan_pwm=100` | -| 9 | (Opcional, con pack conectado) Quitar el 5 V de P2 dejando 24 V + ignición | El firmware pasa a modo batería (gate incompleto): manda termostato, no el 100 % fijo | `veh=0 → fan_pwm` según temperatura | +| 1 | Energizar la unidad (arranque en frío) | Self-test: los 4 LEDs de gauge encienden en secuencia y el ventilador da un soplo de ~0.8 s | Confirma que Q2 + ventilador funcionan, independiente de la lógica | +| 2 | Esperar 10 s, sin ignición | Ventilador apagado | P6.2 ≈ 5 V · PA6 = 0 V · TLM: `veh=1 ign=0 fan_pwm=0` | +| 3 | Aplicar 12–24 V a P1.3 (ignición) | En ≤ 3 s el ventilador arranca al **100 %**, aun frío | P6.2 ≈ 0 V · PA6 = 3.3 V DC plano (sin PWM en el osciloscopio) · TLM: `ign=1 fan_pwm=100` | +| 4 | Mantener 5 min | Sigue al 100 % sin interrupciones; `fan_fault=0` | Sin parpadeos en P6.2 | +| 5 | Quitar ignición (24 V y 5 V se quedan) | En ≤ 3 s el ventilador se apaga (modo batería, unidad fría) | P6.2 ≈ 5 V · `ign=0 fan_pwm=0` | +| 6 | Sin ignición: calentar el sensor SHT40 (sonda P5) con aire caliente, gradual | Al llegar `tair` a **48 °C** el ventilador arranca al 100 % | TLM: `tair≥48 → fan_pwm=100`. **No** debe arrancar a 45–47 °C (histéresis) | +| 7 | Retirar el calor y dejar enfriar | Sigue girando entre 45–47 °C; **se apaga solo por debajo de 45 °C** | `tair=46 → fan_pwm=100` · `tair=44 → fan_pwm=0` | +| 8 | Reconectar ignición con la unidad aún tibia | 100 % inmediato sin importar la temperatura | `fan_pwm=100` | +| 9 | (Opcional, con pack conectado) Quitar el 5 V de P2 dejando 24 V + ignición | El firmware pasa a modo batería (gate incompleto): manda termostato, no el 100 % fijo | `veh=0 → fan_pwm` según temperatura | -> ℹ️ **NOTA sobre el paso 6:** apunte el aire caliente a la **sonda SHT40 (P5)**, no a la tarjeta completa — así el resultado es reproducible. No exceda ~65 °C: arriba de 45 °C en la celda el firmware además corta la carga (`Cell hot -> charge OFF` en el log); es comportamiento esperado, no una falla. +!!! note "Sobre el paso 6" + Apunte el aire caliente a la **sonda SHT40 (P5)**, no a la tarjeta completa — así el resultado es reproducible. No exceda ~65 °C: arriba de 45 °C en la celda el firmware además corta la carga (`Cell hot -> charge OFF` en el log); es comportamiento esperado, no una falla. ## 5. Criterios de aceptación -La unidad PASA si: (1) `fw=3.0.3` en BOOT; (2) `fan_pwm` solo toma valores 0 y 100 durante toda la prueba; (3) con ignición + VEH5V el ventilador gira al 100 % en frío (paso 3 — este es el cambio de comportamiento clave vs. versiones anteriores); (4) la histéresis 48/45 °C del modo batería se cumple en ambos sentidos (pasos 6–7); (5) PA6 es DC plano en ON (sin portadora de 25 kHz); (6) `fan_fault=0` al final. +La unidad PASA si: (1) `fw=3.0.3` en BOOT; (2) `fan_pwm` solo toma valores 0 y 100 durante toda la prueba; (3) con ignición + VEH5V el ventilador gira al 100 % en frío (paso 3 — este es el cambio de comportamiento clave vs. versiones anteriores); (4) la histéresis 48/45 °C del modo batería se cumple en ambos sentidos (pasos 6–7); (5) PA6 es DC plano en ON (sin portadora de 25 kHz); (6) `fan_fault=0` al final. Cualquier desviación: capture el log serie completo (es append-only, basta guardar la sesión de terminal) y repórtelo con el número de paso. ## 6. Registro -| Unidad | Fecha | Ingeniero | P3 (100 % frío) | P6/P7 (histéresis) | fan_fault | PASA/FALLA | +| Unidad | Fecha | Ingeniero | P3 (100 % frío) | P6/P7 (histéresis) | fan_fault | PASA/FALLA | |---|---|---|---|---|---|---| | H____ | | | | | | | + +Detalle de la política en el firmware: [manual V3](../manuales/manual-tarjeta-V3.md) · [manual V4](../manuales/manual-tarjeta-V4.md). Binarios: [Descargas](../descargas/index.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-08-18 | Primera versión. | +| 1.1 | 2026-09-29 | Encabezado uniforme, avisos en formato del sitio y enlaces a manuales y descargas. | diff --git a/06-Testing-Validation/2026-09-15_Drogheda_EinarBoard-v5_Procedimiento-Prueba-y-Flasheo_ES_v1.0.md b/06-Testing-Validation/2026-09-15_Drogheda_EinarBoard-v5_Procedimiento-Prueba-y-Flasheo_ES_v1.0.md index a88e890..8022372 100644 --- a/06-Testing-Validation/2026-09-15_Drogheda_EinarBoard-v5_Procedimiento-Prueba-y-Flasheo_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-15_Drogheda_EinarBoard-v5_Procedimiento-Prueba-y-Flasheo_ES_v1.0.md @@ -1,256 +1,197 @@ --- -title: EinarBoard v5 (HBOX v5) — Procedimiento de prueba y flasheo por tarjeta -tags: [project-drogheda, hardware, einarboard, v5, bringup, testing, flasheo, procedimiento] +title: "EinarBoard V5 — Prueba y flasheo por tarjeta" +tags: [project-drogheda, hardware, einarboard, v5, v5.5, v5.6, bringup, testing, flasheo, procedimiento] +date: 2026-09-15 project: Project Drogheda author: Helgen Technologies -date: 2026-09-15 -version: 1.0 -status: ACTIVO — aplicar a cada una de las 15 tarjetas del lote JLC 22-Ago-2026 +version: 1.2 +status: ACTIVO audience: técnicos de banco --- -# EinarBoard v5 — Procedimiento de prueba y flasheo +# EinarBoard V5 — Prueba y flasheo por tarjeta -**Lote:** 15 tarjetas `hbox-watchdog-v5` (JLCPCB, pedido 22-Ago-2026). -**Objetivo:** verificar que cada tarjeta enciende sin cortos, que sus rieles están en valor, -y dejarla flasheada con el firmware de arranque entregado por ingeniería. -**Duración estimada:** 15–20 min por tarjeta. +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: al recibir cada tarjeta V5.5 o V5.6 desnuda, antes de montar módulos. Siguiente paso: [Módulos RTK y 4G](v5-modulos-integracion.md). + - Tiempo: 15–20 min por tarjeta. + - Necesitas: multímetro, fuente de banco 0–30 V con límite de corriente, cable USB-C con datos, laptop con STM32CubeProgrammer o `dfu-util`, jumper 2.54 mm para P11, lupa, el binario V5 vigente de [Descargas](../descargas/index.md) y el [acta de tarjeta V5](../formularios/v5.html). -> ⛔ **REGLA 1 — NO flashear `blackpillrtkcode_v3` (v3.0.3) en esta tarjeta.** -> Ese firmware es para la EinarBoard 1.0 (Blackpill). En la v5 usa los pines PB12–PB15 como -> LEDs de batería, pero en esta tarjeta esos pines son el bus SPI del chip Ethernet (W5500). -> Solo se flashea el archivo `.bin` que entregue ingeniería para v5. -> -> ⛔ **REGLA 2 — Sin batería y sin módulos en estas pruebas.** No conectar nada en P4 -> (batería), ni insertar el simpleRTK2B en MOD1, ni el módem 4G en J7/J8. -> -> ⛔ **REGLA 3 — Fuente de banco siempre con límite de corriente.** Si la corriente llega al -> límite o un componente se calienta: apagar, marcar la tarjeta como FALLA y pasar a la siguiente. +!!! warning "Reglas" + 1. Flashea solo el binario V5 de [Descargas](../descargas/index.md). `blackpillrtkcode_v3` (v3.0.3) maneja PB12–PB15 como LEDs de batería; en la V5 esos pines son el SPI del W5500. + 2. Sin batería en P4, sin simpleRTK2B en MOD1 y sin módem en J7/J8. + 3. Fuente siempre con límite de corriente. Si llega al límite o algo se calienta: apaga, marca FALLA y pasa a la siguiente tarjeta. ---- +## Referencias en la tarjeta -## 0. Material - -| Cant. | Ítem | -|---|---| -| 1 | Multímetro (continuidad / V DC) | -| 1 | Fuente de banco 0–30 V con límite de corriente ajustable | -| 1 | Cable USB-C ↔ USB-C (o USB-A ↔ USB-C) **con datos** (no solo carga) | -| 1 | Laptop con **STM32CubeProgrammer** instalado (o `dfu-util` en terminal) | -| 1 | Archivo de firmware: **`hbox-v5-bringup_0.5.1.bin`** — descarga: **https://drogheda.helgen.online/descargas/** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `e1f35108`) | -| 1 | Jumper 2.54 mm para P11 (interruptor de corte) | -| 1 | Lupa o lámpara con aumento | -| — | Hoja de registro (sección 7) | - -**Identificación en la tarjeta** (serigrafía): - -| Ref. | Qué es | Dónde se usa | +| Ref. | Qué es | Uso | |---|---|---| -| **J11** | USB-C **DFU** (junto a SW1/SW2 y J10 Ethernet) | Alimentar solo el MCU y flashear | -| **J9** | USB-C del **módem** | NO se usa en este procedimiento | -| **SW1** | Botón **RESET** | Reiniciar el MCU | -| **SW2** | Botón **BOOT0** | Entrar en modo DFU | -| **TP7 / TP6** | Puntos de prueba **3V3 / GND** | Medir el riel de 3.3 V | -| **TP3 / TP4 / TP5** | SWDIO / SWCLK / NRST | Solo si ingeniería pide programar por ST-Link | -| **P2** | Entrada **5 V** (donde va la Mean Well SD-15B) | Prueba del riel de 5 V | -| **P1** | Entrada **24 V** (GX16) — pin 1 = +24 V, pin 2 = GND | Prueba del buck del ventilador | -| **P11** | Header **CUTOFF-SW** (2 pines) | Puentear para que pase MAIN5V → SYS5V | -| **P6** | Header del ventilador (2 pines) — pin 1 = +5V_FAN, pin 2 = retorno conmutado | Medir salida del buck (pin 1 contra GND) | -| **MOD1** | Zócalo UNO del simpleRTK2B — pin **"5V"** | Verificar que la etapa RTK arranca **apagada** | -| **D18** | LED verde **PWR** | Enciende cuando hay 3.3 V | -| **D17** | LED azul **C13** | Lo controla el firmware (apagado en chip virgen) | -| **U17** | Regulador AMS1117 3.3 V | Tocar para verificar temperatura | -| **Y2** | Cristal **3.6864 MHz** (HC-49, marcado `3.6864` / `36.864`) | Verificación visual | +| J11 | USB-C DFU (junto a SW1/SW2 y J10) | Alimentar el MCU y flashear | +| J9 | USB-C del módem | No se usa aquí | +| SW1 / SW2 | RESET / BOOT0 | Reinicio y modo DFU | +| TP7 / TP6 | 3V3 / GND | Riel de 3.3 V | +| TP3 / TP4 / TP5 | SWDIO / SWCLK / NRST | Solo si ingeniería pide ST-Link | +| P2 | Entrada 5 V (SD-15B) | Riel de 5 V | +| P1 | Entrada 24 V (GX16): pin 1 = +24 V, pin 2 = GND | Buck del ventilador | +| P11 | CUTOFF-SW (2 pines) | Puentear para pasar MAIN5V → SYS5V | +| P6 | Ventilador: pin 1 = +5V_FAN, pin 2 = retorno conmutado | Salida del buck (pin 1 contra GND) | +| MOD1 | Zócalo UNO del simpleRTK2B, pin "5V" | La etapa RTK debe arrancar apagada | +| D18 / D17 | LED verde PWR / LED azul C13 | 3.3 V presente / controlado por firmware | +| U17 | AMS1117 3.3 V | Temperatura al tacto | +| Y2 | Cristal 3.6864 MHz (marcado `3.6864` o `36.864`) | Visual | ---- +## 1. Inspección visual (sin energía, 3 min) -## 1. Inspección visual (sin energía) — 3 min +- [ ] Sin puentes de soldadura en U16 (MCU), U11 (W5500), U10 (SC16IS752) y U6 (LTC4040). +- [ ] Y2 marcado `3.6864` o `36.864`; Y1 y Y3 `25.000`; Y4 el pequeño de 32.768 kHz. Y2 marcado `1.8432`: anota y avisa a ingeniería. +- [ ] SW1 y SW2 presentes y con clic. +- [ ] J11, J9 y J10 (RJ45) asentados, sin pines doblados. +- [ ] JP2, JP3 y JP4 presentes; no cambies su posición. +- [ ] Sin componentes faltantes ni marcas de quemado. -Con lupa, en cada tarjeta: +## 2. Cortos a tierra (sin energía, 2 min) -- [ ] No hay puentes de soldadura visibles entre pines de **U16** (MCU, 64 pines), **U11** - (W5500), **U10** (SC16IS752), **U6** (LTC4040). -- [ ] **Y2** dice `3.6864` (o `36.864`). Los otros tres cristales: **Y1** y **Y3** = `25.000`, - **Y4** = pequeño de 32.768 kHz. Si Y2 dice `1.8432` → marcar y avisar a ingeniería. -- [ ] Botones **SW1** y **SW2** presentes y con "clic". -- [ ] Conectores **J11**, **J9**, **J10 (RJ45)** bien asentados, sin pines doblados. -- [ ] Jumpers de configuración del cargador presentes: **JP2, JP3, JP4** (no tocar su posición). -- [ ] Sin componentes faltantes evidentes ni marcas de quemado. +Multímetro en ohms, no en modo continuidad. Punta negra en TP6. Unos cientos de ohms que suben es normal (capacitores cargando); una lectura fija de 0–20 Ω es corto. ---- - -## 2. Continuidad — cortos a tierra (sin energía) — 2 min - -Multímetro en **ohms** (no en modo continuidad/beep, porque los capacitores dan lecturas -transitorias). Punta negra en **TP6 (GND)**. Esperar a que la lectura se estabilice. - -| Medir en | Riel | Esperado | Si es < 100 Ω | +| Punto | Riel | Esperado | < 100 Ω | |---|---|---|---| -| **TP7** | 3V3 | > 1 kΩ (la lectura sube lentamente) | FALLA — corto en 3.3 V | -| **P2 pin 1** | VEH5V (entrada 5 V) | > 1 kΩ | FALLA — corto en entrada 5 V | -| **P11 pin 1** | MAIN5V | > 1 kΩ | FALLA — corto en 5 V del sistema | -| **P1 pin 1** | 24V_IN | > 10 kΩ | FALLA — corto en 24 V | -| **MOD1 pin "5V"** | SW_5V (etapa RTK) | > 1 kΩ | FALLA | +| TP7 | 3V3 | > 1 kΩ | FALLA: corto en 3.3 V | +| P2 pin 1 | VEH5V | > 1 kΩ | FALLA: corto en entrada 5 V | +| P11 pin 1 | MAIN5V | > 1 kΩ | FALLA: corto en 5 V del sistema | +| P1 pin 1 | 24V_IN | > 10 kΩ | FALLA: corto en 24 V | +| MOD1 pin "5V" | SW_5V | > 1 kΩ | FALLA | -> Nota: es normal ver lecturas de unos cientos de ohms **que van subiendo** — son los -> capacitores cargándose con el multímetro. Lo que NO es normal es una lectura fija de 0–20 Ω. +## 3. Riel de 3.3 V por USB (J11, 3 min) ---- +El USB en J11 energiza solo el MCU y la lógica de 3.3 V; el 5 V del sistema queda apagado. -## 3. Prueba del riel de 3.3 V por USB (J11) — 3 min +1. Conecta USB-C en J11 a la laptop o a un cargador. +2. Mide: -Con USB solo se energiza el MCU y la lógica de 3.3 V; el riel de 5 V del sistema queda apagado. -Es la forma más segura de encender la tarjeta por primera vez. + | Punto | Esperado | + |---|---| + | D18 | Encendido | + | TP7 contra TP6 | 3.20–3.40 V | + | U17 al tacto tras 1 min | Tibio. Si quema: FALLA | + | D17 | Apagado o fijo (chip virgen) | -1. Conectar el cable USB-C en **J11** (el que está junto a los botones), otro extremo a la laptop - o a un cargador USB. -2. Verificar: +3. D18 apagado o TP7 < 3.0 V: desconecta y marca FALLA (3V3). +4. Deja el USB conectado. -| Punto | Esperado | -|---|---| -| **D18** (LED verde PWR) | **Encendido** | -| **TP7** respecto a TP6 | **3.20 – 3.40 V** | -| **U17** (AMS1117) al tacto tras 1 min | Tibio, se puede tocar. **Si quema → FALLA** | -| **D17** (LED azul) | Apagado o fijo (chip virgen — normal) | +## 4. Rieles de 5 V y 24 V con fuente (5 min) -3. Si D18 no enciende o TP7 < 3.0 V → desconectar, marcar **FALLA (3V3)**. -4. **Dejar el USB conectado** para la sección siguiente. +Con el MCU virgen sus pines quedan en alta impedancia y la etapa RTK debe quedar apagada; eso es lo que se verifica. ---- +### 4a. 5 V (P2) -## 4. Prueba de rieles de 5 V y 24 V con fuente de banco — 5 min +1. Fuente a 5.0 V, límite 500 mA, salida apagada. +2. Jumper en P11. +3. Fuente a P2 (pin 1 = +5 V, pin 2 = GND). El USB puede quedarse en J11. +4. Enciende y mide: -Se hace **con el MCU virgen (sin firmware)**: así todos sus pines quedan en alta impedancia y la -etapa RTK permanece apagada por diseño. Esto es lo que se está verificando. + | Punto | Esperado | + |---|---| + | Corriente | < 300 mA (típico 100–250 mA) | + | P11 pin 1 (MAIN5V) | 4.8–5.1 V | + | P11 pin 2 (SYS5V) | 4.8–5.1 V | + | TP7 | 3.20–3.40 V | + | MOD1 pin "5V" (SW_5V) | 0 V. Con 5 V: FALLA (la etapa RTK no arranca apagada) | + | U6 y U12 al tacto | Tibios | -### 4a. Riel de 5 V (entrada P2) +5. Apaga la fuente y desconecta P2. -1. Fuente de banco: **5.0 V, límite 500 mA**, salida apagada. -2. Colocar el **jumper en P11** (CUTOFF-SW). -3. Conectar fuente a **P2**: pin 1 = +5 V, pin 2 = GND. (Puede quedarse el USB en J11.) -4. Encender la salida y medir: +### 4b. 24 V → buck del ventilador (P1) -| Punto | Esperado | -|---|---| -| Corriente de la fuente | **< 300 mA** (típico 100–250 mA) | -| **P11 pin 1** (MAIN5V) | 4.8 – 5.1 V | -| **P11 pin 2** (SYS5V, con jumper) | 4.8 – 5.1 V | -| **TP7** (3V3) | 3.20 – 3.40 V | -| **MOD1 pin "5V"** (SW_5V, etapa RTK) | **0 V** ← obligatorio. Si hay 5 V aquí → FALLA (etapa RTK no arranca apagada) | -| **U6** (LTC4040), **U12** (buck Ethernet) al tacto | Tibios, no queman | +1. Fuente a 24.0 V, límite 200 mA, salida apagada. +2. Fuente a P1 (pin 1 = +24 V, pin 2 = GND). Pin 3 (ignición) sin conectar. +3. Enciende y mide: -5. Apagar la salida de la fuente. Desconectar de P2. + | Punto | Esperado | + |---|---| + | Corriente | < 50 mA (sin ventilador) | + | P6 pin 1 contra TP6 | 4.9–5.1 V (no midas contra P6 pin 2: es el lado conmutado) | + | U2 al tacto | Frío o tibio | -### 4b. Riel de 24 V → buck del ventilador (entrada P1) +4. Apaga y desconecta P1. El jumper de P11 puede quedarse. -1. Fuente de banco: **24.0 V, límite 200 mA**, salida apagada. -2. Conectar a **P1**: pin 1 = +24 V, pin 2 = GND. **Pin 3 (ignición) sin conectar.** -3. Encender la salida y medir: +Valor fuera de rango: marca FALLA con la sección (4a o 4b) y el valor medido. -| Punto | Esperado | -|---|---| -| Corriente de la fuente | **< 50 mA** (sin ventilador) | -| **P6 pin 1** (5V_FAN) respecto a **TP6 (GND)** | **4.9 – 5.1 V** (no medir contra P6 pin 2: es el lado conmutado del ventilador) | -| **U2** (buck) al tacto | Frío o tibio | +## 5. Flasheo por USB DFU (J11, 5 min) -4. Apagar salida. Desconectar de P1. Quitar el jumper de P11 (opcional; puede dejarse). +Solo tarjetas que pasaron 1–4. El firmware de campo se flashea igual. Verifica el SHA-256 del binario antes ([Descargas](../descargas/index.md)). -> Si algún valor está fuera de rango: marcar FALLA con la sección (4a o 4b) y el valor medido. -> **No flashear una tarjeta con FALLA.** +### 5a. Modo DFU ---- +1. Solo el USB en J11 (nada en P1/P2). +2. Mantén SW2 (BOOT0). +3. Pulsa y suelta SW1 (RESET). +4. Suelta SW2. +5. La laptop detecta `STM32 BOOTLOADER` (ID `0483:DF11`). -## 5. Flasheo por USB DFU (J11) — 5 min +Si no aparece: cambia el cable (muchos son solo de carga) y repite con SW2 presionado al soltar SW1. El chip virgen solo entra al bootloader con esta secuencia. -Solo para tarjetas que pasaron las secciones 1 a 4. +### 5b. STM32CubeProgrammer -### 5a. Entrar en modo DFU +1. Selector de conexión: USB. Refresca hasta ver `USB1` y pulsa Connect. +2. Pestaña Erasing & Programming. +3. File path: el `.bin` descargado. Start address: `0x08000000`. +4. Marca Verify programming y Run after programming. +5. Start Programming. Espera "File download complete" y "Verify… successful". +6. Disconnect. -1. Solo el **USB en J11** conectado a la laptop (nada en P1/P2). -2. **Mantener presionado SW2 (BOOT0).** -3. Sin soltar SW2, **presionar y soltar SW1 (RESET)**. -4. **Soltar SW2.** -5. La laptop debe detectar un dispositivo **"STM32 BOOTLOADER"** (ID `0483:DF11`). - -> El chip viene **vacío de fábrica**: no hace nada hasta que se flashea, y **solo** entra al -> programador con esta secuencia de botones. Si no aparece el dispositivo: cambiar el cable -> USB (muchos son solo de carga), repetir la secuencia con calma (SW2 debe estar presionado -> cuando se suelta SW1). - -### 5b. Flashear con STM32CubeProgrammer (recomendado) - -1. Abrir **STM32CubeProgrammer**. -2. Arriba a la derecha, en el selector de conexión elegir **USB**. Pulsar el botón de refrescar; - debe aparecer `USB1`. Pulsar **Connect**. -3. Ir a la pestaña **Erasing & Programming** (icono de flecha hacia abajo, lado izquierdo). -4. **File path** → seleccionar `hbox-v5-bringup_0.5.1.bin`. -5. **Start address** = `0x08000000`. Marcar **Verify programming** y **Run after programming**. -6. Pulsar **Start Programming**. Esperar "File download complete" y "Verify… successful". -7. Pulsar **Disconnect**. - -### 5c. Alternativa por terminal (`dfu-util`, macOS/Linux) +### 5c. `dfu-util` (macOS/Linux) ```bash -dfu-util -l # debe listar [0483:df11] -dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.5.1.bin +dfu-util -l # debe listar [0483:df11] +dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_X.Y.Z.bin ``` -### 5d. Verificación después del flasheo +### 5d. Verificación -1. Abrir un terminal serie en la laptop (CoolTerm, Serial, `screen`, o el monitor de Arduino) - y dejarlo listo. Pulsar **SW1** (RESET) una vez. -2. Esperado en los primeros 5 segundos: +1. Abre un terminal serie a 115200 baud (CoolTerm, `screen` o el monitor de Arduino) y pulsa SW1. +2. En los primeros 5 s: -| Punto | Esperado | -|---|---| -| **D17** (LED azul) + LED de panel en P8 (si hay) | **Parpadean** a 1 Hz (MCU ejecutando el firmware) | -| **DB1 → DB4** (LEDs del indicador de batería) | Se encienden **en secuencia** una vez, luego se apagan; después R, G, B en P14 si hay LED RGB conectado | -| Laptop | Aparece un **puerto serie** nuevo ("STMicroelectronics Virtual COM Port" / `usbmodem…`) | -| Terminal serie a **115200 baud** | Encabezado `hbox-v5-bringup 0.5.1` (cualquier otra version: re-flashear), luego líneas `[PASS]` / `[FAIL]`, y al final **`>>> BOARD OK`** | + | Punto | Esperado | + |---|---| + | D17 y LED de panel en P8 | Parpadean a 1 Hz | + | DB1 → DB4 | Encienden en secuencia una vez y se apagan; luego R, G, B en P14 si hay LED RGB | + | Laptop | Puerto serie nuevo (`STMicroelectronics Virtual COM Port` / `usbmodem…`) | + | Terminal | Encabezado `hbox-v5-bringup X.Y.Z` con la versión flasheada (otra versión: reflashea), líneas `[PASS]` y al final `>>> BOARD OK` | -3. Si el terminal se abrió tarde y no se vio el reporte: teclear **`r`** en el terminal → repite - todas las pruebas (y vuelve a encender los LEDs en secuencia). -4. Reporte esperado (todas `[PASS]`): +3. Si abriste el terminal tarde, teclea `r`: repite las pruebas y la secuencia de LEDs. +4. Reporte esperado: -``` -[PASS] CLOCK_HSE SYSCLK=96000000 Hz HSE_RDY=1 PLL_SRC=HSE ← cristal Y3 y USB OK -[PASS] LSE_Y4 Y4 32.768k LSERDY=1 ← cristal Y4 OK -[PASS] I2C PCF8574 U13 @0x20 ACK -[PASS] I2C SHT40 U3 @0x44 ACK -[PASS] I2C TMP102 U4 @0x48 ACK -[PASS] I2C SC16IS752 U10 @0x4D ACK -[PASS] TMP102 TMP102 27.50 C -[PASS] SHT40 SHT40 27.8 C 45.0 %RH -[PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60 -[PASS] GAUGE_WALK visual — technician confirms ← el técnico confirma que vio DB1→DB4 -[PASS] ADC vbat=0.00 v5=0.00 ntc=..C mcu=..C ← vbat y v5 en 0 es NORMAL con solo USB -[PASS] DIN ign=0 chrg=.. fault=.. ser_irq=1 eth_int=.. ----- RESULT: 12 PASS / 0 FAIL ---- ->>> BOARD OK -``` + ``` + [PASS] CLOCK_HSE SYSCLK=96000000 Hz HSE_RDY=1 PLL_SRC=HSE ← cristal Y3 y USB + [PASS] LSE_Y4 Y4 32.768k LSERDY=1 ← cristal Y4 + [PASS] I2C PCF8574 U13 @0x20 ACK + [PASS] I2C SHT40 U3 @0x44 ACK + [PASS] I2C TMP102 U4 @0x48 ACK + [PASS] I2C SC16IS752 U10 @0x4D ACK + [PASS] TMP102 TMP102 27.50 C + [PASS] SHT40 SHT40 27.8 C 45.0 %RH + [PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60 + [PASS] GAUGE_WALK visual — technician confirms ← confirmas que viste DB1→DB4 + [PASS] ADC vbat=0.00 v5=0.00 ntc=..C mcu=..C ← vbat y v5 en 0 con solo USB + [PASS] DIN ign=0 chrg=.. fault=.. ser_irq=1 eth_int=.. + ---- RESULT: 12 PASS / 0 FAIL ---- + >>> BOARD OK + ``` - Después imprime una línea `STAT …` cada 2 s con temperaturas y voltajes — es normal. + Después sale una línea `STAT …` cada 2 s. Sin módulos ni batería, la etapa RTK y el cargador no encienden. -5. Cualquier `[FAIL]` → anotar la línea completa en la hoja de registro y marcar **FALLA (POST)**. - El LED azul que no parpadea → repetir 5a–5b una vez; si vuelve a fallar → **FALLA (FLASH)**. +5. Cualquier `[FAIL]`: anota la línea completa y marca FALLA (POST). LED azul sin parpadear: repite 5a–5b una vez; si vuelve a fallar, FALLA (FLASH). -> Este firmware **no enciende la etapa RTK ni el cargador**: solo prueba la tarjeta. El firmware -> de producción v5 se flashea después, por el mismo procedimiento DFU. +## 6. Cierre ---- +- [ ] Desconecta el USB. +- [ ] Etiqueta la tarjeta con su serie (V5-01 … V5-15) y la fecha, cerca de MH4, sin tapar serigrafía. +- [ ] Llena el [acta de tarjeta V5](../formularios/v5.html). +- [ ] Guarda en bolsa antiestática. Las FALLA van en bolsa aparte con nota del punto que falló. -## 6. Cierre de la tarjeta +## 7. Hoja de respaldo en papel -- [ ] Desconectar USB. -- [ ] Etiquetar la tarjeta con su número de serie (**V5-01 … V5-15**) y fecha, en la esquina - cerca de MH4 (sin tapar serigrafía ni componentes). -- [ ] Llenar la hoja de registro. -- [ ] Guardar en bolsa antiestática. Las tarjetas con FALLA van en bolsa aparte con la nota - del punto que falló. - ---- - -## 7. Hoja de registro del lote +El registro oficial es el acta. Anota el valor medido cuando esté fuera de rango (ej. "TP7 = 2.9 V"). | Tarjeta | Visual (1) | Cortos (2) | 3V3 USB (3) | 5 V (4a) | 24 V (4b) | DFU (5a) | Flash (5b) | Post-flash (5d) | OK / FALLA | Técnico | Fecha | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -270,42 +211,28 @@ dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.5.1.bin | V5-14 | | | | | | | | | | | | | V5-15 | | | | | | | | | | | | -Anotar el valor medido cuando esté fuera de rango (ej. "TP7 = 2.9 V"). +Conectores y LEDs: [manual V5](../manuales/manual-tarjeta-V5.md) · valores: [hoja de datos V5.6](../hardware/v56-datasheet.md) · [pinout V5.6](../hardware/v56-pinout.md). ---- +## Anexo — notas de ingeniería -## Anexo A — Notas de ingeniería (no requeridas para el técnico) +Verificado contra `hbox-watchdog-v5.kicad_pcb` / `.kicad_sch` (netlist, 15-sep-2026): -Verificado contra `hbox-watchdog-v5.kicad_pcb` / `.kicad_sch` (netlist, 15-Sep-2026): +- Alimentación por J11: VBUS → D13 (SS34) → `/LDO_IN` → U17 AMS1117 → `/3V3`. `/SYS5V` apagado, así que U12 y `/3V3_ETH` (W5500) también. R100/R101 (5.1 k en CC) presentes: un cable C-a-C entrega VBUS. +- DFU: BOOT0 = pin 60 de U16, pull-down R98 10 k, SW2 a 3V3. `/BOOT1_STRAP` (PB2, pin 28) a GND por R99 10 k. HSE = Y3 25 MHz en PH0/PH1 (el bootloader ROM lo requiere, AN2606). USB en PA11/PA12 (pines 44/45) con ESD D14/D15. +- SWD: TP3 SWDIO (PA13), TP4 SWCLK (PA14), TP5 NRST, TP6 GND, TP7 3V3. +- Única colisión v3.0.3 ↔ v5: `PIN_BATLED1..4` = PB12–PB15 (pines 33–36) = `/ETH_CS`, `/ETH_SCK`, `/ETH_MISO`, `/ETH_MOSI` (SPI2 del W5500); PB14 es salida del W5500. En v5 el indicador de batería está en U13 PCF8574 (A0–A2 a GND → 0x20, P0–P3 → RB1–RB4 120 R → LEDs). El resto del mapa v3 coincide: PA0 BAT_SENSE, PA1 PWR_CTRL, PA2/PA3 GNSS, PA4 5V_SENSE, PA5 IGN_SENSE, PA6 FAN_PWM, PA8 CHRG_EN, PA9/PA10 USART1, PB0 EXT_LED, PB1 NTC, PB3 CHRG_STAT, PB4 CHRG_FAULT, PB5 BYP_CTRL, PB6/PB7 I²C1, PC13 LED (activo bajo, R102 1 k a 3V3), PB10 tach = NC. +- Pines v5 que v3 no conoce: PC0 `/ETH_INT`, PA15 `/ETH_RST` (sin pull-up: flota si el MCU no lo maneja), PB8 `/SER_IRQ`, PC14/PC15 LSE (Y4). `/SER_RSTn` tiene pull-up R80 10 k. +- Cristales (BOM = maestro): Y2 = C2238 X49SM36864MSD2SC-1 = 3.6864 MHz para el SC16IS752 (`XTAL_FREQ 3686400`); "1.8432MHz" en esquemático/BOM es error de etiqueta. Y1 (W5500) y Y3 (HSE) = C14872 X49SM25MSD2SC = 25 MHz, confirmados contra el BOM de JLCPCB. Y4 = 32.768 kHz. +- KiCad vs tarjetas fabricadas: el `.kicad_pcb` vivo tiene 35 huellas movidas después del pedido (commits 24-ago y 07-sep: zona Ethernet/DFU J10/U11/U12/Y1/C90–C103/J11, D14–D16, R20, C101); la netlist no cambió. Referencia física del lote: `production/HBOX_v5_PROD.zip` (22-ago). En las tarjetas recibidas D14–D16 están junto al MCU, no junto a J11. +- U2 se habilita solo: `/EN_FAN` = divisor Ren1 100 k / Ren2 20 k desde `/24V` (≈4 V con 24 V), sin MCU; por eso 4b vale con chip virgen. `/FAN_RET` es el lado bajo conmutado por Q2 (gate en PA6): abierto con MCU virgen. +- Compilación v5: `STMicroelectronics:stm32:GenF4:pnum=GENERIC_F411RETX` (no `BLACKPILL_F411CE`), `HSE_VALUE=25000000` con `SystemClock_Config` explícito en HSE para que el USB CDC tenga reloj exacto. -- **Alimentación por J11:** VBUS → D13 (SS34) → `/LDO_IN` → U17 AMS1117 → `/3V3`. `/SYS5V` - queda apagado, por lo tanto U12 y `/3V3_ETH` (W5500) quedan apagados. R100/R101 (5.1 k en CC) - presentes: un cable C-a-C entrega VBUS. -- **DFU:** BOOT0 = pin 60 de U16, pull-down R98 10 k, SW2 lo lleva a 3V3. `/BOOT1_STRAP` - (PB2, pin 28) fijo a GND por R99 10 k. HSE = Y3 25 MHz en PH0/PH1 (el bootloader ROM lo - requiere, AN2606). USB en PA11/PA12 (pines 44/45) con ESD D14/D15. -- **SWD:** TP3 SWDIO (PA13), TP4 SWCLK (PA14), TP5 NRST, TP6 GND, TP7 3V3. -- **Colisión firmware v3.0.3 ↔ v5 (única encontrada):** `PIN_BATLED1..4` = PB12–PB15 (pines - 33–36) = `/ETH_CS`, `/ETH_SCK`, `/ETH_MISO`, `/ETH_MOSI` (SPI2 del W5500). PB14 es salida del - W5500. El indicador de batería en v5 está en U13 PCF8574 (A0–A2 a GND → dirección I²C - 0x20, salidas P0–P3 → RB1–RB4 120 R → LEDs). Todo el resto del mapa de pines de v3 coincide - con v5: PA0 BAT_SENSE, PA1 PWR_CTRL, PA2/PA3 GNSS, PA4 5V_SENSE, PA5 IGN_SENSE, PA6 FAN_PWM, - PA8 CHRG_EN, PA9/PA10 USART1, PB0 EXT_LED, PB1 NTC, PB3 CHRG_STAT, PB4 CHRG_FAULT, - PB5 BYP_CTRL, PB6/PB7 I²C1, PC13 LED (activo bajo, R102 1 k a 3V3), PB10 tach = NC. -- **Pines de v5 que v3 no conoce (firmware v5 debe manejarlos):** PC0 `/ETH_INT`, - PA15 `/ETH_RST` (sin pull-up: flota si el MCU no lo maneja), PB8 `/SER_IRQ` (SC16IS752), - PC14/PC15 LSE 32.768 kHz (Y4). `/SER_RSTn` sí tiene pull-up R80 10 k. -- **Cristales (BOM = maestro):** Y2 = C2238 X49SM36864MSD2SC-1 = **3.6864 MHz** para el - SC16IS752 (`XTAL_FREQ 3686400`); el campo "1.8432MHz" del esquemático/BOM es un error de - etiqueta. Y1 (W5500) y Y3 (HSE del MCU) = C14872 X49SM25MSD2SC = **25 MHz**, confirmados contra el BOM de ensamble en JLCPCB. Y4 = 32.768 kHz LSE. -- **Estado del archivo KiCad vs tarjetas fabricadas:** el `.kicad_pcb` vivo tiene 35 huellas - movidas después del pedido (commits 24-Ago y 07-Sep: reubicación de la zona Ethernet/DFU - J10/U11/U12/Y1/C90–C103/J11, D14–D16, R20, C101). La netlist no cambió. La referencia - física de este lote es `production/HBOX_v5_PROD.zip` (22-Ago). En las tarjetas recibidas - D14–D16 están junto al MCU, no junto a J11. -- **Buck del ventilador U2 se habilita solo:** `/EN_FAN` = divisor Ren1 100 k / Ren2 20 k desde - `/24V` (≈4 V con 24 V de entrada), no depende del MCU → la prueba 4b es válida con chip virgen. - `/FAN_RET` es el lado bajo conmutado por Q2 (gate desde PA6): con MCU virgen queda abierto. -- **Objetivo de compilación del firmware v5:** `STMicroelectronics:stm32:GenF4:pnum=GENERIC_F411RETX` - (no `BLACKPILL_F411CE`), `HSE_VALUE=25000000` con `SystemClock_Config` explícito en HSE para - que el USB CDC tenga reloj exacto. +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-15 | Primera versión (lote de 15, firmware 0.5.1). | +| 1.1 | 2026-09-29 | Encabezado uniforme, nota de binario vigente, enlaces a acta y manuales. | +| 1.2 | 2026-09-29 | Edición breve: sin tabla de material duplicada; binario genérico `X.Y.Z` en lugar de 0.5.1. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Modulos-e-Integracion_ES_v1.0.md b/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Modulos-e-Integracion_ES_v1.0.md index 10c97f9..36cca99 100644 --- a/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Modulos-e-Integracion_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Modulos-e-Integracion_ES_v1.0.md @@ -1,211 +1,155 @@ --- -title: HBOX v5 — Prueba de módulos (simpleRTK2B Pro y 4G NTRIP Master) e integración RTK antes del ensamble +title: "HBOX V5 — Prueba de módulos e integración RTK" tags: [project-drogheda, hardware, hbox, v5, ardusimple, 4g, ntrip, testing, procedimiento] +date: 2026-09-17 project: Project Drogheda author: Helgen Technologies -date: 2026-09-17 -version: 1.0 -status: ACTIVO — se aplica a cada módulo antes de asignarlo a una unidad +version: 1.2 +status: ACTIVO audience: técnicos de banco --- -# HBOX v5 — Prueba de módulos e integración RTK (antes del ensamble) +# HBOX V5 — Prueba de módulos e integración RTK -**Objetivo:** que ningún módulo llegue al ensamble sin haber demostrado que funciona **solo** y **en -pareja**: cada simpleRTK2B Pro obtiene fix GNSS, cada 4G NTRIP Master se registra en la red, y la -pareja RTK + 4G alcanza **RTK FIX** con correcciones NTRIP. Todo queda registrado en las actas -del sitio (`https://drogheda.helgen.online` → Actas). +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: cada simpleRTK2B Pro y cada 4G NTRIP Master antes de asignarlo a una unidad, sin EinarBoard. Paso 2 de producción, entre la [prueba de tarjeta](v5-prueba-y-flasheo.md) y el [ensamble](v5-ensamble.md). + - Tiempo: módulo RTK 10 min · módulo 4G 10 min · integración 15–30 min (depende del cielo). + - Necesitas: laptop con u-center o u-center 2; dos cables USB-C con datos (el simpleRTK2B tiene dos puertos: POWER+GPS y XBEE); antena GNSS multibanda SMA con vista al cielo; dos antenas LTE (u.FL → SMA); una nano-SIM Telcel activa por módem; de ingeniería, la configuración F9P (`.txt` de u-center) y `4G_NTRIP_HelgenSRV-NMEA.local.txt` con credenciales (no se copia a otras máquinas); etiquetas ARD-NNN y RTK-NNNN, bolsas antiestáticas; actas [ArduSimple](../formularios/ardusimple.html), [módem 4G](../formularios/modem4g.html) e [integración](../formularios/integracion.html). -**Duración estimada:** módulo RTK 10 min · módulo 4G 10 min · integración 15–30 min (depende del cielo). +!!! warning "Reglas" + 1. Un acta por módulo, con su serie (ARD-010, RTK-0006…), nunca por lote. + 2. Sin EinarBoard: el simpleRTK2B se alimenta por su USB y el módem va en el zócalo XBee del simpleRTK2B. + 3. Conecta las antenas antes de energizar. Un transmisor LTE sin antena se puede dañar. -> ⛔ **REGLA 1 — Un acta por módulo, con su número de serie.** No se prueba "un lote"; se prueba -> RTK-010, 4G-006, uno por uno. -> -> ⛔ **REGLA 2 — Sin EinarBoard en estas pruebas.** El simpleRTK2B se alimenta por su propio USB y el -> módulo 4G va en el zócalo XBee del simpleRTK2B. La tarjeta EinarBoard entra hasta el ensamble. -> -> ⛔ **REGLA 3 — Antenas siempre conectadas antes de energizar** el módulo 4G y el receptor GNSS. -> Un transmisor LTE sin antena se puede dañar. +## 0. Números de serie ---- +| Pieza | Etiqueta | Dónde va | +|---|---|---| +| EinarBoard V5 | V5-01 … V5-15 (30 seleccionables) | Cerca de MH4 (puesta en la prueba de tarjeta) | +| simpleRTK2B Pro (ArduSimple) | ARD-001 … ARD-030 | Blindaje del ZED-F9P, sin tapar SMA ni zócalo XBee | +| 4G NTRIP Master (módem) | RTK-0001 … RTK-0030 (serie hasta RTK-1000) | Blindaje del módem, sin tapar los u.FL | +| Unidad HBOX | HBOX5-E07-A010-R0006 (la calcula el acta de ensamble) | Panel exterior | -## 0. Identidad de cada pieza (números de serie) +El número de unidad sale de sus tres módulos: `E07` = V5-07, `A010` = ARD-010, `R0006` = RTK-0006. "RTK-" es el módem 4G, no el receptor GNSS. Los números no tienen que coincidir: en el acta de ensamble eliges qué módulo aprobado va en cada unidad. -| Pieza | Etiqueta | Rango | Dónde va la etiqueta | -|---|---|---|---| -| EinarBoard v5 | **V5-01 … V5-15** (30 seleccionables) | lote JLC 22-Ago | esquina cerca de MH4 (ya puesta en la prueba de tarjeta) | -| simpleRTK2B Pro (ArduSimple) | **ARD-001 … ARD-030** | consecutivo de 3 dígitos | sobre el blindaje del ZED-F9P, sin tapar el conector SMA ni el zócalo XBee | -| 4G NTRIP Master (módem) | **RTK-0001 … RTK-0030** | consecutivo de 4 dígitos (serie hasta RTK-1000) | sobre el blindaje del módem, sin tapar los conectores u.FL de antena | -| Unidad HBOX (ensamblada) | **HBOX5-E07-A010-R0006** | se calcula sola en el acta de ensamble | panel exterior del HBOX | +En cada acta anota también la etiqueta de fábrica de ArduSimple y, en el módem, IMEI e ICCID de la SIM. -El número de la unidad **se arma con los tres módulos que lleva dentro**: `E07` = EinarBoard V5-07, -`A010` = ArduSimple ARD-010, `R0006` = módem 4G RTK-0006. **Ojo:** la etiqueta "RTK-" es la del **módem 4G**, no la del receptor GNSS. No hace falta que los números coincidan entre sí: el técnico -**selecciona** en el acta de ensamble qué módulo (ya aprobado) va en qué unidad, y el sitio compone el -número. Así, con solo leer la etiqueta del HBOX se sabe qué hay dentro. +## 1. simpleRTK2B Pro — acta ArduSimple -Anota también en cada acta la **etiqueta de fábrica** del módulo (el código que trae impreso -ArduSimple) y, en el 4G, el **IMEI** y el **ICCID de la SIM**. Es lo que después permite rastrear un -módulo en la plataforma. +### 1a. Inspección (sin energía) ---- +- [ ] Etiqueta ARD-NNN puesta; etiqueta de fábrica anotada. +- [ ] Pines del zócalo XBee (2 × 10) rectos; SMA firme; sin componentes golpeados. +- [ ] Tira tipo Arduino (entra en MOD1) recta y completa. -## 1. Material +### 1b. Fix GNSS -| Cant. | Ítem | -|---|---| -| 1 | Laptop con **u-center** (u-blox, Windows) o **u-center 2** | -| 2 | Cables USB-C **con datos** (el simpleRTK2B Pro tiene dos puertos USB: **POWER+GPS** y **XBEE**) | -| 1 | Antena GNSS multibanda (SMA) con vista al cielo (ventana con cielo abierto o exterior) | -| 2 | Antenas LTE (u.FL → SMA pigtail según el módulo) | -| 1 | SIM Telcel activa (nano-SIM) por módulo 4G | -| 1 | Archivo de configuración del **ZED-F9P** de Helgen (u-center `.txt`) — lo entrega ingeniería | -| 1 | Archivo de configuración del **4G NTRIP Master** con credenciales reales (`4G_NTRIP_HelgenSRV-NMEA.local.txt`) — lo entrega ingeniería, **no** se copia a otras máquinas | -| — | Etiquetas ARD-NNN (ArduSimple) y RTK-NNNN (módem 4G), marcador, bolsas antiestáticas | +1. Antena GNSS al SMA, con vista al cielo. +2. USB-C POWER+GPS a la laptop. +3. Verifica: ---- + | Punto | Esperado | + |---|---| + | LED POWER | Encendido | + | Laptop | Puerto serie u-blox GNSS receiver | + | u-center → Receiver → Connect | Fix Mode de *No Fix* a 3D en < 2 min a cielo abierto | + | Satélites en uso | ≥ 10 | + | LED GPS FIX | Parpadea con fix | -## 2. Módulo simpleRTK2B Pro (ArduSimple) — acta **"Módulo ArduSimple"** +4. Anota en el acta: firmware del ZED-F9P (View → Messages → UBX-MON-VER), satélites y tiempo al primer fix. -### 2a. Inspección visual (sin energía) +Sin fix en 5 min a cielo abierto: prueba otra antena antes de marcar FALLA. -- [ ] Etiqueta **ARD-NNN** puesta y legible; anotar también la etiqueta de fábrica. -- [ ] Pines del zócalo **XBee** (2 hileras de 10) rectos; conector **SMA** firme; sin componentes golpeados. -- [ ] Pines de la tira tipo Arduino (los que entran en MOD1 de la EinarBoard) rectos y completos. +### 1c. Configuración Helgen -### 2b. Energizado y fix GNSS +1. Tools → Receiver Configuration → Load configuration → archivo F9P de Helgen → Transfer file → GNSS. +2. UBX-CFG-CFG → Save current configuration (todas las memorias) → Send. +3. Desconecta y reconecta el USB. Conecta u-center a 115200: debe seguir con fix y `$GNGGA`. -1. Conectar la **antena GNSS** al SMA. Colocarla con vista al cielo. -2. Conectar el USB-C **POWER+GPS** a la laptop. -3. Verificar: +- [ ] Configuración guardada; sobrevive al reinicio. + +## 2. Módem 4G NTRIP Master — acta módem 4G + +### 2a. Inspección (sin energía) + +- [ ] Etiqueta RTK-NNNN puesta; IMEI (etiqueta del módem) e ICCID (SIM) anotados. +- [ ] SIM insertada en la dirección correcta, con clic. +- [ ] Pines XBee (2 × 10, paso 2 mm) rectos; u.FL sin daño. + +### 2b. Montaje y configuración + +1. Sin energía, inserta el módem en el zócalo XBee del simpleRTK2B. La silueta indica la orientación; no fuerces. +2. Dos antenas LTE a los u.FL; antena GNSS al SMA. +3. Conecta USB POWER+GPS (alimenta todo) y USB XBEE (configuración del módem). +4. Terminal serie en el puerto XBEE a 115200 baud. Envía línea por línea las líneas `$$$AS+…` de `4G_NTRIP_HelgenSRV-NMEA.local.txt`. Cada una contesta `OK` o el eco de ArduSimple. +5. `$$$AS+I=1111` para entrar a configuración; `$$$AS+K=…` con el ID de estación que indique ingeniería. + +- [ ] Configuración completa, sin `ERROR`. +- [ ] ID de estación (`AS+K`) anotado. + +### 2c. Registro en la red (hasta 2 min) | Punto | Esperado | |---|---| -| LED **POWER** | Encendido | -| Laptop | Aparece un puerto serie (u-blox GNSS receiver) | -| u-center → Receiver → Connect | Conecta; **Fix Mode** pasa de *No Fix* a **3D** en < 2 min a cielo abierto | -| Satélites en uso | **≥ 10** (cielo abierto) | -| LED **GPS FIX** | Parpadea cuando hay fix | +| LED de red 4G | De parpadeo rápido (buscando) a lento o fijo (registrado) | +| Comando de estado de ArduSimple por XBEE | Operador Telcel y RSSI | -4. Anotar en el acta: **versión de firmware** del ZED-F9P (u-center → View → Messages → UBX-MON-VER), - satélites en uso, y el tiempo hasta el primer fix. +- [ ] Registrado en Telcel; RSSI anotado si lo reporta. -### 2c. Cargar la configuración de Helgen +Sin registro en 3 min: prueba la SIM en otro módem aprobado. Si la SIM funciona allí y este no registra: FALLA (4G). -1. u-center → **Tools → Receiver Configuration** → *Load configuration* → archivo F9P de Helgen → - **Transfer file → GNSS**. -2. Guardar en el receptor: **UBX-CFG-CFG → Save current configuration** (todas las memorias) → Send. -3. Desconectar y reconectar el USB. Volver a conectar en u-center a la **velocidad configurada por Helgen - (115200)**. Debe seguir mostrando fix y mensajes `$GNGGA`. +## 3. Integración ArduSimple + 4G — acta de integración -- [ ] Configuración cargada y guardada; sobrevive al reinicio. +Se prueba la pareja que irá junta (ARD-NNN + RTK-NNNN); el mismo par se elige en el ensamble. Montaje igual que 2b; el USB XBEE puede quedar conectado para ver mensajes. -> Si el módulo no da fix en 5 min a cielo abierto, probar con otra antena antes de marcarlo FALLA. - ---- - -## 3. Módem 4G NTRIP Master — acta **"Módem 4G"** - -### 3a. Inspección visual (sin energía) - -- [ ] Etiqueta **RTK-NNNN** puesta; anotar **IMEI** (etiqueta del módem) e **ICCID** (tarjeta SIM). -- [ ] **SIM insertada** en la dirección correcta, con clic. -- [ ] Pines XBee (2 × 10, paso 2 mm) rectos; conectores **u.FL** de antena sin daño. - -### 3b. Montaje sobre el simpleRTK2B y configuración - -1. **Sin energía**, insertar el módulo 4G en el zócalo **XBee del simpleRTK2B Pro** (el módulo queda - sobre el receptor; el corte de la silueta indica la orientación — nunca forzar). -2. Conectar las **2 antenas LTE** a los u.FL del módulo. -3. Conectar la antena GNSS. Conectar el USB **POWER+GPS** (alimenta todo) **y** el USB **XBEE** (puerto de - configuración del módem). -4. En la laptop abrir un terminal serie en el puerto **XBEE** a **115200 baud** y enviar, línea por línea, - el archivo `4G_NTRIP_HelgenSRV-NMEA.local.txt` (solo las líneas `$$$AS+…`). Cada línea debe contestar - `OK` (o el eco de ArduSimple). -5. Al terminar: `$$$AS+I=1111` para entrar a config y **`$$$AS+K=…`** debe llevar el **ID de estación** - que indique ingeniería para este módulo (se anota en el acta). - -- [ ] Configuración enviada completa, sin líneas con `ERROR`. -- [ ] ID de estación (`AS+K`) anotado en el acta. - -### 3c. Registro en la red - -Esperar hasta 2 min con las antenas LTE conectadas: - -| Punto | Esperado | -|---|---| -| LED de **red / 4G** del módulo | Pasa de parpadeo rápido (buscando) a **parpadeo lento o fijo** (registrado) | -| Consulta de estado por el puerto XBEE (comando de estado de ArduSimple) | Reporta operador **Telcel** y señal (RSSI) | - -- [ ] Registrado en la red Telcel. Anotar RSSI si el módulo lo reporta. - -> Sin registro en 3 min: revisar que la SIM esté activa (probar la SIM en otro módulo aprobado). Si -> la SIM funciona en otro módulo y este no registra → **FALLA (4G)**. - ---- - -## 4. Integración ArduSimple + 4G — acta **"Integración"** - -Se hace con la **pareja** que después irá junta en una unidad (ARD-NNN + RTK-NNNN). El acta registra -los dos números; el mismo par se seleccionará en el ensamble. - -Montaje: el mismo del punto 3b (4G sobre el simpleRTK2B, dos antenas LTE, antena GNSS al cielo, USB -POWER+GPS conectado; el USB XBEE puede quedar conectado para ver mensajes). - -1. u-center conectado al puerto **POWER+GPS** (115200). Esperar fix **3D**. -2. Observar el LED **NO RTK** del simpleRTK2B: encendido = sin correcciones; **parpadeando = RTK FLOAT**; - **apagado = RTK FIX**. -3. En u-center: **Fix Mode** debe llegar a **3D/DGNSS/FIXED** (RTK fixed). Tiempo típico a cielo abierto: - 1–5 min tras el registro 4G. +1. u-center en POWER+GPS (115200). Espera fix 3D. +2. LED NO RTK del simpleRTK2B: encendido = sin correcciones; parpadea = RTK FLOAT; apagado = RTK FIX. +3. Fix Mode debe llegar a 3D/DGNSS/FIXED, típicamente 1–5 min después del registro 4G. | Punto | Esperado | Anotar | |---|---|---| -| Tiempo desde encendido hasta **RTK FIX** | < 10 min | minutos | -| Fix Mode en u-center | 3D/DGNSS/**FIXED** | — | +| Encendido → RTK FIX | < 10 min | minutos | +| Fix Mode | 3D/DGNSS/FIXED | — | | Satélites en uso | ≥ 10 | número | -| Precisión estimada (u-center, hAcc) | < 0.05 m en FIX | metros | -| Estabilidad | Se mantiene FIXED **5 min** sin caer a FLOAT (con la antena quieta) | sí/no | -| Plataforma Helgen | Ingeniería confirma que la estación (ID `AS+K`) aparece reportando en el servidor | sí/no | +| hAcc | < 0.05 m en FIX | metros | +| Estabilidad | FIXED 5 min sin caer a FLOAT, antena quieta | sí/no | +| Plataforma | Ingeniería ve la estación (`AS+K`) reportando | sí/no | -- [ ] RTK FIX alcanzado y estable 5 min. -- [ ] Confirmado en plataforma (o anotado "pendiente de confirmar" con hora). +- [ ] RTK FIX estable 5 min. +- [ ] Confirmado en plataforma, o "pendiente" con hora. -> **Si llega a FLOAT pero nunca a FIX:** cielo insuficiente (probar exterior) o punto de montaje -> incorrecto; no es falla del módulo si el módulo 4G ya registró y hay correcciones (LED NO RTK -> parpadea). Si **nunca sale de "encendido"** (sin correcciones): revisar credenciales NTRIP con -> ingeniería antes de marcar FALLA. +FLOAT sin llegar a FIX con el LED NO RTK parpadeando: falta cielo (prueba en exterior) o el mountpoint está mal; no es falla del módulo. LED NO RTK siempre encendido (sin correcciones): revisa credenciales NTRIP con ingeniería antes de marcar FALLA. -### 4b. Cierre +### Cierre -- [ ] Apagar (desconectar USB). Separar el módulo 4G del simpleRTK2B **con cuidado, sin doblar pines**. -- [ ] Guardar cada módulo en su bolsa con su etiqueta. Anotar en la bolsa del ArduSimple: "pareja: RTK-NNNN". -- [ ] Enviar el acta de integración con los dos números. +- [ ] Desconecta el USB. Separa el módem del simpleRTK2B sin doblar pines. +- [ ] Cada módulo en su bolsa con su etiqueta; en la del ArduSimple anota "pareja: RTK-NNNN". +- [ ] Envía el acta de integración. ---- +## 4. Criterio de aprobado -## 5. Hoja rápida de estados (para el técnico) - -| Módulo | Aprobado cuando… | +| Módulo | Aprobado cuando | |---|---| -| ARD-NNN | fix 3D, ≥10 sat, configuración Helgen cargada y guardada | -| RTK-NNNN (módem) | SIM registrada en Telcel, configuración enviada sin errores, `AS+K` anotado | -| Pareja ArduSimple + 4G | RTK FIX estable 5 min con correcciones por 4G | +| ARD-NNN | Fix 3D, ≥ 10 satélites, configuración Helgen guardada | +| RTK-NNNN | Registrado en Telcel, configuración sin errores, `AS+K` anotado | +| Pareja | RTK FIX estable 5 min con correcciones por 4G | -Un módulo con **FALLA** no se asigna a ninguna unidad: el acta de ensamble no lo dejará seleccionar. +El acta de ensamble no deja seleccionar un módulo con FALLA. Parámetros del módem y configuración F9P: [Descargas](../descargas/index.md). Configuración final de la unidad: [Configuración de la unidad](v5-configuracion-unidad.md). ---- +## Anexo — notas de ingeniería -## Anexo A — Notas de ingeniería +- En la unidad V5 el módem va en J7/J8 de la EinarBoard (mismo footprint XBee), no sobre el simpleRTK2B. El enlace F9P ↔ módem pasa por K1; con K1 liberado (`BYP_CTRL` bajo, estado por defecto) el camino es directo. Por eso la integración se prueba sobre el simpleRTK2B: misma electrónica, sin depender del firmware de la EinarBoard. +- F9P: UART1 a 115200 (lo lee la EinarBoard en PA3/PA2) y UART2 a la velocidad del módem (`AS+B=115200`). El `.txt` del F9P no está en el repo; falta añadirlo a `04-Source-Code/rtk-config/` (sin secretos). +- `AS+K` es la identidad en el servidor secundario (`AS+r/AS+h`). Pendiente decidir si es el número del módem (R0006) o el de la unidad; mientras, el acta lo guarda como texto libre. +- Credenciales (APN, NTRIP) solo en `…local.txt` en la laptop de banco; nunca en git ni en el sitio. -- En la **unidad v5** el módulo 4G **no** va sobre el simpleRTK2B: va en el zócalo **J7/J8** de la - EinarBoard (mismo footprint XBee). El enlace F9P ↔ módem pasa por el relevador **K1**; con K1 - liberado (estado por defecto del firmware, `BYP_CTRL` bajo) el camino es directo. Por eso la - prueba de integración se hace con el módulo montado en el simpleRTK2B (misma electrónica, sin - depender del firmware de la EinarBoard). -- Configuración F9P: UART1 a **115200** (es lo que lee la EinarBoard en PA3/PA2) y UART2 a la - velocidad del módem (`AS+B=115200`). El archivo `.txt` del F9P **no está en el repo** — hay que - añadirlo a `04-Source-Code/rtk-config/` (sin secretos) para que este procedimiento sea reproducible. -- El ID de estación `AS+K` es la identidad de la unidad en el servidor secundario (`AS+r/AS+h`). - Decisión pendiente: `AS+K` = número del módem 4G (R0006) o número de unidad. Mientras se decide, - el acta lo registra como texto libre. -- Las credenciales (APN, NTRIP) viven solo en `…local.txt` en la laptop de banco. Nunca en git ni en - el sitio. +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-17 | Primera versión. | +| 1.1 | 2026-09-29 | Encabezado uniforme, enlaces a actas, descargas y configuración. | +| 1.2 | 2026-09-29 | Edición breve: material dentro del encabezado; secciones renumeradas. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Procedimiento-Ensamble_ES_v1.0.md b/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Procedimiento-Ensamble_ES_v1.0.md index e726da7..8e7c284 100644 --- a/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Procedimiento-Ensamble_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-17_Drogheda_HBOX-v5_Procedimiento-Ensamble_ES_v1.0.md @@ -1,176 +1,169 @@ --- -title: HBOX v5 — Procedimiento de ensamble de la unidad y energizado final +title: "HBOX V5 — Ensamble de la unidad y energizado" tags: [project-drogheda, hardware, hbox, v5, ensamble, checklist, procedimiento] +date: 2026-09-17 project: Project Drogheda author: Helgen Technologies -date: 2026-09-17 -version: 1.0 -status: ACTIVO — una unidad a la vez; se registra en el acta "Ensamble" +version: 1.2 +status: ACTIVO — una unidad a la vez audience: técnicos de banco --- -# HBOX v5 — Ensamble de la unidad y energizado final +# HBOX V5 — Ensamble de la unidad y energizado -**Entrada:** tres módulos **ya aprobados** en sus actas — una EinarBoard **V5-NN** (acta de prueba y -flasheo), un simpleRTK2B Pro **ARD-NNN** y un módem 4G NTRIP Master **RTK-NNNN** que pasaron juntos la -**integración**. **Salida:** una unidad HBOX cerrada, etiquetada **HBOX5-Exx-Axxx-Rxxxx**, encendida y -reportando. +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: con una EinarBoard V5-NN aprobada y una pareja ARD-NNN + RTK-NNNN aprobada e integrada. Paso 3 de producción, entre [Módulos RTK y 4G](v5-modulos-integracion.md) y la [prueba final](v5-prueba-final-unidad.md). Resultado: unidad cerrada, etiquetada `HBOX5-Exx-Axxx-Rxxxx`, encendida y reportando. + - Tiempo: 60–90 min por unidad. + - Necesitas: ver §1; [acta de ensamble](../formularios/ensamble.html). -**Duración estimada:** 60–90 min por unidad. +!!! warning "Reglas" + 1. Primero el acta: selecciona los tres módulos en el [acta de ensamble](../formularios/ensamble.html) y espera a verlos en verde (Aprobado) con la pareja en "integración OK". Un módulo en rojo o "sin acta" no se ensambla. + 2. La batería se conecta al final (§6), con la unidad energizada desde 24 V. + 3. Inserta los módulos sin energía y revisa la orientación dos veces. Un XBee al revés o un simpleRTK2B corrido un pin se destruye al encender. -> ⛔ **REGLA 1 — Primero el acta, luego el desarmador.** Abrir el acta de ensamble, seleccionar los -> tres módulos y esperar a que el sitio muestre los tres en **verde (Aprobado)** y la pareja ArduSimple+4G -> con **integración OK**. Si alguno sale en rojo o "sin acta", **no se ensambla** con ese módulo. -> -> ⛔ **REGLA 2 — Batería al final.** El pack 1S4P se conecta en P4 solo en la sección 6, con la unidad -> ya energizada desde 24 V y con el NTC del pack en P4-3. -> -> ⛔ **REGLA 3 — Todo módulo se inserta sin energía**, mirando la orientación dos veces. Un XBee al -> revés o un simpleRTK2B corrido un pin se destruye al encender. +## 0. Número de la unidad ---- - -## 0. El número de serie de la unidad - -El acta lo compone automáticamente al seleccionar los módulos: +El acta lo compone al seleccionar los módulos: ``` HBOX5 - E07 - A010 - R0006 - │ │ │ └── módem 4G NTRIP Master RTK-0006 + │ │ │ └── módem 4G NTRIP Master RTK-0006 │ │ └────────── simpleRTK2B Pro (ArduSimple) ARD-010 - │ └──────────────── EinarBoard V5-07 + │ └──────────────── EinarBoard V5-07 └──────────────────────── producto HBOX, tarjeta v5 ``` -Ese texto va en la **etiqueta exterior** del HBOX (panel, junto al GX16) y en la **etiqueta interior** -(cara interna de la tapa). Un módulo solo puede pertenecer a **una** unidad: el sitio rechaza el acta -si el módulo ya está asignado. +Va en la etiqueta exterior (panel, junto al GX16) y en la interior (cara interna de la tapa). Un módulo pertenece a una sola unidad: el sitio rechaza el acta si ya está asignado. ---- - -## 1. Material y herramientas +## 1. Material | Ítem | Notas | |---|---| -| Gabinete HBOX con panel perforado (GX16-5, 3 × SMA, RJ45, prensaestopas) | según el diseño mecánico vigente | -| EinarBoard **V5-NN** aprobada, con firmware de bring-up **0.5.1 o superior** | ver acta de tarjeta | -| simpleRTK2B Pro **ARD-NNN** y módem 4G NTRIP Master **RTK-NNNN** aprobados e integrados | con sus bolsas | -| Fuente **Mean Well SD-15B-05** (24 V → 5 V) | va dentro del HBOX | -| Pack de batería **1S4P** con NTC (3 hilos → P4) | conectar al final | -| Ventilador 5 V 2 hilos (P6), LED de panel (P8), botón de reset (P10), interruptor de corte (P11), NTC de punto caliente (P12) | arnés interno | -| Pigtails de antena: GNSS SMA-hembra bulkhead → SMA del simpleRTK2B; 2 × LTE SMA bulkhead → u.FL del módulo 4G | | -| Separadores M2.5/M3, tornillería, bridas, fijador de rosca para SMA | | -| Fuente de banco 24 V / 1 A con límite de corriente, multímetro, laptop con terminal serie | | -| Etiquetas: exterior e interior con el número de unidad | impresas desde el acta | +| Gabinete HBOX con panel (GX16-5, 3 × SMA, RJ45, prensaestopas) | Diseño mecánico vigente | +| EinarBoard V5-NN aprobada, firmware 0.5.1 o superior | Acta de tarjeta | +| simpleRTK2B Pro ARD-NNN y módem RTK-NNNN aprobados e integrados | En sus bolsas | +| Mean Well SD-15B-05 (24 V → 5 V) | Va dentro del HBOX | +| Paquete de batería con NTC (3 hilos → P4), química según §2 | Se conecta al final | +| Ventilador 5 V (P6), LED de panel (P8), botón de reset (P10), interruptor de corte (P11), NTC de punto caliente (P12) | Arnés interno | +| Pigtails: GNSS SMA bulkhead → SMA del simpleRTK2B; 2 × LTE SMA bulkhead → u.FL del módem | | +| Separadores M2.5/M3, tornillería, bridas, fijador de rosca | | +| Fuente de banco 24 V / 1 A con límite, multímetro, laptop con terminal serie | | +| Etiquetas exterior e interior | Impresas desde el acta | ---- +## 2. Tarjeta (sin energía) -## 2. Preparación de la tarjeta (sin energía) +- [ ] La EinarBoard es la V5-NN seleccionada en el acta (etiqueta cerca de MH4). +- [ ] JP2 coincide con la química del paquete (tabla abajo). Léelo con lupa; serigrafía V5.6: `JP2 = F2 (Li-ion / LFP)`. +- [ ] JP3 (F1) = 0 · JP4 (F0) = 1. Anota JP2, JP3 y JP4 en el acta. +- [ ] JP1 (0R, alimentación del ventilador) presente. +- [ ] P11 abierto, sin jumper; ahí va el interruptor de panel (§4). +- [ ] Tarjeta fija con separadores en MH1–MH6 (MH7–MH12 según el diseño), sin flexionarla; apriete suave. -- [ ] EinarBoard **V5-NN** corresponde a la seleccionada en el acta (leer la etiqueta cerca de MH4). -- [ ] Jumpers del cargador en la posición del pack Li-ion 4.00 V: **JP2 (F2) = 1 · JP3 (F1) = 0 · JP4 (F0) = 1**. - Anotar en el acta la posición de cada uno. *(Si el pack cambia a LiFePO4, ingeniería indicará JP2 = 0.)* -- [ ] Jumper **JP1** (0R, alimentación del ventilador) presente. -- [ ] **P11** (corte) **abierto** — sin jumper; el interruptor de panel se conecta ahí en la sección 4. -- [ ] Tarjeta fijada en la platina/gabinete con separadores en **MH1–MH6** (y MH7–MH12 según el diseño) sin flexionar la tarjeta; tornillos con apriete suave. +| Tarjeta | Paquete | JP2 (3 pads) | RNTB (R55) / NTC del paquete | Flotación | En vacío | +|---|---|---|---|---|---| +| V5.5 | Li-ion 18650 1S4P | 1-2 (F2 alto, Li-ion) | 10 k / NTC 10 k | ≈ 4.0–4.1 V | 3.0–4.2 V | +| V5.6 | LiFePO4 alta temperatura 26650 | 2-3 (F2 bajo, LFP) | 5.6 k / NTC B3380 | 3.50 V | 2.8–3.6 V | -## 3. Módulos enchufables (sin energía) +!!! danger "Química y JP2 cruzados = FALLA" + - Li-ion con JP2 en 2-3: flota a 3.50 V, el paquete nunca se llena y la autonomía es de minutos. + - LFP con JP2 en 1-2: el cargador intenta 4.0 V sobre una celda de 3.6 V máx. Sobrecarga. No se embarca. -- [ ] **simpleRTK2B Pro ARD-NNN** en **MOD1**: alinear el pin **"5V"** del zócalo UNO con el pin 5V del - módulo; las cuatro tiras entran a fondo y parejas; **ninguna** clavija queda fuera del zócalo. -- [ ] **Módem 4G NTRIP Master RTK-NNNN** en **J7/J8** (zócalo XBee de 2 mm de la EinarBoard, **no** en el - simpleRTK2B): la silueta del módulo coincide con la serigrafía; pin 1 (VCC) del lado marcado. -- [ ] SIM presente en el módulo 4G (ya verificada en su acta). -- [ ] Nada toca la tapa ni los separadores; los módulos no rozan componentes altos (K1, C10, L6). + Si no coinciden, detén la unidad y avisa a ingeniería. JP2 no se cambia en banco. -## 4. Panel y arnés interno (sin energía) +## 3. Módulos (sin energía) -Conectar contra el pinout; cada JST hace **clic**. +- [ ] simpleRTK2B ARD-NNN en MOD1: pin "5V" del zócalo UNO alineado con el 5V del módulo; las cuatro tiras a fondo, ninguna clavija fuera. +- [ ] Módem RTK-NNNN en J7/J8 de la EinarBoard (no en el simpleRTK2B): silueta sobre la serigrafía, pin 1 (VCC) del lado marcado. +- [ ] SIM puesta. +- [ ] Nada toca la tapa ni los separadores; los módulos no rozan K1, C10 ni L6. -| Conector | Qué se conecta | Verificar | +## 4. Panel y arnés (sin energía) + +Cada JST hace clic. + +| Conector | Qué va | Verifica | |---|---|---| -| **P1** (GX16-5 del panel) | pin 1 = +24 V · pin 2 = GND · pin 3 = ignición · pin 4 = GND | polaridad con multímetro **antes** de conectar al panel | -| **SD-15B-05** | entrada: +24 V/GND del GX16 (empalme en Y) · salida +5 V/GND → **P2** (pin 1 = +5 V) | ajustar salida a **5.0 V** en banco antes de montar | -| **P6** | ventilador (pin 1 = +5V_FAN, pin 2 = retorno) | dirección de flujo: aire **hacia afuera** por la rejilla | -| **P8** | LED de panel (pin 1 = ánodo, pin 2 = cátodo) | LED asoma por el panel | -| **P10** | botón de reset externo | normalmente abierto | -| **P11** | interruptor de corte del panel (2 hilos) | en posición **ON** cierra pin 1–2 | -| **P12** | NTC de punto caliente pegado al módulo 4G o al disipador | con cinta térmica | -| **P4** | **NO conectar todavía** (batería, sección 6) | — | -| Antena **GNSS** | bulkhead SMA del panel → SMA del simpleRTK2B | fijador de rosca, apriete a mano + ¼ vuelta | -| Antenas **LTE (2)** | bulkheads SMA del panel → u.FL del módulo 4G | los u.FL hacen clic; ruta del cable sin dobleces < 10 mm | -| **J10** RJ45 / **P15** RS-485 / **P16** RS-232 | solo si el panel de esta unidad los lleva | tapas ciegas en los que no | +| P1 (GX16-5) | 1 = +24 V · 2 = GND · 3 = ignición · 4 = GND | Polaridad con multímetro antes de conectar | +| SD-15B-05 | Entrada +24 V/GND del GX16 (empalme en Y); salida +5 V/GND → P2 (pin 1 = +5 V) | Salida a 5.0 V en banco antes de montar | +| P6 | Ventilador (1 = +5V_FAN, 2 = retorno) | Aire hacia afuera por la rejilla | +| P8 | LED de panel (1 = ánodo, 2 = cátodo) | Asoma por el panel | +| P10 | Botón de reset | Normalmente abierto | +| P11 | Interruptor de corte (2 hilos) | ON cierra 1–2 | +| P12 | NTC de punto caliente en el módem o el disipador | Cinta térmica | +| P4 | Nada todavía | §6 | +| GNSS | Bulkhead SMA → SMA del simpleRTK2B | Fijador de rosca, a mano + ¼ vuelta | +| LTE (2) | Bulkheads SMA → u.FL del módem | Clic en los u.FL; sin dobleces < 10 mm | +| J10 / P15 / P16 | Solo si el panel los lleva ([conexión](v5-prueba-ethernet-serie.md#conexion-en-la-instalacion)) | Tapas ciegas en los que no | -- [ ] Ningún cable pasa sobre el módulo 4G ni sobre la antena; cables sujetos con bridas al chasis. +- [ ] Ningún cable pasa sobre el módem ni la antena; cables con bridas al chasis. - [ ] Sin conductores expuestos cerca de 24 V (P1, SD-15B). -## 5. Energizado desde 24 V (unidad abierta, sin batería) +## 5. Energizado desde 24 V (abierta, sin batería) -1. Fuente de banco **24.0 V, límite 1.0 A**, salida apagada, conectada al **GX16** del panel (pin 1 = +, pin 2 = −). - Interruptor de corte (P11) en **ON**. USB-C en **J11** conectado a la laptop, terminal serie a 115200. -2. Encender la salida. En los primeros 10 s: +1. Fuente a 24.0 V, límite 1.0 A, salida apagada, al GX16 (pin 1 = +, pin 2 = −). P11 en ON. USB-C de J11 a la laptop, terminal a 115200. +2. Enciende. En los primeros 10 s: -| Punto | Esperado | -|---|---| -| Corriente de la fuente | **< 150 mA** (etapa RTK aún apagada) | -| **D18** verde | Encendido | -| **D17** azul + LED de panel | Parpadean (firmware de bring-up corriendo) | -| Consola | Encabezado `hbox-v5-bringup`, reporte con **12 PASS**, luego `STAT … v5=4.9–5.1` | -| Ventilador | **Gira** (con 24 V presente el buck U2 se enciende solo) | + | Punto | Esperado | + |---|---| + | Corriente | < 150 mA (etapa RTK apagada) | + | D18 | Encendido | + | D17 y LED de panel | Parpadean | + | Consola | Encabezado `hbox-v5-bringup`, 12 PASS, luego `STAT … v5=4.9–5.1` | + | Ventilador | Gira (U2 se enciende solo con 24 V) | -3. Anotar en el acta: `v5` (debe ser 4.8–5.1 V), `tmp102`, `sht40`. -4. **Encender la etapa RTK desde la consola:** teclear **`P`** y confirmar con **`Y`**. El firmware sube - `PWR_CTRL` y reporta `STACK ON`. En los siguientes 60 s: +3. Anota `v5` (4.8–5.1 V), `tmp102` y `sht40`. +4. Enciende la etapa: `P` y confirma con `Y` (`STACK ON`). En 60 s: -| Punto | Esperado | -|---|---| -| Corriente de la fuente | sube a **250–600 mA** (pico corto al registrar el 4G) | -| simpleRTK2B: LED POWER | Encendido | -| 4G: LED de red | Buscando → registrado (< 2 min) | -| Consola, comando **`n`** | Muestra las tramas `$GNGGA` de PA3: **`fix=1`** (GPS) al minuto, **`fix=4`** (RTK FIX) en < 10 min con antena al cielo; `sats ≥ 10` | + | Punto | Esperado | + |---|---| + | Corriente | 250–600 mA (pico corto al registrar el 4G) | + | simpleRTK2B, LED POWER | Encendido | + | Módem, LED de red | Registrado en < 2 min | + | Consola, tecla `n` | Tramas `$GNGGA` de PA3: `fix=1` al minuto, `fix=4` (RTK FIX) en < 10 min con cielo; `sats ≥ 10` | -5. Anotar en el acta el **tiempo hasta `fix=4`** y el número de satélites. -6. Teclear **`P`** de nuevo para **apagar** la etapa RTK. La corriente debe volver a < 150 mA. +5. Anota el tiempo hasta `fix=4` y los satélites. +6. `P` otra vez apaga la etapa; la corriente vuelve a < 150 mA. -> Si `n` no muestra tramas: el simpleRTK2B no está a 115200 en UART1 (volver al acta del módulo RTK: -> configuración Helgen) o MOD1 está corrido un pin. **Apagar antes de tocar nada.** +`n` sin tramas: el simpleRTK2B no está a 115200 en UART1 (configuración Helgen) o MOD1 está corrido un pin. Apaga antes de tocar. ## 6. Batería y respaldo -1. Con la unidad encendida desde 24 V y la etapa RTK **apagada**: conectar el pack en **P4** - (pin 1 = BAT+, pin 2 = GND, pin 3 = NTC). Medir antes con multímetro: **3.0–4.2 V** entre BAT+ y GND. -2. En la consola, `STAT` debe mostrar **`vbat`** con el voltaje del pack y **`chrg`**: `0` = cargando - (el firmware de bring-up mantiene la carga **deshabilitada**, así que `chrg=1` es lo esperado aquí). -3. **Prueba de respaldo:** apagar la salida de la fuente de 24 V. +1. Con 24 V y la etapa apagada, mide el paquete en vacío (rango en §2) y conéctalo en P4 (1 = BAT+, 2 = GND, 3 = NTC). +2. `STAT` muestra `vbat` y `chrg` (`0` = cargando). Con la etapa apagada el firmware no carga: `chrg=1` es lo esperado. +3. Apaga la fuente de 24 V: -| Punto | Esperado | -|---|---| -| D18, D17 y consola | **Siguen vivos** (el LTC4040 conmuta a batería sin reinicio: el encabezado **no** se vuelve a imprimir) | -| `STAT` | `v5=0.0`, `vbat` con el voltaje del pack | -| Ventilador | Se detiene (no hay 24 V) — correcto | + | Punto | Esperado | + |---|---| + | D18, D17 y consola | Siguen vivos; el encabezado no se reimprime (sin reinicio) | + | `STAT` | `v5=0.0`, `vbat` del paquete | + | Ventilador | Se detiene | -4. Volver a encender 24 V: `STAT` vuelve a `v5≈5.0`. Sin reinicio. -5. Anotar: voltaje del pack, "respaldo OK sin reinicio". +4. Enciende 24 V: `v5≈5.0`, sin reinicio. +5. Anota el voltaje del paquete y "respaldo OK sin reinicio". -## 7. Cierre, etiquetado y registro +## 7. Cierre -- [ ] Etiqueta **exterior** `HBOX5-Exx-Axxx-Rxxxx` en el panel, junto al GX16. Etiqueta **interior** en la tapa. -- [ ] Interruptor de corte en **OFF** para almacenar (evita descargar la batería). Anotarlo en la etiqueta interior. -- [ ] Tapa cerrada con su sello; tornillos en cruz; prensaestopas apretados. -- [ ] Acta de ensamble enviada con resultado **APROBADA**. +- [ ] Etiqueta exterior `HBOX5-Exx-Axxx-Rxxxx` junto al GX16; etiqueta interior en la tapa. +- [ ] P11 en OFF para almacenar (no descarga la batería); anótalo en la etiqueta interior. +- [ ] Tapa con su sello, tornillos en cruz, prensaestopas apretados. +- [ ] Acta de ensamble enviada como APROBADA. ---- +Siguiente: [prueba final](v5-prueba-final-unidad.md) y [configuración](v5-configuracion-unidad.md). -## Anexo A — Notas de ingeniería +## Anexo — notas de ingeniería -- **Firmware:** el bring-up **0.2.0** añade el modo de banco (`P` = stack ON/OFF con confirmación, - `n` = monitor NMEA de PA3, 20 s). Mantiene la carga deshabilitada (`CHRG_EN` alto) y K1 liberado. - La unidad ensamblada queda con este firmware hasta que exista el firmware de producción v5 - (rediseño de gestión de batería); se re-flashea por J11 sin abrir el HBOX si J11 queda accesible — - **decidir si J11 asoma por el panel o se deja interno.** -- **Corriente en 24 V:** valores orientativos; los reales se fijan con las primeras tres unidades y - se actualizan aquí (bring-up 0.2.0 imprime `v5` pero no mide corriente). -- **Respaldo sin reinicio** es la prueba del LTC4040 + L6/SW_BAT en la tarjeta real (el EMC audit - marcó `/SW_BAT` 0.3 mm como crítico): si alguna unidad reinicia al cortar 24 V, anotar `vbat` y - temperatura — es evidencia para el respin. -- **Modo B / relevador K1:** no se prueba aquí; K1 queda liberado (camino directo F9P ↔ módem). +- El bring-up 0.2.0 añadió el modo de banco (`P` = etapa ON/OFF con confirmación, `n` = monitor NMEA de PA3 por 20 s) con la carga deshabilitada (`CHRG_EN` alto) y K1 liberado. Desde 0.6.0 el gobernador carga solo con etapa ON en 24 V. Se reflashea por J11 sin abrir el HBOX si J11 queda accesible; pendiente decidir si J11 asoma por el panel. +- Las corrientes en 24 V son orientativas; se fijan con las primeras tres unidades (el firmware imprime `v5` pero no mide corriente). +- El respaldo sin reinicio prueba el LTC4040 + L6/`SW_BAT` (0.3 mm, crítico en la auditoría EMC). Si una unidad reinicia al cortar 24 V, anota `vbat` y temperatura para el respin. +- Modo B / K1 no se prueba aquí; K1 queda liberado (F9P ↔ módem directo). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-17 | Primera versión. | +| 1.1 | 2026-09-29 | Encabezado uniforme y enlaces al flujo de producción. | +| 1.2 | 2026-09-29 | Edición breve. La regla de química del paquete y JP2 (V5.5 y V5.6) vive aquí, en §2. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-18_Drogheda_HBOX-v5_Prueba-Final-Unidad-FW-0.4.0_ES_v1.0.md b/06-Testing-Validation/2026-09-18_Drogheda_HBOX-v5_Prueba-Final-Unidad-FW-0.4.0_ES_v1.0.md index 7dd6989..1521ec2 100644 --- a/06-Testing-Validation/2026-09-18_Drogheda_HBOX-v5_Prueba-Final-Unidad-FW-0.4.0_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-18_Drogheda_HBOX-v5_Prueba-Final-Unidad-FW-0.4.0_ES_v1.0.md @@ -1,82 +1,97 @@ -# HBOX v5 — Prueba final de unidad ensamblada con firmware 0.5.1 (field-minimum + telemetría y eventos) +--- +title: "HBOX V5 — Prueba final de unidad ensamblada" +tags: [project-drogheda, hardware, hbox, v5, testing, prueba-final, procedimiento] +date: 2026-09-18 +project: Project Drogheda +author: Helgen Technologies +version: 1.2 +audience: técnicos de banco +--- -**Alcance:** unidad completa (EinarBoard V5 + ArduSimple + módem 4G + batería + antenas) dentro del HBOX, antes de embarcar. -**Firmware:** `hbox-v5-bringup_0.5.1.bin` (SHA-256 `e1f35108…`) — descarga en . -**Duración:** ~45 min por unidad (P1–P6). Registrar todo en el acta de ensamble (`HBOX5-Exx-Axxx-Rxxxx`). +# HBOX V5 — Prueba final de unidad ensamblada -!!! warning "Lo que 0.5.1 NO hace" - **No carga la batería** (cargador apagado). El paquete es de un solo uso: sostiene la unidad cuando se va el 5 V del vehículo - hasta 3.40 V y después la unidad solo funciona con alimentación del vehículo. Las unidades regresan a laptop (DFU en J11, 2 min) - cuando salga el firmware de producción. Anotar en el acta: *«fw 0.5.1-fm, cargador OFF»*. +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: unidad V5.5/V5.6 recién ensamblada, antes de embarcar. Paso 4 de producción, entre el [ensamble](v5-ensamble.md) y la [configuración](v5-configuracion-unidad.md). + - Tiempo: ~45 min por unidad (P1–P6). + - Necesitas: arnés GX16 real con fuente de 24 V, cable USB-C en J11, laptop con terminal a 115200 grabando, antenas con cielo, monitor abierto. Se registra en el [acta de ensamble](../formularios/ensamble.html). + +Firmware: el binario V5 vigente de [Descargas](../descargas/index.md). Abajo `X.Y.Z` es la versión que flasheaste. Hasta 0.5.9 el cargador está apagado (paquete de un solo uso hasta 3.40 V); desde 0.6.0 carga con 24 V y etapa ON (`carga=`, `ltc=CARGANDO`). ## 0. Preparación -- Consola: cable USB-C en **J11**, PuTTY/CoolTerm **115200**. Cada línea es `STAT`, `EVT` o `$PHLG`; teclear `l` para la leyenda. -- Fuente: **24 V** en P1 (entrada + ignición) a través del arnés GX16 real; el SD-15B interno da el 5 V. Batería en P4. NTC en P12 si la unidad lo lleva. -- Antenas GNSS y LTE conectadas; SIM instalada; módem en su socket. -- **Antes de energizar — verificación del arnés GX16 con la fuente APAGADA (obligatoria; la EinarBoard 006 murió por un cruce aquí):** - continuidad GX16 pin 1 → P1.1 (24V_IN) · pin 2 → GND · pin 3 → P1.3 (IGN_IN); **ninguna continuidad entre pin 1 / pin 3 y P2.1 (5 V)**. - El 5 V de P2 solo puede venir de la salida del SD-15B. Con 24 V en P2 el LTC4040 (máx 5.5 V) y el MCU se pierden. -- NTC de punto caliente: conector **P12** (2 pines, NTC 10 k B3950). Es la única NTC que ve el MCU (`tntc`); la NTC del paquete en **P4 pin 3** - va solo al LTC4040 y **no aparece en telemetría** por diseño. Sin NTC en P12 el monitor muestra «n/d». -- Guardar el log completo de la consola: `HBOX5-Exx-Axxx-Rxxxx_prueba-final.txt` (adjuntarlo al acta). -## P1 — Arranque autónomo (2 min) -Energizar 24 V (con ignición) y **no tocar la consola**. +1. Con la fuente apagada, verifica el arnés GX16 (obligatorio; la EinarBoard 006 murió por un cruce aquí): pin 1 → P1.1 (24V_IN), pin 2 → GND, pin 3 → P1.3 (IGN_IN), y ninguna continuidad de pin 1 o pin 3 a P2.1 (5 V). El 5 V de P2 solo sale del SD-15B; 24 V en P2 destruye el LTC4040 (máx 5.5 V) y el MCU. +2. Consola: USB-C en J11, PuTTY o CoolTerm a 115200. Cada línea es `STAT`, `EVT` o `$PHLG`; `l` muestra la leyenda. +3. 24 V en P1 (entrada + ignición) por el arnés GX16; el SD-15B da el 5 V. Batería en P4. Antenas GNSS y LTE, SIM y módem puestos. +4. NTC de punto caliente en P12 (10 k B3950) si la unidad la lleva. Es la única que ve el MCU (`tntc`); la NTC del paquete (P4 pin 3) va solo al LTC4040 y no sale en telemetría. Sin NTC en P12 el monitor muestra "n/d". +5. Graba el log completo como `HBOX5-Exx-Axxx-Rxxxx_prueba-final.txt` para el acta. + +## P1. Arranque autónomo (2 min) + +Energiza 24 V con ignición. No toques la consola. | Esperado | Si falla | |---|---| -| Banner `hbox-v5-bringup 0.5.1` · `modo=AUTO` · `inputs at boot: v5=5.2–5.4V(ok) ign=ON` | otra versión → re-flashear; `ign=OFF` → arnés pin 3 / divisor 22k-10k | -| `---- RESULT: 12 PASS / 0 FAIL ----` · `>>> BOARD OK` | cualquier `[FAIL]` → tarjeta a revisión, no embarcar | -| `EVT … STACK ON reason=auto` **sin teclear nada** (≈10 s tras el banner) | no enciende → `STAT` muestra `v5=` bajo 4.5 o `modo=MAN` (teclear `A`) | -| `EVT … NMEA primera trama` < 3 s después · `EVT FAN ON (vehiculo: 5V+ign)` | sin NMEA → ArduSimple no arranca: medir SW_5V (MOD1 pin 5) ≈ 5 V | -| LED RGB **azul** (etapa ON sin RTK) o **verde** (RTK); gauge DB1–DB4 según `vbat` | RGB rojo con `stack=ON` → PCF8574 / cableado LEDs | +| Banner `hbox-v5-bringup X.Y.Z` · `modo=AUTO` · `inputs at boot: v5=5.2–5.4V(ok) ign=ON` | Otra versión: reflashea. `ign=OFF`: arnés pin 3 / divisor 22k-10k | +| `---- RESULT: 12 PASS / 0 FAIL ----` · `>>> BOARD OK` | Cualquier `[FAIL]`: tarjeta a revisión, no se embarca | +| `EVT … STACK ON reason=auto` sin teclear, ≈10 s tras el banner | `STAT` con `v5=` < 4.5 o `modo=MAN` (teclea `A`) | +| `EVT … NMEA primera trama` < 3 s después · `EVT FAN ON (vehiculo: 5V+ign)` | Sin NMEA: mide SW_5V (MOD1 pin 5) ≈ 5 V | +| LED RGB azul (sin RTK) o verde (RTK); DB1–DB4 según `vbat` | RGB rojo con `stack=ON`: PCF8574 / cableado de LEDs | -## P2 — Riel y módem (10 min) -Dejar la unidad 10 min encendida con el módem registrándose (LEDs del módem / la unidad aparece en el servidor). +## P2. Riel y módem (10 min) + +Deja la unidad 10 min encendida mientras el módem se registra. | Esperado | Si falla | |---|---| -| `STAT … v5=5.2x–5.3x(ok)` **todo el tiempo**; nunca `(BAJO)` ni `EVT V5 BAJO`; **`v5min` ≥ 4.9 V** en todas las STAT | `BAJO` o `v5min` < 4.6 → el riel cae con la ráfaga LTE: SD-15B ajustado a ~5.3 V en P2 (memo 24-Jul, PFI LTC4040) | -| `tbat`/`tair`/`tmcu` estables (< 45 °C en banco) · `i2cerr=0` | `i2cerr` subiendo → bus I²C / soldadura U3/U4/U13 | -| `$PHLG,0.5.1-fm,RUN,…` cada 10 s, `rec=0`, sin `LIMP` | `rec` > 0 sin causa → NMEA intermitente: revisar MOD1 / UART1 F9P | -| **Modo B:** ≈10 s tras la primera NMEA, `EVT MODOB ON`; luego `STAT … modoB=ON relay=` (sube cientos/s) `phlg_aire=` (+1 cada 30 s) | `modoB=off` permanente → sin NMEA en PA3 o `B` bloqueado; `relay=0` con `modoB=ON` → K1 / PA10 | -| **Servidor:** en ≤ 2 min la unidad `H00xx` muestra la columna **Salud** (fw `0.5.1-fm`, vbat, temperaturas, `v5min`) y en el log del servidor los `$PHEV` (BOOT, STACK_ON, MODOB_ON) y sigue reportando posición 1 Hz | posición sí pero sin Salud → el módem no reenvía la `$PHLG`: revisar `$$$AS+` (modo transparente) | +| `v5=5.2x–5.3x(ok)` siempre; nunca `(BAJO)` ni `EVT V5 BAJO`; `v5min` ≥ 4.9 V en cada `STAT` | `BAJO` o `v5min` < 4.6: el riel cae con la ráfaga LTE; ajusta el SD-15B a ~5.3 V (PFI del LTC4040) | +| `tbat`/`tair`/`tmcu` estables (< 45 °C) · `i2cerr=0` | `i2cerr` sube: I²C / soldadura U3, U4, U13 | +| `$PHLG,X.Y.Z,RUN,…` cada 10 s, `rec=0`, sin `LIMP` | `rec` > 0: NMEA intermitente, revisa MOD1 / UART1 del F9P | +| Modo B: ≈10 s tras la primera NMEA, `EVT MODOB ON`; `modoB=ON`, `relay=` sube cientos/s, `phlg_aire=` +1 cada 30 s | `modoB=off` fijo: sin NMEA en PA3 o `B` bloqueado. `relay=0` con `modoB=ON`: K1 / PA10 | +| Servidor: en ≤ 2 min `H00xx` muestra Salud (fw, vbat, temperaturas, `v5min`), llegan `$PHEV` (BOOT, STACK_ON, MODOB_ON) y posición a 1 Hz | Posición sin Salud: el módem no reenvía `$PHLG`; revisa `$$$AS+` (modo transparente) | -## P3 — Respaldo de batería (6 min) — **la prueba que nunca se había hecho en v5** -Con la etapa ON: **desconectar el 24 V** (se va el 5 V del SD-15B). Esperar 5 min. Reconectar. +## P3. Respaldo de batería (6 min) + +Con la etapa ON, desconecta los 24 V. Espera 5 min y reconecta. | Esperado | Si falla | |---|---| -| `EVT V5 PERDIDO` → `EVT BACKUP inicio vbat=4.0x` (la etapa **sigue ON**) · RGB **amarillo** | la etapa se apaga / la tarjeta se reinicia (`reset=POR`) → el LTC4040 no sostiene: medir MAIN5V (C32) durante el corte, esperado 4.79 V | -| `STAT … stack=ON backup=Ns nmea=` **sigue contando** 5 min · `fan` según termostato (normalmente OFF) | `nmea` se detiene → SW_BAT/L6 (pista 0.3 mm, auditoría EMC) o paquete flojo en P4 | -| al reconectar: `EVT V5 PRESENTE` → `EVT BACKUP fin dur≈300s nmea_durante=N … SOSTUVO` | — | +| `EVT V5 PERDIDO` → `EVT BACKUP inicio vbat=4.0x`, etapa sigue ON, RGB amarillo | La etapa se apaga o la tarjeta reinicia (`reset=POR`): mide MAIN5V (C32) durante el corte, esperado 4.79 V | +| `stack=ON backup=Ns nmea=` sigue contando 5 min; ventilador según termostato (normalmente OFF) | `nmea` se detiene: SW_BAT/L6 (pista 0.3 mm) o paquete flojo en P4 | +| Al reconectar: `EVT V5 PRESENTE` → `EVT BACKUP fin dur≈300s nmea_durante=N … SOSTUVO` | — | -## P4 — Cielo abierto: primer RTK (10 min) -Con antena GNSS con cielo despejado y base activa (`$$$AS+` configurado): +## P4. Primer RTK a cielo abierto (10 min) + +Antena con cielo despejado y base activa (`$$$AS+` configurado). | Esperado | Si falla | |---|---| -| `EVT GGA fix … -> RTK FLOAT(5)` y luego `-> RTK FIX(4)`; `STAT … gga=RTK_FIX sats≥10 hdop<1.5` · RGB **verde** | se queda en `GPS(1)`: correcciones no llegan → módem/NTRIP (`$$$AS+`), no el F9P | -| `$PHLG … RUN,OK,4,…` | `link=DEGR` permanente = NMEA sí, RTK no | +| `EVT GGA fix … -> RTK FLOAT(5)` y luego `-> RTK FIX(4)`; `gga=RTK_FIX sats≥10 hdop<1.5`; RGB verde | Se queda en `GPS(1)`: no llegan correcciones; revisa módem/NTRIP (`$$$AS+`), no el F9P | +| `$PHLG … RUN,OK,4,…` | `link=DEGR` fijo: NMEA sí, RTK no | -## P5 — Recuperación de enlace (4 min, solo 1 unidad de muestra por lote) -Con la etapa ON y > 90 s de encendida: **retirar el ArduSimple del socket** (o su UART1) y cronometrar. +## P5. Recuperación de enlace (4 min, una unidad por lote) + +Con la etapa ON más de 90 s, retira el ArduSimple del zócalo (o su UART1) y cronometra. | Esperado | Si falla | |---|---| -| `EVT NMEA PERDIDO >5 s` → a los 60 s `EVT RECOVERY #1 sin NMEA 60s -> ciclo de etapa 5 s` → `STACK OFF reason=no_nmea` → 5 s → `STACK ON reason=recovery` · RGB **magenta** | no cicla → `modo=MAN` o < 90 s de gracia | -| Reinsertar el ArduSimple → `NMEA primera trama`; `STAT … rec=1` | — | +| `EVT NMEA PERDIDO >5 s` → a los 60 s `EVT RECOVERY #1 sin NMEA 60s -> ciclo de etapa 5 s` → `STACK OFF reason=no_nmea` → 5 s → `STACK ON reason=recovery`; RGB magenta | No cicla: `modo=MAN` o < 90 s de gracia | +| Al reinsertar: `NMEA primera trama`; `rec=1` | — | -## P6 — Apagado y acta (2 min) -- Quitar ignición: `EVT IGN OFF`, `EVT FAN OFF (bateria: termostato)`; la etapa sigue ON mientras haya 5 V (el SD-15B sigue con 24 V). -- Quitar 24 V: si la batería está, entra `BACKUP` (P3); dejarla hasta `SLEEP` **no** es necesario — reconectar y apagar con `P`. -- Guardar el log. En el acta: versión (`0.5.1-fm`), `uid=` del banner, resultado P1–P5, `vbat` final, y la nota *cargador OFF*. +## P6. Apagado y acta (2 min) -## Lectura rápida del LED RGB (para el técnico de campo) -| Color | Significado | -|---|---| -| **verde** | etapa ON, RTK fix | -| **azul** | etapa ON, NMEA sí, sin RTK (normal bajo techo / al arrancar) | -| **magenta** | etapa ON pero el F9P no habla (revisar ArduSimple) | -| **amarillo** | funcionando desde la batería (sin 5 V del vehículo) | -| **rojo** | etapa OFF (sin 5 V, batería < 3.40 V, > 60 °C, o apagada por operador) | +1. Quita la ignición: `EVT IGN OFF`, `EVT FAN OFF (bateria: termostato)`. La etapa sigue ON mientras haya 24 V. +2. Quita 24 V: con batería entra `BACKUP`. No esperes a `SLEEP`: reconecta y apaga con `P`. +3. En el acta: versión, `uid=` del banner, resultado P1–P5, `vbat` final y, con 0.5.x, "cargador OFF". + +Colores del LED RGB: [manual V5](../manuales/manual-tarjeta-V5.md). + +## Historial de revisiones + +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-18 | Primera versión (0.5.1-fm). | +| 1.1 | 2026-09-29 | Título sin versión de firmware; nota de cargador 0.6.0; enlaces al flujo. | +| 1.2 | 2026-09-29 | Edición breve: versión genérica `X.Y.Z`; tabla de colores RGB remitida al manual V5. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Checklist-Puesta-en-Marcha_ES_v1.0.md b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Checklist-Puesta-en-Marcha_ES_v1.0.md index 1b2b03d..1f4d387 100644 --- a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Checklist-Puesta-en-Marcha_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Checklist-Puesta-en-Marcha_ES_v1.0.md @@ -1,88 +1,94 @@ --- -title: HBOX V5 — Checklist de puesta en marcha en el puerto (una página) +title: "HBOX V5 — Checklist de puesta en marcha en el puerto" tags: [project-drogheda, hbox, v5, v5.6, instalacion, puesta-en-marcha, campo, checklist] +date: 2026-09-29 project: Project Drogheda author: Helgen Technologies -date: 2026-09-29 -version: 1.0 -status: ACTIVO — imprimir y llevar; una hoja por unidad instalada +version: 1.2 +status: ACTIVO — imprimir; una hoja por unidad instalada audience: técnico de campo --- -# HBOX V5 — Checklist de puesta en marcha (imprimir) +# HBOX V5 — Checklist de puesta en marcha en el puerto + +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - **Para quién:** técnico de campo; una hoja impresa por unidad V5.5/V5.6. Al terminar se sube al [expediente](../unidad.html). + - **Cuándo:** al instalar en la máquina, después de la [configuración](v5-configuracion-unidad.md) y la [recepción](ciclo-de-vida.md#7-recepcion-e-inspeccion). + - **Tiempo:** 45–60 min por unidad (incluye 5 min en batería). + - **Necesitas:** multímetro, herramienta de montaje, teléfono con datos para el monitor y el [manual del cliente](../manuales/manual-cliente.md) para entregar. **Unidad:** `HBOX5-E___-A____-R_____` · **Monitor:** `H00___` · **Máquina:** ____________ · **Terminal:** ________ -**Técnico:** ____________________ · **Fecha:** ____/____/2026 · **Hora inicio:** ______ · **Hora fin:** ______ +**Técnico:** ____________________ · **Fecha:** ____/____/2026 · **Inicio:** ______ · **Fin:** ______ !!! warning "Antes de subir a la máquina" - Unidad con **acta de ensamble APROBADA** y **configurada** ([procedimiento](v5-configuracion-unidad.md)). Firmware - **0.6.0** (V5) — el `-eth` de banco no se instala en campo. Interruptor de corte del panel en **OFF** hasta el paso 3. - Máquina **apagada y con permiso de acceso** (número de máquina tal como lo nombra la terminal). + Acta de ensamble APROBADA y unidad configurada. Firmware de campo vigente; el `-eth` de banco no se instala en campo. Interruptor de corte en OFF hasta el paso 3. Máquina apagada y con permiso de acceso (número de máquina como lo nombra la terminal). -## 1 · Montaje (máquina apagada) +## 1. Montaje (máquina apagada) -- [ ] Gabinete fijado en el punto acordado, sin tapar la rejilla del ventilador ni el LED del panel. -- [ ] Antena GNSS en el **punto más alto**, con cielo despejado, sobre base metálica si es magnética; cable sin dobleces ni empalmes. -- [ ] Antenas LTE (2) a **≥ 1 m de la GNSS** y ≥ 20 cm entre sí; los tres SMA apretados a mano + ¼ vuelta. +- [ ] Gabinete fijo en el punto acordado, sin tapar la rejilla del ventilador ni el LED de panel. +- [ ] Antena GNSS en el punto más alto, con cielo, sobre base metálica si es magnética; cable sin dobleces ni empalmes. +- [ ] 2 antenas LTE a ≥ 1 m de la GNSS y ≥ 20 cm entre sí; SMA a mano + ¼ vuelta. - [ ] Prensaestopas apretados; sin cables sobre bordes cortantes; bridas cada 30 cm. -## 2 · Arnés 24 V (máquina apagada, multímetro obligatorio) +## 2. Arnés 24 V (máquina apagada, con multímetro) -- [ ] GX16 pin 1 = **+24 V permanente** (batería de la máquina) · pin 2 = **GND** · pin 3 = **ignición** (+24 V solo con llave) · pin 4 = GND. -- [ ] Medido en el conector del arnés **antes** de enchufar: pin 1–2 = 24–28 V; pin 3–2 = 0 V con llave OFF / 24–28 V con llave ON. -- [ ] **Ninguna continuidad** entre pin 1 o 3 y el 5 V de la tarjeta (P2). 24 V en P2 mata la unidad. -- [ ] Portafusible del kit en el +24 V, lo más cerca de la toma: fusible **3 A lento** . +- [ ] GX16: pin 1 = +24 V permanente (batería de la máquina) · pin 2 = GND · pin 3 = ignición (+24 V solo con llave) · pin 4 = GND. +- [ ] En el conector, antes de enchufar: pin 1–2 = 24–28 V; pin 3–2 = 0 V con llave OFF y 24–28 V con llave ON. +- [ ] Sin continuidad entre pin 1 o 3 y el 5 V de la tarjeta (P2). 24 V en P2 destruye la unidad. +- [ ] Portafusible del kit en el +24 V, cerca de la toma, fusible 3 A lento. -## 3 · Encendido y LEDs +## 3. Encendido y LEDs -- [ ] Enchufar GX16. Interruptor de corte → **ON**. Llave de la máquina → ON. -- [ ] **LED de panel** parpadea a 1 Hz en < 5 s (MCU vivo). -- [ ] Ventilador gira (hay 24 V). -- [ ] **LED RGB:** azul (etapa ON, buscando RTK) en < 15 s → **verde (RTK FIX)** en < 10 min con cielo. +- [ ] GX16 enchufado, interruptor de corte en ON, llave en ON. +- [ ] LED de panel parpadea a 1 Hz en < 5 s. +- [ ] Ventilador gira. +- [ ] RGB azul en < 15 s y verde (RTK FIX) en < 10 min con cielo. +- [ ] Módem registrado (LED de red lento o fijo) en < 2 min. | RGB | Estado | Acción | |---|---|---| -| **verde** | etapa ON, RTK fix | OK | -| **azul** | etapa ON, sin RTK todavía | esperar 10 min con cielo; si no: SIM / correcciones | -| **magenta** | etapa ON, el F9P no habla | avisar a ingeniería (simpleRTK2B) | -| **amarillo** | funcionando desde batería | no hay 5 V: revisar arnés / SD-15B | -| **rojo** | etapa OFF | sin 5 V, batería < 3.40 V o > 60 °C — no dejar así | +| Verde | Etapa ON, RTK FIX | OK | +| Azul | Etapa ON, sin RTK | Espera 10 min con cielo; si sigue: SIM / correcciones | +| Magenta | Etapa ON, el F9P no habla | Avisa a ingeniería (simpleRTK2B) | +| Amarillo | En batería | Sin 5 V: arnés / SD-15B | +| Rojo | Etapa OFF | Sin 5 V, batería < 3.40 V o > 60 °C. No la dejes así | -- [ ] LEDs del módem: red en parpadeo lento o fijo (registrado) en < 2 min. +## 4. Monitor -## 4 · Monitor (teléfono / laptop con datos) +- [ ] En monitor.helgen.dev, `H00___` aparece con posición en la máquina en ≤ 2 min. +- [ ] Columna Salud presente (fw, `vbat`, temperaturas). Sin Salud: avisa (Modo B / módem). +- [ ] Con batería en carga, 🔌 CARGANDO a los ~3 min. -- [ ] En **monitor.helgen.dev** la unidad **`H00___`** aparece con posición en la máquina en ≤ 2 min. -- [ ] Columna **Salud** presente (fw `0.6.0`, `vbat`, temperaturas). Sin Salud = avisar (Modo B / módem). -- [ ] Si la unidad tiene batería en carga, aparece **🔌 CARGANDO** a los ~3 min. +## 5. Ethernet (solo si el panel lleva RJ45 y el cliente lo usa) -## 5 · Ethernet (solo si el panel lleva RJ45 y el cliente lo usa) +- [ ] Cable en J10; LED de enlace encendido. Sin PoE: la unidad sigue con 24 V. +- [ ] IP asignada por la red del cliente: __________________ (hoy solo espejo de prueba; el monitor no lo usa). -- [ ] Cable a J10 conectado; LED de enlace del RJ45 encendido. (No hay PoE: la unidad sigue con 24 V.) -- [ ] Anotar la IP asignada por la red del cliente: __________________ (hoy solo espejo de prueba; el monitor no lo usa). +## 6. Prueba de batería (5 min) -## 6 · Prueba de batería (5 min) +- [ ] Llave OFF y GX16 desconectado: RGB amarillo, ventilador parado, módem encendido. +- [ ] 5 min después el monitor sigue recibiendo posición con `pwr=BATT`. +- [ ] Al reconectar: la tarjeta se reinicia sola (0.5.9+), RGB azul → verde en < 10 min, monitor vuelve a `VEH`. +- [ ] Módem oscuro al volver el 24 V: pulsa SW4G1 una vez. ☐ Pasó. -- [ ] Llave OFF y **desconectar el GX16** (o cortar el 24 V). El LED RGB pasa a **amarillo**, el ventilador se detiene, el módem sigue encendido. -- [ ] Esperar **5 min**: el monitor sigue recibiendo posición con `pwr=BATT`. -- [ ] Reconectar el GX16: la tarjeta se reinicia sola (0.5.9+), RGB azul → verde en < 10 min, monitor vuelve a `VEH`. -- [ ] Si el módem quedó oscuro al volver el 24 V: pulsar **SW4G1** (reset del módem) una vez y anotar aquí: ☐ pasó. +## 7. Cierre -## 7 · Cierre y firma - -- [ ] Tapa cerrada con sello, tornillos en cruz; etiqueta exterior legible; foto de la instalación (gabinete + antenas + GX16). -- [ ] Interruptor de corte en **ON**. Llave de la máquina como la encontraste. -- [ ] Reportado a ingeniería: `H00___` instalada en ____________ a las ______, RTK FIX ☐ sí ☐ no, batería 5 min ☐ OK. +- [ ] Tapa con sello, tornillos en cruz, etiqueta exterior legible; foto de gabinete, antenas y GX16. +- [ ] Interruptor de corte en ON; llave como la encontraste. +- [ ] Reportado a ingeniería: `H00___` instalada en ____________ a las ______ · RTK FIX ☐ sí ☐ no · batería 5 min ☐ OK. **Resultado:** ☐ EN SERVICIO ☐ EN SERVICIO CON OBSERVACIONES ☐ NO INSTALADA (motivo: _____________________) **Firma técnico:** ______________________ **Firma cliente / supervisor:** ______________________ ---- +Falla en la instalación: [diagnóstico en campo](../diagnostico/procedimiento-diagnostico-campo.md) y su [acta](../formularios/diagnostico.html). -*Referencias:* [configuración de unidad](v5-configuracion-unidad.md) · [prueba final](v5-prueba-final-unidad.md) · -[diagnóstico en campo](../diagnostico/procedimiento-diagnostico-campo.md) · acta de campo: [diagnóstico](../formularios/diagnostico.html). +## Historial de revisiones -| Versión | Fecha | Autor | Cambios | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión (una página, V5.5/V5.6, fw 0.6.0). | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión (V5.5/V5.6, fw 0.6.0). | +| 1.1 | 2026-09-29 | Encabezado uniforme. | +| 1.2 | 2026-09-29 | Edición breve; firmware "vigente" en lugar de número fijo. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Configuracion-de-Unidad_ES_v1.0.md b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Configuracion-de-Unidad_ES_v1.0.md index 94956a7..74d48cc 100644 --- a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Configuracion-de-Unidad_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Configuracion-de-Unidad_ES_v1.0.md @@ -1,274 +1,120 @@ --- -title: HBOX V5 (V5.5 / V5.6) — Configuración de una unidad +title: "HBOX V5 — Configuración de una unidad" tags: [project-drogheda, hardware, hbox, v5, v5.6, configuracion, ntrip, ethernet, rs485, rs232, bateria, procedimiento] project: Project Drogheda author: Helgen Technologies date: 2026-09-29 -version: 1.0 -status: ACTIVO — aplica a toda unidad V5.5 / V5.6 antes de embarcar o de reinstalar +version: 1.1 +status: ACTIVO — toda unidad V5.5 / V5.6 antes de embarcar o de reinstalar audience: técnicos de banco --- -# HBOX V5 — Configuración de una unidad (V5.5 / V5.6) +# HBOX V5 — Configuración de una unidad -**Alcance:** unidad ensamblada (EinarBoard V5.5 o V5.6 + simpleRTK2B + 4G NTRIP Master + SD-15B + paquete de -batería + antenas) que ya pasó la [prueba final](v5-prueba-final-unidad.md). Este documento dice **qué tiene que -quedar configurado** para que la unidad sea una unidad Helgen y no solo una caja que enciende. -**Duración estimada:** 30–40 min por unidad (más si hay que esperar RTK FIX). -**Registro:** acta de ensamble (`HBOX5-Exx-Axxx-Rxxxx`) y, si se probaron Ethernet o los puertos serie, -[acta Ethernet y puertos serie](../formularios/ethernet-serie.html). +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: unidad V5.5/V5.6 que pasó la [prueba final](v5-prueba-final-unidad.md), antes de embarcar o de reinstalar. Paso 5 de producción, antes del [checklist de puesta en marcha](v5-checklist-puesta-en-marcha.md). + - Tiempo: 30–40 min por unidad, más la espera de RTK FIX. + - Necesitas: laptop con terminal serie a 115200 grabando, 2 cables USB-C con datos, 24 V o arnés GX16 real, [plantilla 4G](../descargas/4G_NTRIP_HelgenSRV-NMEA.example.txt) y el `.local.txt` de ingeniería, configuración F9P, antena GNSS con cielo, 2 antenas LTE, SIM Telcel; si aplica, cable Ethernet y adaptadores USB-RS485 / USB-RS232. Registro: [acta de ensamble](../formularios/ensamble.html) y, si aplica, [acta Ethernet y serie](../formularios/ethernet-serie.html). -## Qué es una «unidad configurada» +Una unidad está configurada cuando cumple las siete filas: -Una unidad está configurada cuando cumple **las siete** filas: - -| # | Elemento | Queda configurado cuando… | Dónde se verifica | +| # | Elemento | Configurado cuando | § | |---|---|---|---| -| 1 | Módem 4G NTRIP Master | parámetros cargados (APN, caster, mountpoint, ID de estación) y registrado en Telcel | §1 | -| 2 | simpleRTK2B (ZED-F9P) | configuración Helgen guardada en flash; llega a **RTK FIX (`fix=4`)** con cielo | §2 | -| 3 | Identidad | la unidad aparece en el monitor como **`H00xx`** con posición y columna *Salud* | §3 | -| 4 | Ethernet (si la unidad lo lleva) | enlace y espejo TCP probados en banco con el build `0.6.0-eth` | §4 | -| 5 | Puertos serie (si la unidad los lleva) | `[PASS] SC16IS752` en el POST y niveles correctos en P15/P16 | §5 | -| 6 | Paquete de batería | química correcta para la tarjeta y **JP2** en la posición que corresponde | §6 | -| 7 | Firmware y consola | versión vigente y `STAT` limpio (tabla de §7) | §7 | +| 1 | Módem 4G | Parámetros cargados (APN, caster, mountpoint, ID de estación) y registrado en Telcel | 1 | +| 2 | simpleRTK2B (ZED-F9P) | Configuración Helgen en flash; RTK FIX (`fix=4`) con cielo | 2 | +| 3 | Identidad | Aparece en el monitor como `H00xx` con posición y Salud | 3 | +| 4 | Ethernet (si lo lleva) | Enlace y espejo TCP probados con `0.6.0-eth` | 4 | +| 5 | Puertos serie (si los lleva) | `[PASS] SC16IS752` y niveles correctos en P15/P16 | 4 | +| 6 | Paquete de batería | Química = JP2; `ltc=CARGANDO` | 5 | +| 7 | Firmware y consola | Versión vigente y `STAT` limpio | 6 | -!!! warning "Sin secretos" - El archivo con los parámetros reales del módem (usuario/contraseña del caster y de la APN) **no está en el - sitio ni en el repositorio**. Vive **en el servidor / con Leo**. Se pide para la unidad que se va a configurar, - se usa y **no se guarda ni se reenvía**. En este documento solo aparece la plantilla. +## 1. Módem 4G — parámetros ---- +Las claves `$$$AS+…` y la plantilla están en [Descargas](../descargas/index.md#parametros-del-modem-4g-ntrip-master). Los valores reales (caster y APN) los entrega ingeniería para esta unidad; no se guardan ni se reenvían. `AS+K` (ID de estación) es el `H00xx` de la unidad (§3). -## 0. Material +1. Módem suelto (antes del ensamble): se carga sobre el simpleRTK2B por el USB XBEE ([módulos §2b](v5-modulos-integracion.md#2b-montaje-y-configuracion)). +2. Unidad ensamblada (módem en J7/J8): terminal en J9 a 115200 (J9 va al USB del módem, `USB_DP/DM` → J7 pines 7/8 según netlist V5.6); mismo procedimiento. +3. Al terminar, `$$$AS+I=1111` y lee `AS+K`; anótalo en el acta. +4. Retira el cable de J9: con cable, la laptop alimenta el módem y las pruebas de batería y de reset del módem no valen. -| Cant. | Ítem | -|---|---| -| 1 | Laptop con terminal serie (CoolTerm / PuTTY / `screen`) a **115200**, grabando a archivo | -| 2 | Cables USB-C **con datos** | -| 1 | Fuente 24 V (o el arnés GX16 real) — ver [prueba final §0](v5-prueba-final-unidad.md) | -| 1 | Plantilla [`4G_NTRIP_HelgenSRV-NMEA.example.txt`](../descargas/4G_NTRIP_HelgenSRV-NMEA.example.txt) + el archivo **`.local.txt`** con valores reales entregado por ingeniería | -| 1 | Archivo de configuración Helgen del ZED-F9P (u-center `.txt`) — lo entrega ingeniería | -| 1 | Antena GNSS con cielo, 2 antenas LTE, SIM Telcel activa | -| — | Solo si aplica: cable Ethernet, adaptadores USB-RS485 / USB-RS232 (ver [prueba Ethernet y serie](v5-prueba-ethernet-serie.md)) | +- [ ] Todas las líneas contestaron `OK`. +- [ ] Módem registrado en Telcel (LED lento o fijo) en < 2 min. +- [ ] `AS+K` anotado. ---- +## 2. simpleRTK2B — RTK FIX -## 1. Módem 4G NTRIP Master — parámetros +1. El módulo trae la configuración Helgen de su acta. Si llegó sin acta, cárgala ([módulos §1c](v5-modulos-integracion.md#1c-configuracion-helgen)). +2. Consola del HBOX (J11, 115200), etapa encendida (`stack=ON`): `n` muestra 20 s de `$GNGGA` con `fix=` y `sats=`. +3. Con cielo y módem registrado, espera `fix=4` (típico 1–5 min, máximo 10). `STAT`: `gga=RTK_FIX sats≥10 hdop<1.5`; LED RGB verde. -### 1a. Qué se carga - -Los parámetros se envían como líneas `$$$AS+…` a 115200 baudios, una por una; cada una contesta `OK`. -La plantilla publicada trae **todas** las claves; los valores sensibles están en blanco: - -| Clave | Qué es | En la plantilla | +| `fix=` | Significado | Se embarca | |---|---|---| -| `AS+I=1111` | Entra a modo configuración | fijo | -| `AS+A` · `AS+Q` · `AS+q` | APN: host, usuario, contraseña | `` `` `` | -| `AS+S` · `AS+P` | Caster NTRIP: host y puerto | `` `` | -| `AS+U` · `AS+M` | Caster: `usuario:contraseña` y mountpoint | `:` `` | -| `AS+B=115200` | Velocidad del puerto hacia el F9P | fijo | -| `AS+r` · `AS+h` · `AS+k=2` | Servidor secundario (monitor Helgen): IP, puerto, modo | `` `` | -| `AS+K` | **ID de estación** → es el `H00xx` de la unidad (§3) | `` | +| 0 | Sin fix | No | +| 1 | GPS autónomo (sin correcciones) | No | +| 5 | RTK FLOAT | No, salvo cielo malo documentado | +| 4 | RTK FIX | Sí | -### 1b. Cómo se carga +- [ ] `fix=4` estable 5 min; tiempo y satélites anotados. -1. **Módulo suelto (banco, antes del ensamble):** módem en el zócalo XBee del simpleRTK2B, terminal en el USB - **XBEE** del simpleRTK2B a 115200, enviar el `.local.txt` línea por línea — es el §3b de - [Módulos e integración](v5-modulos-integracion.md). -2. **Unidad ya ensamblada (módem en J7/J8 de la EinarBoard):** el USB-C **J9** de la tarjeta va al USB del módem - (`USB_DP/DM` → J7 pines 7/8, según netlist V5.6). Terminal en J9 a 115200 y mismo procedimiento. - -3. Al terminar: `$$$AS+I=1111` y leer de vuelta `AS+K`; anotar el ID en el acta. +## 3. Identidad `H00xx` -!!! note "Sin cable en J9 durante las pruebas de batería" - J9 entrega VBUS al módulo. Con cable en J9 el módem queda alimentado por la laptop y las pruebas de batería - y de reset del módem **no valen**. Se conecta solo para configurar y se retira. +La identidad en el monitor (monitor.helgen.dev, htracker) sale del módem: el NTRIP Master envía `$GPTXT` con el ID de `AS+K` en el tercer campo y el servidor lo toma como `H00xx`. El `H00xx` cambia si se cambia el módem, no la tarjeta. El `$PHID` que manda el espejo Ethernet (UID, fw, tarjeta, MAC) todavía no lo usa el monitor. -- [ ] Todas las líneas contestaron `OK` (ninguna `ERROR`). -- [ ] LED de red del módem en parpadeo lento / fijo (registrado en Telcel) en < 2 min con antenas puestas. -- [ ] `AS+K` anotado en el acta. +1. Con 24 V, etapa ON y módem registrado, en ≤ 2 min el monitor muestra `H00xx` con posición a 1 Hz y Salud (fw, `vbat`, temperaturas, `v5min`). +2. Consola: `modoB=ON relay=… phlg_aire=…` sube de 1 en 1 cada 30 s. ---- +- [ ] `H00xx` visible con Salud y anotado en el acta y en la etiqueta interior (`HBOX5-Exx-Axxx-Rxxxx · H00xx`). -## 2. simpleRTK2B — configuración y RTK FIX +## 4. Ethernet y puertos serie (solo si el panel los lleva) -1. El módulo trae la configuración Helgen desde su acta (UART1 a 115200, UART2 a la velocidad del módem, mensajes - NMEA). Si el módulo llegó sin acta: cargarla con u-center (**Tools → Receiver Configuration → Transfer file → GNSS**), - **UBX-CFG-CFG → Save**, desconectar y reconectar: debe seguir a 115200 con `$GNGGA`. -2. En la consola del HBOX (J11, 115200), con la etapa encendida (`STAT … stack=ON`), teclear **`n`**: 20 s de - tramas `$GNGGA` con `fix=` y `sats=`. -3. Con antena al cielo y módem registrado, esperar hasta **`fix=4` = RTK FIX** (típico 1–5 min; máximo 10). - `STAT` debe decir `gga=RTK_FIX sats≥10 hdop<1.5` y el LED RGB queda **verde**. +Prueba, defaults de red, pines de P15/P16 y regla de JP5: [Prueba de Ethernet y puertos serie](v5-prueba-ethernet-serie.md). No hay build de campo con Ethernet: la IP y el servidor son banderas de compilación y el monitor no escucha el espejo. -| `fix=` | Significado | Aceptable para embarcar | -|---|---|---| -| 0 | sin fix | no | -| 1 | GPS autónomo | no (correcciones no llegan) | -| 5 | RTK FLOAT | no, salvo cielo malo documentado | -| **4** | **RTK FIX** | **sí** | +- [ ] Ethernet probado y registrado, o "no aplica: panel sin RJ45". +- [ ] `[PASS] SC16IS752` en el POST; JP5 abierto/cerrado según la instalación, anotado. -- [ ] `fix=4` alcanzado y estable 5 min. Anotar tiempo y satélites. +## 5. Batería ---- +Química y JP2: [ensamble §2](v5-ensamble.md#2-tarjeta-sin-energia). -## 3. Identidad `H00xx` y registro en el monitor +Con 24 V, etapa ON y > 150 s tras el arranque: `STAT … carga=PROVING` → `carga=ON … ltc=CARGANDO`, y el monitor muestra 🔌 CARGANDO. `vbat` sube en la siguiente media hora. Detalle del gobernador: [Descargas](../descargas/index.md). -- La identidad de la unidad en el monitor (**monitor.helgen.dev**, htracker) **sale del módem**: el NTRIP Master - envía una trama `$GPTXT` cuyo tercer campo es el ID de estación configurado en `AS+K`; el servidor toma ese - campo como `H00xx`. -- Por eso **el `H00xx` se asigna al configurar el módem** (§1) y no cambia si se cambia la tarjeta; sí cambia si - se cambia el módem. Anotar en la etiqueta interior de la tapa: `HBOX5-Exx-Axxx-Rxxxx · H00xx`. -- Verificación: con 24 V, etapa ON y módem registrado, en ≤ 2 min el monitor muestra la fila `H00xx` con posición - a 1 Hz y la columna **Salud** (fw, `vbat`, temperaturas, `v5min`). En consola: `STAT … modoB=ON relay=… phlg_aire=…` - subiendo de 1 en 1 cada 30 s. +- [ ] Química = JP2, ambas anotadas. +- [ ] `ltc=CARGANDO` visto. -!!! note "Ethernet no cambia la identidad" - Por el espejo Ethernet la tarjeta manda `$PHID` (UID del MCU, fw, tarjeta, MAC). El monitor **todavía no lo usa**: - hoy la identidad sigue siendo el `$GPTXT` del módem. +## 6. Consola final -- [ ] La unidad aparece en el monitor como `H00xx` con Salud. Anotar `H00xx` en el acta. - ---- - -## 4. Ethernet (solo unidades con RJ45 en el panel) - -**Lo que hay en la tarjeta:** W5500 (U11) en SPI2, RJ45 J10 con LEDs de enlace y actividad, alimentación -`3V3_ETH` desde el 5 V del sistema. **No hay PoE** (J10 pines 7/8 sin conectar): la unidad sigue necesitando -24 V. Un switch PoE ni ayuda ni estorba. - -**Lo que hace el firmware (build de banco `0.6.0-eth`, `-DENABLE_ETH=1`; el binario de campo 0.6.0 NO lo incluye):** - -| Parámetro | Valor por defecto | Cómo se cambia | -|---|---|---| -| Dirección propia | **DHCP**; si no hay respuesta en 4 s → estática **192.168.7.2/24** | `-DETH_DHCP=0` · `-DETH_IP=192,168,1,50` | -| Servidor (espejo TCP) | **192.168.7.1:5010**, cliente TCP, reintento cada 5 s | `-DETH_SERVER_IP=192,168,1,10` · `-DETH_SERVER_PORT=5010` | -| Qué sale por el socket | todas las NMEA válidas del F9P + cada `$PHLG` + cada `$PHEV` + `$PHID` al conectar y cada 5 min | — | -| Cuándo está activo | solo con 5 V presente (nunca en batería ni por USB); tecla **`E`** on/off | — | - -!!! warning "Cambiar IP o servidor = recompilar" - Hoy la IP y el servidor son **banderas de compilación**, no parámetros de la unidad: no se cambian desde la consola - ni se guardan. Cualquier valor distinto al de banco (192.168.7.x) lo compila ingeniería y entrega un `.bin` con - su SHA-256. **No existe todavía build de campo con Ethernet.** - -!!! note "Qué hace el monitor con el espejo Ethernet: nada, por ahora" - El servidor htracker no escucha ese socket. El espejo sirve para **probar el hardware en banco** (`nc -lk 5010` - en la laptop) y como camino futuro. La unidad en el puerto sigue reportando por el módem 4G. - -**Prueba de banco (resumen; detalle en [prueba Ethernet y puertos serie](v5-prueba-ethernet-serie.md)):** laptop -en 192.168.7.1/24, cable directo a J10, `nc -lk 5010`; con 24 V y etapa ON debe llegar `$PHID,…` y luego NMEA. - -- [ ] Ethernet probado en banco y registrado en el acta (o «no aplica: panel sin RJ45»). - ---- - -## 5. Puertos serie P15 (RS-485) y P16 (RS-232) - -**Lo que hay en la tarjeta:** UART dual SC16IS752 (U10, I²C 0x4D, cristal Y2 3.6864 MHz) → canal A a un -transceptor RS-485 (U14 SP3485) en **P15**; canal B a un MAX3232 (U15) en **P16**. Ambos son clemas Phoenix MC 1,5 -de 3 vías (paso 3.5 mm). - -| Conector | Pin 1 | Pin 2 | Pin 3 | Notas | -|---|---|---|---|---| -| **P15 RS-485** | **A** | **B** | **GND** | Semi-dúplex (2 hilos). **JP5** = terminación 120 Ω (R82) entre A y B | -| **P16 RS-232** | **TX** (sale del HBOX) | **RX** (entra al HBOX) | **GND** | Niveles ±5 V (MAX3232). Es un DTE | - -**Regla de JP5 (terminación RS-485):** un bus RS-485 se termina **solo en sus dos extremos**. JP5 (puente de soldadura, -abierto de fábrica) se cierra únicamente si el HBOX es uno de los dos extremos del bus. En un bus de dos nodos -(HBOX + un equipo) se cierran los dos. Nunca cerrar JP5 en un nodo intermedio. - -**Cruce RS-232:** el HBOX es DTE (TX es salida). Contra otro DTE (laptop, PLC con DB9 macho) se cruza: -`P16.1 TX → RXD (DB9 pin 2)` · `P16.2 RX ← TXD (DB9 pin 3)` · `P16.3 GND ↔ DB9 pin 5`. Contra un DCE (módem, equipo -con DB9 hembra) va directo. - -**Cable a las clemas:** alambre 0.2–1.5 mm² (AWG 24–16), pelado 7 mm, sin estaño en la punta (o con puntera). RS-485 -con par trenzado (A/B) y el GND por el mismo cable. - -!!! note "Lo que el firmware hace hoy con los puertos" - Firmware 0.6.0: **solo prueba de presencia** del SC16IS752 en el POST (`[PASS] SC16IS752 0x4D ACK, SPR rd=0xA5`). - No hay tráfico de aplicación, no hay velocidad configurada y el protocolo hacia el equipo del cliente está - **por definir**. El auto-test de lazo (loopback) está planeado para **0.6.1**. Parámetros previstos de banco: - **9600 8N1** en ambos puertos . - -- [ ] `[PASS] SC16IS752` en el POST de la consola. -- [ ] JP5 en la posición que pide la instalación (anotar en el acta: abierto / cerrado). -- [ ] Si se hizo la prueba con adaptadores: resultado en el [acta Ethernet y puertos serie](../formularios/ethernet-serie.html). - ---- - -## 6. Paquete de batería — química y JP2 - -La química del paquete **la fija la tarjeta**, no el técnico. El LTC4040 lee la posición de **JP2** (pin F2) y con ella -decide el voltaje de flotación; si no coincide con el paquete, o no carga o sobrecarga. - -| Tarjeta | Paquete | JP2 (puente de soldadura de 3 pads) | RNTB (R55) / NTC del paquete | Flotación | -|---|---|---|---|---| -| **V5.5** (lote 22-Ago, 15 pzas) | **Li-ion 18650 1S4P** | **1-2** (F2 alto = Li-ion) | 10 k / NTC 10 k | ≈ 4.0–4.1 V | -| **V5.6** (ECO 28-Sep) | **LiFePO4 alta temperatura 26650** | **2-3** (F2 bajo = LFP) | **5.6 k** / NTC B3380 | 3.50 V | - -!!! danger "Cruce de química = FALLA" - - Paquete **Li-ion** en una tarjeta con **JP2 2-3** (LFP): el cargador flota a 3.50 V → el paquete nunca se llena, - autonomía de minutos. - - Paquete **LFP** en una tarjeta con **JP2 1-2** (Li-ion): el cargador intenta 4.0 V sobre una celda de 3.6 V máx → - **sobrecarga**. No embarcar. - - Antes de conectar P4: **leer JP2 con lupa** (serigrafía V5.6: `JP2 = F2 (Li-ion / LFP)`) y comparar con la etiqueta - del paquete. Si no coinciden, la unidad se detiene y se avisa a ingeniería. JP2 **no** se cambia en banco. - -Conexión: P4 = JST XH-3: pin 1 **BAT+**, pin 2 **GND**, pin 3 **NTC** del paquete. Medir en vacío antes de conectar: -Li-ion 3.0–4.2 V; LFP 2.8–3.6 V. - -Comprobación en consola (24 V, etapa ON, > 150 s tras el arranque): `STAT … carga=PROVING` → `carga=ON … ltc=CARGANDO` -y en el monitor **🔌 CARGANDO**. `vbat` debe subir en la siguiente media hora. Detalle en -[prueba de módem en batería — caja 0.6.0](prueba-bateria-modem.md). - -- [ ] Química del paquete = posición de JP2. Anotar ambas en el acta. -- [ ] `ltc=CARGANDO` visto en consola. - ---- - -## 7. Checklist final de consola y versiones - -Con 24 V + ignición, etapa ON ≥ 5 min, antena al cielo, batería conectada. Teclear **`s`** y leer la línea `STAT`: +24 V + ignición, etapa ON ≥ 5 min, cielo, batería conectada. Teclea `s` y lee `STAT`: | Campo | Debe decir | Si no | |---|---|---| -| encabezado (tras reset) | `hbox-v5-bringup 0.6.0 built …` | otra versión → re-flashear (tabla abajo) | -| `v5=` | `5.2x–5.3x(ok)` (nunca `BAJO` ni `no`) | SD-15B ajustado a ~5.3 V; arnés | -| `v5min=` | ≥ 4.9 | riel cae con ráfaga LTE → fuente / SD-15B | -| `vbat=` | Li-ion 3.6–4.1 · LFP 3.2–3.5 | paquete / P4 | -| `chrg=` · `ltc=` · `carga=` | `chg` · `CARGANDO` · `ON` (tras ~150 s) | ver §6 | -| `flt=` | `none` | `FAULT` → LTC4040 / NTC del paquete | -| `tair=` / `rh=` · `tbat=` · `tmcu=` | valores plausibles (< 45 °C en banco), no `n/d` | I²C: U3 / U4 | -| `i2cerr=` | `0` | soldadura U3 / U4 / U13 / U10 | -| `stack=` · `modo=` | `ON` · `AUTO` | `MAN` → teclear `A` | +| Encabezado (tras reset) | `hbox-v5-bringup` con la versión vigente de [Descargas](../descargas/index.md) | Reflashea | +| `v5=` | `5.2x–5.3x(ok)`, nunca `BAJO` ni `no` | SD-15B a ~5.3 V; arnés | +| `v5min=` | ≥ 4.9 | El riel cae con la ráfaga LTE: fuente / SD-15B | +| `vbat=` | Li-ion 3.6–4.1 · LFP 3.2–3.5 | Paquete / P4 | +| `chrg=` · `ltc=` · `carga=` | `chg` · `CARGANDO` · `ON` (tras ~150 s) | §5 | +| `flt=` | `none` | `FAULT`: LTC4040 / NTC del paquete | +| `tair=` / `rh=` · `tbat=` · `tmcu=` | Plausibles (< 45 °C en banco), no `n/d` | I²C: U3 / U4 | +| `i2cerr=` | `0` | Soldadura U3 / U4 / U13 / U10 | +| `stack=` · `modo=` | `ON` · `AUTO` | `MAN`: teclea `A` | | `gga=` · `sats=` | `RTK_FIX` · ≥ 10 | §2 | | `modoB=` · `phlg_aire=` | `ON` · sube cada 30 s | K1 / módem | -| `rtcm_age=` | pocos segundos (no `rtcm=none`) | correcciones no llegan → §1 | -| `modem=` | **`vivo`** (tras la gracia de 2 min) | `SOSPECHOSO` → módem oscuro: SW4G1 y revisar | -| `rec=` | `0` sin `LIMP` | NMEA intermitente: MOD1 / UART1 | -| `eth=` (solo build -eth) | `CONECTADO ip=…` con cable; `off` sin 5 V | §4 | +| `rtcm_age=` | Pocos segundos (no `rtcm=none`) | No llegan correcciones: §1 | +| `modem=` | `vivo` (tras 2 min de gracia) | `SOSPECHOSO`: módem oscuro; SW4G1 y revisa | +| `rec=` | `0`, sin `LIMP` | NMEA intermitente: MOD1 / UART1 | +| `eth=` (solo `-eth`) | `CONECTADO ip=…` con cable; `off` sin 5 V | §4 | -**V5.6:** el firmware para V5.6 (`MODEM_EN`, `tchg`, `tcell`, `tmodem`) todavía no existe; hasta que se publique, una -V5.6 se prueba con el 0.6.0 de V5.5 y los campos nuevos no aparecen. +V5.6: su firmware (`MODEM_EN`, `tchg`, `tcell`, `tmodem`) aún no existe; hasta entonces se prueba con el binario V5 vigente y esos campos no aparecen. -### Firmware vigente por tarjeta (29-sep-2026) - -| Tarjeta | Binario | Versión | Notas | -|---|---|---|---| -| **V5** (V5.5 y, por ahora, V5.6) | `hbox-v5-bringup_0.6.0.bin` | **0.6.0** | 0.5.9 + gobernador de carga. Build `0.6.0-eth` solo banco | -| **V4** | `hbox-tarjetaV4_0.6.0.bin` | **0.6.0** | mismo sketch, `-DHBOX_BOARD_V4`; DFU solo con USB | -| **V3** (flota en campo) | `hbox-tarjetaV3_4.0.0.bin` | **4.0.0** | compilado, sin prueba de banco | - -Descargas y SHA-256: [Descargas](../descargas/index.md). Un binario **nunca** se cruza de tarjeta. - -- [ ] `STAT` limpio (tabla anterior) pegado en el acta junto con el encabezado de versión. +- [ ] `STAT` limpio y encabezado de versión pegados en el acta. - [ ] Etiquetas exterior e interior con `HBOX5-Exx-Axxx-Rxxxx` y `H00xx`. -- [ ] Interruptor de corte (P11) en **OFF** para almacenar/embarcar. - ---- +- [ ] P11 en OFF para almacenar o embarcar. ## Historial de revisiones -| Versión | Fecha | Autor | Cambios | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión: define «unidad configurada» para V5.5/V5.6 (4G, F9P, identidad H00xx, Ethernet, RS-485/RS-232, química/JP2, checklist de consola). | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión: define "unidad configurada" para V5.5/V5.6. | +| 1.1 | 2026-09-29 | Edición breve. Parámetros del módem → Descargas; Ethernet/serie y JP5 → prueba de Ethernet y serie; química/JP2 → ensamble §2; tabla de firmware → Descargas. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Prueba-Ethernet-y-Puertos-Serie_ES_v1.0.md b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Prueba-Ethernet-y-Puertos-Serie_ES_v1.0.md index aa6f679..1dfc06a 100644 --- a/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Prueba-Ethernet-y-Puertos-Serie_ES_v1.0.md +++ b/06-Testing-Validation/2026-09-29_Drogheda_HBOX-V5_Prueba-Ethernet-y-Puertos-Serie_ES_v1.0.md @@ -1,238 +1,195 @@ --- -title: HBOX V5 (V5.5 / V5.6) — Prueba de banco de Ethernet y puertos serie (RS-485 / RS-232) +title: "HBOX V5 — Prueba de banco: Ethernet y puertos serie" tags: [project-drogheda, hardware, hbox, v5, v5.6, ethernet, w5500, rs485, rs232, sc16is752, testing, procedimiento] project: Project Drogheda author: Helgen Technologies date: 2026-09-29 -version: 1.0 -status: ACTIVO — obligatoria en al menos una V5.5 ANTES de pedir la V5.6; después, en toda unidad con RJ45 o clemas serie en el panel +version: 1.1 +status: ACTIVO — obligatoria en al menos una V5.5 antes de pedir la V5.6; después, en toda unidad con RJ45 o clemas serie audience: técnicos de banco --- # HBOX V5 — Prueba de banco: Ethernet y puertos serie -**Objetivo:** demostrar en hardware real que el W5500 (Ethernet) y el SC16IS752 con sus transceptores (RS-485 en -P15, RS-232 en P16) funcionan. Hasta el 28-sep **Ethernet nunca se había ejercitado en una tarjeta real**; la V5.6 -copia ese bloque tal cual, así que esta prueba en una V5.5 es condición para ordenar la V5.6. -**Duración:** Ethernet 15 min · serie 15 min. -**Registro:** [**▶ acta Ethernet y puertos serie**](../formularios/ethernet-serie.html). +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: técnicos de banco. + - Cuándo: al menos una V5.5 antes de pedir la V5.6 (Ethernet nunca se había probado en tarjeta real y la V5.6 copia el bloque); después, toda unidad V5.5/V5.6 con RJ45 o clemas serie en el panel, dentro de la [configuración de la unidad](v5-configuracion-unidad.md). + - Tiempo: Ethernet 15 min · serie 15 min. + - Necesitas: unidad V5 ensamblada (o tarjeta + simpleRTK2B para ver NMEA); 24 V al GX16 (o 5.3 V / 3 A en P2); laptop con terminal serie a 115200 grabando y `nc` (macOS/Linux) o `ncat` (Windows); binario de banco `hbox-v5-bringup_0.6.0-eth.bin` (lo compila ingeniería con `-DENABLE_ETH=1` y entrega su SHA-256) ; cable Ethernet directo cat 5e de 1–3 m (el W5500 hace Auto-MDIX); adaptadores USB-RS485 y USB-RS232 (DB9 macho) con 3 cables con puntera; multímetro; desarmador plano 2.5 mm; [acta Ethernet y puertos serie](../formularios/ethernet-serie.html). -!!! danger "Seguridad eléctrica — las tres reglas" - 1. **Nunca probar Ethernet con la unidad solo en batería ni solo por USB.** El W5500 se alimenta de `3V3_ETH`, que - cuelga del 5 V del sistema: sin 5 V el chip está sin alimentar y el firmware lo deja en reset. En batería el - firmware tampoco lo enciende (no valen sus ~130 mA). - 2. **5 V del sistema ≥ 5.2 V** durante la prueba (SD-15B ajustado a ~5.3 V o fuente de banco a 5.3 V en P2). Con - menos, la ráfaga LTE del módem lleva el riel al PFI 4.60 V del LTC4040 y la tarjeta se reinicia a media prueba. - 3. **Sin batería si se usa fuente de banco en P2** sin 24 V (no hay cargador que gobernar, pero un paquete Li-ion - sobre una fuente mal ajustada no se perdona). Lo normal: 24 V al GX16 y el SD-15B interno. +!!! warning "Reglas" + 1. Nunca pruebes Ethernet solo en batería ni solo por USB: el W5500 cuelga de `3V3_ETH`, que sale del 5 V del sistema. Sin 5 V el firmware lo deja en reset. + 2. 5 V del sistema ≥ 5.2 V (SD-15B o fuente a ~5.3 V). Con menos, la ráfaga LTE lleva el riel al PFI 4.60 V del LTC4040 y la tarjeta se reinicia. + 3. Con fuente de banco en P2 y sin 24 V, sin paquete de batería. Lo normal: 24 V al GX16 y el SD-15B interno. ---- +## A. Ethernet (build `0.6.0-eth`) -## 0. Material +### A1. Laptop (una vez) -| Cant. | Ítem | +1. Adaptador Ethernet en IP manual 192.168.7.1, máscara 255.255.255.0, sin gateway. Con un switch con DHCP la unidad toma IP del DHCP pero sigue buscando el servidor en 192.168.7.1; usa cable directo. +2. Firewall: permite entradas a 5010/TCP o desactívalo durante la prueba. +3. Deja escuchando: + + ```bash + nc -lk 5010 # macOS / Linux + ncat -lk 5010 # Windows (Nmap) + ``` + +### A2. Flasheo del build de banco + +1. DFU por J11, solo USB, sin 24 V ([flasheo §5](v5-prueba-y-flasheo.md#5-flasheo-por-usb-dfu-j11-5-min)). +2. `dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0-eth.bin` o STM32CubeProgrammer. +3. Terminal en J11: primera línea `hbox-v5-bringup 0.6.0-eth`; la ayuda (`h`) lista `E=Ethernet on/off`. + +El build `-eth` es solo de banco: al terminar reflashea `hbox-v5-bringup_0.6.0.bin` (ver C). + +### A3. Secuencia + +1. Cable entre J10 y la laptop. Sin 24 V los LEDs de J10 quedan apagados (correcto: el USB no alimenta el W5500). +2. Energiza 24 V + ignición (P11 en ON). En los primeros ~15 s: + + | Paso | Consola | Significa | + |---|---|---| + | a | `>>> BOARD OK` · `EVT … STACK ON reason=auto` | Tarjeta y etapa bien | + | b | `EVT ETH W5500 OK en SPI2 (W5500) mac=02:48:42:xx:xx:xx ip_estatica=192.168.7.2 — esperando cable` | El chip responde (`$PHEV … ETH_HW,ok`) | + | c | LED de enlace de J10 encendido, actividad parpadea | PHY con enlace | + | d | `EVT ETH sin DHCP en 4 s -> IP estatica` (directo) o `ETH enlace ARRIBA ip= (DHCP)` (switch) | Dirección obtenida | + | e | `EVT ETH enlace ARRIBA ip=192.168.7.2 (estatica) gw=… -> servidor 192.168.7.1:5010` | Listo para conectar | + | f | `EVT ETH conectado a 192.168.7.1:5010 (n=1): NMEA + $PHLG + $PHEV en espejo` | Socket abierto | + +3. En `nc` llega primero la identidad y luego el flujo. `$PHID` se repite cada 5 min; con la etapa apagada o sin simpleRTK2B solo llegan `$PHLG`/`$PHEV`. + + ``` + $PHID,,0.6.0-eth,EinarBoard v5 (HBOX v5),02:48:42:xx:xx:xx,*CS + $PHLG,0.6.0-eth,RUN,… + $GNGGA,… + $GNRMC,… + ``` + +4. `s`: `STAT … eth=CONECTADO ip=192.168.7.2 lineas=N bytes=… drop=0 conn=1`. `lineas` sube; `drop` queda en 0. +5. Cable: desconecta el RJ45 10 s → `EVT ETH cable desconectado — esperando enlace`; al reconectar, `enlace ARRIBA` y `conectado (n=2)` en < 10 s. +6. Servidor: cierra `nc` (Ctrl-C) → `EVT ETH servidor desconectado … reintento en 5 s`; relanza `nc -lk 5010` y reconecta solo. +7. Tecla `E` → `ETH OFF (operador)`, LEDs de J10 apagados; `E` otra vez repite b–f. +8. Sin 5 V: quita los 24 V con batería puesta → `EVT ETH OFF (sin_5V): W5500 en reset` y `eth=off`. Al volver los 24 V, reset del MCU (0.5.9+) y la secuencia completa. +9. Guarda el log de consola y la captura de `nc` (`nc -lk 5010 | tee H00xx_eth.txt`) para el acta. + +### A4. Aceptación + +| Criterio | Pasa si | |---|---| -| 1 | Unidad V5 ensamblada (tarjeta + simpleRTK2B + módem + antenas) o tarjeta V5 sola + simpleRTK2B (para ver NMEA) | -| 1 | Fuente 24 V al GX16 (o fuente 5.3 V / 3 A en P2) | -| 1 | Laptop con terminal serie (115200) grabando a archivo, **y** con `nc` (macOS/Linux) o `ncat` (Windows, Nmap) | -| 1 | Binario de banco **`hbox-v5-bringup_0.6.0-eth.bin`** (lo compila ingeniería con `-DENABLE_ETH=1`; SHA-256 en su entrega) | -| 1 | Cable Ethernet **directo** (cat 5e o mejor), 1–3 m; el W5500 hace Auto-MDIX, no hace falta cruzado | -| 1 | Adaptador **USB ↔ RS-485** (con terminales A/B o D+/D−) | -| 1 | Adaptador **USB ↔ RS-232** (DB9 macho, chip FTDI/Prolific) + 3 cables con puntera para la clema | -| 1 | Multímetro | -| — | Destornillador plano 2.5 mm para las clemas Phoenix MC 1,5 | +| Hardware | `ETH W5500 OK en SPI2` en cada arranque con 5 V, nunca `NO responde` | +| Enlace | LED de enlace ON con cable; `enlace ARRIBA` < 10 s tras conectar | +| Dirección | Toma DHCP si hay servidor; si no, 192.168.7.2 en ≤ 5 s | +| Espejo | `$PHID` primero; NMEA + `$PHLG` continuos ≥ 5 min; `drop=0` | +| Recuperación | Cable y servidor se recuperan solos en < 10 s | +| No interferencia | Con Ethernet conectado: `modoB=ON`, `phlg_aire` sube, el monitor ve la unidad por 4G, `v5min ≥ 4.9` | ---- +### A5. Fallas -## A. Prueba de Ethernet (build `0.6.0-eth`) +| Síntoma | Revisa | +|---|---| +| `EVT ETH W5500 NO responde en SPI2 … — 3V3_ETH? U11? reintento en 10 s` (`$PHEV … ETH_HW,fail`) | `3V3_ETH` (salida de U12 / J10 pin 4 TCT) = 3.3 V. Con 0 V: U12 o su enable, `SYS5V` (¿P11 cerrado?). Con 3.3 V: SPI2 (PB12 CS, PB13 SCK, PB14 MISO, PB15 MOSI) y RST en PA15 (en V5.5 flota sin pull-down; V5.6 lleva R112 4.7 k), cristal Y1 25 MHz, soldadura de U11 (QFN 48) | +| `W5500 OK` pero nunca `enlace ARRIBA` | Otro cable; adaptador de la laptop activo; J10 (pines doblados; el HR911105A trae los magnéticos dentro y un golpe los rompe); pares J10 1-2 / 3-6 | +| `enlace ARRIBA` sin `conectado` (`eth=buscando_srv`) | IP de la laptop ≠ 192.168.7.1/24, `nc` sin escuchar, firewall, dos adaptadores en la misma subred | +| `conectado` sin datos en `nc` o `drop` sube | `nc` sin `-k` se cerró tras el primer cliente; terminal congelada | +| Reinicio al conectar Ethernet | `v5min` < 4.6: SD-15B o fuente (regla 2) | +| Bien con cable directo, mal con switch | DHCP en otra subred y servidor fijo en 192.168.7.1: usa cable directo o pide build con `-DETH_SERVER_IP=` | -### A1. Preparar la laptop (una vez) +## B. Puertos serie (P15 RS-485, P16 RS-232) -1. Adaptador Ethernet de la laptop en **IP manual 192.168.7.1**, máscara **255.255.255.0**, sin gateway. - (Si en vez de cable directo se usa un switch con DHCP, la unidad tomará la IP del DHCP; entonces la laptop - debe estar en esa red y la unidad seguirá buscando el servidor en 192.168.7.1 — por eso el cable directo es lo más simple.) -2. Firewall de la laptop: permitir entradas al puerto **5010/TCP** (o desactivarlo durante la prueba). -3. Abrir un terminal y dejar escuchando: +### B0. Qué prueba cada firmware -```bash -nc -lk 5010 # macOS / Linux -ncat -lk 5010 # Windows (Nmap) -``` - -### A2. Flashear el build de banco - -1. DFU en **J11** (mantener SW2, pulsar y soltar SW1, soltar SW2) — igual que el - [procedimiento de flasheo §5](v5-prueba-y-flasheo.md). Solo USB, sin 24 V. -2. `dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.6.0-eth.bin` (o STM32CubeProgrammer). -3. Terminal serie en J11: la primera línea debe decir **`hbox-v5-bringup 0.6.0-eth`**. La ayuda (`h`) debe listar la - tecla `E=Ethernet on/off`. - -!!! warning "Al terminar, regresar la unidad a 0.6.0" - El build `-eth` es de banco. Antes de embarcar se vuelve a flashear **`hbox-v5-bringup_0.6.0.bin`** (campo) y se - anota en el acta de reflasheo. - -### A3. Secuencia de prueba - -1. Cable Ethernet **entre J10 y la laptop**. Aún sin 24 V: los LEDs de J10 deben estar **apagados** (W5500 sin - alimentar por USB — correcto). -2. Energizar **24 V + ignición** (P11 en ON). En consola, en los primeros ~15 s: - -| Paso | Línea esperada en consola | Qué significa | +| Firmware | Prueba | Secciones | |---|---|---| -| a | `>>> BOARD OK` · `EVT … STACK ON reason=auto` | tarjeta y etapa bien | -| b | `EVT ETH W5500 OK en SPI2 (W5500) mac=02:48:42:xx:xx:xx ip_estatica=192.168.7.2 — esperando cable` | **el chip responde** (`$PHEV … ETH_HW,ok`) | -| c | LED de **enlace** de J10 encendido; el de **actividad** parpadea | PHY con enlace | -| d | `EVT ETH sin DHCP en 4 s -> IP estatica` (cable directo) **o** `ETH enlace ARRIBA ip= (DHCP)` (switch) | dirección obtenida | -| e | `EVT ETH enlace ARRIBA ip=192.168.7.2 (estatica) gw=… -> servidor 192.168.7.1:5010` | listo para conectar | -| f | `EVT ETH conectado a 192.168.7.1:5010 (n=1): NMEA + $PHLG + $PHEV en espejo` | **socket abierto** | +| 0.6.0 / 0.6.0-eth | Presencia del SC16IS752 y niveles estáticos | B1, B2 | +| 0.6.1 (planeado) | Lazo interno y eco externo a 9600 8N1 | B3, B4 | -3. En la ventana de `nc` debe aparecer **primero** una línea de identidad y luego el flujo: +### B1. Presencia (0.6.x) -``` -$PHID,,0.6.0-eth,EinarBoard v5 (HBOX v5),02:48:42:xx:xx:xx,*CS -$PHLG,0.6.0-eth,RUN,… -$GNGGA,… -$GNRMC,… -``` - - (`$PHID` se repite cada 5 min. Con la etapa apagada o sin simpleRTK2B llegan solo `$PHLG`/`$PHEV`.) - -4. Teclear **`s`**: `STAT … eth=CONECTADO ip=192.168.7.2 lineas=N bytes=… drop=0 conn=1`. `lineas` debe subir; `drop` - debe quedarse en 0. -5. **Prueba de cable:** desconectar el RJ45 10 s → `EVT ETH cable desconectado — esperando enlace`; reconectar → - vuelve a `enlace ARRIBA` y `conectado (n=2)` en < 10 s. -6. **Prueba de servidor:** cerrar `nc` (Ctrl-C) → `EVT ETH servidor desconectado … reintento en 5 s`; volver a - lanzar `nc -lk 5010` → reconecta solo. -7. **Tecla `E`:** `E` → `ETH OFF (operador)`, LEDs de J10 apagados; `E` otra vez → toda la secuencia b–f de nuevo. -8. **Sin 5 V:** quitar los 24 V (con batería puesta) → `EVT ETH OFF (sin_5V): W5500 en reset` y `STAT … eth=off`. - Volver los 24 V → reset del MCU (0.5.9+) y la secuencia completa otra vez. -9. Guardar el log de consola **y** la captura de `nc` (`nc -lk 5010 | tee H00xx_eth.txt`). Ambos van al acta. - -### A4. Criterios de aceptación — Ethernet - -| Criterio | PASA si | -|---|---| -| Hardware | `ETH W5500 OK en SPI2` en cada arranque con 5 V (nunca `NO responde`) | -| Enlace | LED de enlace de J10 ON con cable; `enlace ARRIBA` en < 10 s tras conectar el cable | -| Dirección | DHCP tomado si hay servidor DHCP; si no, cae a 192.168.7.2 en ≤ 5 s | -| Espejo | `$PHID` es la primera línea en `nc`; después NMEA + `$PHLG` continuos ≥ 5 min; `drop=0` | -| Recuperación | cable fuera/dentro y servidor caído/arriba se recuperan solos en < 10 s | -| No interferencia | mientras Ethernet está conectado: `modoB=ON`, `phlg_aire` sigue subiendo, el monitor sigue viendo la unidad por 4G, `v5min ≥ 4.9` | - -### A5. Árbol de fallas — Ethernet - -| Síntoma | Dónde buscar | -|---|---| -| `EVT ETH W5500 NO responde en SPI2 … — 3V3_ETH? U11? reintento en 10 s` (`$PHEV … ETH_HW,fail`) | Medir **3V3_ETH** (U12 salida / J10 pin 4 TCT) → 3.3 V. Si 0 V: U12 o su enable, `SYS5V` (P11 cerrado?). Si 3.3 V: SPI2 (PB12 CS, PB13 SCK, PB14 MISO, PB15 MOSI) y **RST PA15**: en V5.5 PA15 no tiene pull-down (flota); la tarjeta debe llevar R112 4.7 k en V5.6. Cristal Y1 25 MHz. Soldadura de U11 (QFN 48) | -| `W5500 OK` pero **nunca** `enlace ARRIBA`; LED de enlace apagado | cable (probar otro), el adaptador de la laptop está activo?, **J10** (pines doblados, magnéticos: HR911105A trae los transformadores dentro — un J10 golpeado los rompe), pares TX/RX (J10 1-2 / 3-6) | -| `enlace ARRIBA` pero nunca `conectado` (`eth=buscando_srv`) | IP de la laptop ≠ 192.168.7.1/24, `nc` no está escuchando, **firewall** de la laptop, dos adaptadores de red con la misma subred | -| `conectado` pero `nc` no muestra nada / `drop` sube | `nc` sin `-k` se cerró tras el primer cliente; la laptop no drena (terminal congelada) | -| Se reinicia la tarjeta al conectar Ethernet | riel 5 V: `v5min` < 4.6 → SD-15B / fuente; ver regla 2 de seguridad | -| Todo bien con cable directo pero no con switch | el switch da DHCP en otra subred y el servidor sigue siendo 192.168.7.1 → cable directo, o build con `-DETH_SERVER_IP=` de esa red | - ---- - -## B. Prueba de puertos serie (P15 RS-485, P16 RS-232) - -### B0. Lo que puede probar cada firmware - -| Firmware | Qué prueba | Cómo | -|---|---|---| -| **0.6.0 / 0.6.0-eth** (hoy) | presencia del SC16IS752 (registro scratchpad) + **niveles estáticos** de los transceptores | B1 + B2 | -| **0.6.1** (planeado; *cuando exista*) | lazo interno A↔B y eco externo por cada puerto a **9600 8N1** | B3 + B4 | - -### B1. Presencia (cualquier 0.6.x) - -Con la tarjeta energizada (USB basta), en consola teclear **`r`** y buscar: +Tarjeta energizada (USB basta). Teclea `r` y busca: ``` [PASS] I2C SC16IS752 U10 @0x4D ACK [PASS] SC16IS752 0x4D ACK, SPR rd=0xA5 (exp A5), LSR=0x60 ``` -`[FAIL] … no ACK at 0x4D` → U10 sin alimentación / soldadura / dirección (A0, A1 a GND). `SPR rd=` distinto de `A5` → -U10 dañado o **Y2** no oscila (debe decir `3.6864`). +`[FAIL] … no ACK at 0x4D`: U10 sin alimentación, soldadura o dirección (A0, A1 a GND). `SPR rd=` ≠ `A5`: U10 dañado o Y2 no oscila (marcado `3.6864`). -### B2. Niveles estáticos (cualquier 0.6.x, multímetro, sin nada conectado a las clemas) +### B2. Niveles estáticos (0.6.x, sin nada en las clemas) -| Medir (negro a GND = P15.3 / P16.3) | Esperado | Si no | +| Punto (negro a P15.3 / P16.3) | Esperado | Si no | |---|---|---| -| **P16.1 (TX RS-232)** | **−5 a −6.5 V** (marca en reposo del MAX3232) | ≈ 0 V: U15 sin 3V3 o bomba de carga muerta (C1±/C2± = C de U15); ≈ +5 V: T1IN en bajo = U10 en reset | -| **P16.2 (RX RS-232)** | ≈ 0 V flotando (R1IN tiene pull-down interno) | — | -| **P15.1 (A) y P15.2 (B)** respecto a GND | ambas entre 1 y 3 V | ambas 0 V con 3V3 presente: U14 sin VCC | -| **P15.1 – P15.2** (A – B) con JP5 cerrado | 0 V ± 0.2 (driver desactivado, línea terminada) | ≈ 0 con JP5 abierto también es normal | -| **JP5** con la tarjeta apagada, ohms entre P15.1 y P15.2 | JP5 abierto: > 10 kΩ · JP5 cerrado: **≈ 120 Ω** (R82) | — | +| P16.1 (TX RS-232) | −5 a −6.5 V (reposo del MAX3232) | ≈ 0 V: U15 sin 3V3 o bomba de carga muerta; ≈ +5 V: T1IN bajo = U10 en reset | +| P16.2 (RX RS-232) | ≈ 0 V (pull-down interno de R1IN) | — | +| P15.1 (A) y P15.2 (B) a GND | Ambas 1–3 V | Ambas 0 V con 3V3 presente: U14 sin VCC | +| P15.1 – P15.2 con JP5 cerrado | 0 V ± 0.2 (driver desactivado, línea terminada) | ≈ 0 con JP5 abierto también es normal | +| Ohms P15.1–P15.2, tarjeta apagada | JP5 abierto > 10 kΩ · cerrado ≈ 120 Ω (R82) | — | -### B3. Lazo interno (cuando exista 0.6.1) +### B3. Lazo interno (0.6.1) -Cablear **P15 ↔ P16 no** — son eléctricamente distintos. El lazo interno de 0.6.1 conecta TX→RX de cada canal -**dentro del SC16IS752** (registro MCR bit 4) y no necesita cable: tecla de consola de 0.6.1 → `[PASS] SER_LOOP_A` / `[PASS] SER_LOOP_B`. Prueba U10 y el cristal, -**no** los transceptores ni las clemas. +No cablees P15 con P16: son eléctricamente distintos. El lazo de 0.6.1 une TX→RX de cada canal dentro del SC16IS752 (MCR bit 4), sin cable: tecla de consola de 0.6.1 → `[PASS] SER_LOOP_A` / `[PASS] SER_LOOP_B`. Prueba U10 y el cristal, no los transceptores ni las clemas. -### B4. Eco externo con adaptadores (cuando exista 0.6.1) — 9600 8N1 +### B4. Eco externo con adaptadores (0.6.1, 9600 8N1) -Con 0.6.1 en modo eco, todo lo que entra por un puerto sale por el mismo puerto. +En modo eco, lo que entra por un puerto sale por el mismo. -**RS-485 (P15):** +RS-485 (P15): -1. Cerrar **JP5** en la tarjeta *solo si* el adaptador también termina (la mayoría trae 120 Ω conmutable): bus de dos - nodos = dos extremos = dos terminaciones. Anotar la posición en el acta. -2. Adaptador: **A → P15.1**, **B → P15.2**, **GND → P15.3**. Par trenzado, ≤ 3 m en banco. -3. Terminal en el puerto del adaptador a **9600 8N1**, eco local apagado. Enviar `HELGEN-485 0123456789\r\n` - diez veces (o un archivo de 1 kB). -4. Esperado: cada línea regresa **idéntica**. 10/10 sin caracteres perdidos = PASA. -5. Si no vuelve nada: **intercambiar A y B** (muchos adaptadores etiquetan D+/D− al revés). Si sigue sin nada: B2. +1. JP5 según la [regla de terminación](#conexion-en-la-instalacion). En banco, bus de dos nodos: ciérralo solo si el adaptador también termina. Anota la posición. +2. A → P15.1, B → P15.2, GND → P15.3. Par trenzado, ≤ 3 m. +3. Terminal en el adaptador a 9600 8N1, sin eco local. Envía `HELGEN-485 0123456789\r\n` diez veces (o 1 kB). +4. Pasa con 10/10 líneas idénticas. +5. Sin respuesta: intercambia A y B (muchos adaptadores rotulan D+/D− al revés); si sigue, vuelve a B2. -**RS-232 (P16):** +RS-232 (P16): -1. Cable de 3 hilos con puntera: **P16.1 TX → DB9 pin 2 (RXD)** · **P16.2 RX → DB9 pin 3 (TXD)** · **P16.3 GND → DB9 pin 5**. - (Cruce DTE↔DTE; sin control de flujo.) -2. Terminal en el adaptador a **9600 8N1**. Enviar `HELGEN-232 0123456789\r\n` diez veces. -3. Esperado: 10/10 líneas de vuelta idénticas. Basura o nada: revisar cruce (probar pines 2↔3 invertidos) y B2. +1. Cable de 3 hilos: P16.1 TX → DB9 pin 2 (RXD) · P16.2 RX → DB9 pin 3 (TXD) · P16.3 GND → DB9 pin 5. Sin control de flujo. +2. Terminal a 9600 8N1. Envía `HELGEN-232 0123456789\r\n` diez veces. +3. Pasa con 10/10 idénticas. Basura o nada: invierte pines 2↔3 y revisa B2. -### B5. Criterios de aceptación — puertos serie +### B5. Aceptación -| Prueba | PASA si | Con qué firmware | +| Prueba | Pasa si | Firmware | |---|---|---| | Presencia U10 | `[PASS] SC16IS752 … SPR rd=0xA5` | 0.6.0+ | | Niveles RS-232 | P16.1 en −5…−6.5 V en reposo | 0.6.0+ | -| Niveles RS-485 | A y B con nivel (no 0/0), 120 Ω entre A-B solo con JP5 cerrado | 0.6.0+ | -| Lazo interno A y B | `[PASS] SER_LOOP_A` y `SER_LOOP_B` | 0.6.1 | -| Eco RS-485 | 10/10 líneas idénticas a 9600 8N1 | 0.6.1 | -| Eco RS-232 | 10/10 líneas idénticas a 9600 8N1 | 0.6.1 | +| Niveles RS-485 | A y B con nivel (no 0/0); 120 Ω A-B solo con JP5 cerrado | 0.6.0+ | +| Lazo interno | `SER_LOOP_A` y `SER_LOOP_B` en PASS | 0.6.1 | +| Eco RS-485 / RS-232 | 10/10 idénticas a 9600 8N1 | 0.6.1 | -!!! note "Sin 0.6.1, el resultado de serie se registra como «presencia + niveles OK»" - Es lo máximo que puede probarse hoy y **basta para ordenar la V5.6** (el bloque serie no cambia entre V5.5 y V5.6). - El eco con adaptadores se repite cuando salga 0.6.1 y se agrega al mismo acta. +Sin 0.6.1 el resultado se registra como "presencia + niveles OK". Basta para ordenar la V5.6 (el bloque serie no cambia). El eco se agrega al mismo acta cuando salga 0.6.1. ---- +## Conexión en la instalación + +| Conector | Pin 1 | Pin 2 | Pin 3 | Notas | +|---|---|---|---|---| +| P15 RS-485 | A | B | GND | Semidúplex, 2 hilos. JP5 = terminación 120 Ω (R82) entre A y B | +| P16 RS-232 | TX (sale) | RX (entra) | GND | ±5 V (MAX3232). El HBOX es DTE | + +- JP5 (puente de soldadura, abierto de fábrica): un bus RS-485 se termina solo en sus dos extremos. Ciérralo solo si el HBOX es un extremo; en un bus de dos nodos se cierran los dos; nunca en un nodo intermedio. +- RS-232 contra otro DTE (laptop, PLC con DB9 macho): cruzado como en B4. Contra un DCE (módem, DB9 hembra): directo. +- Clemas Phoenix MC 1,5 de 3 vías (paso 3.5 mm): alambre 0.2–1.5 mm² (AWG 24–16), pelado 7 mm, sin estañar (o con puntera). RS-485 en par trenzado con GND en el mismo cable. +- No hay PoE (J10 pines 7/8 sin conectar): la unidad sigue necesitando 24 V. ## C. Cierre -- [ ] Re-flashear **`hbox-v5-bringup_0.6.0.bin`** (campo) si la unidad se va a embarcar; anotar en el acta de reflasheo. -- [ ] Quitar cable Ethernet y adaptadores; tapas ciegas en J10/P15/P16 si el panel no los usa. -- [ ] Acta [Ethernet y puertos serie](../formularios/ethernet-serie.html) enviada con los dos logs. +- [ ] Si la unidad se embarca, reflashea `hbox-v5-bringup_0.6.0.bin` y anótalo en el [acta de reflasheo](../formularios/reflasheo.html). +- [ ] Retira cable y adaptadores; tapas ciegas en J10/P15/P16 que el panel no use. +- [ ] Envía el [acta Ethernet y puertos serie](../formularios/ethernet-serie.html) con los dos logs. ---- +## Anexo — notas de ingeniería -## Anexo A — Notas de ingeniería - -- Ethernet en firmware: `ethService()` — `RST` alto → 150 ms → `Ethernet.begin` estático (prueba el chip y lee el - PHY) → con cable, DHCP con 4 s de presupuesto (K1 liberado mientras, `relayDisengage("eth_dhcp")`) o estática → - `connect()` con timeout 300 ms, reintento 5 s. Escrituras no bloqueantes (`availableForWrite`), descartes en `drop=`. - MAC `02:48:42:` + hash del UID. Eventos en banda: `ETH_HW`, `ETH_UP`, `ETH_LINK`, `ETH_CONN`, `ETH_DISC`, `ETH_OFF`. -- V5.5 vs V5.6 en este bloque: V5.6 añade **R112 4.7 k pull-down en `ETH_RST` (PA15)** y C90 4.7 µF / C91 10 nF según - datasheet. Si una V5.5 arranca con `W5500 NO responde` de forma intermitente, sospechar PA15 flotando antes de que el - firmware tome el pin. -- SC16IS752: dirección 0x4D (A1 = A0 = GND, modo I²C), IRQ en PB8 (R81 10 k), cristal Y2 3.6864 MHz (`XTAL_FREQ 3686400` - → 9600 = divisor 24). Canal A → U14 SP3485 (DE y ~RE unidos en `SER_DEA`), canal B → U15 MAX3232 (canal 2 sin usar: - T2IN a GND, R2IN a GND). -- Netlist V5.6 (`p5ntc-after.xml`): P15.1 `RS485_A`, P15.2 `RS485_B`, P15.3 GND; JP5.1 `RS485_T` (R82 120 Ω → A), - JP5.2 `RS485_B`; P16.1 `RS232_TX` (T1OUT), P16.2 `RS232_RX` (R1IN), P16.3 GND; J10 1/2 TX±, 3/6 RX±, 4 TCT (3V3_ETH), - 5 RCT, 7/8 NC, 9–12 LEDs de enlace/actividad. +- `ethService()`: `RST` alto → 150 ms → `Ethernet.begin` estático (prueba el chip y lee el PHY) → con cable, DHCP con 4 s (K1 liberado mientras, `relayDisengage("eth_dhcp")`) o estática → `connect()` con timeout 300 ms, reintento 5 s. Escrituras no bloqueantes (`availableForWrite`); descartes en `drop=`. MAC `02:48:42:` + hash del UID. Eventos en banda: `ETH_HW`, `ETH_UP`, `ETH_LINK`, `ETH_CONN`, `ETH_DISC`, `ETH_OFF`. +- Defaults del build: DHCP, y si no hay respuesta en 4 s estática 192.168.7.2/24 (`-DETH_DHCP=0`, `-DETH_IP=192,168,1,50`); servidor 192.168.7.1:5010, reintento 5 s (`-DETH_SERVER_IP=`, `-DETH_SERVER_PORT=`); activo solo con 5 V, nunca en batería ni por USB. IP y servidor son banderas de compilación: otro valor = otro `.bin` de ingeniería. No hay build de campo con Ethernet y el servidor htracker no escucha el espejo; la unidad reporta por 4G. +- V5.6 añade R112 4.7 k pull-down en `ETH_RST` (PA15) y C90 4.7 µF / C91 10 nF. `W5500 NO responde` intermitente en V5.5: sospecha PA15 flotando antes de que el firmware tome el pin. +- SC16IS752: 0x4D (A1 = A0 = GND, I²C), IRQ en PB8 (R81 10 k), Y2 3.6864 MHz (`XTAL_FREQ 3686400` → 9600 = divisor 24). Canal A → U14 SP3485 (DE y ~RE unidos en `SER_DEA`); canal B → U15 MAX3232 (canal 2 sin usar: T2IN y R2IN a GND). En 0.6.0 no hay tráfico de aplicación y el protocolo con el equipo del cliente está por definir. +- Netlist V5.6 (`p5ntc-after.xml`): P15.1 `RS485_A`, P15.2 `RS485_B`, P15.3 GND; JP5.1 `RS485_T` (R82 120 Ω → A), JP5.2 `RS485_B`; P16.1 `RS232_TX` (T1OUT), P16.2 `RS232_RX` (R1IN), P16.3 GND; J10 1/2 TX±, 3/6 RX±, 4 TCT (3V3_ETH), 5 RCT, 7/8 NC, 9–12 LEDs. ## Historial de revisiones -| Versión | Fecha | Autor | Cambios | -|---|---|---|---| -| 1.0 | 2026-09-29 | Helgen Technologies | Primera versión: prueba de Ethernet con `0.6.0-eth` (espejo TCP, DHCP/estática, recuperación, árbol de fallas) y de puertos serie (presencia, niveles, lazo y eco 9600 8N1 para 0.6.1). | +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-09-29 | Primera versión: Ethernet con `0.6.0-eth` y puertos serie (presencia, niveles, lazo y eco para 0.6.1). | +| 1.1 | 2026-09-29 | Edición breve; recibe de la configuración de la unidad la tabla de conexión, la regla de JP5 y los defaults de Ethernet. | + +Versiones anteriores en git. diff --git a/06-Testing-Validation/remote-diagnostic-protocol.md b/06-Testing-Validation/remote-diagnostic-protocol.md index b4522b6..adaddbf 100644 --- a/06-Testing-Validation/remote-diagnostic-protocol.md +++ b/06-Testing-Validation/remote-diagnostic-protocol.md @@ -1,180 +1,142 @@ -# Remote Diagnostic Protocol — Pulled HBOX Units - -**Date:** 2026-06-19 · **Owner:** Leo Rodriguez -**Situation:** all HBOX units were **removed from the machines**. We have **4 units -in hand: 3 not working, 1 working-ish.** They are **physically in Veracruz**; the -team is in **Querétaro** → debugging is **remote** until they're shipped or someone -on-site acts as our hands. -**Firmware on these units = v1** (no MCU thermal log) → thermal evidence must come -from **physical inspection + a bench power test**, not from the firmware. - -> The single working-ish unit is the **control**. Every measurement below should be -> taken on it too, so "bad" readings on the dead units have a baseline to compare -> against. - +--- +title: "Protocolo de diagnóstico remoto — unidades HBOX retiradas" +tags: [project-drogheda, hbox, diagnostico, remoto, v1, veracruz, historico, procedimiento] +date: 2026-06-19 +project: Project Drogheda +author: Helgen Technologies +status: HISTÓRICO — jun-2026, unidades con firmware v1 retiradas de las máquinas en Veracruz --- -## 0. Decision gate (make this call first) +# Protocolo de diagnóstico remoto — unidades HBOX retiradas -**Recommendation: ship all 4 units to Querétaro.** They are small, and remote- -debugging *dead* electronics is slow and rarely conclusive — a 1–2 day courier buys -full bench access (PSU with current limit, scope, u-center, reflash, thermal soak, -teardown). Bring the working-ish unit too; it's the reference. +Tarjeta: unidades de la primera generación con firmware **v1** (Blackpill + PowerBoost, jun-2026). El orden de trabajo sigue valiendo para cualquier unidad desmontada. -Choose remote-hands **only if** shipping is blocked (client chain-of-custody, the -units must stay on-site, or courier delay is unacceptable). Confirm with ICAVE who -**owns** the units and whether they may leave the terminal. +!!! abstract "Para quién · Cuándo · Tiempo · Necesitas" + - Para quién: ingeniería en Querétaro y un técnico «manos remotas» en Veracruz + - Cuándo: unidades retiradas de las máquinas que no pueden llegar al banco de inmediato. Hoy el procedimiento vigente es [diagnóstico en campo](procedimiento-diagnostico-campo.md) → [diagnóstico en banco](../procedimientos/diagnostico-banco.md) + - Tiempo: nivel 0: 20 min por unidad; nivel 1: +10 min; nivel 2: 1 h por unidad + - Necesitas: fuente de banco con límite de corriente, teléfono con cámara, cable USB y laptop (nivel 1), escritorio remoto (nivel 2) -| Path | When | Cost | +Traducido del original en inglés (19-jun-2026). + +Fecha: 2026-06-19 · Responsable: Leo Rodríguez +Situación: todas las unidades HBOX fueron retiradas de las máquinas. Hay **4 unidades en mano: 3 no funcionan, 1 funciona a medias.** Están físicamente en Veracruz; el equipo está en Querétaro → la depuración es remota hasta que se envíen o alguien en sitio actúe como nuestras manos. +**Firmware en estas unidades = v1** (sin registro térmico del MCU) → la evidencia térmica tiene que salir de la inspección física + una prueba de energizado en banco, no del firmware. + +!!! note "La unidad de control" + La única unidad que funciona a medias es el control. Cada medición de abajo debe tomarse también en ella, para que las lecturas «malas» de las unidades muertas tengan una línea base contra la cual comparar. + +## 0. Compuerta de decisión (tomar esta decisión primero) + +**Recomendación: enviar las 4 unidades a Querétaro.** Son pequeñas, y depurar a distancia electrónica *muerta* es lento y rara vez concluyente — una mensajería de 1–2 días compra acceso completo al banco (fuente con límite de corriente, osciloscopio, u-center, reflasheo, prueba térmica prolongada, desarmado). Traer también la unidad que funciona a medias; es la referencia. + +Elegir manos remotas **solo si** el envío está bloqueado (cadena de custodia del cliente, las unidades deben quedarse en sitio, o el retraso de la mensajería es inaceptable). Confirmar con ICAVE quién es dueño de las unidades y si pueden salir de la terminal. + +| Camino | Cuándo | Costo | |---|---|---| -| **Ship to QRO** *(recommended)* | units may leave Veracruz | courier + 1–2 days | -| **Remote-hands in Veracruz** | units must stay; cooperative on-site tech exists | needs the protocol below + their time | +| Enviar a QRO *(recomendado)* | las unidades pueden salir de Veracruz | mensajería + 1–2 días | +| Manos remotas en Veracruz | las unidades deben quedarse; hay un técnico cooperativo en sitio | necesita el protocolo de abajo + su tiempo | -Either way, **start §2 (backend analysis) now from Querétaro** — it needs no units. +De cualquier forma, **empezar §2 (análisis del backend) ahora desde Querétaro** — no necesita unidades. ---- +## 1. Qué se puede y qué no se puede saber a distancia -## 1. What we can / cannot learn remotely - -| Question | Remote-hands? | How | +| Pregunta | ¿Manos remotas? | Cómo | |---|---|---| -| Is the LiPo swollen / burnt / leaking? | ✅ | photo checklist (§3 Tier 0) | -| Connectors/SMA loose, solder cracked? | ✅ | photos + wiggle test | -| Does it draw current / boot on power? | ✅ | bench PSU **current reading** (§3) | -| LED state on power-up? | ✅ | film the LED, decode (§4) | -| Battery V, fix quality, state, packets | ✅ (Tier 1) | USB dashboard capture | -| Does the 4G modem attach / get a fix? | ✅ (Tier 1–2) | dashboard / u-center / remote desktop | -| Does it reach our gateway when powered? | ✅ | watch htracker for that unit's `cell_id` | -| Exact failed component / thermal soak | ❌ (needs bench) | **ship to QRO** | +| ¿La LiPo está inflada / quemada / con fuga? | ✅ | checklist de fotos (§3 nivel 0) | +| ¿Conectores/SMA flojos, soldadura agrietada? | ✅ | fotos + prueba de meneo | +| ¿Consume corriente / arranca al energizar? | ✅ | lectura de corriente de la fuente de banco (§3) | +| ¿Estado del LED al encender? | ✅ | grabar el LED, decodificar (§4) | +| V de batería, calidad de fix, estado, paquetes | ✅ (nivel 1) | captura del tablero por USB | +| ¿El módem 4G se registra / obtiene fix? | ✅ (niveles 1–2) | tablero / u-center / escritorio remoto | +| ¿Llega a nuestro gateway cuando está energizada? | ✅ | observar htracker para el `cell_id` de esa unidad | +| Componente exacto fallado / prueba térmica prolongada | ❌ (necesita banco) | enviar a QRO | -So ~80% of triage is remotely achievable; only component-level confirmation and -thermal reproduction strictly require the units in QRO. +Así que ~80 % del triaje se puede hacer a distancia; solo la confirmación a nivel de componente y la reproducción térmica requieren estrictamente las unidades en QRO. ---- +## 2. Hacer esto ahora desde Querétaro (sin unidades) -## 2. Do this NOW from Querétaro (no units needed) +El backend está en nuestro propio servidor — totalmente depurable desde QRO, y según `02-Architecture-Software/backend-review.md` puede sacar de Wialon unidades sanas por sí solo. -The backend is on our own server — fully debuggable from QRO, and per -`02-Architecture-Software/backend-review.md` it can take healthy units off Wialon by itself. +1. Separación histórica online/offline. Para los días antes del retiro, comparar el registro de cada unidad en htracker (online al recibir UDP) contra Wialon (online por posiciones recibidas). Una unidad que estaba online en htracker pero offline en Wialon fue una víctima del backend (bloqueo anti-salto / atasco HOL), *no* hardware muerto — eso replantea cuáles unidades «muertas» son en realidad fallas de hardware. +2. Logs del gateway alrededor de la ventana de muerte: buscar el aviso anti-salto (`¡Filtro Anti-Salto Activado!`) repitiéndose para un `cell_id` (→ bloqueo), y caídas del buffer de recepción UDP con `netstat -su` (→ atasco HOL). +3. Reproducir en banco con la unidad que funciona a medias una vez energizada (en VER por manos remotas, o en QRO): apuntarla al gateway y observar si el retranslator la reenvía limpiamente o dispara el filtro. +4. Disponibilidad del caster (HelgenSRV) + saldo de datos / suspensión por SIM en la ventana. -1. **Historical online-vs-offline split.** For the days before removal, compare each - unit's **htracker** record (online on UDP receipt) against **Wialon** (online on - positions received). A unit that was **online in htracker but offline in Wialon** - was a **backend victim** (anti-jump lock-out / HOL stall), *not* dead hardware — - that reframes which "dead" units are actually hardware failures. -2. **Gateway logs around the death window:** look for the anti-jump warning - (`¡Filtro Anti-Salto Activado!`) spamming one `cell_id` (→ lock-out), and for - `netstat -su` UDP receive-buffer drops (→ HOL stall). -3. **Bench-reproduce with the working-ish unit** once it's powered (in VER via - remote-hands, or in QRO): point it at the gateway and watch whether the - retranslator forwards it cleanly or trips the filter. -4. Caster (HelgenSRV) uptime + **per-SIM data balance/suspension** for the window. +Este es el trabajo de mayor apalancamiento que se puede hacer hoy y no necesita a nadie en Veracruz. -This is the highest-leverage work we can do today and it needs nobody in Veracruz. +## 3. Protocolo de manos remotas (por niveles según lo que tenga la persona en sitio) ---- +Darle al técnico en sitio el nivel que le corresponda. Las instrucciones listas para enviar están en §6b. -## 3. Remote-hands protocol (tiered by what the on-site person has) +### Nivel 0 — energía + cámara de teléfono (mínimo) -Give the on-site tech the matching tier. A ready-to-send Spanish version is in §6. +Para cada unidad, antes de energizar: -### Tier 0 — power + a phone camera (minimum) -For **each** unit, before powering: -1. **Photograph**: the whole inside, then close-ups of the **LiPo** (any swelling, - bulging, brown/black marks, leaks?), the **PowerBoost**, every **connector/Dupont**, - the **SMA antenna** joints, and any **discoloured/burnt** components. -2. **Wiggle test** (gently): do any Dupont/terminal/SMA connectors move or fall off? -3. **Bench power-on with a current-limited PSU** at the unit's normal voltage - (12 V or 24 V), current limit ~2 A: - - Read **inrush** then **steady current**. Record the number. - - **0 mA / trips at 0:** open circuit / dead input stage / blown fuse. - - **Hits the current limit / very hot:** short → **power off immediately**. - - **~50–150 mA steady, nothing else:** MCU only, stack not powering (load switch - / boost / modem). - - **Normal-ish draw + LED activity:** boots — go to Tier 1. - - Compare every reading to the **working-ish unit**. -4. **Film the LED** for ~60 s from power-up (decode in §4). +1. Fotografiar: todo el interior, después acercamientos de la LiPo (¿inflada, abombada, marcas cafés/negras, fugas?), del PowerBoost, de cada conector/Dupont, de las uniones de las antenas SMA y de cualquier componente decolorado/quemado. +2. Prueba de meneo (suave): ¿algún conector Dupont/terminal/SMA se mueve o se cae? +3. Energizado en banco con fuente con límite de corriente al voltaje normal de la unidad (12 V o 24 V), límite de corriente ~2 A: + - Leer la corriente de arranque y después la estable. Anotar el número. + - **0 mA / se dispara en 0:** circuito abierto / etapa de entrada muerta / fusible fundido. + - Llega al límite de corriente / muy caliente: corto → apagar de inmediato. + - **~50–150 mA estables, nada más:** solo el MCU, la etapa no se energiza (interruptor de carga / boost / módem). + - Consumo más o menos normal + actividad del LED: arranca — pasar al nivel 1. + - Comparar cada lectura con la unidad que funciona a medias. +4. Grabar el LED ~60 s desde el encendido (decodificar en §4). -### Tier 1 — Tier 0 + USB cable + a laptop -5. Plug the Blackpill **USB** into the laptop; open **PuTTY/TeraTerm at 115200**. - The v1 watchdog prints a live dashboard. **Capture 3–5 min** (log to file) and - send it. Read off: **BATTERY V**, **SYSTEM STATE**, **RTK FIX**, **PACKETS TX'd**, - PWR/IGN inputs. (No MCU-temp line — these are v1.) -6. Note whether **PACKETS TX'd increments** (GNSS+serial alive) and whether **RTK - FIX** ever reaches 4/5 (corrections arriving = 4G/NTRIP working). +### Nivel 1 — nivel 0 + cable USB + laptop -### Tier 2 — Tier 1 + remote-desktop (AnyDesk/TeamViewer) into the laptop -7. We drive from QRO: read the live dashboard, run **u-center** on the ZED-F9P - (fix, sat levels, config), issue **AT commands** to the 4G modem (attach, signal), - and if useful **reflash v2** to gain thermal logging + better recovery. +5. Conectar el USB del Blackpill a la laptop; abrir **PuTTY/TeraTerm a 115200**. El watchdog v1 imprime un tablero en vivo. **Capturar 3–5 min** (grabar a archivo) y enviarlo. Leer: **BATTERY V**, **SYSTEM STATE**, **RTK FIX**, PACKETS TX'd, entradas PWR/IGN. (No hay línea de temperatura del MCU — son v1.) +6. Anotar si PACKETS TX'd incrementa (GNSS+serie vivos) y si **RTK FIX** llega alguna vez a 4/5 (correcciones llegando = 4G/NTRIP funcionando). ---- +### Nivel 2 — nivel 1 + escritorio remoto (AnyDesk/TeamViewer) a la laptop -## 4. LED quick-decode (v1) +7. Se opera desde QRO: leer el tablero en vivo, correr u-center en el ZED-F9P (fix, niveles de satélites, configuración), enviar comandos AT al módem 4G (registro, señal) y, si es útil, **reflashear v2** para obtener registro térmico + mejor recuperación. -| LED | State | Read as | +## 4. Decodificación rápida del LED (v1) + +| LED | Estado | Léelo como | |---|---|---| -| Fast blink | BOOTING | powered, waiting for 4G/GNSS | -| Solid ON | RUNNING, vehicle power, RTK fixed | healthy | -| Heartbeat (1 s) | RUNNING on battery | on LiPo, 30 s rate | -| Slow blink | searching / no corrections | 4G/NTRIP not delivering | -| Off (with power applied) | SLEEP / dead | battery-critical logic **or** not booting | +| Parpadeo rápido | BOOTING | energizada, esperando 4G/GNSS | +| Fijo encendido | RUNNING, energía de vehículo, RTK fijo | sana | +| Latido (1 s) | RUNNING en batería | en LiPo, cadencia de 30 s | +| Parpadeo lento | buscando / sin correcciones | 4G/NTRIP no entrega | +| Apagado (con energía aplicada) | SLEEP / muerta | lógica de batería crítica o no arranca | -"Off while powered from a good bench supply" on a unit that should boot = a strong -**no-boot / power-stage** signal — correlate with the current reading. +«Apagado con energía de una buena fuente de banco» en una unidad que debería arrancar = señal fuerte de **no arranque / etapa de potencia** — correlacionar con la lectura de corriente. ---- - -## 5. Per-unit triage decision tree +## 5. Árbol de decisión de triaje por unidad ``` -Power on bench PSU (current-limited) -├─ 0 mA ............................. dead input / blown fuse / open → ship to QRO -├─ hits limit / hot ................ SHORT (power off!) ............... → ship to QRO -└─ draws current - ├─ no LED, no USB dashboard ...... MCU/boot dead .................... → ship to QRO - └─ boots (LED + dashboard) - ├─ PACKETS not incrementing ... GNSS/serial dead ................ Tier 2 / ship - ├─ FIX stuck 0/1 (never 4/5) .. 4G/NTRIP not delivering ......... check modem/SIM/antenna - └─ FIX 4/5 + packets OK ........ HARDWARE IS FINE ............... → backend victim (§2) +Energizar con fuente de banco (con límite de corriente) +├─ 0 mA ............................. entrada muerta / fusible fundido / abierto → enviar a QRO +├─ llega al límite / caliente ....... CORTO (¡apagar!) ......................... → enviar a QRO +└─ consume corriente + ├─ sin LED, sin tablero USB ....... MCU/arranque muerto ...................... → enviar a QRO + └─ arranca (LED + tablero) + ├─ PACKETS no incrementa ....... GNSS/serie muertos ....................... nivel 2 / enviar + ├─ FIX atorado en 0/1 (nunca 4/5) 4G/NTRIP no entrega ..................... revisar módem/SIM/antena + └─ FIX 4/5 + paquetes OK ....... EL HARDWARE ESTÁ BIEN .................... → víctima del backend (§2) ``` -The last branch is the important one: a pulled unit that **boots, fixes, and -transmits on the bench is not the failure** — its disappearance from Wialon is then -backend (§2), and re-installing it unchanged would just repeat the problem. +La última rama es la importante: una unidad retirada que **arranca, obtiene fix y transmite en el banco no es la falla** — su desaparición de Wialon es entonces del backend (§2), y reinstalarla sin cambios solo repetiría el problema. ---- +## 6. Seguridad — LiPo dañada por calor (decírselo al técnico en sitio) -## 6. Safety — heat-damaged LiPo (tell the on-site tech) +!!! danger "Batería de litio" + Una LiPo inflada/abombada o caliente es un riesgo de incendio. **No** cargarla, no perforarla ni seguir energizando una unidad cuya batería esté visiblemente inflada. Desconectarla, ponerla en una bolsa LiPo-safe / ignífuga o un recipiente metálico, mantenerla lejos de cualquier cosa inflamable y ventilar. Fotografiar primero, después aislar. Si está caliente, venteada o huele: detenerse y aislar de inmediato. -A swollen/puffy or hot LiPo is a **fire risk**. Do **not** charge it, puncture it, or -keep powering a unit whose battery is visibly swollen. Disconnect it, place it in a -**LiPo-safe / fireproof bag or a metal container**, keep it away from anything -flammable, and ventilate. Photograph first, then isolate. If it's hot, vented, or -smells: stop and isolate immediately. +## 6b. Instrucciones para el técnico en sitio (niveles 0/1) — texto listo para enviar ---- +> Para cada unidad: (1) Fotos del interior y de cerca de la batería LiPo (¿inflada, manchas cafés/negras, fuga?), del PowerBoost, de cada conector Dupont, de las antenas SMA, y de cualquier componente quemado/decolorado. (2) Prueba de movimiento suave: ¿algún conector se mueve o se cae? (3) Enciéndela con una fuente de banco a su voltaje normal (12 V/24 V), límite de corriente ~2 A, y anota la corriente (arranque y estable). Si llega al límite o se calienta, apágala de inmediato (corto). (4) Graba el LED ~60 s desde el encendido. (5) Si hay laptop: conecta el USB del Blackpill, abre **PuTTY/TeraTerm a 115200** y **graba 3–5 min** del tablero (BATERÍA V, ESTADO, RTK FIX, PAQUETES). Seguridad: una batería inflada o caliente es riesgo de incendio — no la cargues ni la perfores; aíslala en bolsa/recipiente seguro y ventila. -## 6b. Spanish — instrucciones para el técnico en sitio (Tier 0/1) +## 7. Qué enviar de regreso a Querétaro (checklist de captura) -> Para **cada** unidad: (1) **Fotos** del interior y de cerca de la **batería LiPo** -> (¿inflada, manchas cafés/negras, fuga?), del **PowerBoost**, de **cada conector -> Dupont**, de las **antenas SMA**, y de cualquier componente **quemado/decolorado**. -> (2) Prueba de **movimiento** suave: ¿algún conector se mueve o se cae? (3) Enciéndela -> con una **fuente de banco** a su voltaje normal (12 V/24 V), límite de corriente ~2 A, -> y anota la **corriente** (arranque y estable). Si llega al límite o se calienta, -> **apágala de inmediato** (corto). (4) **Graba el LED** ~60 s desde el encendido. -> (5) Si hay laptop: conecta el **USB** del Blackpill, abre **PuTTY/TeraTerm a 115200** -> y **graba 3–5 min** del tablero (BATERÍA V, ESTADO, RTK FIX, PAQUETES). **Seguridad:** -> una batería **inflada o caliente** es riesgo de incendio — no la cargues ni la -> perfores; aíslala en bolsa/recipiente seguro y ventila. +Por unidad, etiquetado con su `cell_id`/máquina: las fotos, la lectura de corriente (arranque + estable), el video del LED, la **captura del tablero USB de 3–5 min** y una nota de una línea (¿arranca? ¿fix? ¿paquetes?). Con eso se pueden clasificar las 4 unidades contra el árbol de §5 y la evidencia del backend de §2 — y decidir cuáles de verdad necesitan desarmado en QRO. ---- +## Historial de revisiones -## 7. What to send back to Querétaro (capture checklist) - -Per unit, labeled with its `cell_id`/machine: the **photos**, the **current reading** -(inrush + steady), the **LED video**, the **3–5 min USB dashboard capture**, and a -one-line note (boots? fix? packets?). With that, we can classify all 4 units against -the tree in §5 and the backend evidence in §2 — and decide which truly need teardown -in QRO. +| Versión | Fecha | Cambios | +|---|---|---| +| 1.0 | 2026-06-19 | Protocolo original (inglés). | +| 1.1 | 2026-09-29 | Traducción al español, encabezado uniforme y enlaces a los procedimientos vigentes. Sin cambios técnicos. | diff --git a/hbox-docs b/hbox-docs index 6c1a4c2..7b8fb4f 160000 --- a/hbox-docs +++ b/hbox-docs @@ -1 +1 @@ -Subproject commit 6c1a4c2a8d2081a7f897c57f8ba4b4dda366669f +Subproject commit 7b8fb4f9d1ba5b54570b7a8ac9463ce94ecb82d9