252 lines
18 KiB
HTML
252 lines
18 KiB
HTML
<!doctype html>
|
||
<html lang="es">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Acta de prueba — EinarBoard V4 (fw 0.5.6)</title>
|
||
<link rel="stylesheet" href="acta.css">
|
||
</head>
|
||
<body>
|
||
<div id="acta"></div>
|
||
<script src="acta.js"></script>
|
||
<script>
|
||
/* Acta de prueba de la tarjeta V4 con firmware 0.5.6 — tipo 'prueba-v4', una por serie (V4-01 … V4-15).
|
||
Procedimiento: procedimientos/v4-prueba-fw-0.5.6.md
|
||
- Las claves llevan el prefijo sN_MM_ para que ver.html las muestre en orden, por sección.
|
||
- Cada etapa termina con una pregunta de paso. Si la tarjeta no pasa, las secciones siguientes se
|
||
ocultan (sus obligatorios dejan de contar) y el acta se envía como FALLA desde el Cierre. */
|
||
const empieza = (v, k, t) => String(v[k] || '').startsWith(t);
|
||
const prepOK = v => empieza(v, 's2_09_prep_fin', 'Completa');
|
||
const flasheada = v => !!v.s3_01_dfu && !empieza(v, 's3_01_dfu', 'No logré');
|
||
const flashOK = v => prepOK(v) && flasheada(v) && v.s3_05_tests === '>>> BOARD OK';
|
||
const aOK = v => flashOK(v) && empieza(v, 's4_07_a_fin', 'Pasó');
|
||
const falla = v => !!v.s7_01_clasif && !empieza(v, 's7_01_clasif', 'Pasó');
|
||
|
||
const DESP = ['Despertar #1', 'Despertar #2'];
|
||
const COLS_DESP = [
|
||
{ k:'hora', txt:'Hora del despertar', ph:'14:15', ancho:'80px' },
|
||
{ k:'trama', txt:'Primera trama NMEA', opciones:['$GNTXT u-blox','otra (GGA, RMC…)','no salió'] },
|
||
{ k:'mrst', txt:'<code>MODEM_RST stack_on</code> a los 3 s', opciones:['sí','no salió'] },
|
||
{ k:'modem', txt:'Módem registró solo', opciones:['sí','LEDs, sin registrar','oscuro'] },
|
||
{ k:'monitor', txt:'Monitor recibió (batería)', opciones:['sí','no'] },
|
||
{ k:'reposo', txt:'Línea <code>DUTY reposo</code> al cerrar la ventana', ph:'ventana 150s fix=RTK_FIX phlg_aire=4 vbat=3.95', ancho:'240px' },
|
||
];
|
||
const FILAS = ['0:15', '0:30', '0:45', '1:00', '1:30', '2:00'];
|
||
const COLS_DIAG = [
|
||
{ k:'sw5v', txt:'SW_5V mín', u:'V', num:true, ph:'4.9' },
|
||
{ k:'v3m', txt:'3V3_MODEM mín', u:'V', num:true, ph:'3.3' },
|
||
{ k:'ledm', txt:'LEDs del módem (qué hacen)', opciones:['apagados','se apagan y vuelven','parpadeo','fijo'] },
|
||
{ k:'uart', txt:'LEDs UART del simpleRTK2B', opciones:['lento ~1/s','rápido','sin parpadeo'] },
|
||
{ k:'vbat', txt:'vbat / vbatmin (tecla s)', ph:'3.92 / 3.71', ancho:'110px' },
|
||
];
|
||
const PASO_NO = 'No pude completarla — me detengo (explico en Cierre)';
|
||
|
||
Acta.render({
|
||
tipo: 'prueba-v4',
|
||
prefijo: 'V4',
|
||
series: 15,
|
||
tecnicoDesdeUsuario: true,
|
||
nombres: { alan: 'Alán Basurto', daniel: 'Daniel Martínez', leo: 'Leo Rodríguez', jesus: 'Jesús' },
|
||
etiquetaSerie: 'Tarjeta V4',
|
||
titulo: 'Acta de prueba — EinarBoard V4 con firmware 0.6.0',
|
||
subtitulo: 'Un acta por tarjeta (V4-01 … V4-15) · ~1 h',
|
||
textoOK: 'APROBADA',
|
||
intro: 'Llénala mientras avanzas por el procedimiento '
|
||
+ '<a href="../procedimientos/v4-prueba-fw-0.5.6/">V4 — preparación y prueba con 0.6.0</a>. '
|
||
+ 'Graba la consola desde el primer minuto; al final se sube completa. '
|
||
+ 'Si una etapa no pasa, marca «me detengo»: lo que sigue se oculta, llenas el Cierre y envías como <b>FALLA</b>. '
|
||
+ 'Sin número de serie: el siguiente V4 libre del <a href="../tablero.html">tablero</a>. La serie PRUEBA sirve para practicar.',
|
||
secciones: [
|
||
|
||
{ titulo: '1 · Datos',
|
||
items: [
|
||
{ tipo:'fecha', clave:'s0_00_fecha', req:true, guardaEn:'fecha', txt:'Fecha' },
|
||
{ tipo:'texto', clave:'s0_01_modem', rows:'1', txt:'Módem: RTK-NNNN o IMEI', ph:'RTK-0007' },
|
||
{ tipo:'texto', clave:'s0_02_ard', rows:'1', txt:'simpleRTK2B: ARD-NNN', ph:'ARD-012' },
|
||
{ tipo:'texto', clave:'s0_03_bp', rows:'1', txt:'Blackpill: leyenda impresa', ph:'WeAct BlackPill V3.0 F411CEU6' },
|
||
{ tipo:'nota', txt:'<div class="peligro"><b>Reglas.</b> Cambios de hardware sin energía (sin 24 V, batería desconectada, sin USB). '
|
||
+ 'Ningún USB en el simpleRTK2B ni en J9 durante las pruebas. Consola solo con el cable sin 5 V.</div>' },
|
||
] },
|
||
|
||
{ titulo: '2 · Puente de reset del módem (Preparación 1, sin energía)',
|
||
sub: 'Diodo de <b>SW4G1</b> (pad que va a RESET de J7) a <b>U13 pata 12</b>: '
|
||
+ '<code>U13-12 ──|<── SW4G1</code> · banda (cátodo) en U13, lado sin banda (ánodo) en SW4G1.',
|
||
items: [
|
||
{ tipo:'radio', clave:'s1_00_diodo', req:true, txt:'Diodo',
|
||
opciones:['BAT54','BAT85','BAT43','1N5711','1N4148 (solo si en la Prueba A baja de 0.4 V)','Otro'],
|
||
aviso:'<b>No uses 1N5819</b>: en caliente deja pasar corriente al revés y alimenta al módem durante el reposo.' },
|
||
{ tipo:'texto', clave:'s1_01_diodo_otro', rows:'1', req:true, si: v => v.s1_00_diodo === 'Otro',
|
||
txt:'Número de parte o marcado' },
|
||
{ tipo:'check', clave:'s1_02_orient', req:true,
|
||
txt:'Banda del diodo (cátodo) en <b>U13 pata 12</b>; lado sin banda (ánodo) en el pad de <b>SW4G1</b> que tiene continuidad con el pin <b>RESET</b> de J7.' },
|
||
{ tipo:'check', clave:'s1_03_limpio', req:true,
|
||
txt:'Con lupa: pata 12 sin puente a la 11 ni a la 13. Alambre fijo con Kapton, lejos del módem.' },
|
||
{ tipo:'medida', clave:'s1_04_d_dir', req:true, txt:'Prueba de diodo: roja SW4G1, negra U13-12',
|
||
esperado:'0.15 – 0.45 V', u:'V',
|
||
aviso:'0 V = corto. OL en los dos sentidos = falta soldadura. Corrígelo antes de seguir.' },
|
||
{ tipo:'medida', clave:'s1_05_d_inv', req:true, modo:'text', txt:'Prueba de diodo, puntas invertidas',
|
||
esperado:'OL o más de 1 V', ph:'OL' },
|
||
{ tipo:'foto', clave:'s1_06_f_puente', req:true, etiqueta:'puente-u13-sw4g1',
|
||
txt:'Puente: U13 y SW4G1 con diodo y alambre visibles.' },
|
||
] },
|
||
|
||
{ titulo: '3 · Interruptores, cable de consola y batería (Preparación 2)',
|
||
sub: 'Interruptores y batería <b>sin energía</b>. El interruptor doble está junto al LED POWER del simpleRTK2B.',
|
||
items: [
|
||
{ tipo:'radio', clave:'s2_00_ioref', req:true, txt:'IOREF=3.3V (debe quedar en OFF)',
|
||
opciones:['Estaba en OFF','Estaba en ON — lo pasé a OFF','No tiene esa leyenda — tomé foto y pregunté'] },
|
||
{ tipo:'radio', clave:'s2_01_5vout', req:true, txt:'5V=OUTPUT (debe quedar en OFF)',
|
||
opciones:['Estaba en OFF','Estaba en ON — lo pasé a OFF','No tiene esa leyenda — tomé foto y pregunté'] },
|
||
{ tipo:'foto', clave:'s2_02_f_sw', req:true, etiqueta:'interruptores-simplertk2b',
|
||
si: v => empieza(v, 's2_00_ioref', 'No tiene') || empieza(v, 's2_01_5vout', 'No tiene'),
|
||
txt:'Interruptores del simpleRTK2B.' },
|
||
{ tipo:'texto', clave:'s2_03_sw_resp', rows:'2', req:true,
|
||
si: v => empieza(v, 's2_00_ioref', 'No tiene') || empieza(v, 's2_01_5vout', 'No tiene'),
|
||
txt:'Indicación de ingeniería y posición final' },
|
||
{ tipo:'check', clave:'s2_04_usb', req:true,
|
||
txt:'Ningún USB en el simpleRTK2B ni en J9.' },
|
||
{ tipo:'radio', clave:'s2_05_cable', req:true,
|
||
txt:'Prueba del cable sin 5 V (tarjeta sin 24 V ni batería)',
|
||
opciones:['La Blackpill quedó apagada (ningún LED) — cable bueno','La Blackpill encendió'] },
|
||
{ tipo:'nota', si: v => empieza(v, 's2_05_cable', 'La Blackpill encendió'),
|
||
txt:'<div class="peligro"><b>El cable no sirve.</b> Revisa que el hilo rojo esté cortado y aislado. '
|
||
+ 'Si con el rojo cortado la Blackpill sigue encendiendo, <b>detente y avisa a ingeniería</b>.</div>' },
|
||
{ tipo:'medida', clave:'s2_06_vbat', req:true, txt:'Batería en su conector, como llegó',
|
||
esperado:'3.80 V o más para empezar', u:'V',
|
||
aviso:'Menos de 3.80 V: cárgala fuera de la tarjeta con el cargador de 1 celda, '
|
||
+ 'o fuente de banco a 4.00 V y límite 1 A, sin dejarla sola. Si se calienta o se infla: detente y avisa.' },
|
||
{ tipo:'radio', clave:'s2_07_carga', req:true, txt:'Carga previa',
|
||
opciones:['No hizo falta','Sí, con el cargador de 1 celda','Sí, con fuente de banco 4.00 V / 1 A'] },
|
||
{ tipo:'medida', clave:'s2_08_vbat_final', req:true, si: v => empieza(v, 's2_07_carga', 'Sí'),
|
||
txt:'Batería después de cargar', esperado:'3.80 V o más', u:'V' },
|
||
{ tipo:'radio', clave:'s2_09_prep_fin', req:true, txt:'Preparación',
|
||
opciones:['Completa — sigo al flasheo', PASO_NO] },
|
||
] },
|
||
|
||
{ titulo: '4 · Flasheo de 0.6.0', si: prepOK,
|
||
sub: 'Sin 24 V, batería desconectada, cable normal en la Blackpill. '
|
||
+ 'DFU: mantén BOOT0, pulsa y suelta NRST, suelta BOOT0 → STM32 BOOTLOADER (0483:DF11). '
|
||
+ '<code>dfu-util -a 0 -s 0x08000000:leave -D hbox-tarjetaV4_0.6.0.bin</code>',
|
||
items: [
|
||
{ tipo:'check', clave:'s3_00_sha', req:true,
|
||
txt:'<code>hbox-tarjetaV4_0.6.0.bin</code> de Descargas (no el de V5); SHA-256 empieza con <code>1458470b</code> y termina con <code>ba77b2e3</code>.' },
|
||
{ tipo:'radio', clave:'s3_01_dfu', req:true, txt:'Dónde se flasheó',
|
||
opciones:['En la tarjeta','Fuera del zócalo (en la tarjeta no apareció STM32 BOOTLOADER)','No logré flashear'] },
|
||
{ tipo:'check', clave:'s3_02_orient', req:true, si: v => empieza(v, 's3_01_dfu', 'Fuera'),
|
||
txt:'Reinsertada sin energía: USB-C del lado de E-CSn; B12 en E-CSn y R en NRST.' },
|
||
{ tipo:'texto', clave:'s3_03_fw', rows:'1', req:true, si: flasheada, txt:'Firmware (línea BOOT o banner)',
|
||
ph:'hbox-v5-bringup 0.6.0 built …' },
|
||
{ tipo:'check', clave:'s3_04_board', req:true, si: flasheada,
|
||
txt:'Segunda línea: <code>board=EinarBoard v4 (HBOX v4)</code> (si dice v5, binario equivocado: reflashea).' },
|
||
{ tipo:'radio', clave:'s3_05_tests', req:true, si: flasheada,
|
||
txt:'Final de los tests de arranque (r los repite; t imprime <code>$PHLG,0.6.0,</code>)',
|
||
opciones:['>>> BOARD OK','>>> BOARD CHECK FAILED'] },
|
||
{ tipo:'texto', clave:'s3_06_fails', rows:'3', req:true, si: v => flasheada(v) && v.s3_05_tests === '>>> BOARD CHECK FAILED',
|
||
txt:'Líneas [FAIL] completas', ph:'[FAIL] …' },
|
||
{ tipo:'nota', si: v => empieza(v, 's3_01_dfu', 'No logré') || (flasheada(v) && v.s3_05_tests === '>>> BOARD CHECK FAILED'),
|
||
txt:'<div class="peligro"><b>Detente y avisa a ingeniería.</b> Llena el Cierre y envía el acta con resultado FALLA.</div>' },
|
||
{ tipo:'check', clave:'s3_07_cable', req:true, si: flashOK,
|
||
txt:'Cable normal retirado; desde aquí, solo el cable sin 5 V.' },
|
||
] },
|
||
|
||
{ titulo: '5 · Prueba A — con 24 V', si: flashOK,
|
||
sub: 'Batería y luego 24 V. A los 30 s, cable sin 5 V y consola grabando.',
|
||
items: [
|
||
{ tipo:'medida', clave:'s4_00_p2', req:true, txt:'P2 (salida del SD-15B)', esperado:'5.1 – 5.3 V', u:'V',
|
||
aviso:'0 V con 24 V puestos: <b>detente y avisa a ingeniería</b> (SD-15B o arnés).' },
|
||
{ tipo:'texto', clave:'s4_01_stat', rows:'3', req:true,
|
||
txt:'Línea STAT (s): v5=5.xx(ok), stack=ON, mrst ≥ 1; luego modoB=ON y gga= con satélites',
|
||
ph:'STAT vbat=4.02 v5=5.21(ok) … stack=ON … modoB=ON … mrst=1' },
|
||
{ tipo:'medida', clave:'s4_02_m_min', req:true,
|
||
txt:'Tecla M: mínimo en el pad RESET de SW4G1',
|
||
esperado:'menos de 0.4 V durante ~0.5 s (usa MIN/MAX si lo tiene); en reposo marca alto', u:'V' },
|
||
{ tipo:'radio', clave:'s4_03_m_res', req:true, txt:'Resultado de M',
|
||
opciones:['Bajó de 0.4 V, los LEDs del módem se apagaron y volvieron, consola «MODEM_RST operador»',
|
||
'No bajó',
|
||
'Bajó, pero se quedó entre 0.4 y 0.7 V'],
|
||
aviso:'No bajó: diodo al revés o sin soldar. Entre 0.4 y 0.7 V: el diodo no es Schottky. '
|
||
+ 'Corrige sin energía y repite; si sigue sin bajar de 0.4 V, <b>detente y avisa a ingeniería</b>.' },
|
||
{ tipo:'radio', clave:'s4_04_modem', req:true,
|
||
txt:'Módem registrado y UART del simpleRTK2B en parpadeo rápido',
|
||
opciones:['Sí','No'] },
|
||
{ tipo:'radio', clave:'s4_05_monitor', req:true, txt:'Monitor: unidad con 0.6.0 y ⚡',
|
||
opciones:['Sí','No'] },
|
||
{ tipo:'check', clave:'s4_06_sin_usb', req:true,
|
||
txt:'Todo con el cable sin 5 V y sin USB en el simpleRTK2B ni en J9.' },
|
||
{ tipo:'radio', clave:'s4_07_a_fin', req:true, txt:'Prueba A',
|
||
opciones:['Pasó — sigo a la prueba en batería','No pasó — me detengo (explico en Cierre)'] },
|
||
] },
|
||
|
||
{ titulo: '6 · Prueba B — en batería', si: aOK,
|
||
sub: 'Quita 24 V (la batería queda) y anota la hora. No pulses RESET: sin 24 V la etapa no vuelve a encender. '
|
||
+ 'Nota: los despertares y el reposo describen el ciclo de 0.5.6–0.5.7; desde 0.5.9 la etapa y el módem siguen encendidos en batería. Anota lo que ocurra y avisa a ingeniería.',
|
||
items: [
|
||
{ tipo:'texto', clave:'s5_00_hora', rows:'1', req:true, txt:'Hora sin 24 V', ph:'14:05' },
|
||
{ tipo:'radio', clave:'s5_01_perdido', req:true,
|
||
txt:'«V5 PERDIDO» y «BACKUP inicio …»; etapa encendida',
|
||
opciones:['Sí','No (anoto en Cierre qué salió)'] },
|
||
{ tipo:'radio', clave:'s5_02_reposo', req:true, txt:'«DUTY reposo … etapa OFF» y «STACK OFF reason=duty_sleep»',
|
||
opciones:['Sí','No'] },
|
||
{ tipo:'medida', clave:'s5_03_sw5v', req:true, txt:'Reposo, 30 s: SW_5V en C3 (+)', esperado:'menos de 0.3 V', u:'V' },
|
||
{ tipo:'medida', clave:'s5_04_v3m', req:true, txt:'Reposo: 3V3_MODEM en C43 (+) o J7 pin 1',
|
||
esperado:'< 0.3 V (anota el valor aunque sea mayor)', u:'V' },
|
||
{ tipo:'radio', clave:'s5_05_ledpwr', req:true, txt:'Reposo: LED POWER del simpleRTK2B',
|
||
opciones:['Apagado (el LED IOREF encendido es normal)','Encendido'] },
|
||
{ tipo:'nota', si: v => v.s5_05_ledpwr === 'Encendido',
|
||
txt:'<div class="peligro"><b>LED POWER encendido en reposo:</b> IOREF en ON o USB en el simpleRTK2B. Si no es eso: <b>detente y avisa a ingeniería</b>.</div>' },
|
||
{ tipo:'tabla', clave:'s5_06_desp', txt:'Despertares (~10 y ~20 min sin 24 V)',
|
||
sub:'En cada ventana deben salir, en orden: <code>STACK ON reason=duty_wake</code> → <code>NMEA primera trama en PA3 ($GNTXT … u-blox AG …)</code> '
|
||
+ '→ a los 3 s <code>MODEM_RST stack_on</code> → a los ~10 s <code>MODOB ON</code>. Si la primera trama no es la de u-blox AG, '
|
||
+ 'el GPS nunca se apagó (IOREF). No toques nada durante la ventana (2–3 min).',
|
||
etiquetaFilas:'Ventana', filas: DESP, columnas: COLS_DESP },
|
||
{ tipo:'radio', clave:'s5_07_b_fin', req:true,
|
||
txt:'Prueba B: módem registró solo y el monitor recibió',
|
||
opciones:['Sí, en las dos ventanas','Solo en una','En ninguna'] },
|
||
{ tipo:'tabla', clave:'s5_08_diag', si: v => !!v.s5_07_b_fin && !empieza(v, 's5_07_b_fin', 'Sí'),
|
||
txt:'No registró: registro de la siguiente ventana',
|
||
sub:'El valor más bajo en cada intervalo. Tecla <code>s</code> a 0:30 y 1:30 para vbat / vbatmin.',
|
||
etiquetaFilas:'t', filas: FILAS, columnas: COLS_DIAG },
|
||
] },
|
||
|
||
{ titulo: '7 · Prueba C — regreso de 24 V sin reset', si: aOK,
|
||
sub: 'Dos casos, sin pulsar RESET.',
|
||
items: [
|
||
{ tipo:'radio', clave:'s6_00_c1', req:true, txt:'Caso 1 — 24 V de vuelta en reposo: módem',
|
||
opciones:['Registró solo en menos de 2 min','Encendió pero no registró','Siguió oscuro'] },
|
||
{ tipo:'radio', clave:'s6_01_c1_evt', req:true,
|
||
txt:'Caso 1 — eventos: «V5 PRESENTE», «DUTY fin», «BACKUP fin», ~3 s «STACK ON reason=auto», 3 s «MODEM_RST stack_on»',
|
||
opciones:['Sí, todas','Faltó alguna (anoto cuál en Cierre)'] },
|
||
{ tipo:'radio', clave:'s6_02_c2', req:true,
|
||
txt:'Caso 2 — 24 V fuera y de vuelta en < 2 min (etapa ON): módem',
|
||
opciones:['Registró solo en menos de 2 min','Encendió pero no registró','Siguió oscuro'] },
|
||
{ tipo:'radio', clave:'s6_03_c2_evt', req:true,
|
||
txt:'Caso 2 — eventos: «5 V de vuelta tras bateria: ciclo de etapa…» → «STACK OFF reason=pwr_return» → ~10 s «STACK ON reason=recovery» → «MODEM_RST stack_on»',
|
||
opciones:['Sí, todas','Faltó alguna (anoto cuál en Cierre)'] },
|
||
{ tipo:'radio', clave:'s6_04_monitor', req:true, txt:'Monitor de vuelta en ⚡', opciones:['Sí','No'] },
|
||
] },
|
||
|
||
{ titulo: '8 · Cierre',
|
||
items: [
|
||
{ tipo:'archivo', clave:'s7_00_log', req:true, etiqueta:'v4-consola',
|
||
txt:'Log completo de consola (desde el flasheo o la Prueba A).' },
|
||
{ tipo:'radio', clave:'s7_01_clasif', req:true, guardaEn:'clasificacion', txt:'Resultado',
|
||
opciones:['Pasó A, B y C',
|
||
'Se detuvo en la preparación',
|
||
'Se detuvo en el flasheo',
|
||
'Falló la Prueba A (24 V)',
|
||
'Falló la Prueba B (batería)',
|
||
'Falló la Prueba C (regreso de 24 V)'],
|
||
aviso:'Debe coincidir con lo marcado arriba. APROBADA solo si pasó A, B y C.' },
|
||
{ tipo:'texto', clave:'s7_02_detalle', rows:'4', req:true, si: falla,
|
||
txt:'Detalle de la falla (paso, consola, medidas)',
|
||
ph:'Prueba B, despertar #1: MODEM_RST stack_on salió pero el módem siguió oscuro; 3V3_MODEM 3.31 V…' },
|
||
{ tipo:'texto', clave:'s7_03_obs', rows:'3', txt:'Observaciones' },
|
||
{ tipo:'check', clave:'s7_04_guardada', req:true,
|
||
txt:'24 V y batería desconectados; tarjeta etiquetada (V4-NN) y guardada.' },
|
||
] },
|
||
]
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|