2026-07-02: PROD schematic complete (ERC 0) + carrier-board PCB + doc sweep to the Jul-2 ledger
Electrical/PCB: - LTC4040 Block B sized to the 12 Ah 1S4P pack (RPROG 825R -> 2.42 A ~ C/5, RS 8 mR -> 3.1 A input limit, PFI 4.60 V, backup 4.79 V, charge 4.00 V Li-ion via VSYS-referenced straps) + Block E cutoff (P11) + Block F PA4->VEH5V re-tap + Block H fail-safe Modo-B bypass (K1 normally-closed relay) + Block I NTC->PB1. - CARRIER-BOARD conversion: simpleRTK2B Pro on UNO-pattern female headers (MOD1; D0/D1=UART1, D2=RX2, D8=TX2, IOREF=3V3, 5V=SW_5V) + 4G NTRIP Master on on-board XBee socket (J7/J8; VCC=3V3_MODEM via new Block K MP1584 buck off SW_5V - the HP XBee socket is 3.3 V not 5 V). Board 120x100, placement + GND pour + DRC baselines. Custom symbols: LTC4040EUFD, AO4406A, SimpleRTK2B_Pro_Socket. - Fixed duplicated U2, stale no-connects, A4->A3 sheet; ERC 0 errors. Docs: - Canonical electrical-design-state + production delta (Block B values table, 5b/5c/5d/5e) + design/rationale/connections/BOM swept to the Jul-2 assumptions ledger (Conexiones-por-Bloque xlsx). - Guia de Conexion Protoboard: LaTeX source now maintained in-repo -> v2.1 PDF. - CircuiTikZ sheet + wiring Beamer: block 11 (NTC->PB1) + guinda ignition legend. - Client decks: Avance v1.1 (overclaims fixed) + RCA v1.1 (2-jul addendum). Repo hygiene: - .gitignore: live rtk-config (SIM/APN/NTRIP creds) now ignored and REMOVED from tracking (NOTE: rotate those credentials - they exist in prior commits); KiCad .bak/snapshots/.history, LaTeX intermediates, Office locks ignored+purged. - Removed rogue .history gitlinks that broke git status.
34
.gitignore
vendored
@ -23,3 +23,37 @@ venv/
|
|||||||
*.log
|
*.log
|
||||||
# Claude local settings
|
# Claude local settings
|
||||||
**/.claude/settings.local.json
|
**/.claude/settings.local.json
|
||||||
|
|
||||||
|
# --- Added 2026-07-02 (repo publish hygiene) ---
|
||||||
|
# Live device configs with credentials (SIM PIN / APN / NTRIP / server) — redacted template lives in the firmware repo
|
||||||
|
04-Source-Code/rtk-config/
|
||||||
|
|
||||||
|
# Editor local-history junk (nested .git inside breaks status)
|
||||||
|
**/.history/
|
||||||
|
|
||||||
|
# KiCad working artifacts
|
||||||
|
*.kicad_sch.bak*
|
||||||
|
*.kicad_pcb.bak*
|
||||||
|
*.kicad_prl
|
||||||
|
fp-info-cache
|
||||||
|
_autosave-*
|
||||||
|
*-backups/
|
||||||
|
03-Architecture-Hardware/kicad/snapshots/
|
||||||
|
*_2d_view.svg
|
||||||
|
*_drc_violations.json
|
||||||
|
|
||||||
|
# LaTeX build intermediates (PDF deliverables ARE committed)
|
||||||
|
*.aux
|
||||||
|
*.toc
|
||||||
|
*.nav
|
||||||
|
*.snm
|
||||||
|
*.out
|
||||||
|
*.synctex.gz
|
||||||
|
*.fls
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.bbl
|
||||||
|
*.blg
|
||||||
|
|
||||||
|
# Office lock files
|
||||||
|
~$*
|
||||||
|
.~lock.*#
|
||||||
|
|||||||
@ -0,0 +1,387 @@
|
|||||||
|
% Helgen Technologies — HBOX RTK · Avance de Desarrollo y Plan de Despliegue (Project Drogheda)
|
||||||
|
% Audiencia: Hutchison Ports (ICAVE / TIMSA / EIT / LCT). Seguimiento del RCA del 22-jun.
|
||||||
|
% Compilar con XeLaTeX: latexmk -xelatex -interaction=nonstopmode <file>.tex
|
||||||
|
\documentclass[10pt,aspectratio=169]{beamer}
|
||||||
|
|
||||||
|
\usetheme[progressbar=frametitle, numbering=fraction, block=fill]{metropolis}
|
||||||
|
|
||||||
|
% ---------- Paleta oficial Helgen (Guia de Identidad v1.5, 2026) ----------
|
||||||
|
\definecolor{HelgenIndigo}{HTML}{2C3C5B} % Indigo — color primario
|
||||||
|
\definecolor{HelgenCyan}{HTML}{51F3DA} % Verde cian — acento
|
||||||
|
\definecolor{HelgenTeal}{HTML}{17A08C} % derivado: cian oscurecido para TEXTO sobre blanco
|
||||||
|
\definecolor{HelgenMist}{HTML}{EFF1F5} % derivado: tinte indigo 8% para rellenos
|
||||||
|
\definecolor{HelgenAmber}{HTML}{C0392B} % rojo de alerta (umbrales/peligro)
|
||||||
|
|
||||||
|
\setbeamercolor{normal text}{fg=HelgenIndigo, bg=white}
|
||||||
|
\setbeamercolor{alerted text}{fg=HelgenTeal}
|
||||||
|
\setbeamercolor{frametitle}{bg=HelgenIndigo, fg=white}
|
||||||
|
\setbeamercolor{progress bar}{fg=HelgenCyan, bg=HelgenMist}
|
||||||
|
\setbeamercolor{title separator}{fg=HelgenCyan}
|
||||||
|
\setbeamercolor{block title}{bg=HelgenMist, fg=HelgenIndigo}
|
||||||
|
\setbeamercolor{block title alerted}{bg=HelgenIndigo, fg=white}
|
||||||
|
|
||||||
|
% ---------- Fuentes de marca + idioma ----------
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\IfFontExistsTF{League Spartan}{%
|
||||||
|
\newfontfamily\helgentitle{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\setbeamerfont{title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{frametitle}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{section title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{standout}{family=\helgentitle, series=\bfseries}
|
||||||
|
}{}
|
||||||
|
\IfFontExistsTF{MADE Evolve Sans}{\setsansfont{MADE Evolve Sans}}{}
|
||||||
|
\else
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\fi
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{array}
|
||||||
|
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{arrows.meta, positioning, shapes.misc, fit, backgrounds}
|
||||||
|
\usepackage{pgfgantt}
|
||||||
|
|
||||||
|
% ---------- Estilos TikZ ----------
|
||||||
|
\tikzset{
|
||||||
|
box/.style={rounded rectangle, draw=HelgenIndigo, fill=HelgenMist,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
hot/.style={rounded rectangle, draw=HelgenAmber, fill=HelgenMist, very thick,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
arr/.style={-{Stealth}, thick, HelgenTeal},
|
||||||
|
arrb/.style={-{Stealth}, thick, HelgenIndigo},
|
||||||
|
heat/.style={-{Stealth}, very thick, HelgenAmber}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------- Vinetas + separador ----------
|
||||||
|
\setbeamertemplate{itemize item}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.85ex}{0.85ex}}}
|
||||||
|
\setbeamertemplate{itemize subitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.6ex}{0.6ex}}}
|
||||||
|
\setbeamertemplate{itemize subsubitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.5ex}{0.5ex}}}
|
||||||
|
\newcommand{\sep}{\raisebox{0.35ex}{\rule{0.45ex}{0.45ex}}}
|
||||||
|
\newcommand{\figcap}[1]{\par\vspace{1.2mm}\centerline{\begin{minipage}{0.92\textwidth}\footnotesize\centering #1\end{minipage}}}
|
||||||
|
|
||||||
|
% ---------- Pie de pagina ----------
|
||||||
|
\setbeamertemplate{frame footer}{%
|
||||||
|
\scriptsize\color{gray}\insertshortauthor\ \sep\ \insertshorttitle\ \sep\ Confidencial — Helgen Servicios Especializados}
|
||||||
|
|
||||||
|
% ---------- Metadatos ----------
|
||||||
|
\title[Avance HBOX RTK \sep\ Hutchison Ports]{HBOX RTK — Avance de Desarrollo y Plan de Despliegue}
|
||||||
|
\subtitle{Validación térmica \sep\ Watchdog v3 \sep\ Despliegue en las 4 BUs \sep\ Seguimiento del RCA (22 jun)}
|
||||||
|
\author[Helgen Technologies]{Helgen Technologies — Ingeniería de Producto}
|
||||||
|
\date{2 de julio de 2026}
|
||||||
|
\titlegraphic{\hfill\includegraphics[height=1.05cm]{figs/logo-helgen.png}}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{frame}{Agenda}
|
||||||
|
\setbeamertemplate{section in toc}[sections numbered]
|
||||||
|
\tableofcontents[hideallsubsections]
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Estado general: los tres frentes del RCA}
|
||||||
|
|
||||||
|
\begin{frame}{Los tres frentes del RCA — dónde está cada uno hoy}
|
||||||
|
\centering\small
|
||||||
|
\setlength{\tabcolsep}{5pt}\renewcommand{\arraystretch}{1.35}
|
||||||
|
\begin{tabular}{@{}L{0.16\textwidth} L{0.33\textwidth} L{0.42\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Frente & Estado al 22 jun & \textbf{Hoy (2 jul)} \\
|
||||||
|
\midrule
|
||||||
|
Backend & Reescrito (envío asíncrono, filtro anti-salto corregido) & \alert{Desplegado en producción} y estable \\
|
||||||
|
Térmico & Hipótesis de campo abierta (faltaba soak) & \alert{Validado en cámara a 50\,°C}: el RTK opera normal; el foco es la \textbf{energía}. Solución en prueba (2 alternativas) \\
|
||||||
|
Hardware & Plan de PCB v3 & Watchdog v3 \alert{validado en protoboard}; \textbf{congelamiento del diseño de PCB hoy} \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{En una línea}
|
||||||
|
Las tres causas del RCA tienen corrección \textbf{verificada o en prueba final}, y el despliegue hacia las 4 BUs \alert{inicia la próxima semana}.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Validación térmica en cámara (50\,°C)}
|
||||||
|
|
||||||
|
\begin{frame}{Prueba en cámara de calor — protocolo y resultado}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Unidad bajo prueba:} HBOX en configuración actual — \emph{tal como se embarcó a ICAVE}, sin modificaciones.
|
||||||
|
\item \textbf{Condición:} 50\,°C de temperatura ambiente sostenida en cámara.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\centering\small
|
||||||
|
\setlength{\tabcolsep}{6pt}\renewcommand{\arraystretch}{1.3}
|
||||||
|
\begin{tabular}{@{}L{0.3\textwidth} L{0.3\textwidth} L{0.3\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Subsistema & Resultado a 50\,°C & Lectura \\
|
||||||
|
\midrule
|
||||||
|
RTK (F9P + 4G + correcciones) & \textbf{Operación normal}, sin degradación & Consistente con el rating del ZED-F9P ($-40\ldots+85$\,°C) \\
|
||||||
|
Batería de respaldo & Autonomía ${\sim}30\,\%$ de la nominal & \alert{La víctima térmica es la energía} \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Confirma el RCA}
|
||||||
|
El calor \textbf{no} tumba el posicionamiento: degrada la \textbf{cadena de energía}. Exactamente lo que el RCA señaló como eslabón débil.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Lectura de ingeniería del resultado}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Posicionamiento robusto al calor:} con la máquina encendida, el RTK entrega igual a 50\,°C que en frío.
|
||||||
|
\item \textbf{El riesgo térmico es de disponibilidad}, no de precisión: con celda caliente, el respaldo en máquina apagada se reduce a ${\sim}30\,\%$.
|
||||||
|
\item \textbf{Mitigación doble:} bajar la temperatura interior (solución térmica, siguiente sección) y \textbf{proteger la celda} — el watchdog v3 corta la carga cuando el sensor reporta celda caliente (carga calificada por temperatura).
|
||||||
|
\item \textbf{Honesto:} el interior del gabinete en campo puede exceder 50\,°C en picos; por eso el v3 integra \alert{sensores de temperatura} — mediremos el valor real en campo, ya no estimaremos.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Solución térmica — dos alternativas en prueba}
|
||||||
|
|
||||||
|
\begin{frame}{Dos alternativas en evaluación}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.56\textwidth}
|
||||||
|
\begin{block}{A — Ducto impermeable + ventilador}
|
||||||
|
\small Trayectoria de aire controlada que extrae el calor \textbf{sin comprometer el ingreso de agua} (diseño anti-ingreso validándose). Probada: funcional.
|
||||||
|
\end{block}
|
||||||
|
\begin{block}{B — Disipador de aluminio + ventilador interno}
|
||||||
|
\small Pared disipadora de aluminio con aletas al exterior; el ventilador interno fuerza la convección hacia ella y el calor \textbf{sale por conducción}, con la caja sellada. \alert{En prueba ahora.}
|
||||||
|
\end{block}
|
||||||
|
\begin{alertblock}{Descartada: placa fría a platina}
|
||||||
|
\small El gabinete instalado \textbf{no tiene platina} — no existe superficie de montaje para conducción directa.
|
||||||
|
\end{alertblock}
|
||||||
|
\column{0.4\textwidth}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth]{figs/hbox-heatsink.jpeg}
|
||||||
|
\figcap{Alternativa B: disipador de aluminio integrado al HBOX.}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Rutas de extracción de calor — comparación}
|
||||||
|
\centering
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}\centering
|
||||||
|
\textbf{\small A — Ducto impermeable}\\[2mm]
|
||||||
|
\begin{tikzpicture}[scale=0.9]
|
||||||
|
% caja
|
||||||
|
\draw[HelgenIndigo, thick, fill=HelgenMist, rounded corners=1pt] (0,0) rectangle (4.4,2.2);
|
||||||
|
% ducto superior
|
||||||
|
\draw[HelgenIndigo, thick] (-0.5,1.55) -- (0,1.55);
|
||||||
|
\draw[HelgenIndigo, thick] (-0.5,1.95) -- (0,1.95);
|
||||||
|
\draw[HelgenIndigo, thick] (4.4,1.55) -- (4.9,1.55);
|
||||||
|
\draw[HelgenIndigo, thick] (4.4,1.95) -- (4.9,1.95);
|
||||||
|
% membrana
|
||||||
|
\foreach \y in {1.58,1.66,...,1.94} \draw[HelgenTeal, thick] (0.05,\y) -- (0.3,\y);
|
||||||
|
\node[font=\tiny, text=HelgenIndigo, anchor=south] at (0.6,2.25) {membrana / laberinto};
|
||||||
|
% flujo de aire
|
||||||
|
\draw[arr] (-0.45,1.75) -- (0.7,1.75);
|
||||||
|
\draw[arr] (0.8,1.75) .. controls (2.2,1.3) .. (3.6,1.75);
|
||||||
|
\draw[arr] (3.7,1.75) -- (4.85,1.75);
|
||||||
|
\node[font=\tiny, text=HelgenTeal] at (2.2,0.95) {aire forzado (ventilador)};
|
||||||
|
% electronica
|
||||||
|
\node[box, font=\tiny] at (2.2,0.45) {electrónica HBOX};
|
||||||
|
% gotas bloqueadas
|
||||||
|
\node[font=\tiny, text=HelgenAmber] at (-0.55,2.45) {agua};
|
||||||
|
\draw[HelgenAmber, thick] (-0.75,2.2) -- (-0.35,2.3);
|
||||||
|
\draw[HelgenAmber, thick] (-0.75,2.3) -- (-0.35,2.2);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\par\vspace{1mm}
|
||||||
|
{\scriptsize Extrae aire caliente por trayectoria sellada;\\el diseño impide el paso de agua al interior.}
|
||||||
|
\column{0.5\textwidth}\centering
|
||||||
|
\textbf{\small B — Disipador + ventilador interno}\\[2mm]
|
||||||
|
\begin{tikzpicture}[scale=0.9]
|
||||||
|
% caja sellada
|
||||||
|
\draw[HelgenIndigo, thick, fill=HelgenMist, rounded corners=1pt] (0.4,0) rectangle (4.8,2.2);
|
||||||
|
% pared de aluminio
|
||||||
|
\fill[HelgenIndigo!25] (0.4,0.1) rectangle (0.75,2.1);
|
||||||
|
\draw[HelgenIndigo, thick] (0.4,0.1) rectangle (0.75,2.1);
|
||||||
|
% aletas exteriores
|
||||||
|
\foreach \y in {0.2,0.42,...,2.05} \draw[HelgenIndigo, line width=1.4pt] (0.4,\y) -- (-0.05,\y);
|
||||||
|
\node[font=\tiny, text=HelgenIndigo, anchor=south, align=center] at (0.3,2.25) {aletas al\\exterior};
|
||||||
|
% ventilador interno
|
||||||
|
\node[circle, draw=HelgenIndigo, thick, minimum size=6mm, font=\tiny] (fan) at (3.4,1.5) {fan};
|
||||||
|
\draw[arr] (fan.west) -- (1.1,1.5);
|
||||||
|
\draw[arr] (3.4,0.9) .. controls (2.2,0.6) .. (1.2,0.9);
|
||||||
|
% conduccion
|
||||||
|
\draw[heat] (0.35,1.5) -- (-0.45,1.5);
|
||||||
|
\draw[heat] (0.35,0.6) -- (-0.45,0.6);
|
||||||
|
\node[font=\tiny, text=HelgenAmber, anchor=west] at (-0.55,0.28) {calor};
|
||||||
|
% electronica
|
||||||
|
\node[box, font=\tiny] at (3.4,0.45) {electrónica};
|
||||||
|
\node[font=\tiny, text=HelgenIndigo] at (2.2,1.9) {IP67 se mantiene};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\par\vspace{1mm}
|
||||||
|
{\scriptsize Convección interna forzada hacia la pared de aluminio;\\conducción al exterior con la caja \textbf{sellada}.}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\figcap{Las \textbf{pruebas de calor concluyen hoy}; el resultado define la variante que se integra al diseño final. Ambas respetan el invariante: \alert{IP67 sin comprometer}.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Watchdog v3 — protoboard validado, PCB en cierre}
|
||||||
|
|
||||||
|
\begin{frame}{Circuito v3 validado en protoboard profesional}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Armado en \textbf{protoboard profesional} con los componentes reales del diseño: \alert{funciona perfectamente}.
|
||||||
|
\item Qué valida: conmutación del stack RTK (apagado = estado seguro), sensado de ignición a bordo (12--24\,V), respaldo por batería, medidor de carga, reset y \textbf{control de ventilador por temperatura}.
|
||||||
|
\item \textbf{Sensor de temperatura integrado} al watchdog: gobierna el ventilador, \textbf{corta la carga con celda caliente} y alimenta la telemetría.
|
||||||
|
\item Los invariantes del RCA se mantienen: \emph{nunca desaparecer, nunca ciclo infinito}; recuperación ciclando el \textbf{stack 4G}, no el GNSS.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Significado}
|
||||||
|
La electrónica que va a la PCB ya no es una apuesta: \textbf{es un circuito medido y funcionando} — la PCB es su traducción a manufactura.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Watchdog v3 — diagrama de bloques}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[node distance=4mm and 5mm]
|
||||||
|
\node[box] (vin) {24\,V gabinete\\(GX16)};
|
||||||
|
\node[box, right=of vin] (prot) {Protección\\inv. pol. + TVS};
|
||||||
|
\node[box, right=of prot] (psu) {Fuente\\24$\rightarrow$5\,V};
|
||||||
|
\node[box, right=of psu] (rail) {Riel 5\,V\\respaldado};
|
||||||
|
\node[box, right=of rail] (sw) {Load switch\\(OFF = seguro)};
|
||||||
|
\node[box, right=of sw] (stack){Stack RTK\\F9P + 4G};
|
||||||
|
\node[box, below=7mm of psu] (bat) {LTC4040 + batería\\carga calif.\ por T$^\circ$};
|
||||||
|
\node[box, below=7mm of sw] (mcu) {STM32\\watchdog};
|
||||||
|
\node[box, below=7mm of stack](temp){Sensores\\T$^\circ$ / HR};
|
||||||
|
\node[box, left=of bat] (ign) {Ignición 12--24\,V\\(acond.\ a bordo)};
|
||||||
|
\node[box, below=6mm of bat] (fan) {Ventilador\\PWM};
|
||||||
|
\draw[arrb] (vin)--(prot); \draw[arrb] (prot)--(psu); \draw[arrb] (psu)--(rail);
|
||||||
|
\draw[arrb] (rail)--(sw); \draw[arrb] (sw)--(stack);
|
||||||
|
\draw[arrb, {Stealth}-{Stealth}] (bat) -- (rail) node[midway, right, font=\tiny, text=HelgenIndigo]{respaldo};
|
||||||
|
\draw[arr] (mcu) -- (sw) node[midway, right, font=\tiny, text=HelgenIndigo]{enable};
|
||||||
|
\draw[arr] (temp) -- (mcu) node[midway, above, font=\tiny, text=HelgenIndigo]{I$^2$C};
|
||||||
|
\draw[arr] (ign.south east) to[bend right=14] node[pos=0.25, below, font=\tiny, text=HelgenIndigo]{sensado} (mcu.south west);
|
||||||
|
\draw[arr] (bat) -- (mcu) node[midway, above, font=\tiny, text=HelgenIndigo]{sensado};
|
||||||
|
\draw[arr] (mcu) |- (fan) node[near end, above, font=\tiny, text=HelgenIndigo]{ctrl};
|
||||||
|
\draw[arr] (mcu.north east) to[bend right=12] node[right=1mm, font=\tiny, text=HelgenIndigo]{UART \sep\ diagnóstico} (stack.south west);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
\figcap{Todo lo que era módulos y cableado a mano queda \textbf{a bordo de la PCB}: protección, ignición, respaldo, sensado y control térmico.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Diagnóstico completo por unidad — en el mismo flujo GPS}
|
||||||
|
\begin{itemize}
|
||||||
|
\item El watchdog \textbf{inserta un mensaje de diagnóstico en el flujo de datos GPS}: temperatura, batería, tensiones, ignición y causa de recuperación viajan con la posición.
|
||||||
|
\item Requirió \alert{re-arquitectura del flujo de datos} del watchdog — \textbf{en prueba en este momento}.
|
||||||
|
\item Cierra la lección del RCA: la salud de la unidad deja de inferirse de consolas no confiables — \textbf{la reporta la propia unidad}.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[node distance=4mm and 6mm]
|
||||||
|
\node[box] (sens) {Sensores\\T$^\circ$ \sep\ V\textsubscript{bat} \sep\ ign.};
|
||||||
|
\node[box, right=of sens] (mcu) {Watchdog\\STM32};
|
||||||
|
\node[box, right=of mcu] (gps) {Flujo GPS/NMEA\\+ mensaje de diagnóstico};
|
||||||
|
\node[box, right=of gps] (fourg) {Módem\\4G};
|
||||||
|
\node[box, below=6mm of fourg] (srv) {Servidor\\Helgen};
|
||||||
|
\node[box, left=of srv] (plat) {Plataforma: diagnóstico\\completo por unidad};
|
||||||
|
\draw[arrb] (sens)--(mcu);
|
||||||
|
\draw[arr] (mcu)--(gps) node[midway, above, font=\tiny, text=HelgenIndigo]{inserta};
|
||||||
|
\draw[arrb] (gps)--(fourg);
|
||||||
|
\draw[arrb] (fourg)--(srv);
|
||||||
|
\draw[arrb] (srv)--(plat);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
\figcap{Misma trayectoria que la posición: \alert{si llega la posición, llega el diagnóstico} — sin canales paralelos que mantener.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{PCB de producción — estado y cierre}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Integrar el diagnóstico y el sensado térmico exigió un \textbf{re-acomodo completo de los circuitos} en la placa.
|
||||||
|
\item En curso sobre el diseño: \textbf{verificación EMC} y \textbf{validación CAD/CAE} del nuevo acomodo.
|
||||||
|
\item Pruebas de calor del watchdog (con su sensor de temperatura) \textbf{concluyen hoy}.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Hito de hoy}
|
||||||
|
\textbf{Congelamiento del diseño de PCB} esperado al cierre del día, tras concluir las pruebas de calor. Las unidades del martes viajan con esta PCB impresa (diseño final).
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Plan de despliegue — julio}
|
||||||
|
|
||||||
|
\begin{frame}{Cronograma — de la PCB congelada a las 4 BUs}
|
||||||
|
\centering
|
||||||
|
\resizebox{\textwidth}{!}{%
|
||||||
|
\begin{ganttchart}[
|
||||||
|
time slot format=isodate,
|
||||||
|
x unit=.5cm, y unit title=.6cm, y unit chart=.56cm,
|
||||||
|
canvas/.append style={draw=HelgenMist},
|
||||||
|
title/.append style={fill=HelgenIndigo, draw=HelgenIndigo},
|
||||||
|
title label font=\scriptsize\color{white},
|
||||||
|
vgrid={{draw=HelgenMist, line width=.3pt}},
|
||||||
|
bar/.append style={fill=HelgenIndigo, draw=none},
|
||||||
|
bar height=.55,
|
||||||
|
bar label font=\scriptsize\color{HelgenIndigo},
|
||||||
|
milestone/.append style={fill=HelgenCyan, draw=HelgenIndigo, thick},
|
||||||
|
milestone label font=\scriptsize\bfseries\color{HelgenIndigo},
|
||||||
|
link/.style={-{Stealth}, HelgenTeal, thick}
|
||||||
|
]{2026-07-02}{2026-07-24}
|
||||||
|
\gantttitle{Julio 2026}{23} \\
|
||||||
|
\gantttitlelist{2,...,24}{1} \\
|
||||||
|
\ganttmilestone[name=frz]{Congelamiento diseño PCB}{2026-07-02} \\
|
||||||
|
\ganttbar{Pruebas de laboratorio (térmico \sep\ EMC \sep\ diagnóstico)}{2026-07-02}{2026-07-10} \\
|
||||||
|
\ganttbar{Instalación de gabinetes — LCT \sep\ TIMSA \sep\ EIT}{2026-07-06}{2026-07-10} \\
|
||||||
|
\ganttmilestone{Envío de unidades a ICAVE (PCB impresa)}{2026-07-07} \\
|
||||||
|
\ganttmilestone[name=inst]{Instalación completa}{2026-07-10} \\
|
||||||
|
\ganttbar[name=comp]{Comparativa de disponibilidad (1 semana)}{2026-07-10}{2026-07-17} \\
|
||||||
|
\ganttmilestone[name=prod]{Liberación de PCB a producción}{2026-07-10} \\
|
||||||
|
\ganttbar[name=fab]{Fabricación de PCBs (5 días)}{2026-07-13}{2026-07-17} \\
|
||||||
|
\ganttbar[name=bus]{Envío de unidades a todas las BUs}{2026-07-20}{2026-07-24}
|
||||||
|
\ganttlink{prod}{fab}
|
||||||
|
\ganttlink{fab}{bus}
|
||||||
|
\ganttlink{comp}{bus}
|
||||||
|
\end{ganttchart}}
|
||||||
|
\vfill
|
||||||
|
\figcap{Dos rutas en paralelo: \textbf{campo} (instalación + comparativa) y \textbf{fábrica} (producción de PCBs). Convergen en el despliegue a todas las BUs desde \alert{mediados de julio}.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Hitos y criterios de éxito}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.46\textwidth}
|
||||||
|
\begin{block}{Hitos comprometidos}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Hoy 2 jul} — freeze del diseño de PCB
|
||||||
|
\item \textbf{Mar 7 jul} — unidades nuevas a ICAVE
|
||||||
|
\item \textbf{Vie 10 jul} — instalación completa; PCB a producción
|
||||||
|
\item \textbf{Vie 17 jul} — fin de comparativa; PCBs en sitio
|
||||||
|
\item \textbf{Med.\ jul} — envío a todas las BUs
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{block}{Cómo mediremos la comparativa (1 semana)}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Disponibilidad} de unidades nuevas vs.\ anteriores en plataforma
|
||||||
|
\item \textbf{Calidad de fix RTK} sostenida en operación
|
||||||
|
\item \textbf{Telemetría térmica} continua (primer dato real de campo)
|
||||||
|
\item \textbf{Cero} bloqueos permanentes por servidor
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\footnotesize La comparativa entrega \alert{evidencia medible} — no una apreciación — antes del despliegue masivo.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Supuestos y riesgos — sin adornos}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Freeze de hoy} condicionado al cierre de las pruebas de calor: si se desplaza, hay colchón hasta el envío del martes.
|
||||||
|
\item \textbf{Accesos a LCT / TIMSA / EIT} la próxima semana: en coordinación con cada BU; es la dependencia externa principal.
|
||||||
|
\item \textbf{Fabricación de PCBs (5 días)} es la ruta crítica del despliegue de mediados de julio; seguimiento diario.
|
||||||
|
\item El resultado de la \textbf{comparativa de disponibilidad} decide ajustes finales \emph{antes} de escalar a las 4 BUs — escalamos con evidencia, no con calendario.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\begin{frame}[standout]
|
||||||
|
Validado en cámara.\\
|
||||||
|
Watchdog v3 funcionando.\\[2mm]
|
||||||
|
{\normalsize Instalación: \textbf{10 jul} \sep\ Comparativa: \textbf{17 jul} \sep\ Todas las BUs: \textbf{med.\ julio}}
|
||||||
|
\vfill
|
||||||
|
{\footnotesize Gracias \sep\ Preguntas}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
@ -0,0 +1,396 @@
|
|||||||
|
% Helgen Technologies — HBOX RTK · Avance de Desarrollo y Plan de Despliegue (Project Drogheda)
|
||||||
|
% Audiencia: Hutchison Ports (ICAVE / TIMSA / EIT / LCT). Seguimiento del RCA del 22-jun.
|
||||||
|
% Compilar: pdflatex -interaction=nonstopmode (2 pasadas); fuentes de marca solo con XeLaTeX.
|
||||||
|
% v1.1 (2026-07-02): estado real de PCB (cierre de esquemático de producción + arranque de layout HOY;
|
||||||
|
% campaña de protoboard de 3 tarjetas EN CURSO — no "validación cerrada" ni "freeze de PCB");
|
||||||
|
% unidades del martes viajan con el circuito v3 en protoboard (la v1.0 decía "PCB impresa", lo que
|
||||||
|
% contradecía su propio Gantt); + sensado NTC de punto caliente, sentencia \$PHLG y puente
|
||||||
|
% normalmente cerrado de correcciones (fail-safe). v1.0 se conserva intacta.
|
||||||
|
\documentclass[10pt,aspectratio=169]{beamer}
|
||||||
|
|
||||||
|
\usetheme[progressbar=frametitle, numbering=fraction, block=fill]{metropolis}
|
||||||
|
|
||||||
|
% ---------- Paleta oficial Helgen (Guia de Identidad v1.5, 2026) ----------
|
||||||
|
\definecolor{HelgenIndigo}{HTML}{2C3C5B} % Indigo — color primario
|
||||||
|
\definecolor{HelgenCyan}{HTML}{51F3DA} % Verde cian — acento
|
||||||
|
\definecolor{HelgenTeal}{HTML}{17A08C} % derivado: cian oscurecido para TEXTO sobre blanco
|
||||||
|
\definecolor{HelgenMist}{HTML}{EFF1F5} % derivado: tinte indigo 8% para rellenos
|
||||||
|
\definecolor{HelgenAmber}{HTML}{C0392B} % rojo de alerta (umbrales/peligro)
|
||||||
|
|
||||||
|
\setbeamercolor{normal text}{fg=HelgenIndigo, bg=white}
|
||||||
|
\setbeamercolor{alerted text}{fg=HelgenTeal}
|
||||||
|
\setbeamercolor{frametitle}{bg=HelgenIndigo, fg=white}
|
||||||
|
\setbeamercolor{progress bar}{fg=HelgenCyan, bg=HelgenMist}
|
||||||
|
\setbeamercolor{title separator}{fg=HelgenCyan}
|
||||||
|
\setbeamercolor{block title}{bg=HelgenMist, fg=HelgenIndigo}
|
||||||
|
\setbeamercolor{block title alerted}{bg=HelgenIndigo, fg=white}
|
||||||
|
|
||||||
|
% ---------- Fuentes de marca + idioma ----------
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\IfFontExistsTF{League Spartan}{%
|
||||||
|
\newfontfamily\helgentitle{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\setbeamerfont{title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{frametitle}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{section title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{standout}{family=\helgentitle, series=\bfseries}
|
||||||
|
}{}
|
||||||
|
\IfFontExistsTF{MADE Evolve Sans}{\setsansfont{MADE Evolve Sans}}{}
|
||||||
|
\else
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\fi
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{array}
|
||||||
|
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{arrows.meta, positioning, shapes.misc, fit, backgrounds}
|
||||||
|
\usepackage{pgfgantt}
|
||||||
|
|
||||||
|
% ---------- Estilos TikZ ----------
|
||||||
|
\tikzset{
|
||||||
|
box/.style={rounded rectangle, draw=HelgenIndigo, fill=HelgenMist,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
hot/.style={rounded rectangle, draw=HelgenAmber, fill=HelgenMist, very thick,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
arr/.style={-{Stealth}, thick, HelgenTeal},
|
||||||
|
arrb/.style={-{Stealth}, thick, HelgenIndigo},
|
||||||
|
heat/.style={-{Stealth}, very thick, HelgenAmber}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------- Vinetas + separador ----------
|
||||||
|
\setbeamertemplate{itemize item}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.85ex}{0.85ex}}}
|
||||||
|
\setbeamertemplate{itemize subitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.6ex}{0.6ex}}}
|
||||||
|
\setbeamertemplate{itemize subsubitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.5ex}{0.5ex}}}
|
||||||
|
\newcommand{\sep}{\raisebox{0.35ex}{\rule{0.45ex}{0.45ex}}}
|
||||||
|
\newcommand{\figcap}[1]{\par\vspace{1.2mm}\centerline{\begin{minipage}{0.92\textwidth}\footnotesize\centering #1\end{minipage}}}
|
||||||
|
|
||||||
|
% ---------- Pie de pagina ----------
|
||||||
|
\setbeamertemplate{frame footer}{%
|
||||||
|
\scriptsize\color{gray}\insertshortauthor\ \sep\ \insertshorttitle\ \sep\ Confidencial — Helgen Servicios Especializados}
|
||||||
|
|
||||||
|
% ---------- Metadatos ----------
|
||||||
|
\title[Avance HBOX RTK \sep\ Hutchison Ports]{HBOX RTK — Avance de Desarrollo y Plan de Despliegue}
|
||||||
|
\subtitle{Validación térmica \sep\ Watchdog v3 \sep\ Despliegue en las 4 BUs \sep\ Seguimiento del RCA (22 jun)}
|
||||||
|
\author[Helgen Technologies]{Helgen Technologies — Ingeniería de Producto}
|
||||||
|
\date{2 de julio de 2026}
|
||||||
|
\titlegraphic{\hfill\includegraphics[height=1.05cm]{figs/logo-helgen.png}}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{frame}{Agenda}
|
||||||
|
\setbeamertemplate{section in toc}[sections numbered]
|
||||||
|
\tableofcontents[hideallsubsections]
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Estado general: los tres frentes del RCA}
|
||||||
|
|
||||||
|
\begin{frame}{Los tres frentes del RCA — dónde está cada uno hoy}
|
||||||
|
\centering\small
|
||||||
|
\setlength{\tabcolsep}{5pt}\renewcommand{\arraystretch}{1.35}
|
||||||
|
\begin{tabular}{@{}L{0.16\textwidth} L{0.33\textwidth} L{0.42\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Frente & Estado al 22 jun & \textbf{Hoy (2 jul)} \\
|
||||||
|
\midrule
|
||||||
|
Backend & Reescrito (envío asíncrono, filtro anti-salto corregido) & \alert{Desplegado en producción} y estable \\
|
||||||
|
Térmico & Hipótesis de campo abierta (faltaba soak) & \alert{Validado en cámara a 50\,°C}: el RTK opera normal; el foco es la \textbf{energía}. Solución en prueba (2 alternativas) \\
|
||||||
|
Hardware & Plan de PCB v3 & Watchdog v3 \alert{operando en protoboard} (banco en curso); \textbf{hoy: cierre de esquemático e inicio de layout de PCB} \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{En una línea}
|
||||||
|
Las tres causas del RCA tienen corrección \textbf{verificada o en prueba}, y el despliegue hacia las 4 BUs \alert{inicia la próxima semana}.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Validación térmica en cámara (50\,°C)}
|
||||||
|
|
||||||
|
\begin{frame}{Prueba en cámara de calor — protocolo y resultado}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Unidad bajo prueba:} HBOX en configuración actual — \emph{tal como se embarcó a ICAVE}, sin modificaciones.
|
||||||
|
\item \textbf{Condición:} 50\,°C de temperatura ambiente sostenida en cámara.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\centering\small
|
||||||
|
\setlength{\tabcolsep}{6pt}\renewcommand{\arraystretch}{1.3}
|
||||||
|
\begin{tabular}{@{}L{0.3\textwidth} L{0.3\textwidth} L{0.3\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Subsistema & Resultado a 50\,°C & Lectura \\
|
||||||
|
\midrule
|
||||||
|
RTK (F9P + 4G + correcciones) & \textbf{Operación normal}, sin degradación & Consistente con el rating del ZED-F9P ($-40\ldots+85$\,°C) \\
|
||||||
|
Batería de respaldo & Autonomía ${\sim}30\,\%$ de la nominal & \alert{La víctima térmica es la energía} \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Confirma el RCA}
|
||||||
|
El calor \textbf{no} tumba el posicionamiento: degrada la \textbf{cadena de energía}. Exactamente lo que el RCA señaló como eslabón débil.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Lectura de ingeniería del resultado}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Posicionamiento robusto al calor:} con la máquina encendida, el RTK entrega igual a 50\,°C que en frío.
|
||||||
|
\item \textbf{El riesgo térmico es de disponibilidad}, no de precisión: con celda caliente, el respaldo en máquina apagada se reduce a ${\sim}30\,\%$.
|
||||||
|
\item \textbf{Mitigación doble:} bajar la temperatura interior (solución térmica, siguiente sección) y \textbf{proteger la celda} — el watchdog v3 corta la carga cuando el sensor reporta celda caliente (carga calificada por temperatura).
|
||||||
|
\item \textbf{Honesto:} el interior del gabinete en campo puede exceder 50\,°C en picos; por eso el v3 integra \alert{sensores de temperatura} — mediremos el valor real en campo, ya no estimaremos.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Solución térmica — dos alternativas en prueba}
|
||||||
|
|
||||||
|
\begin{frame}{Dos alternativas en evaluación}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.56\textwidth}
|
||||||
|
\begin{block}{A — Ducto impermeable + ventilador}
|
||||||
|
\small Trayectoria de aire controlada que extrae el calor \textbf{sin comprometer el ingreso de agua} (diseño anti-ingreso validándose). Probada: funcional.
|
||||||
|
\end{block}
|
||||||
|
\begin{block}{B — Disipador de aluminio + ventilador interno}
|
||||||
|
\small Pared disipadora de aluminio con aletas al exterior; el ventilador interno fuerza la convección hacia ella y el calor \textbf{sale por conducción}, con la caja sellada. \alert{En prueba ahora.}
|
||||||
|
\end{block}
|
||||||
|
\begin{alertblock}{Descartada: placa fría a platina}
|
||||||
|
\small El gabinete instalado \textbf{no tiene platina} — no existe superficie de montaje para conducción directa.
|
||||||
|
\end{alertblock}
|
||||||
|
\column{0.4\textwidth}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth]{figs/hbox-heatsink.jpeg}
|
||||||
|
\figcap{Alternativa B: disipador de aluminio integrado al HBOX.}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Rutas de extracción de calor — comparación}
|
||||||
|
\centering
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}\centering
|
||||||
|
\textbf{\small A — Ducto impermeable}\\[2mm]
|
||||||
|
\begin{tikzpicture}[scale=0.9]
|
||||||
|
% caja
|
||||||
|
\draw[HelgenIndigo, thick, fill=HelgenMist, rounded corners=1pt] (0,0) rectangle (4.4,2.2);
|
||||||
|
% ducto superior
|
||||||
|
\draw[HelgenIndigo, thick] (-0.5,1.55) -- (0,1.55);
|
||||||
|
\draw[HelgenIndigo, thick] (-0.5,1.95) -- (0,1.95);
|
||||||
|
\draw[HelgenIndigo, thick] (4.4,1.55) -- (4.9,1.55);
|
||||||
|
\draw[HelgenIndigo, thick] (4.4,1.95) -- (4.9,1.95);
|
||||||
|
% membrana
|
||||||
|
\foreach \y in {1.58,1.66,...,1.94} \draw[HelgenTeal, thick] (0.05,\y) -- (0.3,\y);
|
||||||
|
\node[font=\tiny, text=HelgenIndigo, anchor=south] at (0.6,2.25) {membrana / laberinto};
|
||||||
|
% flujo de aire
|
||||||
|
\draw[arr] (-0.45,1.75) -- (0.7,1.75);
|
||||||
|
\draw[arr] (0.8,1.75) .. controls (2.2,1.3) .. (3.6,1.75);
|
||||||
|
\draw[arr] (3.7,1.75) -- (4.85,1.75);
|
||||||
|
\node[font=\tiny, text=HelgenTeal] at (2.2,0.95) {aire forzado (ventilador)};
|
||||||
|
% electronica
|
||||||
|
\node[box, font=\tiny] at (2.2,0.45) {electrónica HBOX};
|
||||||
|
% gotas bloqueadas
|
||||||
|
\node[font=\tiny, text=HelgenAmber] at (-0.55,2.45) {agua};
|
||||||
|
\draw[HelgenAmber, thick] (-0.75,2.2) -- (-0.35,2.3);
|
||||||
|
\draw[HelgenAmber, thick] (-0.75,2.3) -- (-0.35,2.2);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\par\vspace{1mm}
|
||||||
|
{\scriptsize Extrae aire caliente por trayectoria sellada;\\el diseño impide el paso de agua al interior.}
|
||||||
|
\column{0.5\textwidth}\centering
|
||||||
|
\textbf{\small B — Disipador + ventilador interno}\\[2mm]
|
||||||
|
\begin{tikzpicture}[scale=0.9]
|
||||||
|
% caja sellada
|
||||||
|
\draw[HelgenIndigo, thick, fill=HelgenMist, rounded corners=1pt] (0.4,0) rectangle (4.8,2.2);
|
||||||
|
% pared de aluminio
|
||||||
|
\fill[HelgenIndigo!25] (0.4,0.1) rectangle (0.75,2.1);
|
||||||
|
\draw[HelgenIndigo, thick] (0.4,0.1) rectangle (0.75,2.1);
|
||||||
|
% aletas exteriores
|
||||||
|
\foreach \y in {0.2,0.42,...,2.05} \draw[HelgenIndigo, line width=1.4pt] (0.4,\y) -- (-0.05,\y);
|
||||||
|
\node[font=\tiny, text=HelgenIndigo, anchor=south, align=center] at (0.3,2.25) {aletas al\\exterior};
|
||||||
|
% ventilador interno
|
||||||
|
\node[circle, draw=HelgenIndigo, thick, minimum size=6mm, font=\tiny] (fan) at (3.4,1.5) {fan};
|
||||||
|
\draw[arr] (fan.west) -- (1.1,1.5);
|
||||||
|
\draw[arr] (3.4,0.9) .. controls (2.2,0.6) .. (1.2,0.9);
|
||||||
|
% conduccion
|
||||||
|
\draw[heat] (0.35,1.5) -- (-0.45,1.5);
|
||||||
|
\draw[heat] (0.35,0.6) -- (-0.45,0.6);
|
||||||
|
\node[font=\tiny, text=HelgenAmber, anchor=west] at (-0.55,0.28) {calor};
|
||||||
|
% electronica
|
||||||
|
\node[box, font=\tiny] at (3.4,0.45) {electrónica};
|
||||||
|
\node[font=\tiny, text=HelgenIndigo] at (2.2,1.9) {IP67 se mantiene};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\par\vspace{1mm}
|
||||||
|
{\scriptsize Convección interna forzada hacia la pared de aluminio;\\conducción al exterior con la caja \textbf{sellada}.}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\figcap{Las \textbf{pruebas de calor concluyen hoy}; el resultado define la variante que se integra al diseño final. Ambas respetan el invariante: \alert{IP67 sin comprometer}.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Watchdog v3 — protoboard operando, PCB en arranque}
|
||||||
|
|
||||||
|
\begin{frame}{Circuito v3 operando en protoboard profesional}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Armado en \textbf{protoboard profesional} (3 tarjetas) con los componentes del diseño —equivalentes de banco en los bloques de carga—: \alert{opera correctamente}; la campaña de banco \textbf{sigue en curso}.
|
||||||
|
\item Qué se valida: conmutación del stack RTK (apagado = estado seguro), sensado de ignición a bordo (12--24\,V), respaldo por batería, medidor de carga, reset y \textbf{control de ventilador por temperatura}.
|
||||||
|
\item \textbf{Sensado de temperatura integrado} (sensores digitales + NTC de punto caliente): gobierna el ventilador, \textbf{corta la carga con celda caliente} y alimenta la telemetría; una falla de ventilador \alert{se detecta por temperatura}.
|
||||||
|
\item Los invariantes del RCA se mantienen: \emph{nunca desaparecer, nunca ciclo infinito}; recuperación ciclando el \textbf{stack 4G}, no el GNSS.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Significado}
|
||||||
|
La electrónica que va a la PCB ya no es una apuesta: \textbf{es un circuito medido y funcionando en banco} — la PCB es su traducción a manufactura.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Watchdog v3 — diagrama de bloques}
|
||||||
|
\centering
|
||||||
|
\resizebox{\textwidth}{!}{%
|
||||||
|
\begin{tikzpicture}[node distance=4mm and 5mm]
|
||||||
|
\node[box] (vin) {24\,V gabinete\\(GX16)};
|
||||||
|
\node[box, right=of vin] (prot) {Protección\\inv. pol. + TVS};
|
||||||
|
\node[box, right=of prot] (psu) {Fuente\\24$\rightarrow$5\,V};
|
||||||
|
\node[box, right=of psu] (rail) {Riel 5\,V\\respaldado};
|
||||||
|
\node[box, right=of rail] (sw) {Load switch\\(OFF = seguro)};
|
||||||
|
\node[box, right=of sw] (stack){Stack RTK\\F9P + 4G};
|
||||||
|
\node[box, below=7mm of psu] (bat) {LTC4040 + batería\\carga calif.\ por T$^\circ$};
|
||||||
|
\node[box, below=7mm of sw] (mcu) {STM32\\watchdog};
|
||||||
|
\node[box, below=7mm of stack](temp){Sensores\\T$^\circ$/HR + NTC};
|
||||||
|
\node[box, left=of bat] (ign) {Ignición 12--24\,V\\(acond.\ a bordo)};
|
||||||
|
\node[box, below=6mm of bat] (fan) {Ventilador\\PWM};
|
||||||
|
\draw[arrb] (vin)--(prot); \draw[arrb] (prot)--(psu); \draw[arrb] (psu)--(rail);
|
||||||
|
\draw[arrb] (rail)--(sw); \draw[arrb] (sw)--(stack);
|
||||||
|
\draw[arrb, {Stealth}-{Stealth}] (bat) -- (rail) node[midway, right, font=\tiny, text=HelgenIndigo]{respaldo};
|
||||||
|
\draw[arr] (mcu) -- (sw) node[midway, right, font=\tiny, text=HelgenIndigo]{enable};
|
||||||
|
\draw[arr] (temp) -- (mcu) node[midway, above, font=\tiny, text=HelgenIndigo]{I$^2$C + ADC};
|
||||||
|
\draw[arr] (ign.south east) to[bend right=14] node[pos=0.25, below, font=\tiny, text=HelgenIndigo]{sensado} (mcu.south west);
|
||||||
|
\draw[arr] (bat) -- (mcu) node[midway, above, font=\tiny, text=HelgenIndigo]{sensado};
|
||||||
|
\draw[arr] (mcu) |- (fan) node[near end, above, font=\tiny, text=HelgenIndigo]{ctrl};
|
||||||
|
\draw[arr] (mcu.north east) to[bend right=12] node[right=1mm, font=\tiny, text=HelgenIndigo]{UART \sep\ diagnóstico} (stack.south west);
|
||||||
|
\end{tikzpicture}}
|
||||||
|
\vfill
|
||||||
|
\figcap{Todo lo que era módulos y cableado a mano queda \textbf{a bordo de la PCB}: protección, ignición, respaldo, sensado y control térmico.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Diagnóstico completo por unidad — en el mismo flujo GPS}
|
||||||
|
\begin{itemize}\small
|
||||||
|
\item El watchdog \textbf{inserta un mensaje de diagnóstico en el flujo de datos GPS} (sentencia propia \texttt{\$PHLG}): temperatura, batería, tensiones, ignición y causa de recuperación viajan con la posición.
|
||||||
|
\item Requirió \alert{re-arquitectura del flujo de datos} del watchdog — \textbf{en prueba en este momento}.
|
||||||
|
\item \textbf{A prueba de fallas:} en la PCB, el paso de correcciones al receptor queda en un \alert{puente normalmente cerrado} — aun con el watchdog fuera de servicio, \textbf{las correcciones no se interrumpen}.
|
||||||
|
\item Cierra la lección del RCA: la salud de la unidad deja de inferirse de consolas no confiables — \textbf{la reporta la propia unidad}.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[node distance=4mm and 6mm]
|
||||||
|
\node[box] (sens) {Sensores\\T$^\circ$ \sep\ V\textsubscript{bat} \sep\ ign.};
|
||||||
|
\node[box, right=of sens] (mcu) {Watchdog\\STM32};
|
||||||
|
\node[box, right=of mcu] (gps) {Flujo GPS/NMEA\\+ mensaje de diagnóstico};
|
||||||
|
\node[box, right=of gps] (fourg) {Módem\\4G};
|
||||||
|
\node[box, below=6mm of fourg] (srv) {Servidor\\Helgen};
|
||||||
|
\node[box, left=of srv] (plat) {Plataforma: diagnóstico\\completo por unidad};
|
||||||
|
\draw[arrb] (sens)--(mcu);
|
||||||
|
\draw[arr] (mcu)--(gps) node[midway, above, font=\tiny, text=HelgenIndigo]{inserta};
|
||||||
|
\draw[arrb] (gps)--(fourg);
|
||||||
|
\draw[arrb] (fourg)--(srv);
|
||||||
|
\draw[arrb] (srv)--(plat);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
\figcap{Misma trayectoria que la posición: \alert{si llega la posición, llega el diagnóstico} — sin canales paralelos que mantener.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{PCB de producción — estado y próximos pasos}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Integrar el diagnóstico y el sensado térmico exigió un \textbf{re-acomodo completo de los circuitos} en la placa.
|
||||||
|
\item En curso sobre el diseño: \textbf{verificación EMC} y \textbf{validación CAD/CAE} del nuevo acomodo; los esquemáticos ya pasan la verificación eléctrica con \alert{cero errores}.
|
||||||
|
\item Pruebas de calor del watchdog (con su sensor de temperatura) \textbf{concluyen hoy}.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Próximos pasos — arrancan hoy}
|
||||||
|
\textbf{Cierre del esquemático de producción} (bloque de batería con carga calificada por temperatura) e \textbf{inicio del trazado (\emph{layout}) de la PCB}; en paralelo continúa la \textbf{campaña de banco} sobre las 3 tarjetas protoboard. Las unidades del martes viajan con el \textbf{circuito v3 en protoboard}; la PCB sigue la ruta de fabricación del cronograma.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Plan de despliegue — julio}
|
||||||
|
|
||||||
|
\begin{frame}{Cronograma — del arranque del layout a las 4 BUs}
|
||||||
|
\centering
|
||||||
|
\resizebox{\textwidth}{!}{%
|
||||||
|
\begin{ganttchart}[
|
||||||
|
time slot format=isodate,
|
||||||
|
x unit=.5cm, y unit title=.6cm, y unit chart=.56cm,
|
||||||
|
canvas/.append style={draw=HelgenMist},
|
||||||
|
title/.append style={fill=HelgenIndigo, draw=HelgenIndigo},
|
||||||
|
title label font=\scriptsize\color{white},
|
||||||
|
vgrid={{draw=HelgenMist, line width=.3pt}},
|
||||||
|
bar/.append style={fill=HelgenIndigo, draw=none},
|
||||||
|
bar height=.55,
|
||||||
|
bar label font=\scriptsize\color{HelgenIndigo},
|
||||||
|
milestone/.append style={fill=HelgenCyan, draw=HelgenIndigo, thick},
|
||||||
|
milestone label font=\scriptsize\bfseries\color{HelgenIndigo},
|
||||||
|
link/.style={-{Stealth}, HelgenTeal, thick}
|
||||||
|
]{2026-07-02}{2026-07-24}
|
||||||
|
\gantttitle{Julio 2026}{23} \\
|
||||||
|
\gantttitlelist{2,...,24}{1} \\
|
||||||
|
\ganttmilestone[name=frz]{Cierre esquemático \sep\ inicio layout PCB}{2026-07-02} \\
|
||||||
|
\ganttbar[name=lay]{Trazado (layout) de la PCB}{2026-07-02}{2026-07-09} \\
|
||||||
|
\ganttbar{Pruebas de laboratorio (térmico \sep\ EMC \sep\ diagnóstico)}{2026-07-02}{2026-07-10} \\
|
||||||
|
\ganttbar{Instalación de gabinetes — LCT \sep\ TIMSA \sep\ EIT}{2026-07-06}{2026-07-10} \\
|
||||||
|
\ganttmilestone{Envío de unidades a ICAVE (circuito v3)}{2026-07-07} \\
|
||||||
|
\ganttmilestone[name=inst]{Instalación completa}{2026-07-10} \\
|
||||||
|
\ganttbar[name=comp]{Comparativa de disponibilidad (1 semana)}{2026-07-10}{2026-07-17} \\
|
||||||
|
\ganttmilestone[name=prod]{Liberación de PCB a producción}{2026-07-10} \\
|
||||||
|
\ganttbar[name=fab]{Fabricación de PCBs (5 días)}{2026-07-13}{2026-07-17} \\
|
||||||
|
\ganttbar[name=bus]{Envío de unidades a todas las BUs}{2026-07-20}{2026-07-24}
|
||||||
|
\ganttlink{lay}{prod}
|
||||||
|
\ganttlink{prod}{fab}
|
||||||
|
\ganttlink{fab}{bus}
|
||||||
|
\ganttlink{comp}{bus}
|
||||||
|
\end{ganttchart}}
|
||||||
|
\vfill
|
||||||
|
\figcap{Dos rutas en paralelo: \textbf{campo} (instalación + comparativa) y \textbf{fábrica} (layout + producción de PCBs). Convergen en el despliegue a todas las BUs desde \alert{mediados de julio}.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Hitos y criterios de éxito}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.46\textwidth}
|
||||||
|
\begin{block}{Hitos comprometidos}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Hoy 2 jul} — cierre de esquemático; inicia el layout de PCB
|
||||||
|
\item \textbf{Mar 7 jul} — unidades nuevas a ICAVE
|
||||||
|
\item \textbf{Vie 10 jul} — instalación completa; PCB a producción
|
||||||
|
\item \textbf{Vie 17 jul} — fin de comparativa; PCBs en sitio
|
||||||
|
\item \textbf{Med.\ jul} — envío a todas las BUs
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{block}{Cómo mediremos la comparativa (1 semana)}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Disponibilidad} de unidades nuevas vs.\ anteriores en plataforma
|
||||||
|
\item \textbf{Calidad de fix RTK} sostenida en operación
|
||||||
|
\item \textbf{Telemetría térmica} continua (primer dato real de campo)
|
||||||
|
\item \textbf{Cero} bloqueos permanentes por servidor
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\footnotesize La comparativa entrega \alert{evidencia medible} — no una apreciación — antes del despliegue masivo.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Supuestos y riesgos — sin adornos}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Cierre de esquemático y arranque de layout (hoy)} condicionados al cierre de las pruebas de calor: si se desplazan, hay colchón hasta la liberación de la PCB a producción (10 jul); el envío del martes (circuito v3 en protoboard) \textbf{no depende de la PCB}.
|
||||||
|
\item \textbf{Accesos a LCT / TIMSA / EIT} la próxima semana: en coordinación con cada BU; es la dependencia externa principal.
|
||||||
|
\item \textbf{Fabricación de PCBs (5 días)} es la ruta crítica del despliegue de mediados de julio; seguimiento diario.
|
||||||
|
\item El resultado de la \textbf{comparativa de disponibilidad} decide ajustes finales \emph{antes} de escalar a las 4 BUs — escalamos con evidencia, no con calendario.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\begin{frame}[standout]
|
||||||
|
Térmica validada en cámara.\\
|
||||||
|
Watchdog v3 operando — PCB en trazado.\\[2mm]
|
||||||
|
{\normalsize Instalación: \textbf{10 jul} \sep\ Comparativa: \textbf{17 jul} \sep\ Todas las BUs: \textbf{med.\ julio}}
|
||||||
|
\vfill
|
||||||
|
{\footnotesize Gracias \sep\ Preguntas}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 138 KiB |
@ -1 +0,0 @@
|
|||||||
,focused-serene-brahmagupta,claude,24.06.2026 21:09,file:///sessions/focused-serene-brahmagupta/.config/libreoffice/4;
|
|
||||||
@ -1 +0,0 @@
|
|||||||
,focused-serene-brahmagupta,claude,24.06.2026 21:03,file:///sessions/focused-serene-brahmagupta/.config/libreoffice/4;
|
|
||||||
@ -86,10 +86,62 @@ savings at 24 V — sourcing decision lives here in `09_`.
|
|||||||
| SIM | micro-SIM buried → **front-panel SIM or MFF2 eSIM** | maintainability | hardware-brief §6.2 |
|
| SIM | micro-SIM buried → **front-panel SIM or MFF2 eSIM** | maintainability | hardware-brief §6.2 |
|
||||||
| Thermal | **v3.0: waterproof duct + Blackpill smart fan** (active managed) + conduct to plate / sunshade | a *ducted* fan removes heat without breaking IP67 | hardware-brief §2b, RCA |
|
| Thermal | **v3.0: waterproof duct + Blackpill smart fan** (active managed) + conduct to plate / sunshade | a *ducted* fan removes heat without breaking IP67 | hardware-brief §2b, RCA |
|
||||||
|
|
||||||
|
## 5. Watchdog PCB v3 — Block B/E/H/I additions (2026-07-02)
|
||||||
|
|
||||||
|
> Production parts added by the 2026-07-02 capture session — **LTC4040 sized to the ~12 Ah
|
||||||
|
> 1S4P pack**; Blocks per [[03-Architecture-Hardware/watchdog-production-schematic-delta|watchdog-production-schematic-delta.md]]
|
||||||
|
> §4 (B) / §5 (E) / §5b (H) / §5c (I). Values are the sized set (RPROG → 2.42 A ≈ C/5;
|
||||||
|
> PFI trip 4.60 V; backup 4.79 V; charge = 4.00 V Li-ion via straps).
|
||||||
|
> **Fab gate: bench-validate the LTC4040 backup transition + temp-qualified charge cutoff
|
||||||
|
> before ordering boards.**
|
||||||
|
|
||||||
|
| Block | Ref | Item | Value / Package | Qty | LCSC |
|
||||||
|
|---|---|---|---|---:|---|
|
||||||
|
| B | U6 | Battery-backup manager (charger + power-path + 2.5 A boost) | **LTC4040EUFD** — QFN-24 4×5 mm, EP=GND | 1 | verify |
|
||||||
|
| B | Q7 | VIN→VSYS disconnect NFET (gate = IGATE) | AO4406A-class, 30 V ≥10 A ≤15 mΩ — SOIC-8 | 1 | verify |
|
||||||
|
| B | RS | Input current-limit sense (3.1 A) | **8 mΩ 1 %** — 1206 sense | 1 | verify |
|
||||||
|
| B | RPROG | Charge program (2.42 A ≈ C/5) | **825 Ω 1 %** — 0603 | 1 | verify |
|
||||||
|
| B | RPF1 / RPF2 | PFI divider (trip 4.60 V falling) | 287 k / 100 k, 1 % — 0603 | 1+1 | verify |
|
||||||
|
| B | RFB1 / RFB2 | Backup FB divider (4.79 V; RST −7.5 %) | 499 k / 100 k, 1 % — 0603 | 1+1 | verify |
|
||||||
|
| B | L6 | Charger/boost inductor (SW↔BAT) | **2.2 µH, Isat ≥8 A, DCR <20 mΩ** — 8040 | 1 | verify |
|
||||||
|
| B | CVIN | U6 VIN input caps | 10 µF X5R + 2.2 µF — 0805/0603 | 1+1 | verify |
|
||||||
|
| B | CVSYS | VSYS backup-transition hold-up (≥100 µF low-ESR) | 2×47 µF 1210 + 10 µF | 3 | verify |
|
||||||
|
| B | CBAT | U6 BAT cap | 22 µF X5R — 0805/1206 | 1 | verify |
|
||||||
|
| B | RNTB | Cell-NTC bias | 10 k 1 % low-drift — 0603 | 1 | verify |
|
||||||
|
| B | P4 | Battery connector (BAT+ / BAT− / NTC) | **JST-XH 3-pos** (was 2-pos) | 1 | verify |
|
||||||
|
| B | JP2 / JP3 / JP4 | Chemistry straps F2=1 / F1=0 / F0=1 → **4.00 V Li-ion** (to VSYS/GND, not 3V3) | solder jumper | 3 | — |
|
||||||
|
| E | P11 | Power-cutoff loop (MAIN5V → SYS5V; **ship with jumper plug**) | JST-XH 2-pos | 1 | verify |
|
||||||
|
| H | K1 | Modo-B fail-safe bypass relay (NC = direct uplink) | **HFD23/005-class** SPDT signal relay, 5 V coil | 1 | verify |
|
||||||
|
| H | Q6 | K1 coil low-side driver | MMBT3904 — SOT-23 | 1 | verify |
|
||||||
|
| H | R40 / R41 | Base series / base pull-down (default OFF) | 1 k / 10 k — 0603 | 1+1 | verify |
|
||||||
|
| H | D6 | Coil flyback | 1N4148 — SOD-123 | 1 | verify |
|
||||||
|
| H | P13 | Modo-B uplink (F9P_TX2 / 4G_DIN / GND) | JST-XH 3-pos | 1 | verify |
|
||||||
|
| I | R42 | NTC divider top | 10 k **1 %** — 0603 | 1 | verify |
|
||||||
|
| I | C24 | PB1 ADC settling | 100 nF — 0603 | 1 | verify |
|
||||||
|
| I | P12 | Hot-spot NTC (10 k, B≈3950 — at battery/modem) | JST-XH 2-pos | 1 | verify |
|
||||||
|
| H | K1 note | Capture uses the **Omron G6E-134P-ST-US 5 V** land pattern (`Relay_SPDT_Omron_G6E`); HFD23 alt = footprint swap | — | — | verify |
|
||||||
|
|
||||||
|
### 5b. Carrier-board additions — Block J sockets + Block K modem buck (2026-07-02 PM)
|
||||||
|
|
||||||
|
> The PROD board is now the **HBOX carrier**: all three modules on female headers (delta doc
|
||||||
|
> §5d/§5e). Board **120×100 mm**. XBee VCC = **3.3 V** (the Pro-class HP-socket spec — not 5 V),
|
||||||
|
> made by a dedicated buck on **SW_5V** so the watchdog's stack power-cycle also reboots the modem.
|
||||||
|
|
||||||
|
| Block | Ref | Item | Value / Package | Qty | LCSC |
|
||||||
|
|---|---|---|---|---:|---|
|
||||||
|
| J | MOD1 | UNO-pattern female headers for the simpleRTK2B Pro | 2.54 mm PinSocket **1×10 + 1×8 + 1×8 + 1×6** (8.5 mm stack height) | 1 set | verify |
|
||||||
|
| J | J7 / J8 | XBee socket for the 4G NTRIP Master | PinSocket **1×10, 2.00 mm**, rows 22.35 mm | 2 | verify |
|
||||||
|
| K | U7 | 3V3_MODEM buck (SW_5V → 3.33 V, ≥1.5 A pk) | **MP1584EN** — SOIC-8-EP | 1 | C107226 |
|
||||||
|
| K | L7 | Buck inductor | 10 µH ≥2 A — 8028 | 1 | verify |
|
||||||
|
| K | R60 / R61 | FB divider → 3.33 V | 100 k / **31.6 k**, 1 % — 0603 | 1+1 | verify |
|
||||||
|
| K | Dbk2 | Freewheel | SS34 — DO-214AC | 1 | C8678 |
|
||||||
|
| K | Cbst2 / Rfreq2 / Rcomp2 / Ccomp2 | BST / fsw / comp (same as Block A; ⚠ bench-tune) | 10 nF / 100 k / 40.2 k / 2.2 nF — 0603 | 4 | verify |
|
||||||
|
| K | C40 / C41 / C43 | In / out / LTE-burst bulk | 22 µF + 22 µF + **100 µF/6.3 V elco** | 3 | verify |
|
||||||
|
|
||||||
## Open Questions
|
## Open Questions
|
||||||
|
|
||||||
- [ ] Confirm the **installed blade-fuse value** (2 A may be under-rated for LTE inrush).
|
- [ ] Confirm the **installed blade-fuse value** (2 A may be under-rated for LTE inrush).
|
||||||
- [x] ~~Battery decision (drop vs LiFePO4 vs supercap)~~ → **RESOLVED 2026-06-24: 1S4P + LTC4040** (NTC temp-qualified charging). Now: **confirm the pack Ah** (label says 40 Ah — suspect; 4× 18650 ≈ 10–14 Ah) → it sizes the charge current + the LTC4040 safety timer.
|
- [x] ~~Battery decision~~ → **1S4P + LTC4040** (NTC temp-qualified charging). **Pack = ~12 Ah** (1S4P, ~3 Ah/cell; the "40 Ah" label was a mistake — corrected 2026-06-30). Sizes the LTC4040 charge current (2.5 A max ≈ C/5, gentle) + safety timer.
|
||||||
- [ ] Lock supplier per line (Helgen vs alternate quote) for the August batch.
|
- [ ] Lock supplier per line (Helgen vs alternate quote) for the August batch.
|
||||||
|
|
||||||
## Related
|
## Related
|
||||||
|
|||||||
BIN
03-Architecture-Hardware/Drogheda_Diagrama-Cableado-Proto_ES.pdf
Normal file
BIN
03-Architecture-Hardware/Drogheda_Diagrama-Cableado-Proto_ES.png
Normal file
|
After Width: | Height: | Size: 463 KiB |
2178
03-Architecture-Hardware/Drogheda_Diagrama-Cableado-Proto_ES.svg
Normal file
|
After Width: | Height: | Size: 322 KiB |
450
03-Architecture-Hardware/Guia-Conexion-Protoboard/cuerpo.tex
Normal file
@ -0,0 +1,450 @@
|
|||||||
|
% cuerpo.tex — Guía de Conexión en Protoboard v2.1 (bloques 1–11)
|
||||||
|
% Fuente de datos autoritativa: ../Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx
|
||||||
|
% (hojas: Conexiones · Mapa de pines · Fuentes y convertidores · Estado y cambios)
|
||||||
|
|
||||||
|
\section{Cómo usar esta guía}
|
||||||
|
|
||||||
|
Esta guía lleva al técnico de armado por el cableado completo del prototipo del
|
||||||
|
\textbf{watchdog HBOX v3} sobre tarjeta DEV / protoboard (MCU STM32F411 «Blackpill»,
|
||||||
|
firmware v2.3), organizado en \textbf{11 bloques} que se arman y prueban uno por uno.
|
||||||
|
No armes los bloques en el orden en que aparecen: sigue el \textbf{orden de armado} de la
|
||||||
|
sección~\ref{sec:orden}, que va de lo más simple (solo USB) a lo más delicado (stack RTK).
|
||||||
|
|
||||||
|
\begin{helgennotice}[Documentos compañeros — dónde está cada cosa]
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Lista de conexiones autoritativa:}
|
||||||
|
\texttt{Drogheda\_Conexiones-por-Bloque\_Proto\_v1.xlsx} (hojas \textit{Conexiones},
|
||||||
|
\textit{Mapa de pines}, \textit{Fuentes y convertidores}, \textit{Estado y cambios}).
|
||||||
|
Si esta guía y el XLSX difieren, \textbf{manda el XLSX}.
|
||||||
|
\item \textbf{Diagramas por bloque (CircuiTikZ):} carpeta \texttt{circuitikz-wiring/} —
|
||||||
|
\texttt{Drogheda\_Diagrama\_CircuiTikZ.pdf} (lámina completa) y
|
||||||
|
\texttt{Drogheda\_Diagrama\_Beamer.pdf} (una diapositiva por bloque).
|
||||||
|
\item \textbf{Estado eléctrico canónico del diseño:}
|
||||||
|
\texttt{watchdog-electrical-design-state.md} (léelo antes de cambiar cualquier cosa).
|
||||||
|
\item \textbf{Listas de compra:} \texttt{watchdog-LISTA-DE-COMPRAS-ES.xlsx} y
|
||||||
|
\texttt{watchdog-protoboard-BOM-3boards.xlsx}.
|
||||||
|
\end{itemize}
|
||||||
|
\end{helgennotice}
|
||||||
|
|
||||||
|
\section{Estado y cambios recientes}
|
||||||
|
\label{sec:estado}
|
||||||
|
|
||||||
|
Resumen de las decisiones y correcciones vigentes (hoja \textit{Estado y cambios} del XLSX).
|
||||||
|
Léelo antes de armar: aquí está lo que cambió respecto a versiones anteriores de la guía.
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}L{2.0cm} L{4.6cm} X@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Área}} & \textcolor{white}{\textbf{Cambio / estado}} & \textcolor{white}{\textbf{Detalle}}\\
|
||||||
|
\midrule
|
||||||
|
Batería & \textbf{Pack = $\sim$12\,Ah} (2026-06-30) & «40\,Ah» era un error; dimensiona R\textsubscript{PROG} + timer del LTC4040 (2.5\,A máx $\approx$ C/5).\\
|
||||||
|
Ventilador & 2 hilos (sin tacómetro) & PB10 DNP; el fallo del ventilador se infiere por temperatura (firmware pendiente).\\
|
||||||
|
Ventilador & 5\,V del ventilador = LM2596 & 24$\rightarrow$5\,V \textbf{separado} (ajustar a 5.0\,V) para no hundir el 5\,V principal (inrush).\\
|
||||||
|
Ignición & DFR1015 de 4 terminales & IN+/IN$-$/OUT+/OUT$-$; ambos GND al GND del sistema.\\
|
||||||
|
Ignición & Clamp BAT54 en PA5 & Ánodo = PA5, cátodo = 3V3 $\rightarrow$ PA5 $\le$ 3.3\,V; digital, \textbf{sin divisor} (Finding~2).\\
|
||||||
|
Batería & \textbf{NTC $\rightarrow$ pin TEMP del cargador} & TP4056 (proto) / LTC4040 (PCB); \textbf{no} va al MCU. El MCU lee temperatura por el TMP102 (I\textsuperscript{2}C).\\
|
||||||
|
Temperatura & NTC analógico $\rightarrow$ PB1 (si no hay SHT40) & Divisor 3V3 -- 10\,k (1\,\%) -- NTC 10\,k -- GND a PB1 (ADC1\_IN9). Firmware: Beta/Steinhart + posible corte CHRG\_EN. En el punto caliente (batería/módem). Bloque~11.\\
|
||||||
|
NTRIP & Modo B (relé / inyección \texttt{\$PHLG}) & F9P TX2 $\rightarrow$ PA10 $\rightarrow$ PA9 $\rightarrow$ 4G DIN (inyecta \texttt{\$PHLG}); RTCM3 DOUT $\rightarrow$ RX2 \textbf{directo}; breakout BOB-08276; switch $\rightarrow$ UART1; IOREF 3.3\,V.\\
|
||||||
|
Batería & Respaldo proto = TP4056 + MT3608 & 2$\times$ 1N5819 en «O» (OR) hacia MAIN5V; el PCB usa el LTC4040.\\
|
||||||
|
Firmware — pendiente & Gauge PB12--15 · CHRG\_EN · fan-fault por temperatura & \textbf{Bench-test antes de flashear} (el sandbox no compila STM32).\\
|
||||||
|
PCB — pendiente & Bloque B (LTC4040) + bypass fail-safe UART2 & El bypass \textbf{normalmente cerrado} evita que un MCU ausente/colgado corte las correcciones (Modo~B). Ver Bloque~9.\\
|
||||||
|
Cobertura de partes & Sección 1 + 3 = suficiente para el core & La sección 2 (TP4056/MT3608) solo hace falta para el respaldo de batería.\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Leyenda de colores de cable}
|
||||||
|
|
||||||
|
Los mismos colores de los diagramas CircuiTikZ; úsalos también en el cableado físico.
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l l X@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Cable}} & \textcolor{white}{\textbf{Red}} & \textcolor{white}{\textbf{Qué lleva}}\\
|
||||||
|
\midrule
|
||||||
|
ROJO & \redV & 5\,V — alimentación principal (MAIN5V) y 5\,V separado del ventilador\\
|
||||||
|
NARANJA & \redT & 3.3\,V — sale del Blackpill (sensores, pull-ups, ignición, temperatura)\\
|
||||||
|
NEGRO & \redG & GND — tierra común (todo se une aquí)\\
|
||||||
|
AZUL & \redS & Señal lógica / digital / UART\\
|
||||||
|
VERDE & \redA & Sensado analógico ($\div$2, ADC): PA0, PA4, PB1\\
|
||||||
|
GUINDA & \redI & Ignición cruda 12--24\,V (a la entrada del DFR1015)\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Mapa de pines del Blackpill}
|
||||||
|
|
||||||
|
Busca cada etiqueta impresa en la tarjeta. (Hoja \textit{Mapa de pines} del XLSX;
|
||||||
|
incluye PA8 y PC13, que no aparecían en la guía v2.)
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X l l@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Pin}} & \textcolor{white}{\textbf{Función}} & \textcolor{white}{\textbf{Tipo}} & \textcolor{white}{\textbf{Bloque(s)}}\\
|
||||||
|
\midrule
|
||||||
|
5V / GND / 3V3 & Rieles (3V3 = LDO del Blackpill) & Power & 1\\
|
||||||
|
PA0 & BAT\_SENSE — batería $\div$2 & ADC & 4, 10\\
|
||||||
|
PA1 & PWR\_CTRL — interruptor de carga del «stack» & Salida & 3\\
|
||||||
|
PA2 & USART2 TX $\rightarrow$ F9P UART1 RX (NMEA) & UART & 8, 9\\
|
||||||
|
PA3 & USART2 RX $\leftarrow$ F9P UART1 TX (NMEA) & UART & 8, 9\\
|
||||||
|
PA4 & 5V\_SENSE — vehículo $\div$2 & ADC & 4\\
|
||||||
|
PA5 & IGN\_SENSE — digital, \texttt{INPUT\_PULLDOWN}, \textbf{sin divisor} (máx 3.3\,V) & Entrada dig. & 4\\
|
||||||
|
PA6 & FAN\_PWM — 25\,kHz (TIM3\_CH1) & PWM & 5\\
|
||||||
|
PA8 & CHRG\_EN (planeado) — corta la carga si la celda está caliente & Salida & batería / firmware\\
|
||||||
|
PA9 & Modo B: USART1 TX $\rightarrow$ 4G DIN (relé \texttt{\$PHLG}) & UART & 9\\
|
||||||
|
PA10 & Modo B: USART1 RX $\leftarrow$ F9P TX2 (relé); 22\,k$\Omega \rightarrow$ 3V3 & UART & 9\\
|
||||||
|
PB0 & EXT\_LED — LED de estado & Salida & 2\\
|
||||||
|
PB1 & Temperatura analógica (divisor NTC) — ADC1\_IN9 (libre) & ADC & 11\\
|
||||||
|
PB6 & I\textsuperscript{2}C1 SCL — SHT40/TMP102 & I\textsuperscript{2}C & 6\\
|
||||||
|
PB7 & I\textsuperscript{2}C1 SDA — SHT40/TMP102 & I\textsuperscript{2}C & 6\\
|
||||||
|
PB10 & FAN\_TACH — DNP (ventilador de 2 hilos) & — & 5\\
|
||||||
|
PB12--PB15 & Gauge de batería (4 LEDs) — firmware pendiente & Salida & 7\\
|
||||||
|
PC13 & LED onboard (activo-bajo) & Salida & —\\
|
||||||
|
NRST & Reset (botón a GND) & Reset & 7\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Fuentes y convertidores — ajústalos ANTES de conectar}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}L{2.5cm} X L{3.1cm} L{1.6cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Componente}} & \textcolor{white}{\textbf{Qué es / ajuste}} & \textcolor{white}{\textbf{Entrada $\rightarrow$ salida}} & \textcolor{white}{\textbf{Bloque}}\\
|
||||||
|
\midrule
|
||||||
|
Mean Well SD-15B-05 & Fuente principal 24$\rightarrow$5\,V (o un banco de 5\,V). Es el riel \textbf{MAIN5V} (módulo industrial). & 18--36\,V $\rightarrow$ 5\,V · 3\,A & 1\\
|
||||||
|
LM2596 (o MP1584) & 5\,V \textbf{separado} para el ventilador. \textbf{¡Ajústalo a 5.0\,V con el multímetro ANTES de conectar!} Vienen en voltaje aleatorio. En el PCB este papel lo hace el MP1584 (U2). & 24\,V $\rightarrow$ 5.0\,V ajustable & 5\\
|
||||||
|
DFR1015 & Acondiciona la ignición. Acepta 12 y 24\,V; 4 terminales (IN$\pm$/OUT$\pm$) y \textbf{ambos GND al GND del sistema}. On-board en la v3 (GX16 pin~3 = ignición cruda). & 12--24\,V $\rightarrow$ 5\,V & 4\\
|
||||||
|
TP4056 & Cargador del 18650 (\textbf{proto}; stand-in de banco). El PCB usa el LTC4040. & 5\,V vehículo $\rightarrow$ carga 1S & 10\\
|
||||||
|
MT3608 & Elevador de respaldo. Ajústalo \textbf{apenas por debajo} del 5\,V del vehículo para que el vehículo tenga prioridad. & 3.6\,V $\rightarrow$ 5\,V & 10\\
|
||||||
|
LTC4040 (PCB) & Battery-backup manager: carga + power-path + boost + NTC. Carga temp-cualificada por NTC; R\textsubscript{PROG} $\approx$ C/5 $\le$ 2.5\,A para 12\,Ah. & 5\,V vehículo / batería $\rightarrow$ 5\,V & B (por diseñar)\\
|
||||||
|
18650 1S4P & Pack de respaldo \textbf{$\sim$12\,Ah} («40\,Ah» era un error, corregido 2026-06-30). \textbf{Respeta la polaridad.} & — $\rightarrow$ 3.6\,V · $\sim$12\,Ah & 4, 10\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Conexiones por bloque (1--11)}
|
||||||
|
|
||||||
|
Cada tabla lista las conexiones como \textbf{desde $\rightarrow$ vía $\rightarrow$ hacia}, con la
|
||||||
|
red (color de cable) a la izquierda. Arma y prueba \textbf{un bloque a la vez}, en el orden de
|
||||||
|
la sección~\ref{sec:orden}.
|
||||||
|
|
||||||
|
\bloque{1}{Rieles de alimentación}
|
||||||
|
\queprueba{arma los rieles 5\,V / GND / 3.3\,V que alimentan todo.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redV & Fuente 5\,V (SD-15B-05 o banco) (+) $\rightarrow$ riel MAIN5V & Fuente principal\\
|
||||||
|
\redG & Fuente 5\,V ($-$) $\rightarrow$ riel GND & Tierra común\\
|
||||||
|
\redV & Riel MAIN5V $\rightarrow$ pin 5V del Blackpill & El Blackpill genera el 3.3\,V (LDO interno)\\
|
||||||
|
\redG & Riel GND $\rightarrow$ pin GND del Blackpill & \\
|
||||||
|
\redT & Blackpill 3V3 (salida) $\rightarrow$ sensores I\textsuperscript{2}C · pull-ups · ignición & Cargas pequeñas ($\mu$A--mA)\\
|
||||||
|
\redV & Riel MAIN5V $\rightarrow$ C 100\,$\mu$F + 100\,nF $\rightarrow$ riel GND & Desacople / reserva, cerca de la tarjeta\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{2}{LED de estado (PB0)}
|
||||||
|
\queprueba{los códigos de parpadeo cambian con el estado.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redS & PB0 $\rightarrow$ R 330\,$\Omega$ $\rightarrow$ ánodo del LED & LED 3/5\,mm\\
|
||||||
|
\redG & cátodo del LED $\rightarrow$ GND & códigos de parpadeo\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{3}{Interruptor de carga del «stack» (PA1) — EL CORAZÓN}
|
||||||
|
\queprueba{APAGADO al reset (estado seguro), ON cuando PA1 activa.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redS & PA1 $\rightarrow$ R 1\,k$\Omega$ $\rightarrow$ base 2N3904 (B) & Driver\\
|
||||||
|
\redG & 2N3904 emisor (E) $\rightarrow$ GND & \\
|
||||||
|
\redS & 2N3904 colector (C) $\rightarrow$ compuerta IRF9540 (G) & Nodo de compuerta\\
|
||||||
|
\redV & compuerta IRF9540 (G) $\rightarrow$ R 10\,k$\Omega$ $\rightarrow$ MAIN5V & Pull-up $\rightarrow$ \textbf{OFF por defecto} (estado seguro)\\
|
||||||
|
\redV & IRF9540 source (S) $\rightarrow$ MAIN5V & P-MOSFET (canal P)\\
|
||||||
|
\redS & IRF9540 drain (D) $\rightarrow$ SAL (salida conmutada «stack») & $\rightarrow$ Bloques 8/9 (stack RTK)\\
|
||||||
|
\redS & prueba: SAL $\rightarrow$ LED + R 330\,$\Omega$ $\rightarrow$ GND & Para ver el encendido/apagado\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\noindent{\small\textit{El pull-up de 10\,k$\Omega$ garantiza el invariante «apagado = estado
|
||||||
|
seguro»: sin MCU (o durante el reset) el stack queda \textbf{apagado}.}}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{adjustbox}{max width=\textwidth}
|
||||||
|
\begin{tikzpicture}[every node/.append style={font=\footnotesize}]\blkCarga\end{tikzpicture}
|
||||||
|
\end{adjustbox}\\
|
||||||
|
{\small\itshape Bloque 3 — el mismo dibujo que la lámina CircuiTikZ (\texttt{circuitikz-wiring/}).}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\bloque{4}{Sensado: batería / 5\,V / ignición}
|
||||||
|
\queprueba{\texttt{veh}/\texttt{ign}/\texttt{vbat} cambian en el log (TLM).}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redA & 18650+ (o potenciómetro) $\rightarrow$ R 10\,k$\Omega$ $\rightarrow$ PA0 & Divisor $\div$2 · BAT\_SENSE\\
|
||||||
|
\redA & PA0 $\rightarrow$ R 10\,k$\Omega$ $\rightarrow$ GND & Pierna inferior del divisor\\
|
||||||
|
\redA & MAIN5V (lado vehículo) $\rightarrow$ R 10\,k$\Omega$ $\rightarrow$ PA4 & Divisor $\div$2 · 5\,V/vehículo presente\\
|
||||||
|
\redA & PA4 $\rightarrow$ R 10\,k$\Omega$ $\rightarrow$ GND & \\
|
||||||
|
\redI & GX16 pin 3 (ignición 12--24\,V) $\rightarrow$ DFR1015 IN+ & Ignición \textbf{cruda} del gabinete\\
|
||||||
|
\redG & DFR1015 IN$-$ $\rightarrow$ GND & Retorno de ignición = GND del sistema\\
|
||||||
|
\redS & DFR1015 OUT+ (5\,V) $\rightarrow$ R 100\,$\Omega$ $\rightarrow$ PA5 & Acondiciona a nivel lógico\\
|
||||||
|
\redG & DFR1015 OUT$-$ $\rightarrow$ GND & \\
|
||||||
|
\redT & PA5 (ánodo) $\rightarrow$ BAT54 $\rightarrow$ 3V3 (cátodo) & Clamp: PA5 $\le$ 3.3\,V\\
|
||||||
|
\redG & PA5 $\rightarrow$ C 100\,nF $\rightarrow$ GND & Anti-rebote (con debounce en firmware)\\
|
||||||
|
\redS & Banco (proto): 3V3 $\rightarrow$ apagador / push-button $\rightarrow$ PA5 & Simula la ignición sin DFR1015. PA5 = digital, \texttt{INPUT\_PULLDOWN}, \textbf{sin divisor}\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{5}{Ventilador (2 hilos)}
|
||||||
|
\queprueba{el ventilador arranca/sube con la temperatura.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redV & 24\,V (gabinete) $\rightarrow$ LM2596 (buck, ajustar a 5.0\,V) $\rightarrow$ riel 5\,V sep. & Riel \textbf{SEPARADO} para el ventilador (PCB = MP1584)\\
|
||||||
|
\redG & LM2596 GND (in/out) $\rightarrow$ GND & \\
|
||||||
|
\redS & PA6 $\rightarrow$ R 220\,$\Omega$ $\rightarrow$ compuerta IRLZ44N (G) & PWM 25\,kHz\\
|
||||||
|
\redG & IRLZ44N source (S) $\rightarrow$ GND & Low-side switch\\
|
||||||
|
\redS & compuerta IRLZ44N (G) $\rightarrow$ R 100\,k$\Omega$ $\rightarrow$ GND & Mantiene el FET apagado\\
|
||||||
|
\redG & IRLZ44N drain (D) $\rightarrow$ ventilador ($-$) & Cable negro\\
|
||||||
|
\redV & ventilador (+) $\rightarrow$ riel 5\,V sep. & Ventilador de 2 hilos\\
|
||||||
|
\redV & 1N5819 en paralelo al ventilador (banda $\rightarrow$ +5\,V sep.) & Flyback / anti-retorno inductivo\\
|
||||||
|
\redN & PB10 (tach) $\rightarrow$ sin usar (DNP) & 2 hilos $\rightarrow$ sin tacómetro; el fallo se infiere por temperatura (firmware)\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{6}{Sensor de temperatura I\textsuperscript{2}C (si lo tienes)}
|
||||||
|
\queprueba{al calentar el sensor, el ventilador sube.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redT & SHT40 / TMP102 VCC $\rightarrow$ 3V3 & Parte de 3.3\,V (no 5\,V)\\
|
||||||
|
\redG & SHT40 / TMP102 GND $\rightarrow$ GND & \\
|
||||||
|
\redS & SCL $\rightarrow$ PB6 & I\textsuperscript{2}C1 SCL\\
|
||||||
|
\redT & SCL $\rightarrow$ R 4.7\,k$\Omega$ $\rightarrow$ 3V3 & Pull-up I\textsuperscript{2}C (muchos breakouts ya lo traen)\\
|
||||||
|
\redS & SDA $\rightarrow$ PB7 & I\textsuperscript{2}C1 SDA\\
|
||||||
|
\redT & SDA $\rightarrow$ R 4.7\,k$\Omega$ $\rightarrow$ 3V3 & Pull-up I\textsuperscript{2}C\\
|
||||||
|
\redN & Direcciones: SHT40 = 0x44 · TMP102 = 0x48 & TMP102 en pigtail a la celda/módem (punto caliente)\\
|
||||||
|
\redN & Sin SHT40/TMP102 $\rightarrow$ usa el Bloque 11 (NTC $\rightarrow$ PB1) & Alternativa analógica\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{7}{Reset (opcional) y gauge de batería (opcional)}
|
||||||
|
\queprueba{el botón reinicia; los 4 LEDs quedan listos para el firmware.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redS & NRST $\rightarrow$ push-button $\rightarrow$ GND & Reset por hardware\\
|
||||||
|
\redS & PB12 / PB13 / PB14 / PB15 $\rightarrow$ R 330\,$\Omega$ c/u $\rightarrow$ LED $\rightarrow$ GND ($\times$4) & Gauge de batería; \textbf{APAGADOS} hasta firmware\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{8}{Conexión del stack RTK (modo por defecto)}
|
||||||
|
\queprueba{el watchdog observa; solo 4 cables al stack.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redV & SAL (5\,V conmutado, Bloque 3) $\rightarrow$ simpleRTK2B Pro · 5V & Alimenta el stack RTK\\
|
||||||
|
\redG & GND del sistema $\rightarrow$ simpleRTK2B Pro · GND & \\
|
||||||
|
\redS & PA2 (USART2 TX) $\rightarrow$ F9P UART1 RX & NMEA · cruce TX$\rightarrow$RX\\
|
||||||
|
\redS & PA3 (USART2 RX) $\rightarrow$ F9P UART1 TX & NMEA · cruce RX$\leftarrow$TX\\
|
||||||
|
\redN & 4G NTRIP Master (XBee) $\rightarrow$ socket XBee del Pro (UART2) & 5\,V + datos por el socket (\textbf{no} al Blackpill)\\
|
||||||
|
\redN & Antena GNSS (SMA) $\rightarrow$ F9P & \\
|
||||||
|
\redN & 2$\times$ antenas LTE $\rightarrow$ 4G NTRIP Master & \\
|
||||||
|
\redN & Relé \texttt{\$PHLG} (PA9/PA10) = DNP / apagado & Config por defecto (solo monitor)\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\bloque{9}{Modo B — Diagnóstico por NTRIP (relé, opcional)}
|
||||||
|
\queprueba{inyecta \texttt{\$PHLG} al servidor por 4G. Requiere breakout XBee.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redV & SAL / GND (Bloque 3) $\rightarrow$ F9P · watchdog · 4G & IOREF = 3.3\,V (nivel de los UART del F9P)\\
|
||||||
|
\redN & switch XBee del Pro $\rightarrow$ UART1 & Libera UART2 para el relé\\
|
||||||
|
\redS & PA2 $\rightarrow$ F9P UART1 RX & Monitor de fix\\
|
||||||
|
\redS & PA3 $\rightarrow$ F9P UART1 TX & Monitor de fix\\
|
||||||
|
\redS & F9P TX2 (UART2) $\rightarrow$ PA10 (USART1 RX) & Relé: la subida entra al MCU\\
|
||||||
|
\redS & PA9 (USART1 TX) $\rightarrow$ 4G DIN & El MCU releva + inyecta \texttt{\$PHLG}\\
|
||||||
|
\redS & 4G DOUT $\rightarrow$ F9P RX2 (UART2) & RTCM3 \textbf{DIRECTO} (no pasa por el MCU) $\rightarrow$ correcciones intactas\\
|
||||||
|
\redT & PA10 $\rightarrow$ R 22\,k$\Omega$ $\rightarrow$ 3V3 & DFU-safe (idle high)\\
|
||||||
|
\redN & 4G NTRIP Master $\rightarrow$ breakout XBee (SparkFun BOB-08276), fuera del socket & Para interponer el MCU\\
|
||||||
|
\redN & 4G NTRIP Master $\rightarrow$ servidor (4G/NTRIP) & \texttt{\$PHLG} llega \textit{en banda} al backend\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\begin{helgennotice}[Fail-safe en el PCB v3: bypass UART2 normalmente cerrado]
|
||||||
|
En la tarjeta de producción, la bajada RTCM3 (4G DOUT $\rightarrow$ F9P RX2) pasa por un
|
||||||
|
\textbf{bypass normalmente cerrado}: si el MCU está \textbf{muerto, ausente o colgado}, el
|
||||||
|
bypass mantiene la ruta conectada y las correcciones \textbf{nunca se cortan} — el MCU solo
|
||||||
|
se interpone cuando está sano. En el protoboard este fail-safe \textbf{no existe}: si retiras
|
||||||
|
o cuelgas el Blackpill en Modo~B, regresa el 4G al socket XBee (modo por defecto, Bloque~8)
|
||||||
|
para no perder RTCM3. (Invariante: las correcciones viajan por el módem 4G; ningún estado del
|
||||||
|
MCU debe interrumpirlas.)
|
||||||
|
\end{helgennotice}
|
||||||
|
|
||||||
|
\bloque{10}{Respaldo de batería (proto): TP4056 + MT3608}
|
||||||
|
\queprueba{reproduce carga / respaldo. El PCB usa el LTC4040.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redV & 5\,V vehículo (SD-15B-05) $\rightarrow$ TP4056 IN+ & Camino de carga\\
|
||||||
|
\redG & TP4056 IN$-$ $\rightarrow$ GND & \\
|
||||||
|
\redN & TP4056 BAT+ $\rightarrow$ 18650+ (nodo compartido) & \\
|
||||||
|
\redN & 18650+ $\rightarrow$ MT3608 IN+ & Nodo compartido (carga + boost)\\
|
||||||
|
\redG & 18650$-$ $\rightarrow$ GND & \\
|
||||||
|
\redG & MT3608 IN$-$ / OUT$-$ $\rightarrow$ GND & \\
|
||||||
|
\redV & MT3608 OUT+ (eleva 3.6$\rightarrow$5\,V) $\rightarrow$ 1N5819 $\rightarrow$ MAIN5V & Respaldo (OR)\\
|
||||||
|
\redV & 5\,V vehículo $\rightarrow$ 1N5819 $\rightarrow$ MAIN5V & Primario (OR) — el vehículo tiene prioridad\\
|
||||||
|
\redN & NTC 10\,k $\rightarrow$ \textbf{pin TEMP del cargador} (TP4056 proto / LTC4040 PCB) & Temperatura de celda — \textbf{NO va al MCU} (ver aviso)\\
|
||||||
|
\redA & 18650+ $\rightarrow$ (Bloque 4) $\rightarrow$ PA0 (BAT\_SENSE) & Sensado de voltaje de batería\\
|
||||||
|
\redN & MT3608: ajustar \textbf{apenas} $<$ 5\,V del vehículo & Prioridad al vehículo; el PCB usa el LTC4040\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\begin{helgennotice}[El NTC del pack va al cargador, NUNCA al MCU]
|
||||||
|
El termistor pegado a la celda se conecta al \textbf{pin TEMP del cargador} (TP4056 en el
|
||||||
|
proto, LTC4040 en el PCB): es el \textbf{cargador} quien califica la carga por temperatura y
|
||||||
|
la corta si la celda está fría o caliente — protección por hardware, sin firmware de por
|
||||||
|
medio. \textbf{No lo lleves al Blackpill.} El MCU lee la temperatura por I\textsuperscript{2}C
|
||||||
|
con el \textbf{TMP102} (Bloque~6, en pigtail al punto caliente). El divisor
|
||||||
|
NTC $\rightarrow$ PB1 del \textbf{Bloque~11} es otra pieza: la ruta \textit{analógica} de
|
||||||
|
punto caliente cuando no hay SHT40/TMP102.
|
||||||
|
\end{helgennotice}
|
||||||
|
|
||||||
|
\noindent\textbf{Pack:} 1S4P $\sim$\textbf{12\,Ah} — \textit{nunca} 40\,Ah (ese dato fue un
|
||||||
|
error, corregido el 2026-06-30). Con 12\,Ah, la corriente de carga del LTC4040 se dimensiona
|
||||||
|
con R\textsubscript{PROG} $\approx$ C/5 $\le$ 2.5\,A.
|
||||||
|
|
||||||
|
\bloque{11}{Temperatura analógica (NTC 10\,k $\rightarrow$ PB1)}
|
||||||
|
\queprueba{sin SHT40, esta es tu temperatura.}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l X L{4.4cm}@{}}
|
||||||
|
\toprule
|
||||||
|
\theadconex
|
||||||
|
\midrule
|
||||||
|
\redT & 3V3 $\rightarrow$ R 10\,k$\Omega$ (1\,\%) $\rightarrow$ nodo & Divisor fijo (superior)\\
|
||||||
|
\redA & nodo $\rightarrow$ PB1 (ADC1\_IN9, libre) & $\approx$1.65\,V @ 25\,\textdegree C; baja al calentar\\
|
||||||
|
\redN & nodo $\rightarrow$ NTC 10\,k$\Omega$ $\rightarrow$ GND & Termistor · Beta $\approx$3950\\
|
||||||
|
\redG & nodo $\rightarrow$ C 100\,nF $\rightarrow$ GND & Filtro\\
|
||||||
|
\redN & Colócalo en el punto caliente (batería / módem) & Firmware: Beta/Steinhart + CHRG\_EN\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\noindent{\small\textit{Este NTC es \textbf{distinto} del NTC del cargador (Bloque~10): este
|
||||||
|
sí va al MCU (PB1) y mide el punto caliente; aquel va al pin TEMP del cargador y protege la
|
||||||
|
celda.}}
|
||||||
|
|
||||||
|
\section{Patitas de los componentes}
|
||||||
|
|
||||||
|
Míralos de frente, patitas hacia abajo.
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}L{4.6cm} X@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Componente}} & \textcolor{white}{\textbf{Orientación / pines}}\\
|
||||||
|
\midrule
|
||||||
|
2N3904 (TO-92) & Cara plana hacia ti, izq $\rightarrow$ der: \textbf{E -- B -- C}\\
|
||||||
|
IRF9540 (TO-220, canal P) & Metal atrás, izq $\rightarrow$ der: \textbf{G -- D -- S}. Metal = Drain\\
|
||||||
|
IRLZ44N (TO-220, lógico) & Metal atrás, izq $\rightarrow$ der: \textbf{G -- D -- S}. Debe ser «lógico» (\textbf{NO} IRF540/IRFZ44)\\
|
||||||
|
BAT54 · 1N5819 (diodos) & La banda impresa = \textbf{cátodo (K)}\\
|
||||||
|
NTC 10\,k (termistor) & Sin polaridad. Divisor con R 10\,k (1\,\%) a 3V3\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Orden de armado (sigue este orden)}
|
||||||
|
\label{sec:orden}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}c L{3.2cm} X@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{\#}} & \textcolor{white}{\textbf{Paso}} & \textcolor{white}{\textbf{Acción}}\\
|
||||||
|
\midrule
|
||||||
|
1 & Solo USB & Compila y flashea el firmware v2.3 (Arduino/STM32duino, F411CE, DFU con BOOT0). Serial 115200: confirma \texttt{BOOT}/\texttt{COLS}/\texttt{TLM} y un \texttt{\$PHLG} cada 30\,s. Si falla, arregla el firmware antes de seguir.\\
|
||||||
|
2 & LED de estado & Bloque 2. Verás parpadeos.\\
|
||||||
|
3 & Interruptor de carga & Bloque 3. Confirma: \textbf{APAGADO al reset}, ON cuando PA1 activa.\\
|
||||||
|
4 & Sensado & Bloque 4. Divisores PA0/PA4; ignición por DFR1015 (12/24\,V) o el apagador a 3V3.\\
|
||||||
|
5 & Ventilador & Bloque 5. \textbf{Primero} ajusta el LM2596 a 5.0\,V, luego conecta el ventilador.\\
|
||||||
|
6 & Temperatura & Bloque 6 (si tienes SHT40/TMP102) o Bloque 11 (NTC $\rightarrow$ PB1).\\
|
||||||
|
7 & Respaldo de batería & Bloque 10. TP4056 + MT3608 (ajusta el MT3608 apenas $<$ 5\,V del vehículo).\\
|
||||||
|
8 & Stack RTK & Bloque 8. Solo 4 cables (SAL, GND, PA2, PA3); el 4G va en el socket XBee del Pro.\\
|
||||||
|
9 & (Opcional) Modo B & Bloque 9. Relé por breakout XBee — solo si vas a probar el diagnóstico por NTRIP.\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\section{Avisos importantes}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item El IRLZ44N debe ser «lógico» (\textbf{no} IRF540/IRFZ44). Si usaron TIP120, avísale a Leo.
|
||||||
|
\item \textbf{Nunca 5\,V directo a PA0/PA4/PA5.} PA0/PA4 por divisor $\div$2; PA5 lógico
|
||||||
|
$\le$ 3.3\,V (\texttt{INPUT\_PULLDOWN}, clamp BAT54, \textbf{sin divisor}).
|
||||||
|
\item LM2596: ajústalo a \textbf{5.0\,V con el multímetro ANTES de conectar} (vienen aleatorios).
|
||||||
|
\item El ventilador va en el 5\,V del LM2596 (\textbf{separado}), no en la salida «stack» ni en el 5\,V principal.
|
||||||
|
\item MT3608: ajústalo \textbf{apenas} $<$ 5\,V del vehículo (para que el vehículo tenga prioridad).
|
||||||
|
\item Ventilador de 2 hilos $\rightarrow$ sin tacómetro (PB10 sin usar).
|
||||||
|
\item El DFR1015 acepta 12 y 24\,V; su GND (IN$-$/OUT$-$) va al GND del sistema.
|
||||||
|
\item El 4G va en el \textbf{socket XBee del Pro} (no al Blackpill), salvo el Modo B.
|
||||||
|
En el PCB v3, el bypass UART2 \textbf{normalmente cerrado} garantiza que un MCU
|
||||||
|
muerto/ausente nunca corte el RTCM3 (ver Bloque~9).
|
||||||
|
\item El NTC del pack va al \textbf{pin TEMP del cargador} (TP4056 proto / LTC4040 PCB),
|
||||||
|
\textbf{nunca al MCU}. El MCU lee temperatura por el TMP102 (I\textsuperscript{2}C,
|
||||||
|
Bloque~6); el NTC $\rightarrow$ PB1 (Bloque~11) es la ruta de punto caliente cuando
|
||||||
|
no hay SHT40/TMP102.
|
||||||
|
\item 18650: respeta la polaridad; pack 1S4P $\sim$\textbf{12\,Ah} (nunca 40\,Ah).
|
||||||
|
\textbf{Bench-test} el firmware antes de flashear en campo.
|
||||||
|
\item Cobertura de partes: \textbf{Sección 1 + 3} de la lista de compras = suficiente para
|
||||||
|
el core; la Sección 2 (TP4056/MT3608) solo para el respaldo de batería.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Historial del documento}
|
||||||
|
|
||||||
|
\hwtab{%
|
||||||
|
\begin{tabularx}{\textwidth}{@{}l l X@{}}
|
||||||
|
\toprule
|
||||||
|
\rowcolor{HelgenIndigo}\textcolor{white}{\textbf{Versión}} & \textcolor{white}{\textbf{Fecha}} & \textcolor{white}{\textbf{Cambios}}\\
|
||||||
|
\midrule
|
||||||
|
v2 & 2026-07-02 & Guía original (bloques 1--11), publicada solo como PDF (fuente perdida).\\
|
||||||
|
v2.1 & 2026-07-02 & Fuente LaTeX reconstruida y mantenida en el repo
|
||||||
|
(\texttt{03-Architecture-Hardware/}\allowbreak\texttt{Guia-Conexion-Protoboard/}). Contenido realineado al XLSX
|
||||||
|
autoritativo: mapa de pines completado (\textbf{PA8}, \textbf{PC13}), Bloque 9 con las filas
|
||||||
|
faltantes (alimentación, monitor PA2/PA3, ruta al servidor), fila LTC4040 en «Fuentes y
|
||||||
|
convertidores». Nuevo: tabla «Estado y cambios», aviso del \textbf{bypass UART2 normalmente
|
||||||
|
cerrado} del PCB (Bloque 9), aclaración \textbf{NTC del cargador vs TMP102 vs NTC$\rightarrow$PB1},
|
||||||
|
pack 1S4P $\sim$12\,Ah (nunca 40\,Ah), leyenda con colores de los diagramas CircuiTikZ,
|
||||||
|
figura del Bloque 3 y referencias cruzadas.\\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabularx}}
|
||||||
|
|
||||||
|
\vspace{6pt}
|
||||||
|
\noindent{\footnotesize Helgen Technologies · Proyecto Drogheda · Guía de conexión en
|
||||||
|
protoboard v2.1 (bloques 1--11) · Firmware v2.3 · Documento para el técnico de armado.
|
||||||
|
Datos de conexión: \texttt{Drogheda\_Conexiones-por-Bloque\_Proto\_v1.xlsx} · Diagramas:
|
||||||
|
\texttt{circuitikz-wiring/}.}
|
||||||
BIN
03-Architecture-Hardware/Guia-Conexion-Protoboard/main.pdf
Normal file
66
03-Architecture-Hardware/Guia-Conexion-Protoboard/main.tex
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
% Helgen Drogheda — Guía de Conexión en Protoboard · DRG-PROTO-001 (es-MX)
|
||||||
|
% Watchdog HBOX v3 · tarjeta DEV STM32F411 Blackpill · bloques 1–11 · v2.1
|
||||||
|
%
|
||||||
|
% Compilar (preferido, con fuentes de marca): latexmk -xelatex main.tex
|
||||||
|
% Compilar (fallback sin fuentes de marca): latexmk -pdf main.tex (pdfLaTeX)
|
||||||
|
% El shim de abajo neutraliza polyglossia bajo pdfTeX para que el estilo
|
||||||
|
% compartido (_brand/estilo-helgen.tex) compile sin cambios en ambos motores.
|
||||||
|
%
|
||||||
|
% Fuente de datos autoritativa: ../Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx
|
||||||
|
% Diagramas: ../circuitikz-wiring/ (Drogheda_Diagrama_CircuiTikZ.pdf · _Beamer.pdf)
|
||||||
|
\documentclass[11pt]{article}
|
||||||
|
\newcommand{\sistema}{Helgen Drogheda — HBOX RTK}
|
||||||
|
\newcommand{\sistemapdf}{Helgen Drogheda HBOX RTK}
|
||||||
|
\newcommand{\doctipo}{Guía de Conexión en Protoboard}
|
||||||
|
|
||||||
|
% ---- Shim de compatibilidad pdfLaTeX (el estilo es canónicamente XeLaTeX) ----
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifPDFTeX
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{lmodern} % fuentes escalables (espejo del fallback Latin Modern del estilo)
|
||||||
|
% Finge que polyglossia ya está cargado (el estilo lo pide sin condición)
|
||||||
|
\expandafter\def\csname ver@polyglossia.sty\endcsname{2020/01/01}
|
||||||
|
\providecommand{\setmainlanguage}[2][]{}
|
||||||
|
\fi
|
||||||
|
|
||||||
|
\input{../../_brand/estilo-helgen.tex}
|
||||||
|
\usepackage{circuitikz}
|
||||||
|
\input{../circuitikz-wiring/wiring-blocks.tex}
|
||||||
|
|
||||||
|
% ---- Colores de red / cable (mismos que los diagramas CircuiTikZ) ----
|
||||||
|
\definecolor{netIgn}{HTML}{7B1E3B} % GUINDA — ignición cruda 12–24 V
|
||||||
|
% Swatch de color + etiqueta para la columna «Red»
|
||||||
|
\newcommand{\redsw}[2]{\textcolor{#1}{\rule[-0.12ex]{0.72em}{0.72em}}\,{\footnotesize\textbf{#2}}}
|
||||||
|
\newcommand{\redV}{\redsw{net5V}{5V}}
|
||||||
|
\newcommand{\redT}{\redsw{net3V3}{3V3}}
|
||||||
|
\newcommand{\redG}{\redsw{netGND}{GND}}
|
||||||
|
\newcommand{\redS}{\redsw{netSig}{Señal}}
|
||||||
|
\newcommand{\redA}{\redsw{netAna}{Analóg.}}
|
||||||
|
\newcommand{\redI}{\redsw{netIgn}{12--24\,V}}
|
||||||
|
\newcommand{\redN}{{\footnotesize —}}
|
||||||
|
|
||||||
|
% ---- Encabezado de bloque + línea «Qué prueba» ----
|
||||||
|
\newcommand{\bloque}[2]{\subsection*{Bloque #1 · #2}}
|
||||||
|
\newcommand{\queprueba}[1]{\noindent{\small\textit{\textbf{Qué prueba:} #1}}\par\smallskip}
|
||||||
|
|
||||||
|
% ---- Encabezado estándar de las tablas de conexión ----
|
||||||
|
\newcommand{\theadconex}{\rowcolor{HelgenIndigo}
|
||||||
|
\textcolor{white}{\textbf{Red}} &
|
||||||
|
\textcolor{white}{\textbf{Conexión (desde $\rightarrow$ vía $\rightarrow$ hacia)}} &
|
||||||
|
\textcolor{white}{\textbf{Valor / Nota}}\\}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\helgenportada{Guía de Conexión en Protoboard}{HBOX Watchdog v3 — tarjeta DEV / protoboard · bloques 1--11}{%
|
||||||
|
\begin{tabular}{@{}ll@{}}
|
||||||
|
\textbf{Documento} & DRG-PROTO-001 — Guía de Conexión en Protoboard\\
|
||||||
|
\textbf{Versión} & 2.1 (sucede a la v2; fuente LaTeX reconstruida y mantenida en el repo)\\
|
||||||
|
\textbf{Fecha} & 2 de julio de 2026\\
|
||||||
|
\textbf{Firmware} & v2.3 · MCU STM32F411 «Blackpill»\\
|
||||||
|
\textbf{Dirigido a} & Técnico de armado — sigue el orden de la sección~\ref{sec:orden}\\
|
||||||
|
\textbf{Fuente de datos} & \texttt{Drogheda\_Conexiones-por-Bloque\_Proto\_v1.xlsx} (autoritativa)\\
|
||||||
|
\textbf{Autor} & Dr.\ Leopoldo Rodríguez Salazar — Helgen Technologies\\
|
||||||
|
\textbf{Clasificación} & Confidencial — uso interno de Helgen\\
|
||||||
|
\textbf{Asistencia IA} & Elaborado con asistencia de Claude (Anthropic), revisado por el autor\\
|
||||||
|
\end{tabular}}
|
||||||
|
\input{cuerpo.tex}
|
||||||
|
\end{document}
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
% Helgen Technologies — Watchdog v3 proto wiring (Beamer / Metropolis)
|
||||||
|
% Based on assets/helgen-beamer-template.tex. Compile: latexmk -xelatex (brand fonts) or pdflatex.
|
||||||
|
\documentclass[10pt,aspectratio=169]{beamer}
|
||||||
|
\usetheme[progressbar=frametitle, numbering=fraction, block=fill]{metropolis}
|
||||||
|
|
||||||
|
% ---------- Helgen official palette (Guia de Identidad v1.5, 2026) ----------
|
||||||
|
\definecolor{HelgenIndigo}{HTML}{2C3C5B}
|
||||||
|
\definecolor{HelgenCyan}{HTML}{51F3DA}
|
||||||
|
\definecolor{HelgenTeal}{HTML}{17A08C}
|
||||||
|
\definecolor{HelgenMist}{HTML}{EFF1F5}
|
||||||
|
\setbeamercolor{normal text}{fg=HelgenIndigo, bg=white}
|
||||||
|
\setbeamercolor{alerted text}{fg=HelgenTeal}
|
||||||
|
\setbeamercolor{frametitle}{bg=HelgenIndigo, fg=white}
|
||||||
|
\setbeamercolor{progress bar}{fg=HelgenCyan, bg=HelgenMist}
|
||||||
|
\setbeamercolor{title separator}{fg=HelgenCyan}
|
||||||
|
\setbeamercolor{block title}{bg=HelgenMist, fg=HelgenIndigo}
|
||||||
|
|
||||||
|
% ---------- Fonts (XeLaTeX → brand fonts; pdfLaTeX → clean fallback) ----------
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\IfFontExistsTF{League Spartan}{%
|
||||||
|
\newfontfamily\helgentitle{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\setbeamerfont{title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{frametitle}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{standout}{family=\helgentitle, series=\bfseries}
|
||||||
|
}{}
|
||||||
|
\IfFontExistsTF{MADE Evolve Sans}{\setsansfont{MADE Evolve Sans}}{}
|
||||||
|
\else
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage{lmodern}% fallback vectorial (evita fuentes bitmap Type 3 en pdflatex)
|
||||||
|
\fi
|
||||||
|
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{adjustbox}
|
||||||
|
\usepackage{circuitikz}
|
||||||
|
\usetikzlibrary{arrows.meta, positioning, shapes.misc, calc}
|
||||||
|
\input{wiring-blocks}
|
||||||
|
|
||||||
|
% ---------- Footer ----------
|
||||||
|
\setbeamertemplate{frame footer}{%
|
||||||
|
\scriptsize\color{gray}\insertshortauthor\ \textbar\ \insertshorttitle\ \textbar\ Confidencial — Helgen Technologies}
|
||||||
|
|
||||||
|
% fit a block's tikzpicture inside the frame, preserving aspect
|
||||||
|
\newcommand{\blockframe}[2]{%
|
||||||
|
\begin{frame}{#1}\centering
|
||||||
|
\adjustbox{max width=0.96\textwidth, max height=0.78\textheight, center}{%
|
||||||
|
\begin{tikzpicture}#2\end{tikzpicture}}%
|
||||||
|
\end{frame}}
|
||||||
|
|
||||||
|
% ---------- Metadata ----------
|
||||||
|
\title[Watchdog v3 — Cableado del prototipo]{HBOX Watchdog v3 — Cableado del Prototipo}
|
||||||
|
\subtitle{Guía de armado en protoboard — Tarjeta DEV — Firmware v2.3}
|
||||||
|
\author[Helgen — Drogheda]{Helgen Technologies — Proyecto Drogheda}
|
||||||
|
\date{Diagramas v2 · 2026-07-02}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{frame}{Cómo usar este diagrama}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Un bloque = un paso del armado; mismo orden que la guía PDF (1 $\rightarrow$ 11).
|
||||||
|
\item El \alert{color del cable} indica la red (5\,V, 3.3\,V, GND, señal, analógico, ignición cruda); une todos los GND. Sensados analógicos: \alert{PA0, PA4 y PB1}.
|
||||||
|
\item \alert{PA5 (ignición)} es digital, sin divisor, máx 3.3\,V.
|
||||||
|
\item El \alert{NTC de la batería} va al pin \alert{TEMP del cargador} (TP4056 proto / LTC4040 en PCB), no al MCU; el NTC en \alert{PB1} (bloque 11) mide el punto caliente de la placa.
|
||||||
|
\item El \alert{ventilador} usa un 5\,V separado, no la salida ``stack''.
|
||||||
|
\item Cobertura: \textbf{Sección 1 + 3} alcanza para todo esto; Sección 2 (TP4056/MT3608) sólo para el respaldo de batería.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\blockframe{1 · Rieles de alimentación (5 V / GND / 3.3 V)}{\blkRieles}
|
||||||
|
\blockframe{2 · LED de estado (PB0)}{\blkLED}
|
||||||
|
\blockframe{3 · Interruptor de carga del ``stack'' (PA1) — el corazón}{\blkCarga}
|
||||||
|
\blockframe{4 · Sensado: batería / 5 V / ignición}{\blkSensado}
|
||||||
|
\blockframe{5 · Ventilador (2 hilos, 5 V — PA6)}{\blkVent}
|
||||||
|
\blockframe{6 · Sensor de temperatura I\textsuperscript{2}C (PB6 / PB7)}{\blkTemp}
|
||||||
|
\blockframe{7 · Reset (opcional) y Gauge de batería}{\blkResetGauge}
|
||||||
|
\blockframe{8 · Conexión del stack RTK — modo por defecto (observa)}{\blkStack}
|
||||||
|
\blockframe{9 · Modo B — Diagnóstico por NTRIP (relé + inyección \$PHLG)}{\blkStackB}
|
||||||
|
\blockframe{10 · Respaldo de batería (proto): TP4056 + MT3608}{\blkBatt}
|
||||||
|
\blockframe{11 · Temperatura analógica (NTC 10k $\rightarrow$ PB1)}{\blkTempA}
|
||||||
|
|
||||||
|
\begin{frame}[standout]
|
||||||
|
Diagrama de referencia\\ para el armado del prototipo
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
\documentclass[border=16pt]{standalone}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage{circuitikz}
|
||||||
|
\usepackage{helvet}\renewcommand{\familydefault}{\sfdefault}
|
||||||
|
\input{wiring-blocks}
|
||||||
|
\begin{document}
|
||||||
|
\begin{tikzpicture}[every node/.append style={font=\footnotesize}]
|
||||||
|
% ---- title ----
|
||||||
|
\node[anchor=north west,font=\bfseries\Large,Indigo] at (-2,6.0)
|
||||||
|
{HBOX Watchdog v3 — Diagrama de Cableado del Prototipo (CircuiTikZ)};
|
||||||
|
\node[anchor=north west,font=\small,gray] at (-2,5.2)
|
||||||
|
{Tarjeta DEV · Firmware v2.3 · STM32F411 Blackpill · Proyecto Drogheda / Helgen · Diagramas v2 · 2026-07-02};
|
||||||
|
% legend
|
||||||
|
\begin{scope}[shift={(-2,4.2)}]
|
||||||
|
\foreach \i/\c/\t in {0/net5V/{5 V},1.7/net3V3/{3.3 V},3.3/netGND/GND,4.7/netSig/{Señal},6.3/netAna/{Analóg. (PA0, PA4, PB1)},10.1/netIgn/{Ign. cruda 12--24 V}}{
|
||||||
|
\draw[\c,line width=2pt] (\i,0)--(\i+0.5,0); \node[anchor=west,font=\scriptsize] at (\i+0.55,0){\t};}
|
||||||
|
\end{scope}
|
||||||
|
% ---- block grid ----
|
||||||
|
\def\cw{14.0} \def\ch{9.4}
|
||||||
|
\newcommand\cell[4]{\begin{scope}[shift={(#1*\cw, #2*\ch)}]
|
||||||
|
\node[anchor=north west,font=\bfseries,Indigo] at (-2,3.7){#3}; #4 \end{scope}}
|
||||||
|
\cell{0}{0}{1 · Rieles de alimentación}{\blkRieles}
|
||||||
|
\cell{1}{0}{2 · LED de estado (PB0)}{\blkLED}
|
||||||
|
\cell{0}{-1}{3 · Interruptor de carga (PA1) — el corazón}{\blkCarga}
|
||||||
|
\cell{1}{-1}{4 · Sensado: batería / 5 V / ignición}{\blkSensado}
|
||||||
|
\cell{0}{-2}{5 · Ventilador (2 hilos, 5 V)}{\blkVent}
|
||||||
|
\cell{1}{-2}{6 · Sensor de temperatura I\textsuperscript{2}C}{\blkTemp}
|
||||||
|
\cell{0}{-3}{7 · Reset (opcional) y Gauge de batería}{\blkResetGauge}
|
||||||
|
\cell{0}{-4}{8 · Conexión del stack RTK (modo por defecto): simpleRTK2B Pro + 4G NTRIP}{\blkStack}
|
||||||
|
\cell{0}{-5}{9 · Modo B — Diagnóstico por NTRIP (relé + inyección \$PHLG)}{\blkStackB}
|
||||||
|
\cell{0}{-6}{10 · Respaldo de batería (proto): TP4056 + MT3608 — el PCB usa LTC4040}{\blkBatt}
|
||||||
|
\cell{1}{-6}{11 · Temperatura analógica (NTC $\rightarrow$ PB1)}{\blkTempA}
|
||||||
|
% notes cell (1,-3)
|
||||||
|
\begin{scope}[shift={(1*\cw,-3*\ch)}]
|
||||||
|
\node[anchor=north west,font=\bfseries,Indigo] at (-2,3.4){Avisos};
|
||||||
|
\node[anchor=north west,font=\scriptsize,text width=11cm] at (-2,2.6){%
|
||||||
|
$\bullet$ IRLZ44N debe ser \textbf{lógico} (no IRF540/IRFZ44).\\
|
||||||
|
$\bullet$ Nunca 5 V directo a PA0/PA4/PB1/PA5 (PA5 lógico $\le$ 3.3 V).\\
|
||||||
|
$\bullet$ El ventilador usa un \textbf{5 V separado}, no la salida ``stack''.\\
|
||||||
|
$\bullet$ Apagado = estado seguro: el ``stack'' arranca APAGADO.\\
|
||||||
|
$\bullet$ Cobertura: \textbf{Sección 1 + 3} = suficiente; Sección 2 (TP4056/MT3608) sólo para el respaldo de batería.};
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{document}
|
||||||
275
03-Architecture-Hardware/circuitikz-wiring/wiring-blocks.tex
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
% wiring-blocks.tex — shared CircuiTikZ blocks (es-MX) — Drogheda Watchdog v3 proto
|
||||||
|
% Requires: \usepackage{circuitikz} in the host document, then \input{wiring-blocks}
|
||||||
|
\usetikzlibrary{calc}
|
||||||
|
\definecolor{net5V}{HTML}{C62828}
|
||||||
|
\definecolor{net3V3}{HTML}{EF6C00}
|
||||||
|
\definecolor{netGND}{HTML}{212121}
|
||||||
|
\definecolor{netSig}{HTML}{1565C0}
|
||||||
|
\definecolor{netAna}{HTML}{2E7D32}
|
||||||
|
\definecolor{netTac}{HTML}{B8860B}
|
||||||
|
\definecolor{netIgn}{HTML}{800020}% guinda — ignición cruda 12–24 V (GX16 p3)
|
||||||
|
\definecolor{Indigo}{HTML}{2C3C5B}
|
||||||
|
\ctikzset{bipoles/length=0.75cm, font=\footnotesize}
|
||||||
|
% \pin{color}{nodename}{coord}{label}
|
||||||
|
\newcommand{\pin}[4]{\node[circle,fill=#1,text=white,inner sep=1.7pt,font=\bfseries\tiny] (#2) at (#3) {#4};}
|
||||||
|
\usetikzlibrary{arrows.meta}
|
||||||
|
% \ant{x}{y} — small antenna glyph rooted at (x,y)
|
||||||
|
\newcommand{\ant}[2]{\draw (#1,#2) -- ++(0,0.34) -- ++(-0.18,0.22); \draw (#1,#2) ++(0,0.34) -- ++(0.18,0.22);}
|
||||||
|
|
||||||
|
% ===== 1 · RIELES =====
|
||||||
|
\newcommand{\blkRieles}{%
|
||||||
|
\coordinate (r5) at (0,3.0); \coordinate (rg) at (0,-2.2);
|
||||||
|
\draw[net5V,line width=1pt] (-1.6,3.0)--(10.6,3.0); \node[net5V,font=\bfseries,anchor=south east] at (10.6,3.05){5 V};
|
||||||
|
\draw[netGND,line width=1pt] (-1.6,-2.2)--(10.6,-2.2); \node[netGND,font=\bfseries,anchor=north east] at (10.6,-2.25){GND};
|
||||||
|
\node[draw,rounded corners,minimum width=2.1cm,minimum height=1.5cm,align=center,font=\scriptsize](src) at (-0.2,0.4){Fuente 5 V\\SD-15B-05\\o banco};
|
||||||
|
\draw[net5V] (src.north) -- (src.north|-r5);
|
||||||
|
\draw[netGND] (src.south) -- (src.south|-rg);
|
||||||
|
\node[draw,fill=blue!8,rounded corners,minimum width=2.6cm,minimum height=1.8cm,align=center,font=\scriptsize](bp) at (4.2,0.4){\textbf{Blackpill}\\STM32F411};
|
||||||
|
\draw[net5V] (bp.north) -- (bp.north|-r5);
|
||||||
|
\draw[netGND] (bp.south) -- (bp.south|-rg);
|
||||||
|
\node[net3V3,font=\scriptsize,anchor=west] at (bp.east) {$\rightarrow$ 3.3 V};
|
||||||
|
\draw (9.0,3.0) to[C,l_=$100\,\mu$F$+$100\,nF] (9.0,-2.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 2 · LED DE ESTADO =====
|
||||||
|
\newcommand{\blkLED}{%
|
||||||
|
\pin{netSig}{PB0}{-1,0}{PB0}
|
||||||
|
\draw[netSig] (PB0) to[R,l=$330\,\Omega$,*-] (2.6,0);
|
||||||
|
\draw (2.6,0) to[leD] (2.6,-2.2) node[ground]{};
|
||||||
|
\node[anchor=west,font=\scriptsize,align=left,text width=3.7cm] at (3.6,-0.9){PB0 $\rightarrow$ 330\,$\Omega$ $\rightarrow$ ánodo; cátodo $\rightarrow$ GND.};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 3 · INTERRUPTOR DE CARGA =====
|
||||||
|
\newcommand{\blkCarga}{%
|
||||||
|
\coordinate (r5) at (0,3.0);
|
||||||
|
\draw[net5V,line width=1pt] (-1.6,3.0)--(9.2,3.0); \node[net5V,font=\bfseries,anchor=south east] at (9.2,3.05){5 V};
|
||||||
|
\pin{netSig}{PA1}{-1.6,0}{PA1}
|
||||||
|
\node[npn,anchor=base](Q) at (2,0){};
|
||||||
|
\node[font=\scriptsize,anchor=north] at ($(Q.south)+(0,-0.05)$){2N3904};
|
||||||
|
\draw[netSig] (PA1) to[R,l=$1\,\mathrm{k}\Omega$] (Q.base);
|
||||||
|
\draw (Q.emitter) -- ++(0,-1.4) node[ground]{};
|
||||||
|
\node[pmos,anchor=gate](M) at (6,1.7){};
|
||||||
|
\node[font=\scriptsize,anchor=south] at ($(M.north)+(0,0.05)$){IRF9540 (P)};
|
||||||
|
\coordinate (corner) at (Q.collector |- M.gate);
|
||||||
|
\draw[netSig] (Q.collector) -- (corner) -- (M.gate);
|
||||||
|
\draw (corner) to[R,l_=$10\,\mathrm{k}\Omega$] (corner |- r5);
|
||||||
|
\fill (corner) circle(1.6pt);
|
||||||
|
\draw[net5V] (M.source) -- (M.source |- r5);
|
||||||
|
\draw (M.drain) -- ++(0,-1.6) coordinate(sal);
|
||||||
|
\pin{netSig}{SAL}{sal}{SAL}
|
||||||
|
\node[anchor=west,font=\scriptsize] at ($(sal)+(0.25,0)$){Salida ``stack'' ($\rightarrow$ bloque 8)};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 4 · SENSADO =====
|
||||||
|
\newcommand{\blkSensado}{%
|
||||||
|
% PA0
|
||||||
|
\draw (-1.7,2.2) to[battery1,l_={18650 (1S4P, $\sim$12 Ah)}] (-0.2,2.2);
|
||||||
|
\pin{netAna}{PA0}{2.6,2.2}{PA0}
|
||||||
|
\draw[netAna] (-0.2,2.2) to[R,l=$10$k] (PA0);
|
||||||
|
\draw[netAna] (PA0) to[R,l=$10$k] (5.2,2.2); \draw (5.2,2.2)--++(0,-0.7) node[ground]{};
|
||||||
|
\node[anchor=west,font=\scriptsize] at (6.2,2.2){$\div2$ analóg.};
|
||||||
|
% PA4
|
||||||
|
\node[net5V,font=\bfseries\scriptsize,anchor=east] at (-1.7,0.4){5 V}; \draw[net5V] (-1.7,0.4)--(-0.2,0.4);
|
||||||
|
\pin{netAna}{PA4}{2.6,0.4}{PA4}
|
||||||
|
\draw[netAna] (-0.2,0.4) to[R,l=$10$k] (PA4);
|
||||||
|
\draw[netAna] (PA4) to[R,l=$10$k] (5.2,0.4); \draw (5.2,0.4)--++(0,-0.7) node[ground]{};
|
||||||
|
\node[anchor=west,font=\scriptsize] at (6.2,0.4){$\div2$ analóg.};
|
||||||
|
% PA5 — ignición real: 12–24 V -> DFR1015 (IN+/IN-/OUT+/OUT-) -> 100R -> (clamp + cap) -> PA5
|
||||||
|
\node[draw,rounded corners,minimum width=1.5cm,minimum height=1.25cm,font=\tiny,align=center](DFR) at (-0.35,-1.45){DFR1015\\$\rightarrow$\,5 V};
|
||||||
|
% ignition -> IN+ (upper-left)
|
||||||
|
\node[netIgn,font=\tiny,align=right,anchor=east] at (-2.05,-1.15){Ign.\\12–24 V\\(GX16 p3)};
|
||||||
|
\draw[netIgn,line width=0.9pt] (-2.0,-1.15) -- (-1.1,-1.15); \node[font=\tiny,anchor=south west] at (-1.08,-1.12){+};
|
||||||
|
% IN- (lower-left) -> common GND
|
||||||
|
\draw[line width=0.9pt] (-1.1,-1.75) -- (-1.6,-1.75) -- (-1.6,-2.45); \node[font=\tiny,anchor=north west] at (-1.08,-1.78){$-$};
|
||||||
|
% OUT+ (upper-right) -> 100R -> PA5
|
||||||
|
\draw[line width=0.9pt] (0.4,-1.15) to[R,l=$100$] (2.2,-1.15); \node[font=\tiny,anchor=south east] at (0.38,-1.12){+};
|
||||||
|
\coordinate (p5) at (2.7,-1.15);
|
||||||
|
\pin{netSig}{PA5}{3.5,-1.15}{PA5}
|
||||||
|
\draw[netSig,line width=0.9pt] (2.2,-1.15) -- (PA5); \fill (p5) circle(1.3pt);
|
||||||
|
% OUT- (lower-right) -> common GND
|
||||||
|
\draw[line width=0.9pt] (0.4,-1.75) -- (0.9,-1.75) -- (0.9,-2.45); \node[font=\tiny,anchor=north east] at (0.38,-1.78){$-$};
|
||||||
|
% common DFR ground (IN-/OUT- = GND del sistema)
|
||||||
|
\draw[line width=0.9pt] (-1.6,-2.45) -- (0.9,-2.45); \draw (-0.35,-2.45) -- (-0.35,-2.55) node[ground]{};
|
||||||
|
\node[font=\tiny,anchor=north] at (-0.35,-2.98){GND (IN$-$/OUT$-$)};
|
||||||
|
% BAT54 clamp to 3V3 + 100nF debounce on PA5
|
||||||
|
\draw[line width=0.8pt] (p5) -- (2.7,-0.95); \draw[line width=0.8pt] (2.7,-0.95) to[D,l_=BAT54] (2.7,-0.2);
|
||||||
|
\draw[net3V3,line width=0.9pt] (2.35,-0.2) -- (3.05,-0.2); \node[net3V3,font=\tiny,anchor=south] at (2.7,-0.16){3V3};
|
||||||
|
\draw[line width=0.8pt] (p5) to[C,l_=100\,nF] (2.7,-2.5); \draw (2.7,-2.5) node[ground]{};
|
||||||
|
\node[font=\tiny,anchor=west] at (3.85,-1.15){PA5 digital};
|
||||||
|
\node[anchor=north west,font=\tiny,align=left,text width=9.8cm] at (-2.1,-3.5){\textbf{!} \textbf{Banco (proto):} sin DFR1015 — un apagador \textbf{3V3 $\rightarrow$ PA5} simula la ignición. \textbf{Sin divisor}; el DFR1015 acepta 12 y 24 V y su \textbf{GND (IN$-$/OUT$-$) va al GND del sistema}; PA5 $\le$ 3.3 V.};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 5 · VENTILADOR (horizontal) =====
|
||||||
|
\newcommand{\blkVent}{%
|
||||||
|
\coordinate (r5) at (0,2.6);
|
||||||
|
% LM2596 makes the fan's SEPARATE 5 V (24 V -> 5 V)
|
||||||
|
\node[net5V,font=\bfseries\tiny,anchor=east] at (-2.55,2.6){24 V};
|
||||||
|
\draw[net5V,line width=0.9pt] (-2.5,2.6) -- (-2.15,2.6);
|
||||||
|
\node[draw,rounded corners,fill=blue!6,minimum width=1.5cm,minimum height=0.85cm,font=\tiny,align=center](LM) at (-1.4,2.6){LM2596\\24$\rightarrow$5 V};
|
||||||
|
\draw[line width=0.8pt] (-1.4,2.175) -- (-1.4,1.55) node[ground]{};
|
||||||
|
\draw[net5V,line width=1pt] (-0.65,2.6)--(7.6,2.6); \node[net5V,font=\bfseries,anchor=south east] at (7.6,2.65){5 V sep.};
|
||||||
|
% gate drive: PA6 -> 220 -> gate ; 100k gate -> GND
|
||||||
|
\pin{netSig}{PA6}{-1.6,0}{PA6}
|
||||||
|
\draw[netSig,line width=0.9pt] (PA6) to[R,l=$220$] (1.4,0);
|
||||||
|
\node[nmos](M) at (2.7,0){};
|
||||||
|
\draw[netSig,line width=0.9pt] (1.4,0) -- (M.gate); \fill (1.4,0) circle(1.3pt);
|
||||||
|
\draw[line width=0.9pt] (1.4,0) to[R,l_=$100$k] (1.4,-1.6); \draw (1.4,-1.6) node[ground]{};
|
||||||
|
\draw[line width=0.9pt] (M.source) -- (M.source|-0,-1.6) node[ground]{};
|
||||||
|
\node[font=\tiny,anchor=south east] at ($(M.gate)+(-0.02,0.05)$){G};
|
||||||
|
\node[font=\tiny,anchor=north west] at ($(M.source)+(0.06,-0.04)$){S};
|
||||||
|
\node[font=\tiny,anchor=south west] at ($(M.drain)+(0.05,0.05)$){D};
|
||||||
|
\node[font=\scriptsize,anchor=south] at (2.7,0.95){IRLZ44N (N)};
|
||||||
|
% 2-wire fan to the right, AT drain height -> clean horizontal drain wire to fan(-)
|
||||||
|
\path (M.drain) ++(3.0,0) coordinate(fc);
|
||||||
|
\node[draw,circle,minimum size=1.25cm,font=\scriptsize](F) at (fc){VENT};
|
||||||
|
\node[font=\tiny,anchor=north] at ($(F.south)+(0,-0.03)$){2 hilos};
|
||||||
|
\coordinate (fk) at ($(F.west)+(-0.6,0)$);
|
||||||
|
\draw[line width=0.9pt] (M.drain) -- (F.west); \fill (fk) circle(1.3pt);
|
||||||
|
\node[font=\tiny,anchor=north west] at ($(F.west)+(0.02,-0.03)$){$-$};
|
||||||
|
\node[net5V,font=\tiny,anchor=south west] at ($(F.north)+(0.02,0.02)$){+};
|
||||||
|
\draw[net5V,line width=0.9pt] (F.north) -- (F.north|-r5);
|
||||||
|
% flyback diode across fan (band/cathode -> +5V)
|
||||||
|
\draw[line width=0.9pt] (fk) to[D,l=1N5819] (fk|-r5);
|
||||||
|
% note (2-wire fan: no tach)
|
||||||
|
\node[anchor=north west,font=\scriptsize,align=left,text width=9.7cm] at (-2.6,-2.2){\textbf{!} Ventilador de \textbf{2 hilos}: \textbf{+} $\rightarrow$ 5 V sep. y \textbf{$-$} $\rightarrow$ \textbf{DRAIN (D)}. \textbf{G} = control (PA6); \textbf{S} = GND. El \textbf{5 V sep. lo hace un LM2596} (24$\rightarrow$5 V, \textbf{ajústalo a 5.0 V}) para que el arranque del ventilador no hunda el 5 V principal. \textbf{Sin tach}: PB10 sin usar (DNP).};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 6 · TEMP I2C =====
|
||||||
|
\newcommand{\blkTemp}{%
|
||||||
|
\coordinate (r3) at (0,2.6);
|
||||||
|
\node[draw,rounded corners,minimum width=2.3cm,minimum height=2.7cm](S) at (0,0){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center] at (0,0.7){SHT40 /\\TMP102};
|
||||||
|
\node[font=\tiny] at (0,-0.7){0x44 / 0x48};
|
||||||
|
\foreach \y/\nm in {0.9/VCC,0.35/GND,-0.4/SCL,-0.95/SDA}{\draw (1.15,\y)--(1.7,\y); \node[anchor=east,font=\tiny] at (1.05,\y){\nm};}
|
||||||
|
\draw[net3V3] (1.7,0.9) -| (3.2,2.6); \node[net3V3,anchor=south,font=\scriptsize] at (3.2,2.6){3V3};
|
||||||
|
\draw[netGND] (1.7,0.35) -- ++(0.5,0) -- ++(0,-1.4) node[ground]{};
|
||||||
|
\pin{netSig}{PB6}{3.6,-0.4}{PB6} \draw[netSig] (1.7,-0.4)--(PB6);
|
||||||
|
\pin{netSig}{PB7}{3.6,-0.95}{PB7} \draw[netSig] (1.7,-0.95)--(PB7);
|
||||||
|
\draw[netSig] (2.6,-0.4) to[R,l=$4.7$k] (2.6,1.8) -- (2.6,2.6) -- (3.2,2.6);
|
||||||
|
\node[anchor=west,font=\scriptsize] at (4.4,-0.7){pull-ups 4.7\,k a 3V3};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 7 · RESET + GAUGE =====
|
||||||
|
\newcommand{\blkResetGauge}{%
|
||||||
|
\pin{netSig}{NRST}{-1.2,1.6}{NRST}
|
||||||
|
\draw (NRST) -- (0.6,1.6); \draw (0.6,1.6) to[push button] (2.4,1.6);
|
||||||
|
\draw[netGND] (2.4,1.6) -- ++(0,-0.8) node[ground]{};
|
||||||
|
\node[anchor=west,font=\scriptsize] at (3.0,1.6){botón de reset $\rightarrow$ GND};
|
||||||
|
\foreach \i/\nm in {0/PB12,1/PB13,2/PB14,3/PB15}{%
|
||||||
|
\pin{netSig}{\nm}{\i*2.1,-0.4}{\nm}
|
||||||
|
\draw (\nm) to[R,l=$330$] (\i*2.1,-1.9); \draw (\i*2.1,-1.9) to[leD] (\i*2.1,-3.0) node[ground]{};
|
||||||
|
}
|
||||||
|
\node[anchor=west,font=\scriptsize,Indigo] at (-0.3,-3.7){\textbf{!} Quedan apagados hasta tener firmware};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 8 · CONEXIÓN DEL STACK RTK (simpleRTK2B + 4G NTRIP) =====
|
||||||
|
\newcommand{\blkStack}{%
|
||||||
|
\node[font=\scriptsize\bfseries,Indigo,anchor=south] at (-1.3,1.9){del watchdog (Blackpill)};
|
||||||
|
\pin{net5V}{wSAL}{-1.3,1.2}{SAL}
|
||||||
|
\pin{netGND}{wGND}{-1.3,0.3}{GND}
|
||||||
|
\pin{netSig}{wTX}{-1.3,-0.7}{PA2}
|
||||||
|
\pin{netSig}{wRX}{-1.3,-1.7}{PA3}
|
||||||
|
\node[anchor=west,font=\tiny,gray] at (-0.95,-0.7){TX}; \node[anchor=west,font=\tiny,gray] at (-0.95,-1.7){RX};
|
||||||
|
\node[anchor=north,font=\tiny,gray] at (-1.3,0.95){SAL = bloque 3};
|
||||||
|
% simpleRTK2B Pro
|
||||||
|
\node[draw,fill=blue!7,rounded corners,minimum width=3.5cm,minimum height=4.1cm](F9P) at (4.3,-0.2){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center] at (4.3,1.35){simpleRTK2B Pro\\(ZED-F9P)};
|
||||||
|
\foreach \yy/\nm/\cc in {1.2/{5 V}/net5V,0.3/{GND}/netGND,-0.7/{UART1 RX}/netSig,-1.7/{UART1 TX}/netSig}{%
|
||||||
|
\draw[\cc,line width=0.9pt] (2.55,\yy)--(2.95,\yy); \node[anchor=west,font=\tiny] at (3.0,\yy){\nm};}
|
||||||
|
\draw[net5V,line width=1pt] (wSAL) -- (2.55,1.2); \node[net5V,font=\tiny,anchor=south] at (1.0,1.25){5 V conmutado};
|
||||||
|
\draw[netGND,line width=0.9pt] (wGND) -- (2.55,0.3);
|
||||||
|
\draw[netSig,line width=0.9pt] (wTX) -- (2.55,-0.7);
|
||||||
|
\draw[netSig,line width=0.9pt] (wRX) -- (2.55,-1.7);
|
||||||
|
% GNSS antenna
|
||||||
|
\draw (4.3,1.85) -- (4.3,2.45); \ant{4.3}{2.45} \node[anchor=west,font=\tiny] at (4.6,2.72){Antena GNSS (SMA)};
|
||||||
|
% 4G NTRIP master on the XBee socket
|
||||||
|
\node[draw,fill=black!8,rounded corners,minimum width=3.0cm,minimum height=2.3cm](G4) at (9.1,0.2){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center] at (9.1,0.7){4G NTRIP\\Master (XBee)};
|
||||||
|
\node[font=\tiny,align=center] at (9.1,-0.4){socket XBee del Pro\\(UART2 interno)};
|
||||||
|
\draw[densely dashed,line width=0.9pt] (6.05,0.2)--(7.6,0.2); \node[font=\tiny,anchor=south,align=center] at (6.82,0.3){socket XBee\\(5 V + datos)};
|
||||||
|
% LTE antennas
|
||||||
|
\draw (8.5,1.35)--(8.5,1.95); \ant{8.5}{1.95} \draw (9.7,1.35)--(9.7,1.95); \ant{9.7}{1.95} \node[anchor=west,font=\tiny] at (9.95,2.15){2$\times$ ant. LTE};
|
||||||
|
% RTCM flow
|
||||||
|
\draw[-{Stealth},Indigo,thick] (7.6,-0.55)--(6.05,-0.55); \node[Indigo,font=\tiny,anchor=north] at (6.82,-0.6){RTCM3 (correcciones)};
|
||||||
|
% notes
|
||||||
|
\node[anchor=north west,font=\scriptsize,align=left,text width=11.4cm] at (-1.3,-2.5){\textbf{!} El 4G va en el \textbf{socket XBee del simpleRTK2B Pro}, no al Blackpill; ahí recibe 5 V y datos. Las \textbf{correcciones (RTCM3) llegan por 4G}, no por el GNSS.\\ \textbf{!} Cruce \textbf{TX$\leftrightarrow$RX}: PA2 (TX) $\rightarrow$ UART1 RX y PA3 (RX) $\leftarrow$ UART1 TX. GND común. Relé \$PHLG opcional (PA9/PA10) = DNP, apagado por defecto.};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 10 · RESPALDO DE BATERÍA (PROTO): TP4056 + MT3608 =====
|
||||||
|
\newcommand{\blkBatt}{%
|
||||||
|
\coordinate (r5) at (0,2.4);
|
||||||
|
\draw[net5V,line width=1pt] (-2.0,2.4)--(8.8,2.4); \node[net5V,font=\bfseries,anchor=south east] at (8.8,2.45){MAIN5V (al sistema)};
|
||||||
|
% vehicle 5V + OR diode D1
|
||||||
|
\node[net5V,font=\bfseries\tiny,anchor=east,align=right] at (-2.05,1.4){5 V veh.\\(SD-15B-05)};
|
||||||
|
\draw[net5V,line width=0.9pt] (-2.0,1.4) -- (-0.125,1.4);
|
||||||
|
\fill (-1.1,1.4) circle(1.2pt); \draw[line width=0.9pt] (-1.1,1.4) -- (-1.1,1.8); \draw[line width=0.9pt] (-1.1,1.8) to[D] (-1.1,2.4); \node[font=\tiny,anchor=west] at (-1.0,2.06){1N5819};
|
||||||
|
% TP4056 charger
|
||||||
|
\node[draw,rounded corners,fill=blue!6,minimum width=1.55cm,minimum height=1.1cm,font=\tiny,align=center](TP) at (0.65,1.0){TP4056\\cargador};
|
||||||
|
\draw[line width=0.9pt] (-0.125,0.74) -- (-0.45,0.74) -- (-0.45,0.2) node[ground]{};
|
||||||
|
% shared battery+ node: TP BAT+ -- 18650+ -- MT IN+ (y=0.74)
|
||||||
|
\draw[line width=0.9pt] (1.425,0.74) -- (3.9,0.74);
|
||||||
|
\draw (2.5,0.74) -- (2.5,0.24); \draw (2.5,0.24) to[battery1] (2.5,-1.2); \fill (2.5,0.74) circle(1.2pt);
|
||||||
|
\node[font=\tiny,anchor=east,align=right] at (2.28,-0.55){18650\\1S4P $\sim$12 Ah};
|
||||||
|
\draw[line width=0.9pt] (2.5,-1.2) -- (2.5,-1.65) node[ground]{};
|
||||||
|
% NTC (cell temp)
|
||||||
|
\draw[line width=0.8pt] (3.8,-0.28) to[thR,l_={NTC 10k}] (3.8,-1.2) node[ground]{}; \node[font=\tiny,anchor=south,align=center] at (3.8,-0.23){NTC — temp de celda\\$\rightarrow$ TEMP del cargador};
|
||||||
|
% MT3608 boost
|
||||||
|
\node[draw,rounded corners,fill=blue!6,minimum width=1.7cm,minimum height=1.1cm,font=\tiny,align=center](MT) at (4.75,1.0){MT3608\\elev.$\rightarrow$5 V};
|
||||||
|
\draw[line width=0.9pt] (4.75,0.45) -- (4.75,-0.55) node[ground]{};
|
||||||
|
\draw[line width=0.9pt] (5.6,1.26) -- (6.2,1.26); \fill (6.2,1.26) circle(1.2pt); \draw[line width=0.9pt] (6.2,1.26) -- (6.2,1.8); \draw[line width=0.9pt] (6.2,1.8) to[D] (6.2,2.4); \node[font=\tiny,anchor=west] at (6.3,2.06){1N5819};
|
||||||
|
% note
|
||||||
|
\node[anchor=north west,font=\tiny,align=left,text width=10.4cm] at (-2.05,-2.05){\textbf{!} \textbf{Stand-in de banco} (ya lo tienes): el \textbf{vehículo carga el 18650} por el TP4056; el \textbf{MT3608 eleva} 3.6 V $\rightarrow$ 5 V; los \textbf{2× 1N5819} hacen OR de veh + respaldo hacia MAIN5V (ajusta el MT3608 apenas por debajo del 5 V del vehículo para que el vehículo tenga prioridad). \textbf{BAT\_SENSE} = 18650+ $\rightarrow$ PA0 (Bloque 4). El \textbf{NTC va al pin TEMP del cargador} (TP4056 proto / LTC4040 en PCB), \textbf{no al MCU}; el MCU lee la temperatura por el \textbf{TMP102} (I\textsuperscript{2}C, Bloque 6). El \textbf{PCB usa el LTC4040} (Bloque B, por diseñar).};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 11 · TEMPERATURA ANALÓGICA (NTC 10k -> PB1 ADC) =====
|
||||||
|
\newcommand{\blkTempA}{%
|
||||||
|
\node[net3V3,font=\bfseries\scriptsize,anchor=south] at (0,2.1){3V3};
|
||||||
|
\draw[net3V3,line width=0.9pt] (0,2.05) -- (0,1.85);
|
||||||
|
\draw (0,1.85) to[R,l=$10$k] (0,0.8);
|
||||||
|
\coordinate (nd) at (0,0.45);
|
||||||
|
\draw (0,0.8) -- (nd); \fill (nd) circle(1.3pt);
|
||||||
|
\draw (nd) to[thR,l=NTC\,10k] (0,-1.4) node[ground]{};
|
||||||
|
\draw[netAna,line width=0.9pt] (nd) -- (1.3,0.45); \pin{netAna}{PB1}{1.6,0.45}{PB1}
|
||||||
|
\node[font=\tiny,anchor=west] at (1.95,0.45){ADC (temperatura)};
|
||||||
|
\draw (nd) -- (-0.85,0.45); \draw (-0.85,0.45) to[C,l_=100\,nF] (-0.85,-0.75) node[ground]{};
|
||||||
|
\node[anchor=north west,font=\scriptsize,align=left,text width=9.4cm] at (-1.7,-1.9){\textbf{!} \textbf{Sin SHT40, ésta es tu temperatura.} Divisor \textbf{3V3 — 10k(1\%) — NTC 10k — GND} $\to$ \textbf{PB1} (ADC1\_IN9, libre). $\approx$1.65 V a 25 °C; baja al calentar. $\approx$165\,$\mu$A (sin auto-calentamiento). Firmware: leer ADC + \textbf{Beta} ($\approx$3950)/Steinhart. \textbf{Colócalo en el punto caliente} (batería/modem) $>$ aire; puede disparar \textbf{CHRG\_EN} (corte de carga). Es PCB/firmware — en protoboard puentea el NTC a PB1 para probar.};
|
||||||
|
}
|
||||||
|
|
||||||
|
% ===== 9 · MODO B — DIAGNÓSTICO POR NTRIP (relé + inyección $PHLG) =====
|
||||||
|
\newcommand{\blkStackB}{%
|
||||||
|
% ---------- F9P (left) ----------
|
||||||
|
\node[draw,fill=blue!7,rounded corners,minimum width=2.7cm,minimum height=4.6cm](F9P) at (1.75,0){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center] at (1.75,1.7){simpleRTK2B\\Pro (F9P)};
|
||||||
|
\node[font=\tiny,align=center,Indigo] at (1.75,-1.85){sw $\rightarrow$ UART1\\(UART2 libre)};
|
||||||
|
\draw (1.75,2.3)--(1.75,2.9); \ant{1.75}{2.9} \node[anchor=west,font=\tiny] at (2.0,3.05){Ant. GNSS};
|
||||||
|
\foreach \yy/\nm/\cc in {1.9/{5 V}/net5V,1.35/{GND}/netGND,0.6/{UART1 RX}/netSig,0.05/{UART1 TX}/netSig,-0.8/{TX2}/netSig,-1.5/{RX2}/netSig}{%
|
||||||
|
\draw[\cc,line width=0.9pt] (3.1,\yy)--(3.5,\yy); \node[anchor=east,font=\tiny] at (3.05,\yy){\nm};}
|
||||||
|
% ---------- Watchdog (middle, in-line) ----------
|
||||||
|
\node[draw,fill=Indigo!8,rounded corners,minimum width=2.5cm,minimum height=4.0cm](WD) at (6.4,0){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center,Indigo] at (6.4,1.5){Watchdog\\(Blackpill)};
|
||||||
|
\node[font=\tiny,align=center] at (6.4,-1.5){relé verbatim\\+ inyecta \$PHLG};
|
||||||
|
\foreach \yy/\nm/\cc in {1.9/{5 V}/net5V,1.35/{GND}/netGND,0.6/{PA2}/netSig,0.05/{PA3}/netSig,-0.8/{PA10}/netSig}{%
|
||||||
|
\draw[\cc,line width=0.9pt] (5.15,\yy)--(4.75,\yy); \node[anchor=west,font=\tiny] at (5.2,\yy){\nm};}
|
||||||
|
\draw[netSig,line width=0.9pt] (7.65,-0.8)--(8.05,-0.8); \node[anchor=east,font=\tiny] at (7.6,-0.8){PA9};
|
||||||
|
% ---------- 4G modem on breakout (right) ----------
|
||||||
|
\node[draw,fill=black!8,rounded corners,minimum width=2.7cm,minimum height=3.2cm](G4) at (10.6,-0.1){};
|
||||||
|
\node[font=\bfseries\scriptsize,align=center] at (10.6,0.8){4G NTRIP\\Master (XBee)};
|
||||||
|
\node[font=\tiny,align=center] at (10.6,-0.25){en breakout\\(BOB-08276)};
|
||||||
|
\draw (10.1,1.5)--(10.1,2.1); \ant{10.1}{2.1} \draw (11.1,1.5)--(11.1,2.1); \ant{11.1}{2.1} \node[anchor=west,font=\tiny] at (11.3,2.25){2$\times$ LTE};
|
||||||
|
\foreach \yy/\nm/\cc in {1.0/{VCC}/net5V,-0.8/{DIN}/netSig,-1.5/{DOUT}/netSig}{%
|
||||||
|
\draw[\cc,line width=0.9pt] (9.25,\yy)--(8.85,\yy); \node[anchor=west,font=\tiny] at (9.3,\yy){\nm};}
|
||||||
|
% ---------- data connections ----------
|
||||||
|
\draw[netSig,line width=0.9pt,{Stealth}-] (3.5,0.6)--(4.75,0.6); % UART1 RX <- PA2
|
||||||
|
\draw[netSig,line width=0.9pt,-{Stealth}] (3.5,0.05)--(4.75,0.05); % UART1 TX -> PA3
|
||||||
|
\node[gray,font=\tiny,anchor=south] at (4.12,0.62){monitor};
|
||||||
|
\draw[netSig,line width=1pt,-{Stealth}] (3.5,-0.8)--(4.75,-0.8); % TX2 -> PA10
|
||||||
|
\draw[netSig,line width=1pt,-{Stealth}] (8.05,-0.8)--(8.85,-0.8); % PA9 -> DIN
|
||||||
|
\node[Indigo,font=\tiny,anchor=south] at (8.45,-0.72){\$PHLG};
|
||||||
|
% corrections direct (dashed, around the bottom)
|
||||||
|
\draw[netSig,densely dashed,line width=1pt,-{Stealth}] (8.85,-1.5) -- (8.85,-2.75) -- (3.5,-2.75) -- (3.5,-1.5);
|
||||||
|
\node[font=\tiny,anchor=south] at (6.1,-2.72){RTCM3 directo (no pasa por el MCU)};
|
||||||
|
% to server
|
||||||
|
\draw[-{Stealth},Indigo,thick] (11.9,1.5)--(12.6,2.0); \node[Indigo,font=\tiny,anchor=west] at (12.0,1.9){$\rightarrow$ servidor};
|
||||||
|
% notes
|
||||||
|
\node[anchor=north west,font=\scriptsize,align=left,text width=13.4cm] at (-1.4,-3.2){\textbf{!} \textbf{5 V/GND} de F9P, watchdog y 4G $=$ SAL/GND (bloque 3). \textbf{IOREF $=$ 3.3 V}. El 4G va en \textbf{breakout} (fuera del socket) y el switch del Pro en \textbf{UART1}, dejando UART2 libre.\\ \textbf{!} El MCU queda \textbf{en línea} en la subida (F9P TX2 $\rightarrow$ PA10 $\rightarrow$ PA9 $\rightarrow$ 4G DIN) e inyecta \$PHLG. La bajada \textbf{RTCM3 (4G DOUT $\rightarrow$ F9P RX2) es directa} (punteada). \textbf{PCB:} bypass normalmente-cerrado en UART2 $\Rightarrow$ un MCU ausente/colgado nunca corta las correcciones.};
|
||||||
|
}
|
||||||
@ -1 +0,0 @@
|
|||||||
Subproject commit 45eed65860823dd11044a02baa4c92a173d5e284
|
|
||||||
955
03-Architecture-Hardware/kicad/Drogheda-sym.kicad_sym
Normal file
@ -0,0 +1,955 @@
|
|||||||
|
(kicad_symbol_lib
|
||||||
|
(version 20241209)
|
||||||
|
(generator "kicad-mcp")
|
||||||
|
(generator_version "9.0")
|
||||||
|
(symbol "MP1584EN"
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "U"
|
||||||
|
(at 2.54 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "MP1584EN"
|
||||||
|
(at 0 -2.54 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm"
|
||||||
|
(at 0 -5.08 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "https://www.monolithicpower.com/en/mp1584.html"
|
||||||
|
(at 0 -7.62 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Description" "MP1584EN 3A 28V step-down converter (SOIC-8-EP)"
|
||||||
|
(at 0 -10.16 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "ki_keywords" "buck regulator step-down MP1584"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(symbol "MP1584EN_0_1"
|
||||||
|
(rectangle
|
||||||
|
(start -5.08 -7.62)
|
||||||
|
(end 5.08 7.62)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type background))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "MP1584EN_1_1"
|
||||||
|
(pin power_in line
|
||||||
|
(at -7.62 5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "VIN"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "7"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -7.62 2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "EN"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -7.62 0 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "FREQ"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "6"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -7.62 -2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "FB"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -7.62 -5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "COMP"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 7.62 5.08 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "BST"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "8"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 7.62 2.54 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "SW"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 0 -10.16 90)
|
||||||
|
(length 2.54)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "LTC4040EUFD"
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "U"
|
||||||
|
(at 2.54 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "LTC4040EUFD"
|
||||||
|
(at 0 -2.54 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "Package_DFN_QFN:QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm"
|
||||||
|
(at 0 -5.08 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "https://www.analog.com/media/en/technical-documentation/data-sheets/4040fb.pdf"
|
||||||
|
(at 0 -7.62 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Description" "2.5A Battery Backup Power Manager, 1S Li-Ion/LiFePO4, buck charger + boost backup, QFN-24 4x5"
|
||||||
|
(at 0 -10.16 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "ki_keywords" "battery backup charger boost power-path LTC"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(symbol "LTC4040EUFD_0_1"
|
||||||
|
(rectangle
|
||||||
|
(start -15.24 -20.32)
|
||||||
|
(end 15.24 20.32)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type background))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "LTC4040EUFD_1_1"
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 17.78 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "PFI"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "19"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 15.24 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "BSTFB"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "18"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 12.7 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "RSTFB"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "10"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -17.78 10.16 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "PROG"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -17.78 7.62 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "CLPROG"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "NTC"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "17"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "CHGOFF"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 0 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "BSTOFF"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 -2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "F2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "12"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 -5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "F1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "13"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -17.78 -7.62 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "F0"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "14"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin open_collector line
|
||||||
|
(at -17.78 -10.16 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "CHRG"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "8"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin open_collector line
|
||||||
|
(at -17.78 -12.7 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "FAULT"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "9"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin open_collector line
|
||||||
|
(at -17.78 -15.24 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "PFO"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "20"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin open_collector line
|
||||||
|
(at -17.78 -17.78 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "RST"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "11"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 17.78 17.78 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "VIN"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "6"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 17.78 15.24 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "CLN"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "7"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin output line
|
||||||
|
(at 17.78 12.7 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "IGATE"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "15"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 17.78 10.16 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "VSYS"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 17.78 7.62 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "VSYS"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "24"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 17.78 2.54 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "SW"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "21"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 17.78 0 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "SW"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "22"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 17.78 -5.08 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "BAT"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "23"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at 17.78 -10.16 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "OVSNS"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "16"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 0 -22.86 90)
|
||||||
|
(length 2.54)
|
||||||
|
(name "GND_EP"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "25"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "AO4406A"
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "Q"
|
||||||
|
(at 2.54 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "AO4406A"
|
||||||
|
(at 0 -2.54 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm"
|
||||||
|
(at 0 -5.08 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "~"
|
||||||
|
(at 0 -7.62 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Description" "N-Channel MOSFET 30V 13A 8.5mOhm SOIC-8 (pins 1-3=S, 4=G, 5-8=D) — VIN-VSYS disconnect"
|
||||||
|
(at 0 -10.16 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "ki_keywords" "nmos mosfet soic8 disconnect"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(symbol "AO4406A_0_1"
|
||||||
|
(rectangle
|
||||||
|
(start -5.08 -5.08)
|
||||||
|
(end 5.08 5.08)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type background))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "AO4406A_1_1"
|
||||||
|
(pin input line
|
||||||
|
(at -7.62 0 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "G"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -2.54 7.62 270)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 0 7.62 270)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "6"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 2.54 7.62 270)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "7"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 5.08 7.62 270)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "8"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -2.54 -7.62 90)
|
||||||
|
(length 2.54)
|
||||||
|
(name "S"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 0 -7.62 90)
|
||||||
|
(length 2.54)
|
||||||
|
(name "S"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 2.54 -7.62 90)
|
||||||
|
(length 2.54)
|
||||||
|
(name "S"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "SimpleRTK2B_Pro_Socket"
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "MOD"
|
||||||
|
(at 2.54 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "SimpleRTK2B_Pro_Socket"
|
||||||
|
(at 0 -2.54 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "Module:Arduino_UNO_R3"
|
||||||
|
(at 0 -5.08 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "https://www.ardusimple.com/simplertk2b-pro-hookup-guide/"
|
||||||
|
(at 0 -7.62 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "Description" "simpleRTK2B Pro (ZED-F9P) mounted as shield on Arduino-UNO-pattern female headers. Pads match Module:Arduino_UNO_R3. D0=TX1 D1=RX1 D2=RX2 D8=TX2 (Ardusimple pinout R00). IOREF driven 3.3V; 5V pin = input (5V=OUTPUT switch OFF); XBee-socket switch on the Pro parked on UART1."
|
||||||
|
(at 0 -10.16 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(property "ki_keywords" "ardusimple simplertk2b f9p shield socket carrier"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font (size 1.27 1.27))
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
(symbol "SimpleRTK2B_Pro_Socket_0_1"
|
||||||
|
(rectangle
|
||||||
|
(start -12.7 -26.67)
|
||||||
|
(end 12.7 24.13)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type background))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "SimpleRTK2B_Pro_Socket_1_1"
|
||||||
|
(pin output line
|
||||||
|
(at -15.24 20.32 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "TX1_D0"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "15"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -15.24 17.78 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "RX1_D1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "16"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at -15.24 15.24 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "RX2_D2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "17"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin output line
|
||||||
|
(at -15.24 12.7 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "TX2_D8"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "23"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 7.62 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "SDA"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "31"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "SCL"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "32"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "AREF"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "30"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 0 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "18"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -2.54 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "19"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -5.08 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "20"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -7.62 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D6"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "21"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -10.16 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D7"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "22"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -12.7 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D9"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "24"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -15.24 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "D10"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "25"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -17.78 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "FENCE_D11"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "26"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -20.32 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "EXTINT_D12"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "27"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -15.24 -22.86 0)
|
||||||
|
(length 2.54)
|
||||||
|
(name "TPS_D13"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "28"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 15.24 20.32 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "5V"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 17.78 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "VIN"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "8"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 15.24 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "3V3_OUT"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line
|
||||||
|
(at 15.24 12.7 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "IOREF"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 10.16 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "RESET"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line
|
||||||
|
(at 15.24 7.62 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "6"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 5.08 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "7"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 2.54 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "29"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 0 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A0"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "9"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -2.54 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "10"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -5.08 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A2"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "11"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -7.62 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A3"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "12"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -10.16 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A4"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "13"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -12.7 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "A5"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "14"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at 15.24 -17.78 180)
|
||||||
|
(length 2.54)
|
||||||
|
(name "NC"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
27490
03-Architecture-Hardware/kicad/hbox-watchdog-v3-PROD.kicad_pcb
Normal file
@ -649,7 +649,7 @@
|
|||||||
"uuid": "561403b3-895e-4153-a7be-3876ae930d43"
|
"uuid": "561403b3-895e-4153-a7be-3876ae930d43"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"used_designators": "",
|
"used_designators": "#PWR1-4",
|
||||||
"variants": []
|
"variants": []
|
||||||
},
|
},
|
||||||
"sheets": [
|
"sheets": [
|
||||||
@ -1 +0,0 @@
|
|||||||
Subproject commit e7405fa442ebed56f1ae9ccd680f16378723a92a
|
|
||||||
@ -1,95 +0,0 @@
|
|||||||
(kicad_pcb
|
|
||||||
(version 20260206)
|
|
||||||
(generator "pcbnew")
|
|
||||||
(generator_version "10.0")
|
|
||||||
(general
|
|
||||||
(thickness 1.6)
|
|
||||||
(legacy_teardrops no)
|
|
||||||
)
|
|
||||||
(paper "A4")
|
|
||||||
(title_block
|
|
||||||
(title "hbox-watchdog-v3")
|
|
||||||
(date "2026-06-23")
|
|
||||||
)
|
|
||||||
(layers
|
|
||||||
(0 "F.Cu" signal)
|
|
||||||
(2 "B.Cu" signal)
|
|
||||||
(9 "F.Adhes" user "F.Adhesive")
|
|
||||||
(11 "B.Adhes" user "B.Adhesive")
|
|
||||||
(13 "F.Paste" user)
|
|
||||||
(15 "B.Paste" user)
|
|
||||||
(5 "F.SilkS" user "F.Silkscreen")
|
|
||||||
(7 "B.SilkS" user "B.Silkscreen")
|
|
||||||
(1 "F.Mask" user)
|
|
||||||
(3 "B.Mask" user)
|
|
||||||
(17 "Dwgs.User" user "User.Drawings")
|
|
||||||
(19 "Cmts.User" user "User.Comments")
|
|
||||||
(21 "Eco1.User" user "User.Eco1")
|
|
||||||
(23 "Eco2.User" user "User.Eco2")
|
|
||||||
(25 "Edge.Cuts" user)
|
|
||||||
(27 "Margin" user)
|
|
||||||
(31 "F.CrtYd" user "F.Courtyard")
|
|
||||||
(29 "B.CrtYd" user "B.Courtyard")
|
|
||||||
(35 "F.Fab" user)
|
|
||||||
(33 "B.Fab" user)
|
|
||||||
(39 "User.1" user)
|
|
||||||
(41 "User.2" user)
|
|
||||||
(43 "User.3" user)
|
|
||||||
(45 "User.4" user)
|
|
||||||
)
|
|
||||||
(setup
|
|
||||||
(pad_to_mask_clearance 0)
|
|
||||||
(allow_soldermask_bridges_in_footprints no)
|
|
||||||
(tenting
|
|
||||||
(front yes)
|
|
||||||
(back yes)
|
|
||||||
)
|
|
||||||
(covering
|
|
||||||
(front no)
|
|
||||||
(back no)
|
|
||||||
)
|
|
||||||
(plugging
|
|
||||||
(front no)
|
|
||||||
(back no)
|
|
||||||
)
|
|
||||||
(capping no)
|
|
||||||
(filling no)
|
|
||||||
(pcbplotparams
|
|
||||||
(layerselection 0x00000000_00000000_55555555_5755f5ff)
|
|
||||||
(plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000)
|
|
||||||
(disableapertmacros no)
|
|
||||||
(usegerberextensions no)
|
|
||||||
(usegerberattributes yes)
|
|
||||||
(usegerberadvancedattributes yes)
|
|
||||||
(creategerberjobfile yes)
|
|
||||||
(dashed_line_dash_ratio 12)
|
|
||||||
(dashed_line_gap_ratio 3)
|
|
||||||
(svgprecision 4)
|
|
||||||
(plotframeref no)
|
|
||||||
(mode 1)
|
|
||||||
(useauxorigin no)
|
|
||||||
(pdf_front_fp_property_popups yes)
|
|
||||||
(pdf_back_fp_property_popups yes)
|
|
||||||
(pdf_metadata yes)
|
|
||||||
(pdf_single_document no)
|
|
||||||
(dxfpolygonmode yes)
|
|
||||||
(dxfimperialunits yes)
|
|
||||||
(dxfusepcbnewfont yes)
|
|
||||||
(psnegative no)
|
|
||||||
(psa4output no)
|
|
||||||
(plot_black_and_white yes)
|
|
||||||
(sketchpadsonfab no)
|
|
||||||
(plotpadnumbers no)
|
|
||||||
(hidednponfab no)
|
|
||||||
(sketchdnponfab yes)
|
|
||||||
(crossoutdnponfab yes)
|
|
||||||
(subtractmaskfromsilk no)
|
|
||||||
(outputformat 1)
|
|
||||||
(mirror no)
|
|
||||||
(drillshape 1)
|
|
||||||
(scaleselection 1)
|
|
||||||
(outputdirectory "")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(embedded_fonts no)
|
|
||||||
)
|
|
||||||
@ -1,138 +0,0 @@
|
|||||||
{
|
|
||||||
"board": {
|
|
||||||
"active_layer": 0,
|
|
||||||
"active_layer_preset": "",
|
|
||||||
"auto_track_width": true,
|
|
||||||
"hidden_netclasses": [],
|
|
||||||
"hidden_nets": [],
|
|
||||||
"high_contrast_mode": 0,
|
|
||||||
"net_color_mode": 1,
|
|
||||||
"opacity": {
|
|
||||||
"images": 0.6,
|
|
||||||
"pads": 1.0,
|
|
||||||
"shapes": 1.0,
|
|
||||||
"tracks": 1.0,
|
|
||||||
"vias": 1.0,
|
|
||||||
"zones": 0.6
|
|
||||||
},
|
|
||||||
"prototype_zone_fills": false,
|
|
||||||
"selection_filter": {
|
|
||||||
"dimensions": true,
|
|
||||||
"footprints": true,
|
|
||||||
"graphics": true,
|
|
||||||
"keepouts": true,
|
|
||||||
"lockedItems": false,
|
|
||||||
"otherItems": true,
|
|
||||||
"pads": true,
|
|
||||||
"text": true,
|
|
||||||
"tracks": true,
|
|
||||||
"vias": true,
|
|
||||||
"zones": true
|
|
||||||
},
|
|
||||||
"visible_items": [
|
|
||||||
"vias",
|
|
||||||
"footprint_text",
|
|
||||||
"footprint_anchors",
|
|
||||||
"ratsnest",
|
|
||||||
"grid",
|
|
||||||
"footprints_front",
|
|
||||||
"footprints_back",
|
|
||||||
"footprint_values",
|
|
||||||
"footprint_references",
|
|
||||||
"tracks",
|
|
||||||
"drc_errors",
|
|
||||||
"drawing_sheet",
|
|
||||||
"bitmaps",
|
|
||||||
"pads",
|
|
||||||
"zones",
|
|
||||||
"drc_warnings",
|
|
||||||
"drc_exclusions",
|
|
||||||
"locked_item_shadows",
|
|
||||||
"conflict_shadows",
|
|
||||||
"shapes",
|
|
||||||
"board_outline_area",
|
|
||||||
"ly_points"
|
|
||||||
],
|
|
||||||
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
|
|
||||||
"zone_display_mode": 0
|
|
||||||
},
|
|
||||||
"git": {
|
|
||||||
"integration_disabled": false,
|
|
||||||
"repo_type": "",
|
|
||||||
"repo_username": "",
|
|
||||||
"ssh_key": ""
|
|
||||||
},
|
|
||||||
"meta": {
|
|
||||||
"filename": "hbox-watchdog-v3.kicad_prl",
|
|
||||||
"version": 5
|
|
||||||
},
|
|
||||||
"net_inspector_panel": {
|
|
||||||
"col_hidden": [
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false
|
|
||||||
],
|
|
||||||
"col_order": [
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9
|
|
||||||
],
|
|
||||||
"col_widths": [
|
|
||||||
156,
|
|
||||||
141,
|
|
||||||
103,
|
|
||||||
71,
|
|
||||||
103,
|
|
||||||
103,
|
|
||||||
103,
|
|
||||||
74,
|
|
||||||
103,
|
|
||||||
103
|
|
||||||
],
|
|
||||||
"custom_group_rules": [],
|
|
||||||
"expanded_rows": [],
|
|
||||||
"filter_by_net_name": true,
|
|
||||||
"filter_by_netclass": true,
|
|
||||||
"filter_text": "",
|
|
||||||
"group_by_constraint": false,
|
|
||||||
"group_by_netclass": false,
|
|
||||||
"show_time_domain_details": false,
|
|
||||||
"show_unconnected_nets": false,
|
|
||||||
"show_zero_pad_nets": false,
|
|
||||||
"sort_ascending": true,
|
|
||||||
"sorting_column": 0
|
|
||||||
},
|
|
||||||
"open_jobsets": [],
|
|
||||||
"project": {
|
|
||||||
"files": []
|
|
||||||
},
|
|
||||||
"schematic": {
|
|
||||||
"hierarchy_collapsed": [],
|
|
||||||
"selection_filter": {
|
|
||||||
"graphics": true,
|
|
||||||
"images": true,
|
|
||||||
"labels": true,
|
|
||||||
"lockedItems": false,
|
|
||||||
"otherItems": true,
|
|
||||||
"pins": true,
|
|
||||||
"ruleAreas": true,
|
|
||||||
"symbols": true,
|
|
||||||
"text": true,
|
|
||||||
"wires": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,90 +0,0 @@
|
|||||||
2026-06-24T03:08:57.372Z [kicad] [info] Initializing server... { metadata: undefined }
|
|
||||||
2026-06-24T03:08:57.859Z [kicad] [info] Using MCP server command: /Users/leo/.nvm/versions/node/v24.16.0/bin/node with args and path: {
|
|
||||||
metadata: {
|
|
||||||
args: [
|
|
||||||
'/Users/leo/Documents/Claude/Projects/KiCAD-MCP-Server/dist/index.js',
|
|
||||||
[length]: 1
|
|
||||||
],
|
|
||||||
paths: [
|
|
||||||
'/Users/leo/.mimocode/bin',
|
|
||||||
'/opt/homebrew/share/google-cloud-sdk/bin',
|
|
||||||
'/Users/leo/.nvm/versions/node/v24.16.0/bin',
|
|
||||||
'/opt/homebrew/Cellar/openjdk@17/17.0.19/libexec/openjdk.jdk/Contents/Home/bin',
|
|
||||||
'/Users/leo/Projects/flutter/bin',
|
|
||||||
'/opt/homebrew/bin',
|
|
||||||
'/usr/local/bin',
|
|
||||||
'/System/Cryptexes/App/usr/bin',
|
|
||||||
'/usr/bin',
|
|
||||||
'/bin',
|
|
||||||
'/usr/sbin',
|
|
||||||
'/sbin',
|
|
||||||
'/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin',
|
|
||||||
'/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin',
|
|
||||||
'/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin',
|
|
||||||
'/Users/leo/.pub-cache/bin',
|
|
||||||
'/Users/leo/.local/bin',
|
|
||||||
[length]: 17
|
|
||||||
]
|
|
||||||
}
|
|
||||||
} %o
|
|
||||||
2026-06-24T03:08:57.859Z [kicad] [info] Server started and connected successfully { metadata: undefined }
|
|
||||||
2026-06-24T03:08:59.453Z [kicad] [info] Message from client: {"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{"extensions":{"io.modelcontextprotocol/ui":{"mimeTypes":["text/html;profile=mcp-app"]}}},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0} { metadata: undefined }
|
|
||||||
[2026-06-23 21:09:02,095] [INFO] Using STDIO transport for local communication
|
|
||||||
[2026-06-23 21:09:02,104] [INFO] Registering KiCAD tools, resources, and prompts...
|
|
||||||
[2026-06-23 21:09:02,104] [INFO] Registering router tools
|
|
||||||
[2026-06-23 21:09:02,105] [INFO] Router tools registered successfully
|
|
||||||
[2026-06-23 21:09:02,105] [INFO] Registering board management tools
|
|
||||||
[2026-06-23 21:09:02,106] [INFO] Board management tools registered
|
|
||||||
[2026-06-23 21:09:02,106] [INFO] Registering component management tools
|
|
||||||
[2026-06-23 21:09:02,107] [INFO] Component management tools registered
|
|
||||||
[2026-06-23 21:09:02,109] [INFO] Registering design rule tools
|
|
||||||
[2026-06-23 21:09:02,110] [INFO] Design rule tools registered
|
|
||||||
[2026-06-23 21:09:02,110] [INFO] Registering export tools
|
|
||||||
[2026-06-23 21:09:02,112] [INFO] Export tools registered
|
|
||||||
[2026-06-23 21:09:02,117] [INFO] UI management tools registered
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Registering project resources
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Project resources registered
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Registering board resources
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Board resources registered
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Registering component resources
|
|
||||||
[2026-06-23 21:09:02,118] [INFO] Component resources registered
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Registering library resources
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Library resources registered
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Registering component prompts
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Component prompts registered
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Registering routing prompts
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Routing prompts registered
|
|
||||||
[2026-06-23 21:09:02,119] [INFO] Registering design prompts
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Design prompts registered
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Registering footprint prompts
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] All KiCAD tools, resources, and prompts registered
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Starting KiCAD MCP server...
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Starting Python process with script: /Users/leo/Documents/Claude/Projects/KiCAD-MCP-Server/python/kicad_interface.py
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Found virtual environment Python at: /Users/leo/Documents/Claude/Projects/KiCAD-MCP-Server/venv/bin/python
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Using Python executable: /Users/leo/Documents/Claude/Projects/KiCAD-MCP-Server/venv/bin/python
|
|
||||||
[2026-06-23 21:09:02,120] [INFO] Validating pcbnew module access...
|
|
||||||
[2026-06-23 21:09:02,948] [INFO] ✓ pcbnew module validated successfully
|
|
||||||
[2026-06-23 21:09:02,949] [INFO] Waiting for Python process to be ready...
|
|
||||||
[2026-06-23 21:09:06,709] [INFO] Python process READY — stdin loop is live
|
|
||||||
[2026-06-23 21:09:06,711] [INFO] Python process is ready.
|
|
||||||
[2026-06-23 21:09:06,711] [INFO] Connecting MCP server to STDIO transport...
|
|
||||||
[2026-06-23 21:09:06,711] [INFO] Successfully connected to STDIO transport
|
|
||||||
[2026-06-23 21:09:06,866] [INFO] Sending warm-up command (background)...
|
|
||||||
2026-06-24T03:09:06.881Z [kicad] [info] Message from server: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{"listChanged":true},"resources":{"listChanged":true},"prompts":{"listChanged":true}},"serverInfo":{"name":"kicad-mcp-server","version":"1.0.0","description":"MCP server for KiCAD PCB design operations"}}} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.885Z [kicad] [info] Message from client: {"method":"notifications/initialized","jsonrpc":"2.0"} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.885Z [kicad] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.885Z [kicad] [info] Message from client: {"method":"prompts/list","params":{},"jsonrpc":"2.0","id":2} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.885Z [kicad] [info] Message from client: {"method":"resources/list","params":{},"jsonrpc":"2.0","id":3} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.913Z [kicad] [info] Message from server: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"list_tool_categories","description":"List all available KiCAD tool categories with their descriptions and tool counts. Use this to discover which tools are available via the router.","inputSchema":{"$sche...[170002 chars truncated]...,"inputSchema":{"type":"object","properties":{"freeroutingJar":{"type":"string","description":"Path to freerouting.jar to check"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"execution":{"taskSupport":"forbidden"}}]}} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.913Z [kicad] [info] Message from server: {"jsonrpc":"2.0","id":2,"result":{"prompts":[{"name":"component_selection","arguments":[{"name":"requirements","description":"Description of the circuit requirements and constraints","required":true}]},{"name":"component_placement_strategy","arguments":[{"...[3571 chars truncated]...uired":true},{"name":"libraryPath","description":"Target .pretty library path (optional)","required":false}]},{"name":"footprint_ipc_checklist","arguments":[{"name":"footprintPath","description":"Path to the .kicad_mod file to review","required":true}]}]}} { metadata: undefined }
|
|
||||||
2026-06-24T03:09:06.913Z [kicad] [info] Message from server: {"jsonrpc":"2.0","id":3,"result":{"resources":[{"uri":"kicad://project/info","name":"project_info"},{"uri":"kicad://project/properties","name":"project_properties"},{"uri":"kicad://project/files","name":"project_files"},{"uri":"kicad://project/status","name":"project_status"},{"uri":"kicad://project/summary","name":"project_summary"},{"uri":"kicad://board/info","name":"board_info"},{"uri":"kicad://board/layers","name":"layer_list"},{"uri":"kicad://board/statistics","name":"board_statistics"},{"uri":"kicad://components","name":"component_list"},{"uri":"kicad://components/placement","name":"component_placement"},{"uri":"kicad://components/groups","name":"component_groups"},{"uri":"kicad://libraries","name":"library_list"},{"uri":"kicad://board/extents/mm","name":"Millimeters"},{"uri":"kicad://board/extents/inch","name":"Inches"},{"uri":"kicad://board/2d-view/png","name":"PNG Format"},{"uri":"kicad://board/2d-view/jpg","name":"JPEG Format"},{"uri":"kicad://board/2d-view/svg","name":"SVG Format"},{"uri":"kicad://board/3d-view/isometric","name":"Isometric View"},{"uri":"kicad://board/3d-view/top","name":"Top View"},{"uri":"kicad://board/3d-view/bottom","name":"Bottom View"},{"uri":"kicad://components","name":"All Components"}]}} { metadata: undefined }
|
|
||||||
[2026-06-23 21:09:06,915] [ERROR] Python stderr: ./src/common/stdpbase.cpp(59): assert ""traits"" failed in Get(): create wxApp before calling this
|
|
||||||
|
|
||||||
[2026-06-23 21:09:06,964] [INFO] Warm-up succeeded: pcbnew 10.0.4 (0s)
|
|
||||||
[2026-06-23 21:09:06,964] [INFO] Warm-up complete — pcbnew/wxApp initialised
|
|
||||||
KiCAD MCP SERVER READY
|
|
||||||
[2026-06-23 21:09:06,964] [INFO] KiCAD MCP server started and ready
|
|
||||||
[2026-06-23 21:09:06,964] [INFO] KiCAD MCP server started with STDIO transport
|
|
||||||
2026-06-24T03:09:31.946Z [kicad] [info] Message from client: {"method":"tools/call","params":{"name":"check_kicad_ui","arguments":{}},"jsonrpc":"2.0","id":4} { metadata: undefined }
|
|
||||||
[2026-06-23 21:09:31,979] [INFO] Checking KiCAD UI status
|
|
||||||
2026-06-24T03:09:32.118Z [kicad] [info] Message from server: {"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"{\n \"success\": true,\n \"running\": true,\n \"processes\": [\n {\n \"pid\": \"98622\",\n \"name\": \"/Applications/KiCad/KiCad.app/Contents/MacOS/kicad\",\n \"command\": \"/Applications/KiCad/KiCad.app/Contents/MacOS/kicad\"\n }\n ],\n \"message\": \"KiCAD is running\",\n \"backend\": \"swig\",\n \"realtime_sync\": false,\n \"ipc_connected\": false,\n \"_backend\": \"swig\",\n \"_realtime\": false\n}"}]}} { metadata: undefined }
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{"hostname":"Leopoldos-MacBook-Pro","username":"leo"}
|
|
||||||
4
03-Architecture-Hardware/kicad/sym-lib-table
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(sym_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "Drogheda-sym")(type "KiCad")(uri "/Users/leo/Documents/Claude/Projects/Drogheda/03-Architecture-Hardware/kicad/Drogheda-sym.kicad_sym")(options "")(descr ""))
|
||||||
|
)
|
||||||
@ -1 +0,0 @@
|
|||||||
{"hostname":"Leopoldos-MacBook-Pro","username":"leo"}
|
|
||||||
@ -189,7 +189,7 @@ outputs **3.3 V**, PA5 sees **≈1.4 V — below VIH**, and `ignitionOn` stays f
|
|||||||
(b) **drop R9/R10** and feed the DFR1015 output **directly** to PA5 through the 100 Ω series +
|
(b) **drop R9/R10** and feed the DFR1015 output **directly** to PA5 through the 100 Ω series +
|
||||||
D5 clamp (cleanest if DFR1015 ≤ 3.3 V). Confirm the measured DFR1015 output on the bench.
|
D5 clamp (cleanest if DFR1015 ≤ 3.3 V). Confirm the measured DFR1015 output on the bench.
|
||||||
|
|
||||||
### 🔴 Finding 3 — `5V_SENSE` (PA4) must tap the *vehicle* side, and depends on the battery call
|
### 🔴 Finding 3 — `5V_SENSE` (PA4) must tap the *vehicle* side, and depends on the battery call — **implemented on PROD 2026-07-02** (`R7.1` → `VEH5V`)
|
||||||
"Vehicle‑power present" only works if PA4 senses a node that **drops when the machine is off**
|
"Vehicle‑power present" only works if PA4 senses a node that **drops when the machine is off**
|
||||||
— i.e. the **SD‑15B‑05 output**, *before* any battery hold‑up. The connection list assumes
|
— i.e. the **SD‑15B‑05 output**, *before* any battery hold‑up. The connection list assumes
|
||||||
the **battery is dropped** (MAIN5V = SD‑15B‑05 powers the MCU directly; PA4 senses MAIN5V; P4
|
the **battery is dropped** (MAIN5V = SD‑15B‑05 powers the MCU directly; PA4 senses MAIN5V; P4
|
||||||
@ -227,7 +227,30 @@ bring‑up**, none of this changes the bench steps: use a bench supply (correct
|
|||||||
Q10/D10 are skipped anyway), confirm the ignition logic level with a meter, and the watchdog —
|
Q10/D10 are skipped anyway), confirm the ignition logic level with a meter, and the watchdog —
|
||||||
now including the smart‑fan loop — comes up exactly as the firmware expects.
|
now including the smart‑fan loop — comes up exactly as the firmware expects.
|
||||||
|
|
||||||
## Related
|
---
|
||||||
|
|
||||||
|
## 7. Additions 2026-07-02 — Block B / H / I per-connection rationale
|
||||||
|
|
||||||
|
> The production capture session (Blocks **B** LTC4040 backup · **H** Modo-B bypass relay ·
|
||||||
|
> **I** NTC→PB1) added rows **129–193** to `watchdog-connections.xlsx`. Specs live in
|
||||||
|
> [[03-Architecture-Hardware/watchdog-production-schematic-delta|watchdog-production-schematic-delta.md]]
|
||||||
|
> §4/§5b/§5c; this section records the **why** per connection, same as §3 did for the core.
|
||||||
|
> Battery status here supersedes §5's "battery dropped" resolution text — the pack was
|
||||||
|
> **re-added 2026-06-24** (canonical state doc §3.3) and **Finding 3 is now implemented on
|
||||||
|
> PROD** (PA4 divider top `R7.1` re-tapped to `VEH5V`, 2026-07-02).
|
||||||
|
|
||||||
|
| Connection | How it's wired | Why |
|
||||||
|
|---|---|---|
|
||||||
|
| **PB1 NTC divider — 1 % top (R42)** | `3V3 → R42 10 k 1 % → PB1`; NTC 10 k (P12, at the hot spot) → GND | The top resistor is the *reference half* of the thermometer — its tolerance adds directly to the reading. A 5 % top can shift the computed temperature by several °C right at the 45–70 °C fan/charge decision band; 1 % keeps divider error below the NTC's own spread. |
|
||||||
|
| **PB1 filter — C24 100 nF** | `PB1 → C24 → GND` at the pin | ADC **source impedance**: the F411's sample cap needs a low-impedance source, and a 10 k/10 k divider alone is too stiff for a clean conversion. C24 is the local charge reservoir (and RC noise filter for the NTC pigtail). |
|
||||||
|
| **K1 relay, not an analog mux** | F9P TX2 → **K1 NC** → 4G DIN; PB5 → R40 1 k → Q6 base (R41 10 k → GND); D6 flyback; coil from SYS5V | **Fail-closed with no 3V3.** A mux is a powered semiconductor — it dies with the rail (or with the Blackpill removed). Relay **contacts are metal**: de-energized, NC keeps F9P TX2 → 4G DIN closed with the board unpowered or the MCU absent. Default-OFF base pull-down means the MCU must *actively* insert itself. Invariants #2/#3 on the diagnostic path. |
|
||||||
|
| **CHRG / FAULT 100 k pull-ups → 3V3** | `U6.CHRG → PB3`, `U6.FAULT → PB4`, each 100 k up to **3V3** | Open-drain status outputs need pull-ups, and these signals are **MCU-scope telemetry only** — nothing but the Blackpill reads them. Riding the MCU's own 3V3 rail means no leakage path into a dead/absent module; charging itself never depends on them. |
|
||||||
|
| **F2/F0 chemistry straps → VSYS, not 3V3** | JP2 (`F2`) / JP4 (`F0`) → MAIN5V(VSYS); JP3 (`F1`) → GND ⇒ 4.00 V Li-ion | **Chemistry selection must survive an absent MCU.** 3V3 is the Blackpill's on-module LDO output — pull the module and 3V3-referenced straps float while the charger keeps running (undefined charge voltage = safety hazard). VSYS is present whenever the LTC4040 can charge at all. |
|
||||||
|
| **CHGOFF 100 k pull-down** | `U6.CHGOFF → PA8` (`CHRG_EN`) + 100 k → GND | **Charge enabled by default**: MCU dead/absent ⇒ CHGOFF held low ⇒ the pack still charges, and the LTC4040's **hardware NTC still temperature-qualifies** every charge. The MCU's drive HIGH (TMP102/PB1 hot) is an *additional* cutoff lever, never the only guard. |
|
||||||
|
| **PFO — DNP / test point only** | `U6.PFO` → TP + DNP 100 k pull-up | The **PA4 divider already senses VEH5V** (vehicle-power-present, `V5V_ON/OFF` thresholds in firmware). Wiring PFO to a GPIO would duplicate that signal and burn a pin; the TP keeps it probe-able at bring-up. |
|
||||||
|
| **OVSNS shorted to VIN** | short at U6 (OVP FET + divider unpopulated) | **OVP unused by design**: VIN is the SD-15B-05's *regulated 5 V* inside the same cabinet — there is no plausible overvoltage source between them, and the 24 V side already carries SPD + reverse-polarity protection. Datasheet-sanctioned disposition for an unused OVSNS. |
|
||||||
|
|
||||||
|
|
||||||
- [[03-Architecture-Hardware/watchdog-connections|connection list (xlsx)]] ·
|
- [[03-Architecture-Hardware/watchdog-connections|connection list (xlsx)]] ·
|
||||||
[[03-Architecture-Hardware/watchdog-pcb-v3-design|v3 design (sub‑circuits)]] ·
|
[[03-Architecture-Hardware/watchdog-pcb-v3-design|v3 design (sub‑circuits)]] ·
|
||||||
[[03-Architecture-Hardware/watchdog-protoboard-bringup|protoboard bring‑up]] ·
|
[[03-Architecture-Hardware/watchdog-protoboard-bringup|protoboard bring‑up]] ·
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: Watchdog v3 — Electrical Design State & Assumptions
|
|||||||
tags: [project-drogheda, hardware, watchdog, electrical, assumptions, canonical]
|
tags: [project-drogheda, hardware, watchdog, electrical, assumptions, canonical]
|
||||||
project: Project Drogheda
|
project: Project Drogheda
|
||||||
author: Helgen CTO
|
author: Helgen CTO
|
||||||
date: 2026-06-24
|
date: 2026-07-02
|
||||||
status: Active — CANONICAL current electrical state (read this first)
|
status: Active — CANONICAL current electrical state (read this first)
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -34,6 +34,33 @@ output connectors, PWR_FLAGs.
|
|||||||
detailed switching reference circuit (symbol, inductor, program resistors sized to the real pack)
|
detailed switching reference circuit (symbol, inductor, program resistors sized to the real pack)
|
||||||
is a dedicated power-design pass — *not fabricated blind*.
|
is a dedicated power-design pass — *not fabricated blind*.
|
||||||
|
|
||||||
|
## 0b. Update (2026-07-02) — DEV/PROD split + PCB push
|
||||||
|
|
||||||
|
- **File split (2026-06-25):** `kicad/hbox-watchdog-v3.kicad_sch` = **DEV/proto** (module buck,
|
||||||
|
no battery; reviewed: ERC 0 err, GNDREF→GND unified, 5V_SENSE re-wired) ·
|
||||||
|
`kicad/hbox-watchdog-v3-PROD.kicad_sch` = **PRODUCTION** (Blocks A discrete MP1584 buck /
|
||||||
|
C reset / D gauge BUILT, ERC 0 err). Build spec = [[watchdog-production-schematic-delta]].
|
||||||
|
**H1 SWD dropped** (USB-C flash/log path; optional DNP 4-pad).
|
||||||
|
- **Pack Ah confirmed ~12 Ah (2026-06-30)** → LTC4040 pass unblocked. **2026-07-02: Blocks
|
||||||
|
B (LTC4040) + E (cutoff) + F (PA4→VEH5V) + new Block H (fail-safe UART2 bypass) being wired
|
||||||
|
on PROD; PCB layout kickoff follows.** Sized values live in the delta doc §4.
|
||||||
|
- **Latest proto-assumptions ledger** = `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx`
|
||||||
|
(sheet *Estado y cambios*) + `Drogheda_Guia-Conexion-Protoboard_ES_v2.1.pdf` (source:
|
||||||
|
`Guia-Conexion-Protoboard/`). Wiring diagrams: `circuitikz-wiring/` (sheet + Beamer, v2 2026-07-02).
|
||||||
|
- **New this pass:** analog **NTC→PB1** hot-spot temperature (block 11 — no SHT40 in hand for
|
||||||
|
the proto, so PB1 is the proto's temperature path); **Modo B** NTRIP diagnostic (watchdog
|
||||||
|
in-line on the uplink, injects `$PHLG`; RTCM3 downlink stays direct); on the PCB a
|
||||||
|
**normally-closed relay bypass** on the Modo-B uplink guarantees a dead/absent MCU never cuts
|
||||||
|
corrections (extends invariant #2/#3).
|
||||||
|
- **CARRIER-BOARD conversion (2026-07-02 PM, Leo's call):** the PROD board hosts **all three
|
||||||
|
modules on female headers** — Blackpill (J1/J2), **simpleRTK2B Pro as an Arduino-UNO shield**
|
||||||
|
(MOD1, `Module:Arduino_UNO_R3` pattern) and the **4G NTRIP Master on an on-board XBee socket**
|
||||||
|
(J7/J8, 2 mm, rows 22.35 mm). Board **120×100 mm**. New Block K: second MP1584 makes
|
||||||
|
**3V3_MODEM** (the Pro-class XBee socket is **3.3 V @ 1 A/1.5 A pk — not 5 V**) from **SW_5V**,
|
||||||
|
so the stack power-cycle also reboots the modem. Modo B + K1 NC bypass = the permanent uplink
|
||||||
|
path; F9P's own XBee socket stays empty (its switch parks on UART1); P3/P13/H3 = DNP harness
|
||||||
|
alternatives. Details + MOD1 pin map: delta doc **§5d/§5e**.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Power tree (current intent)
|
## 1. Power tree (current intent)
|
||||||
@ -43,7 +70,7 @@ Cabinet 24 V ─GX16─► Mean Well SD-15B-05 (24→5 V) ─► MAIN5V (board l
|
|||||||
├─► Blackpill 5V (J1/20, J2/18) → 3V3 (on-module LDO)
|
├─► Blackpill 5V (J1/20, J2/18) → 3V3 (on-module LDO)
|
||||||
├─► Load switch (Q5 NPN → Q1 P-FET) → SW_5V → RTK stack
|
├─► Load switch (Q5 NPN → Q1 P-FET) → SW_5V → RTK stack
|
||||||
└─► [PLANNED] LTC4040 backup ↔ 1S4P cell; boosts to 5 V on power loss
|
└─► [PLANNED] LTC4040 backup ↔ 1S4P cell; boosts to 5 V on power loss
|
||||||
Cabinet 24 V ─GX16─► Q10 rev-pol P-FET (IRFR5305 + DzG 15 V Zener) ─► U2 fan buck (MP1584) → 5V_FAN → fan
|
Cabinet 24 V ─GX16─► Q10 rev-pol P-FET (IRFR5305 + DzG 15 V Zener) ─► U2 fan buck (MP1584; proto = LM2596 module set to 5.0 V) → 5V_FAN → fan
|
||||||
Machine ignition (12–24 V) ─GX16 pin 3─► DFR1015 (ON-BOARD, →5 V) ─► Rig 100 Ω ─► D5 BAT54 clamp→3V3 / C9 ─► PA5
|
Machine ignition (12–24 V) ─GX16 pin 3─► DFR1015 (ON-BOARD, →5 V) ─► Rig 100 Ω ─► D5 BAT54 clamp→3V3 / C9 ─► PA5
|
||||||
[PLANNED] cutoff switch in series with SYS_5V (downstream of the battery merge) → kills vehicle + battery
|
[PLANNED] cutoff switch in series with SYS_5V (downstream of the battery merge) → kills vehicle + battery
|
||||||
```
|
```
|
||||||
@ -67,11 +94,15 @@ J1 = header P1, J2 = header P2. SWD (PA13/PA14) is **not** on the 2×20 → flas
|
|||||||
| PA4 | `5V_SENSE` | ADC ÷2, vehicle 5 V present | — |
|
| PA4 | `5V_SENSE` | ADC ÷2, vehicle 5 V present | — |
|
||||||
| PA5 | `IGN_SENSE` | **digital** `INPUT_PULLDOWN` | from DFR1015 via Rig + D5 clamp — **NO ÷2** (Finding 2) |
|
| PA5 | `IGN_SENSE` | **digital** `INPUT_PULLDOWN` | from DFR1015 via Rig + D5 clamp — **NO ÷2** (Finding 2) |
|
||||||
| PA6 | `FAN_PWM` | 25 kHz fan PWM | TIM3_CH1 |
|
| PA6 | `FAN_PWM` | 25 kHz fan PWM | TIM3_CH1 |
|
||||||
| PA8 | `CHRG_EN` | **[PLANNED]** LTC4040 charge enable/disable | MCU cuts charge when TMP102 reads cell hot |
|
| PA8 | `CHRG_EN` | LTC4040 charge disable (→ U6 CHGOFF) | **[PROD 2026-07-02]** HIGH = charge OFF; 100 k pull-down = charge enabled if MCU absent (NTC still guards) |
|
||||||
| PA9 / PA10 | `USART1` relay | optional NMEA relay | `ENABLE_PHLG_RELAY` default 0 |
|
| PA9 / PA10 | `USART1` — Modo B uplink | PA10 ← F9P TX2 (monitor tap) · PA9 → relay NO → 4G DIN | injects `$PHLG`; RTCM3 downlink never passes through the MCU |
|
||||||
| PB0 | `EXT_LED` | status LED (low-side) | **FIXED 2026-06-24** (was disconnected) |
|
| PB0 | `EXT_LED` | status LED (low-side) | **FIXED 2026-06-24** (was disconnected) |
|
||||||
|
| PB1 | `NTC_TEMP` | **[NEW]** analog hot-spot temp, ADC1_IN9 | 3V3–10k(1 %)–NTC 10k–GND ÷ + 100 nF; Beta≈3950/Steinhart in firmware; proto's temperature path (no SHT40 in hand); can drive the `CHRG_EN` cutoff |
|
||||||
|
| PB3 | `CHRG_STAT` | **[PROD]** U6 CHRG open-drain | 100 k pull-up to 3V3; LOW = charging (>C/8) |
|
||||||
|
| PB4 | `CHRG_FAULT` | **[PROD]** U6 FAULT open-drain | 100 k pull-up to 3V3; LOW = temp/bad-battery fault |
|
||||||
|
| PB5 | `BYP_CTRL` | **[PROD]** Modo-B bypass relay driver | HIGH = energize K1 → MCU in-line; de-energized/absent = NC = corrections direct |
|
||||||
| PB6 / PB7 | `I2C1 SCL/SDA` | SHT40 (0x44) + TMP102 (0x48) | 4.7 k pull-ups |
|
| PB6 / PB7 | `I2C1 SCL/SDA` | SHT40 (0x44) + TMP102 (0x48) | 4.7 k pull-ups |
|
||||||
| PB10 | `FAN_TACH` | fan RPM + stalled-fan fault | EXTI |
|
| PB10 | `FAN_TACH` | *(2-wire fan: tach unused)* | fans are **2-wire 5 V** → **DNP provision**; fan-fault inferred from temp |
|
||||||
| PB12–PB15 | `BATLED1–4` | **[NEW]** battery gauge bar | firmware-driven from `BAT_SENSE`, 330 Ω + LED each |
|
| PB12–PB15 | `BATLED1–4` | **[NEW]** battery gauge bar | firmware-driven from `BAT_SENSE`, 330 Ω + LED each |
|
||||||
| PC13 | onboard LED | — | WeAct module |
|
| PC13 | onboard LED | — | WeAct module |
|
||||||
| NRST | `NRST` | **[NEW]** reset | SW1 (on-board) + P10 (external), both → GND |
|
| NRST | `NRST` | **[NEW]** reset | SW1 (on-board) + P10 (external), both → GND |
|
||||||
@ -103,6 +134,30 @@ J1 = header P1, J2 = header P2. SWD (PA13/PA14) is **not** on the 2×20 → flas
|
|||||||
6. **Power cutoff** *(planned)* — external switch in series with the **system 5 V** (downstream of
|
6. **Power cutoff** *(planned)* — external switch in series with the **system 5 V** (downstream of
|
||||||
the battery merge) so it kills vehicle **and** battery power.
|
the battery merge) so it kills vehicle **and** battery power.
|
||||||
|
|
||||||
|
## 3b. Decisions 2026-07-01/02 + rationale
|
||||||
|
|
||||||
|
7. **Block 11 — analog NTC→PB1 hot-spot temperature.** Divider 3V3 – 10 k (1 %) – NTC 10 k – GND
|
||||||
|
→ PB1 (ADC1_IN9) + 100 nF. ≈1.65 V @25 °C, ≈165 µA (no self-heating). Firmware: Beta (≈3950) /
|
||||||
|
Steinhart; may trigger the `CHRG_EN` charge cutoff. **Place the NTC at the hot spot
|
||||||
|
(battery/modem), not in the air.** No SHT40 in hand for the proto → this is the proto's
|
||||||
|
temperature path; the PCB keeps U3/U4 (I²C) *and* the PB1 channel.
|
||||||
|
8. **Battery NTC goes to the charger's TEMP/NTC pin** (TP4056 on proto / LTC4040 on PCB),
|
||||||
|
**not to the MCU** — hardware-qualified charging stays alive even with the MCU dead. The MCU's
|
||||||
|
view of cell temperature is the TMP102 (I²C) + PB1.
|
||||||
|
9. **Modo B — NTRIP diagnostic (relé + `$PHLG`).** 4G on a breakout (BOB-08276), F9P switch → UART1;
|
||||||
|
uplink F9P TX2 → PA10 (monitor) and PA9 → 4G DIN (MCU in-line, injects `$PHLG`); **RTCM3
|
||||||
|
downlink 4G DOUT → F9P RX2 stays direct** (never through the MCU). IOREF = 3.3 V.
|
||||||
|
10. **Block H — fail-safe uplink bypass (PROD).** SPDT **signal relay K1, normally-closed**
|
||||||
|
contacts route F9P TX2 → 4G DIN with the coil de-energized; the MCU must actively energize
|
||||||
|
(PB5 `BYP_CTRL` → Q6) to insert itself. Chosen over an analog mux because a mux dies with the
|
||||||
|
3V3 rail — a *relay* keeps corrections flowing even with the Blackpill physically absent.
|
||||||
|
Extends invariants #2/#3 to the diagnostic path.
|
||||||
|
11. **Charge voltage = 4.00 V Li-ion** (F2=1, F1=0, F0=1 via solder jumpers). Backup duty means the
|
||||||
|
cell sits full most of its life; 4.00 V ≈ 3× cycle life vs 4.2 V (datasheet Fig. 1) and is
|
||||||
|
kinder to hot cells — directly serves the RCA #1 failure mode. LiFePO4 future = re-strap F2.
|
||||||
|
12. **OVP module skipped** — VIN is the SD-15B-05's regulated 5 V inside the same cabinet;
|
||||||
|
`OVSNS` shorts to VIN per datasheet. The 24 V side already carries SPD + reverse protection.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Bug fixes this session
|
## 4. Bug fixes this session
|
||||||
@ -129,13 +184,18 @@ J1 = header P1, J2 = header P2. SWD (PA13/PA14) is **not** on the 2×20 → flas
|
|||||||
exactly is the *temperature-qualified charge cutoff* (LTC4040-only) — validate it in firmware logic.
|
exactly is the *temperature-qualified charge cutoff* (LTC4040-only) — validate it in firmware logic.
|
||||||
- **GNSS + 4G: one F9P + 4G set, shared** across the three watchdog boards (the watchdog logic,
|
- **GNSS + 4G: one F9P + 4G set, shared** across the three watchdog boards (the watchdog logic,
|
||||||
sensing, fan/temp, gauge, reset, cutoff and backup all test without them).
|
sensing, fan/temp, gauge, reset, cutoff and backup all test without them).
|
||||||
|
- **Proto fan rail = LM2596 module** (24→5 V, *adjust to 5.0 V with a meter*) so fan inrush never
|
||||||
|
sags MAIN5V; the PCB uses the discrete MP1584 (U2). Fans are **2-wire** (no tach).
|
||||||
|
- **Assembly references:** `Drogheda_Guia-Conexion-Protoboard_ES_v2.1.pdf` (blocks 1–11, source in
|
||||||
|
`Guia-Conexion-Protoboard/`) · `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx` (authoritative
|
||||||
|
connection list) · `circuitikz-wiring/` diagrams (sheet + per-block Beamer).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Key assumptions / invariants (electrical)
|
## 6. Key assumptions / invariants (electrical)
|
||||||
|
|
||||||
- Backup pack is **1S4P, 3.6 V nominal** (NOT 3S). The "40 Ah" on the label is suspect (4× 18650 ≈
|
- Backup pack is **1S4P, 3.6 V nominal, ~12 Ah** (NOT 3S). The "40 Ah" label was a **mistake —
|
||||||
10–14 Ah max) — **confirm**; it sets charge current + the LTC4040 safety timer.
|
corrected 2026-06-30 to ~12 Ah** (≈3 Ah × 4 cells). Sizes the LTC4040 charge current (2.5 A max ≈ C/5) + safety timer.
|
||||||
- **GX16 pin 3 = raw machine ignition (12–24 V)** into the on-board DFR1015 (changed this session).
|
- **GX16 pin 3 = raw machine ignition (12–24 V)** into the on-board DFR1015 (changed this session).
|
||||||
- **MAIN5V** = board logic rail (from SD-15B-05; backed up via the LTC4040 path once wired).
|
- **MAIN5V** = board logic rail (from SD-15B-05; backed up via the LTC4040 path once wired).
|
||||||
- Corrections ride the **4G modem** → recover the link by power-cycling the stack, never a GNSS reset.
|
- Corrections ride the **4G modem** → recover the link by power-cycling the stack, never a GNSS reset.
|
||||||
@ -143,28 +203,50 @@ J1 = header P1, J2 = header P2. SWD (PA13/PA14) is **not** on the 2×20 → flas
|
|||||||
- **Enclosure is ASA** (not PLA); the thermal liability is the **power components** (battery/boost/
|
- **Enclosure is ASA** (not PLA); the thermal liability is the **power components** (battery/boost/
|
||||||
modem), not the case. v3.0 thermal = **waterproof duct + Blackpill smart fan** (active managed).
|
modem), not the case. v3.0 thermal = **waterproof duct + Blackpill smart fan** (active managed).
|
||||||
- No material softening < ~80 °C in the thermal path.
|
- No material softening < ~80 °C in the thermal path.
|
||||||
|
- **The battery NTC belongs to the charger** (TEMP/NTC pin), never to the MCU; MCU temperature
|
||||||
|
view = TMP102 (I²C) + NTC→PB1 (ADC, hot spot).
|
||||||
|
- **Corrections must survive a dead MCU** on every path — in Modo B that means the K1
|
||||||
|
normally-closed bypass (Block H); the RTCM3 downlink is always direct.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Open items / TODO (electrical)
|
## 7. Open items / TODO (electrical)
|
||||||
|
|
||||||
- [ ] **Wire the battery-backup section** into the schematic: LTC4040 block (U6) + battery connector
|
- [~] **Wire the battery-backup section** (Block B) on PROD: LTC4040 (U6) + battery connector
|
||||||
(BAT+, BAT−, NTC) + the `P2 → LTC4040 → MAIN5V` re-route + `CHRG_EN`/`BAT_SENSE` to the MCU.
|
(BAT+, BAT−, NTC) + the `P2 → VEH5V → LTC4040 → MAIN5V` re-route + `CHRG_EN`/`CHRG_STAT`/
|
||||||
- [ ] **Add the power-cutoff switch** in series with SYS_5V.
|
`CHRG_FAULT` to the MCU — **in progress 2026-07-02** (values sized, see delta §4).
|
||||||
- [ ] **LTC4040 detailed reference design** — symbol, inductor, `RPROG` (charge current sized to
|
- [~] **Power-cutoff switch** (Block E, P11 MAIN5V→SYS5V) — in progress 2026-07-02.
|
||||||
the real pack Ah), input-current limit, PFI divider, NTC bias, compensation — then **bench-validate**.
|
- [~] **Block H bypass relay** (K1 NC + Q6 + P13) — in progress 2026-07-02.
|
||||||
- [ ] **Confirm the real pack capacity** (the "40 Ah" label).
|
- [x] ~~LTC4040 detailed reference design~~ → **sized 2026-07-02** to the 12 Ah pack: RPROG 825 Ω
|
||||||
|
(2.42 A ≈ C/5), RS 8 mΩ (3.1 A input limit), PFI 287k/100k (trip 4.60 V), BSTFB=RSTFB
|
||||||
|
499k/100k (backup 4.79 V, RST −7.5 %), L 2.2 µH ≥8 A, NTC 10 k bias, F=4.00 V Li-ion.
|
||||||
|
**Bench-validate before fab** (unchanged gate).
|
||||||
|
- [x] ~~Confirm the real pack capacity~~ → **~12 Ah** (1S4P, ~3 Ah/cell); the "40 Ah" label was wrong (2026-06-30).
|
||||||
- [ ] **Firmware**: gauge-LED driver (PB12–15 from `BAT_SENSE`); `CHRG_EN` cut-charge-when-hot logic
|
- [ ] **Firmware**: gauge-LED driver (PB12–15 from `BAT_SENSE`); `CHRG_EN` cut-charge-when-hot logic
|
||||||
(TMP102); reset is hardware-only.
|
(TMP102 + PB1); **PB1 NTC Beta/Steinhart channel**; `CHRG_STAT`/`CHRG_FAULT` into the STREAM
|
||||||
|
log; **deep-discharge note:** full recharge of 12 Ah @2.42 A ≈ 5 h exceeds the LTC4040's
|
||||||
|
internal safety timer — restart the cycle via `CHRG_EN` toggle while cell is cool and
|
||||||
|
`BAT_SENSE` low; Modo B `$PHLG` injection + `BYP_CTRL` handling; reset is hardware-only.
|
||||||
|
- [ ] **Fans are 2-wire 5 V (no tach)** (2026-06-24): drop the PB10 tach health check in firmware
|
||||||
|
and **infer fan-fault from temperature** (PWM commanded high but temp still climbing → fault);
|
||||||
|
keep PB10 + the tach pull-up as a **DNP provision** for future 3-wire fans. Optional: a fan
|
||||||
|
current-sense resistor gives positive stall detection without a tach.
|
||||||
- [ ] Cosmetic: position the new parts on-grid (clears off-grid warnings).
|
- [ ] Cosmetic: position the new parts on-grid (clears off-grid warnings).
|
||||||
|
- [ ] **PCB layout** (kickoff 2026-07-02): outline/stackup per [[watchdog-pcb-v3-kicad-guide]],
|
||||||
|
SW nodes (U2, U6) tiny + away from P3; exposed-pad GND stitching; JLCPCB exports.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Pointers
|
## 8. Pointers
|
||||||
|
|
||||||
- **Schematic:** `kicad/hbox-watchdog-v3.kicad_sch` (+ `…-schematic.pdf/.svg`).
|
- **Schematics:** `kicad/hbox-watchdog-v3.kicad_sch` (**DEV/proto**) ·
|
||||||
|
`kicad/hbox-watchdog-v3-PROD.kicad_sch` (**PRODUCTION**, + `.kicad_pcb`) · `Drogheda-sym.kicad_sym`.
|
||||||
|
- **Build spec (PROD Δ):** [[watchdog-production-schematic-delta]] — Block B values table lives here.
|
||||||
- **Design doc:** [[watchdog-pcb-v3-design]] (sub-circuits, pin map, findings).
|
- **Design doc:** [[watchdog-pcb-v3-design]] (sub-circuits, pin map, findings).
|
||||||
- **Connections:** `watchdog-connections.xlsx` + [[watchdog-connections-rationale]].
|
- **Connections:** `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx` (proto, authoritative) ·
|
||||||
|
`watchdog-connections.xlsx` (PCB list, H1 rows now DNP) + [[watchdog-connections-rationale]].
|
||||||
|
- **Assembly guide:** `Guia-Conexion-Protoboard/` (source) → `Drogheda_Guia-Conexion-Protoboard_ES_v2.1.pdf`.
|
||||||
|
- **Diagrams:** `circuitikz-wiring/` — full sheet + per-block Beamer (v2, 2026-07-02, blocks 1–11).
|
||||||
- **BOMs:** [[BOM-master]] (production) · `watchdog-protoboard-BOM-3boards.xlsx` +
|
- **BOMs:** [[BOM-master]] (production) · `watchdog-protoboard-BOM-3boards.xlsx` +
|
||||||
`watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto) · [[watchdog-protoboard-bringup]] (bench order).
|
`watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto) · [[watchdog-protoboard-bringup]] (bench order).
|
||||||
- **Firmware:** `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) + `docs/PINOUT.md`, `docs/LOGGING-SPEC.md`.
|
- **Firmware:** `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) + `docs/PINOUT.md`, `docs/LOGGING-SPEC.md`.
|
||||||
|
|||||||
@ -16,6 +16,10 @@ supersedes_section: hardware-respec-and-pcb-brief.md §4 (watchdog carrier detai
|
|||||||
> 4-LED gauge + power-cutoff** were added. Where this doc disagrees with the canonical state, the
|
> 4-LED gauge + power-cutoff** were added. Where this doc disagrees with the canonical state, the
|
||||||
> canonical state wins. (Also: 1 fan, not "two" — see the 1-fan update.)
|
> canonical state wins. (Also: 1 fan, not "two" — see the 1-fan update.)
|
||||||
|
|
||||||
|
> **2026-07-02:** LTC4040 sized to the 12 Ah pack — values in
|
||||||
|
> [[03-Architecture-Hardware/watchdog-production-schematic-delta|watchdog-production-schematic-delta.md]] §4;
|
||||||
|
> capture + layout kickoff in progress.
|
||||||
|
|
||||||
> The production PCB for the STM32F411 watchdog, **expanded** to drive two
|
> The production PCB for the STM32F411 watchdog, **expanded** to drive two
|
||||||
> extraction fans and monitor internal temperature/humidity. This is the
|
> extraction fans and monitor internal temperature/humidity. This is the
|
||||||
> schematic-capture spec: every sub-circuit, every value, every part, the pin
|
> schematic-capture spec: every sub-circuit, every value, every part, the pin
|
||||||
@ -94,7 +98,7 @@ fragile hardware**. Keep the brains, fix the body.
|
|||||||
| `1.5 kΩ "????"` mystery R | undocumented | resolved on this schematic (it was the **LED series R**; dividers are 10k/10k — see §6) |
|
| `1.5 kΩ "????"` mystery R | undocumented | resolved on this schematic (it was the **LED series R**; dividers are 10k/10k — see §6) |
|
||||||
| MCU temp only | heat casualties are the **18650/modem**, not the die | **external** I²C sensors at the hot spot (§5) |
|
| MCU temp only | heat casualties are the **18650/modem**, not the die | **external** I²C sensors at the hot spot (§5) |
|
||||||
| No thermal *actuation* | firmware can derate but can't cool | **1 fan driver + closed-loop control** (§4, §7) |
|
| No thermal *actuation* | firmware can derate but can't cool | **1 fan driver + closed-loop control** (§4, §7) |
|
||||||
| No SWD/header bring-out | can't debug a sealed unit | **SWD + USB + reserve-USART1** headers (§6) |
|
| No SWD/header bring-out | can't debug a sealed unit | **USB + reserve-USART1** headers (§6). H1 SWD **DROPPED 2026-06-25** (flash/log via USB-C; optional DNP 4-pad) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -118,10 +122,15 @@ fragile hardware**. Keep the brains, fix the body.
|
|||||||
PB12 (spare) EXTI reserved — 2nd fan tach if ever needed
|
PB12 (spare) EXTI reserved — 2nd fan tach if ever needed
|
||||||
PB6 I2C1_SCL I2C1 SHT40 + TMP102 (4.7k pull-ups to 3V3)
|
PB6 I2C1_SCL I2C1 SHT40 + TMP102 (4.7k pull-ups to 3V3)
|
||||||
PB7 I2C1_SDA I2C1 SHT40 + TMP102
|
PB7 I2C1_SDA I2C1 SHT40 + TMP102
|
||||||
|
── NEW [2026-07-02] (PROD: battery backup + Modo-B bypass + hot-spot NTC) ──
|
||||||
|
PB1 NTC_TEMP ADC1_IN9 hot-spot NTC divider (3V3–10k 1%–NTC 10k–GND + 100 nF) — block 11
|
||||||
|
PB3 CHRG_STAT GPIO in LTC4040 CHRG open-drain, 100k↑3V3 (LOW = charging)
|
||||||
|
PB4 CHRG_FAULT GPIO in LTC4040 FAULT open-drain, 100k↑3V3 (LOW = NTC/bad-battery fault)
|
||||||
|
PB5 BYP_CTRL GPIO out K1 bypass-relay driver via Q6 (HIGH = MCU in-line, §2c)
|
||||||
── reserved (do not populate now; future in-band $PHLG telemetry relay) ───
|
── reserved (do not populate now; future in-band $PHLG telemetry relay) ───
|
||||||
PA9 USART1_TX header → future: inject $PHLG into modem uplink
|
PA9 USART1_TX header → future: inject $PHLG into modem uplink
|
||||||
PA10 USART1_RX header ← future: F9P UART2 NMEA tap
|
PA10 USART1_RX header ← future: F9P UART2 NMEA tap
|
||||||
PA13 SWDIO / PA14 SWCLK SWD debug header
|
PA13 SWDIO / PA14 SWCLK SWD debug header — H1 DROPPED 2026-06-25 (USB-C; opt. DNP 4-pad)
|
||||||
PA11 USB_DM / PA12 USB_DP Blackpill micro-USB = STREAM log capture
|
PA11 USB_DM / PA12 USB_DP Blackpill micro-USB = STREAM log capture
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -150,11 +159,11 @@ The module mounts on two 1×20 headers. From the WeAct **MiniF4x1Cx V3.0** schem
|
|||||||
| 8 | PA2 | **GNSS_TX** | PA11 | — (USB) |
|
| 8 | PA2 | **GNSS_TX** | PA11 | — (USB) |
|
||||||
| 9 | PA3 | **GNSS_RX** | PA12 | — (USB) |
|
| 9 | PA3 | **GNSS_RX** | PA12 | — (USB) |
|
||||||
| 10 | PA4 | **5V_SENSE** | PA15 | — |
|
| 10 | PA4 | **5V_SENSE** | PA15 | — |
|
||||||
| 11 | PA5 | **IGN_SENSE** | PB3 | — |
|
| 11 | PA5 | **IGN_SENSE** | PB3 | **CHRG_STAT** [2026-07-02] |
|
||||||
| 12 | PA6 | **FAN_PWM** | PB4 | — |
|
| 12 | PA6 | **FAN_PWM** | PB4 | **CHRG_FAULT** [2026-07-02] |
|
||||||
| 13 | PA7 | — (spare) | PB5 | — |
|
| 13 | PA7 | — (spare) | PB5 | **BYP_CTRL** [2026-07-02] |
|
||||||
| 14 | PB0 | **EXT_LED** | PB6 | **I2C_SCL** |
|
| 14 | PB0 | **EXT_LED** | PB6 | **I2C_SCL** |
|
||||||
| 15 | PB1 | — | PB7 | **I2C_SDA** |
|
| 15 | PB1 | **NTC_TEMP** [2026-07-02] | PB7 | **I2C_SDA** |
|
||||||
| 16 | PB2 | — (BOOT1, pulled low on-module) | PB8 | — |
|
| 16 | PB2 | — (BOOT1, pulled low on-module) | PB8 | — |
|
||||||
| 17 | PB10 | **FAN_TACH** | PB9 | — |
|
| 17 | PB10 | **FAN_TACH** | PB9 | — |
|
||||||
| 18 | 3V3 | **3V3** (LDO out) | 5V | **MAIN5V** (in) |
|
| 18 | 3V3 | **3V3** (LDO out) | 5V | **MAIN5V** (in) |
|
||||||
@ -185,6 +194,22 @@ needs a **relay** (interpose the MCU between F9P-UART2 and the modem), which is
|
|||||||
architecture change **deferred out of v3**. To *learn whether it's even possible*, run the
|
architecture change **deferred out of v3**. To *learn whether it's even possible*, run the
|
||||||
isolated bench experiment in **§7a** — it touches no PCB.
|
isolated bench experiment in **§7a** — it touches no PCB.
|
||||||
|
|
||||||
|
### 2c. Production additions [2026-07-02] — Block H (fail-safe uplink bypass) + Block I (NTC→PB1)
|
||||||
|
|
||||||
|
Two sub-circuits added on `kicad/hbox-watchdog-v3-PROD.kicad_sch`; full specs in
|
||||||
|
[[03-Architecture-Hardware/watchdog-production-schematic-delta|watchdog-production-schematic-delta.md]] **§5b / §5c**:
|
||||||
|
|
||||||
|
- **Block H — K1 normally-closed SPDT signal-relay bypass on the Modo-B uplink.** The §2b relay
|
||||||
|
is now real in **Modo B**: the watchdog sits in-line on the uplink (F9P TX2 → 4G DIN) to inject
|
||||||
|
`$PHLG`; the RTCM3 downlink stays direct. K1's **NC** contacts route F9P TX2 → 4G DIN with the
|
||||||
|
coil de-energized — the MCU must actively energize (PB5 `BYP_CTRL` → Q6) to insert itself.
|
||||||
|
Chosen over an analog mux because **a mux dies with the 3V3 rail; relay contacts keep
|
||||||
|
F9P TX2 → 4G DIN even with the Blackpill physically absent** (extends invariants #2/#3 to the
|
||||||
|
diagnostic path).
|
||||||
|
- **Block I — NTC→PB1 hot-spot temperature divider (block 11).** 3V3 – 10 k 1 % – NTC 10 k – GND
|
||||||
|
into PB1 (ADC1_IN9) + 100 nF; NTC placed at the battery/modem hot spot. The proto's temperature
|
||||||
|
path (no SHT40 in hand); the PCB keeps U3/U4 (I²C) *and* this channel.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Block diagram
|
## 3. Block diagram
|
||||||
@ -208,7 +233,7 @@ isolated bench experiment in **§7a** — it touches no PCB.
|
|||||||
I²C1 (PB6/7) ─┬─ SHT40 (U3, 0x44) board ambient temp + RH
|
I²C1 (PB6/7) ─┬─ SHT40 (U3, 0x44) board ambient temp + RH
|
||||||
└─ TMP102 (U4, 0x48) on P5 pigtail → battery/modem hot spot
|
└─ TMP102 (U4, 0x48) on P5 pigtail → battery/modem hot spot
|
||||||
|
|
||||||
PB0 ─► Q4 (AO3400) ─► status LED (D1) SWD/USB/USART1 headers (H1/H2/H3)
|
PB0 ─► Q4 (AO3400) ─► status LED (D1) USB/USART1 headers (H2/H3; H1 SWD DROPPED 2026-06-25)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -332,7 +357,7 @@ ADC stays ≤3.3 V with margin (verified in firmware-review). Firmware
|
|||||||
| P5 | JST-XH 4-pos | 4 | 3V3, GND, SDA, SCL → TMP102 probe pigtail |
|
| P5 | JST-XH 4-pos | 4 | 3V3, GND, SDA, SCL → TMP102 probe pigtail |
|
||||||
| P6 | JST-XH 4-pos | 4 | 5V_FAN, Fan−(PWM), GND, Tach → fan |
|
| P6 | JST-XH 4-pos | 4 | 5V_FAN, Fan−(PWM), GND, Tach → fan |
|
||||||
| P8 | JST-XH 2-pos | 2 | EXT_LED+, EXT_LED− (panel LED) |
|
| P8 | JST-XH 2-pos | 2 | EXT_LED+, EXT_LED− (panel LED) |
|
||||||
| H1 | 1×4 0.1″ | 4 | SWD: 3V3, SWDIO, SWCLK, GND |
|
| H1 | 1×4 0.1″ — **DROPPED 2026-06-25** | 4 | SWD: 3V3, SWDIO, SWCLK, GND — optional **DNP 4-pad** only (flash/debug via Blackpill USB-C) |
|
||||||
| H2 | (Blackpill micro-USB) | — | STREAM log capture / flashing |
|
| H2 | (Blackpill micro-USB) | — | STREAM log capture / flashing |
|
||||||
| H3 | 1×3 0.1″ **DNP** | 3 | reserve USART1: PA9, PA10, GND (future $PHLG) |
|
| H3 | 1×3 0.1″ **DNP** | 3 | reserve USART1: PA9, PA10, GND (future $PHLG) |
|
||||||
| — | 2× 2×20 female headers | 40 | Blackpill seats here |
|
| — | 2× 2×20 female headers | 40 | Blackpill seats here |
|
||||||
|
|||||||
377
03-Architecture-Hardware/watchdog-production-schematic-delta.md
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
---
|
||||||
|
title: Watchdog v3 — Production Schematic Build Spec (delta from the prototype)
|
||||||
|
tags: [project-drogheda, hardware, watchdog, schematic, production, delta, build-spec]
|
||||||
|
project: Project Drogheda
|
||||||
|
author: Helgen CTO
|
||||||
|
date: 2026-06-25
|
||||||
|
status: Active — build spec for the PRODUCTION schematic (proto file = current; this = what to add/change)
|
||||||
|
supersedes: reconciles watchdog-connections.xlsx (Jun23) + watchdog-pcb-v3-bom.xlsx with the Jun-24 canonical state
|
||||||
|
---
|
||||||
|
|
||||||
|
# Watchdog v3 — Production Schematic Build Spec (Δ from prototype)
|
||||||
|
|
||||||
|
> **Why this exists.** Decision (2026-06-25): the current `kicad/hbox-watchdog-v3.kicad_sch`
|
||||||
|
> is the **PROTOTYPE** (module buck, no battery). This doc is the **delta to build the
|
||||||
|
> PRODUCTION schematic** on the copy `kicad/hbox-watchdog-v3-PROD.kicad_sch`. It is the
|
||||||
|
> single reconciled definition — the connection list (Jun 23) and the v3 BOM predate the
|
||||||
|
> Jun-24 battery re-add, so they are *not* on their own a production spec. **Authority order:**
|
||||||
|
> [[watchdog-electrical-design-state|electrical-design-state.md]] (CANONICAL) > design doc >
|
||||||
|
> BOM/connection-list. Build against this file.
|
||||||
|
|
||||||
|
## Build status (2026-06-25) — Blocks A / C / D BUILT on PROD
|
||||||
|
|
||||||
|
Built on `kicad/hbox-watchdog-v3-PROD.kicad_sch` via the KiCad MCP. **ERC = 0 errors**; ~20 cosmetic
|
||||||
|
warnings remain (off-grid auto-placement, reserved-pin NC flags now legitimately used, and L/SW_Push/
|
||||||
|
Q_NPN_BCE symbol-cache mismatches) — all clear during layout positioning + Tools→Update Symbols from Library.
|
||||||
|
|
||||||
|
- **Block A — discrete buck — DONE.** Replaced the 3-pin U2 module with a **custom MP1584EN symbol**
|
||||||
|
(`Drogheda-sym.kicad_sym`; datasheet pinout **1=SW 2=EN 3=COMP 4=FB 5=GND 6=FREQ 7=VIN 8=BST**,
|
||||||
|
registered in the project `sym-lib-table`). Wired: VIN←24V, SW→L2→5V_FAN, FB divider R20 100k /
|
||||||
|
R21 19.1k (→5.0 V), C22 22µF in, C23 22µF out, Dbk SS34 freewheel (K→SW, A→GND), Cbst 10nF BST–SW.
|
||||||
|
**New support parts added beyond the original BOM (required for the discrete IC):** Rfreq 100k
|
||||||
|
(FREQ→GND, sets fsw), Rcomp 40.2k + Ccomp 2.2nF (COMP loop comp), Ren1 100k / Ren2 20k (**EN UVLO
|
||||||
|
divider — EN abs-max is 6 V, so it must NOT tie directly to 24 V**). **⚠ Bench-tune (typical placeholders):**
|
||||||
|
Rfreq (target fsw), Rcomp/Ccomp (loop stability), Ren1/Ren2 (UVLO threshold).
|
||||||
|
- **Block C — reset — DONE.** SW1 (Switch:SW_Push) + P10 (2-pin ext) → NRST (J1.5) → GND.
|
||||||
|
- **Block D — 4-LED gauge — DONE.** RB1–4 330 Ω + DB1–4 LED on PB12–15 (J2.1–4) → GND.
|
||||||
|
- **Cleanup:** deleted 3 labels (24V/GND/5V_FAN) orphaned when the old U2 module was removed.
|
||||||
|
- **Footprints:** the new parts carry no footprint yet — assign at layout (same as the existing parts).
|
||||||
|
- **Still deferred:** Block B (LTC4040) + E (cutoff) + F (PA4→VEH5V). **Pack Ah confirmed = ~12 Ah** (2026-06-30) → LTC4040 sizing can proceed.
|
||||||
|
|
||||||
|
## Build status (2026-07-02) — Blocks B / E / F / H / I capture session
|
||||||
|
|
||||||
|
**LTC4040 sized to the 12 Ah pack** (§4 values table — datasheet 4040fb formulas; internally
|
||||||
|
compensated, no external comp). New Blocks **H** (K1 NC bypass relay, §5b) and **I** (NTC→PB1,
|
||||||
|
§5c) specified from the Jul-2 assumptions ledger.
|
||||||
|
|
||||||
|
**BUILT 2026-07-02 (all of B/E/F/H/I) — ERC = 0 errors**, 62 cosmetic warnings (off-grid
|
||||||
|
auto-placement + L/Q_NPN_BCE/SW_Push/AO4406A symbol-cache mismatches → clear during layout
|
||||||
|
positioning + Tools→Update Symbols from Library). Capture notes:
|
||||||
|
- 37 new components, 107 pins netted; sheet bumped **A4→A3**; custom symbols **LTC4040EUFD** +
|
||||||
|
**AO4406A** added to `Drogheda-sym.kicad_sym`.
|
||||||
|
- Rail split done: `P2/R7/JP1 → VEH5V` · `F1/R2/J1-20/J2-18 → SYS5V` (P11 cutoff between
|
||||||
|
MAIN5V→SYS5V). **JP1's alt rail is now VEH5V** (vehicle 5 V, never battery-backed — a fan on
|
||||||
|
the backed-up rail would drain the pack; refine of the old MAIN5V tie).
|
||||||
|
- **P4 → 3-pos** (BAT+, BAT−, NTC); legacy P4 GND stub wire cut, stale labels removed.
|
||||||
|
- Fixed a **duplicated U2** (two MP1584 instances stacked at the same position — deleted both,
|
||||||
|
re-placed one). Removed 10 stale no_connect flags on header pins that had gained nets.
|
||||||
|
- New MCU taps live: `CHRG_EN` J2/5 · `CHRG_STAT` J2/11 · `CHRG_FAULT` J2/12 · `BYP_CTRL` J2/13 ·
|
||||||
|
`NTC_TEMP` J1/15. §6.2 GNDREF note is **stale — no placed GNDREF remains on PROD** (verified).
|
||||||
|
- Footprints assigned at capture for all new parts except **L6** (8040 inductor) and **K1**
|
||||||
|
(HFD23 relay) — assigned during layout kickoff.
|
||||||
|
|
||||||
|
Fab gate: **bench validation of the LTC4040 backup transition + temp-qualified charge cutoff** (unchanged).
|
||||||
|
|
||||||
|
## 0. What the prototype schematic already has (the shared core — DO NOT re-draw)
|
||||||
|
|
||||||
|
49 parts, ERC-clean. Present and correct on **both** boards: MCU (J1/J2), MAIN5V/3V3 rails,
|
||||||
|
24 V reverse-polarity (Q10 IRFR5305 + DzG 15 V Zener + Rrp), TVS D10 + C10/C11, RTK-stack
|
||||||
|
high-side load switch (Q1 AO3401A / Q5 MMBT3904 / R1 / R2 / F1 PPTC / C3), the three sense
|
||||||
|
dividers (BAT PA0, 5V PA4, IGN PA5) incl. on-board ignition chain (Rig + D5 BAT54 + C9),
|
||||||
|
fan low-side driver (Q2 AO3400A + Rg + Rgs + D2 SS34), I²C temp/humidity (U3 SHT40 + U4
|
||||||
|
TMP102 + R30/R31), status LED (Q4 + D1 + R3 + Rled), connectors P1–P8, H3 (DNP).
|
||||||
|
|
||||||
|
**The production board keeps all of the above unchanged** except the two corrections in §6.
|
||||||
|
Everything in §1–§5 below is *added* on top.
|
||||||
|
|
||||||
|
## 1. Production delta — summary
|
||||||
|
|
||||||
|
| Block | Action | Status |
|
||||||
|
|---|---|---|
|
||||||
|
| A. Fan buck U2 | **Replace** the 3-pin module placeholder with the **discrete MP1584** circuit | ✅ fully specified · BUILT |
|
||||||
|
| B. LTC4040 battery backup | **Add** charger + power-path + NTC; re-route P2→VEH5V→LTC4040→MAIN5V | ✅ **sized 2026-07-02** (§4 values table) — bench-validate before fab |
|
||||||
|
| C. Reset | **Add** SW1 (on-board) + P10 (external) → NRST | ✅ fully specified · BUILT |
|
||||||
|
| D. 4-LED battery gauge | **Add** D_BAT1–4 + 4×330 Ω on PB12–PB15 | ✅ fully specified · BUILT |
|
||||||
|
| E. Power cutoff | **Add** P11 series switch in the post-merge 5 V (kills vehicle **and** battery) | ✅ node defined (MAIN5V→SYS5V, §5) |
|
||||||
|
| F. Corrections | Move PA4 sense tap to vehicle side (`VEH5V`); finish GND unify | ✅ do on both boards |
|
||||||
|
| G. H1 SWD | **DROP** (rely on USB-C flash + USB log); optional DNP 4-pad footprint | ✅ decided 2026-06-25 |
|
||||||
|
| H. Modo-B fail-safe bypass | **Add** K1 NC signal relay in the uplink (F9P TX2→4G DIN); MCU energizes to insert | ✅ specified 2026-07-02 (§5b) |
|
||||||
|
| I. NTC→PB1 hot-spot temp | **Add** P12 NTC connector + 10 k (1 %) divider + 100 nF on PB1 (block 11) | ✅ specified 2026-07-02 (§5c) |
|
||||||
|
|
||||||
|
## 2. New Blackpill pins consumed (WeAct pinout, design §2a)
|
||||||
|
|
||||||
|
| Pin | Header | Net | Use |
|
||||||
|
|---|---|---|---|
|
||||||
|
| PA8 | J2/5 | `CHRG_EN` | LTC4040 CHGOFF — MCU cuts charge when TMP102/PB1 reads cell hot (100 k pull-down = enabled by default) |
|
||||||
|
| PB12 | J2/1 | `BATLED1` | gauge 25 % (was reserved 2nd-fan-tach spare → reassigned) |
|
||||||
|
| PB13 | J2/2 | `BATLED2` | gauge 50 % |
|
||||||
|
| PB14 | J2/3 | `BATLED3` | gauge 75 % |
|
||||||
|
| PB15 | J2/4 | `BATLED4` | gauge 100 % |
|
||||||
|
| NRST | J1/5 | `NRST` | reset (SW1 + P10) |
|
||||||
|
| PB1 | J1/15 | `NTC_TEMP` | **[NEW 2026-07-02]** analog hot-spot temp (ADC1_IN9), block 11 |
|
||||||
|
| PB3 | J2/11 | `CHRG_STAT` | **[NEW]** U6 CHRG open-drain, 100 k↑3V3 (LOW = charging) |
|
||||||
|
| PB4 | J2/12 | `CHRG_FAULT` | **[NEW]** U6 FAULT open-drain, 100 k↑3V3 (LOW = NTC/bad-battery fault) |
|
||||||
|
| PB5 | J2/13 | `BYP_CTRL` | **[NEW]** K1 relay driver via Q6 (HIGH = MCU in-line on the Modo-B uplink) |
|
||||||
|
|
||||||
|
No peripheral conflict: PB12–15 plain GPIO; PA8 plain GPIO; NRST is the module reset pin.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Block A — Discrete fan buck (replace U2 module) ✅
|
||||||
|
|
||||||
|
**Remove:** the `U2 = Conn_01x03` placeholder ("MP1584 mod").
|
||||||
|
**Add** (values from design §4.2 + production BOM):
|
||||||
|
|
||||||
|
| Ref | Value / MPN | Pkg | LCSC | Note |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| U2 | MP1584EN | SOIC-8-EP | C107226 | 24→5.0 V buck |
|
||||||
|
| L2 | 10 µH ≥1 A | SMD 4×4 | verify | per datasheet |
|
||||||
|
| R20 | 100 k 1% | 0603 | C25803 | FB top |
|
||||||
|
| R21 | 19.1 k 1% | 0603 | verify | FB bottom → Vout=0.8·(1+R20/R21)≈5.0 V |
|
||||||
|
| C22 | 22 µF / 50 V | 1210 | verify | buck input cap |
|
||||||
|
| C23 | 22 µF / 16 V | 0805 | C45783 | buck output cap |
|
||||||
|
| Dbk | SS34 | DO-214AC | C8678 | buck freewheel (separate from fan flyback D2) |
|
||||||
|
| JP1 | 0 Ω / open | 0603 | C21189 | rail select — **OPEN** = use buck |
|
||||||
|
|
||||||
|
**Connections (From → To · Net):** (pin functions per MP1584 datasheet — confirm exact pin #s at capture)
|
||||||
|
|
||||||
|
```
|
||||||
|
U2.IN → 24V 24V (protected rail, post-Q10)
|
||||||
|
U2.EN → 24V - enable (or datasheet EN divider)
|
||||||
|
C22.1 → 24V 24V input cap at the IC
|
||||||
|
C22.2 → GND GND
|
||||||
|
U2.SW → L2.1 SW2_NODE keep switch-node copper tiny
|
||||||
|
Dbk.K → L2.1 SW2_NODE freewheel cathode to SW node
|
||||||
|
Dbk.A → GND GND
|
||||||
|
L2.2 → 5V_FAN 5V_FAN
|
||||||
|
C23.1 → 5V_FAN 5V_FAN output cap
|
||||||
|
C23.2 → GND GND
|
||||||
|
R20.1 → 5V_FAN 5V_FAN FB top
|
||||||
|
R20.2 → U2.FB FB
|
||||||
|
R21.1 → U2.FB FB
|
||||||
|
R21.2 → GND GND
|
||||||
|
JP1.1 → 5V_FAN 5V_FAN OPEN by default
|
||||||
|
JP1.2 → MAIN5V MAIN5V close ONLY if upsizing SD-15B-05 (never both)
|
||||||
|
```
|
||||||
|
BST/COMP/SS small caps **per MP1584 datasheet** (e.g. BST ~10 nF) — add at capture.
|
||||||
|
Keep U2 + L2 + the SW node **away from the GNSS antenna feed / P3** (RF, design §8).
|
||||||
|
The existing **fan flyback D2 (SS34)** across the fan stays as-is.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Block B — LTC4040 battery backup ✅ SIZED 2026-07-02 (datasheet 4040fb pass, 12 Ah pack)
|
||||||
|
|
||||||
|
**Intent (canonical power tree):** `P2 (vehicle 5 V from SD-15B-05) → VEH5V → RS → U6 power path
|
||||||
|
→ VSYS = MAIN5V (the backed-up rail) ; LTC4040 ↔ 1S4P cell on P4 ; NTC on the cell.`
|
||||||
|
LTC4040 architecture: single inductor SW↔BAT works as **step-down charger** (VSYS→BAT) when input
|
||||||
|
is good and **2.5 A step-up backup** (BAT→VSYS) when PFI trips. A **mandatory external NFET (Q7)**
|
||||||
|
between VIN and VSYS (gate = IGATE charge pump) disconnects the dead input during backup. Buck and
|
||||||
|
boost are **internally compensated** — no external comp network.
|
||||||
|
|
||||||
|
| Ref | Value / MPN | Formula → result | Note |
|
||||||
|
|---|---|---|---|
|
||||||
|
| U6 | **LTC4040EUFD** | — | QFN-24 4×5 mm, EP = GND (stitch) |
|
||||||
|
| Q7 | NFET 30 V ≥10 A, ≤15 mΩ, SOIC-8 (AO4406A-class) | — | VIN→VSYS disconnect, gate = IGATE |
|
||||||
|
| RS | **8 mΩ 1 %** (1206/2512 sense) | I_SYSLIM = 25 mV/RS → **3.1 A** | protects the SD-15B-05 (5 V/3 A); charge sheds first, load prioritized |
|
||||||
|
| RPROG | **825 Ω 1 %** | I_CHG = 2500·(0.8 V/RPROG) = 2000/RPROG → **2.42 A ≈ C/5** | ≤2.5 A max; PROG servos 0.8 V |
|
||||||
|
| RPF1/RPF2 | **287 k / 100 k 1 %** (VEH5V→PFI→GND) | trip = 1.19 V·(1+R1/R2) → **4.60 V falling**, ≈4.72 V recover | ⚠ bench-tune if the vehicle rail sags in service |
|
||||||
|
| RFB1/RFB2 | **499 k / 100 k 1 %** (VSYS→BSTFB=RSTFB→GND) | V_backup = 0.8 V·(1+R1/R2) → **4.79 V**; RST threshold −7.5 % ≈ 4.43 V | BSTFB+RSTFB shorted, one divider (datasheet) |
|
||||||
|
| L6 | **2.2 µH, Isat ≥ 8 A, DCR < 20 mΩ** (8040 power inductor) | datasheet range 1–2.2 µH; boost NMOS ILIM 5.5–7.5 A | SW↔BAT; tiny SW copper |
|
||||||
|
| CVIN | 10 µF X5R + 2.2 µF | — | at U6 VIN |
|
||||||
|
| CVSYS | **≥100 µF low-ESR ceramic** (2×47 µF 1210 + 10 µF) | datasheet minimum | backup-transition hold-up |
|
||||||
|
| CBAT | 22 µF X5R | ≥10 µF required | at U6 BAT |
|
||||||
|
| RNTB | **10 k 1 % low-drift** (VEH5V/VIN→NTC) | with RT1 10 k: datasheet default window | B3380 ideal; **B3950 acceptable** (trip shifts a few °C — note in bring-up) |
|
||||||
|
| RT1 | 10 k NTC **on the cell** (via P4.3) | — | NTC→GND at U6 |
|
||||||
|
| P4 | **JST-XH 3-pos** (was 2-pos) | — | 1=BAT+, 2=BAT−, 3=NTC |
|
||||||
|
| F2/F0 straps | **→ VSYS** · F1 → GND (solder jumpers JP2/3/4) | table: F2=1,F1=0,F0=1 → **4.00 V Li-ion** | strap to **VSYS not 3V3** so chemistry survives an absent MCU; 4.00 V ≈ 3× cycle life, kinder to hot cells (RCA #1); LiFePO4 = re-strap F2→GND (3.50 V) |
|
||||||
|
| CHGOFF | net `CHRG_EN` → PA8 + **100 k pull-down** | >1.2 V = charge OFF | default = charging enabled, NTC still guards |
|
||||||
|
| BSTOFF | **tie GND** | — | backup always armed; never float |
|
||||||
|
| CHRG / FAULT | → PB3 / PB4, **100 k↑3V3** | open-drain | STREAM-log telemetry |
|
||||||
|
| PFO | test point + DNP 100 k↑ | — | PA4 (VEH5V ÷2) already covers power-fail sensing |
|
||||||
|
| RST | leave open | — | Blackpill has its own supervisor |
|
||||||
|
| OVSNS | **short to VIN** | OVP module unused | input is the regulated SD-15B-05 inside the cabinet; 24 V side carries SPD |
|
||||||
|
| CLPROG | test point only | I_SYS = V_CLPROG/(32·RS) | unbuffered — do not load |
|
||||||
|
|
||||||
|
**Connections (From → To · Net):**
|
||||||
|
```
|
||||||
|
P2.1 → VEH5V VEH5V vehicle 5 V in (RENAMED from MAIN5V)
|
||||||
|
P2.2 → GND GND
|
||||||
|
VEH5V → RS.1 VEH5V RS = input current sense
|
||||||
|
RS.2 → U6.CLN + Q7.D VIN_SNS (U6.VIN Kelvin at RS.1 side: VIN pin → VEH5V node)
|
||||||
|
Q7.S → MAIN5V MAIN5V Q7 = VIN→VSYS disconnect NFET, gate → U6.IGATE
|
||||||
|
U6.VSYS(1,24) → MAIN5V MAIN5V backed-up system rail (feeds §5 cutoff merge)
|
||||||
|
U6.SW(21,22) → L6.1 SW_BAT keep copper tiny
|
||||||
|
L6.2 → U6.BAT + P4.1 BAT_PLUS (+ existing BAT_SENSE divider R5.1 stays on BAT_PLUS)
|
||||||
|
P4.2 → GND GND 1S4P −
|
||||||
|
P4.3 → U6.NTC NTC RT1 at the cell; RNTB 10 k VEH5V→NTC on-board
|
||||||
|
U6.PROG → RPROG → GND -
|
||||||
|
U6.CLPROG → TP -
|
||||||
|
U6.PFI → RPF1/RPF2 node PFI divider from VEH5V
|
||||||
|
U6.BSTFB + U6.RSTFB → RFB1/RFB2 node FB divider from MAIN5V
|
||||||
|
U6.CHGOFF → PA8 CHRG_EN + 100 k → GND
|
||||||
|
U6.BSTOFF → GND GND
|
||||||
|
U6.CHRG → PB3 CHRG_STAT + 100 k → 3V3
|
||||||
|
U6.FAULT → PB4 CHRG_FAULT + 100 k → 3V3
|
||||||
|
U6.F2/F0 → MAIN5V (VSYS) - via JP2/JP4 ; U6.F1 → GND via JP3
|
||||||
|
U6.OVSNS → U6.VIN VEH5V OVP unused
|
||||||
|
U6.EP → GND GND thermal/electrical
|
||||||
|
```
|
||||||
|
|
||||||
|
**Checklist (fab gate unchanged):**
|
||||||
|
- [x] ~~Confirm pack Ah~~ → **~12 Ah** (corrected 2026-06-30). RPROG sized (2.42 A ≈ C/5).
|
||||||
|
- [x] ~~Size L6, RS, PFI divider, compensation~~ → table above (internally compensated; no comp parts).
|
||||||
|
- [x] ~~Jumper-select charge voltage~~ → JP2/3/4 straps to VSYS/GND, default 4.00 V Li-ion.
|
||||||
|
- [ ] **Bench-validate** the temp-qualified charge cutoff + backup transition **before fab**.
|
||||||
|
- [ ] ⚠ **Safety-timer note:** deep-discharge full recharge (12 Ah @ 2.42 A ≈ 5 h) exceeds the
|
||||||
|
internal charge safety timer — firmware restarts the cycle via `CHRG_EN` when the cell is
|
||||||
|
cool and `BAT_SENSE` is low (see canonical §7 firmware items).
|
||||||
|
|
||||||
|
> The proto validates this path with the TP4056 + MT3608 + 1N5819 OR-ing + 10 k NTC stand-in
|
||||||
|
> (proto BOM). The PCB uses the LTC4040. Only the temp-qualified cutoff is LTC4040-only →
|
||||||
|
> validate that in firmware logic.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Blocks C / D / E — reset, gauge, cutoff ✅ (E node pending B)
|
||||||
|
|
||||||
|
**C. Reset**
|
||||||
|
| Ref | Part | Connections |
|
||||||
|
|---|---|---|
|
||||||
|
| SW1 | SPST momentary (SOT/SMD tact) | NRST → SW1 → GND |
|
||||||
|
| P10 | JST-XH 2-pos (external reset) | P10.1 → NRST · P10.2 → GND |
|
||||||
|
|
||||||
|
**D. 4-LED battery gauge** (firmware-driven from `BAT_SENSE`, HIGH = lit)
|
||||||
|
| Ref | Part | Connections |
|
||||||
|
|---|---|---|
|
||||||
|
| R_BL1..4 | 330 Ω 0603 ×4 | PB12→R_BL1, PB13→R_BL2, PB14→R_BL3, PB15→R_BL4 |
|
||||||
|
| D_BAT1..4 | LED 0805 ×4 | R_BLn → D_BATn.A ; D_BATn.K → GND |
|
||||||
|
|
||||||
|
**E. Power cutoff** (kills vehicle **and** battery)
|
||||||
|
- External switch in series in the **post-merge** 5 V (LTC4040 VSYS/MAIN5V → system loads).
|
||||||
|
- Define `SYS5V` = MAIN5V after the cutoff; route the Blackpill 5 V pin + load-switch (Q1 source
|
||||||
|
+ F1) + the K1 relay coil from `SYS5V`. Implement as 2-pos connector **P11** to an external
|
||||||
|
switch: `P11.1 → MAIN5V · P11.2 → SYS5V`. **Ship with a jumper plug installed** (open P11 =
|
||||||
|
dead board). The **PA4 divider taps VEH5V** (Block F), *not* SYS5V.
|
||||||
|
- Merge/cutoff node finalized with the §4 pass: MAIN5V = U6 VSYS output rail.
|
||||||
|
|
||||||
|
## 5b. Block H — Modo-B fail-safe uplink bypass ✅ NEW 2026-07-02
|
||||||
|
|
||||||
|
**Requirement (ledger):** a dead/absent/hung MCU must never cut RTCM3 corrections. In Modo B the
|
||||||
|
watchdog sits in-line on the *uplink* (F9P TX2 → 4G DIN) to inject `$PHLG`; the RTCM3 *downlink*
|
||||||
|
(4G DOUT → F9P RX2) is always direct and never enters the MCU.
|
||||||
|
|
||||||
|
**Implementation: SPDT signal relay, normally-closed** — chosen over an analog mux because a mux
|
||||||
|
dies with the 3V3 rail; relay contacts keep the direct path **even with the Blackpill physically
|
||||||
|
removed or the board unpowered**.
|
||||||
|
|
||||||
|
| Ref | Part | Note |
|
||||||
|
|---|---|---|
|
||||||
|
| K1 | SPDT signal relay, 5 V coil (HFD23/005-class) | NC = direct path; coil ~30 mA only while MCU inserted |
|
||||||
|
| Q6 | MMBT3904 (SOT-23) | low-side coil driver |
|
||||||
|
| R40 / R41 | 1 k (PB5→base) / 10 k (base→GND) | default OFF |
|
||||||
|
| D6 | 1N4148 (SOD-123) | coil flyback |
|
||||||
|
| P13 | JST-XH 3-pos | 1 = F9P_TX2 · 2 = 4G_DIN · 3 = GND |
|
||||||
|
|
||||||
|
```
|
||||||
|
P13.1 → K1.NC + PA10 F9P_TX2 PA10 = passive monitor tap (USART1 RX)
|
||||||
|
K1.COM → P13.2 4G_DIN
|
||||||
|
K1.NO → PA9 PA9_TX MCU uplink (USART1 TX, $PHLG injection)
|
||||||
|
SYS5V → K1.coil+ SYS5V
|
||||||
|
K1.coil− → Q6.C ; Q6.E → GND ; PB5 → R40 → Q6.B ; R41 B→GND ; D6 across coil (K→SYS5V)
|
||||||
|
```
|
||||||
|
De-energized (default, MCU dead, board cut off): **NC closes F9P TX2 → 4G DIN** — corrections
|
||||||
|
and position flow exactly as if the watchdog weren't there.
|
||||||
|
|
||||||
|
## 5d. Block J — CARRIER-BOARD sockets (F9P + 4G on the board) ✅ NEW 2026-07-02 (PM)
|
||||||
|
|
||||||
|
**Decision (Leo):** the PROD board is now the **HBOX carrier/motherboard** — all three modules
|
||||||
|
ride on female headers: Blackpill (J1/J2, already socketed), **simpleRTK2B Pro as an
|
||||||
|
Arduino-UNO-form shield** (MOD1), and the **4G NTRIP Master on its own XBee socket** (J7/J8).
|
||||||
|
Board grown **100×80 → 120×100 mm** (Leo approved; ASA case/plate to be reprinted).
|
||||||
|
|
||||||
|
| Ref | Part | Note |
|
||||||
|
|---|---|---|
|
||||||
|
| MOD1 | 4× UNO female headers (10+8+8+6, 2.54 mm) | footprint `Module:Arduino_UNO_R3`; custom symbol `SimpleRTK2B_Pro_Socket` in `Drogheda-sym` |
|
||||||
|
| J7/J8 | 2× PinSocket 1×10, **2.00 mm** | XBee socket, rows **22.35 mm** apart (J7 = pins 1–10 row) |
|
||||||
|
|
||||||
|
**MOD1 pin map (pads = KiCad UNO footprint; functions verified against the official
|
||||||
|
`pinout-simpleRTK2B_Pro-R00` image + UNO geometry cross-check):**
|
||||||
|
```
|
||||||
|
D0 = TX1 (F9P UART1 TX) → GNSS_RX (PA3) power hdr: 5V → SW_5V (Pro's "5V=OUTPUT" sw OFF)
|
||||||
|
D1 = RX1 (F9P UART1 RX) → GNSS_TX (PA2) IOREF → 3V3 (defines TX/RX levels)
|
||||||
|
D2 = RX2 (F9P UART2 RX) → DOUT_4G (RTCM3 in, direct) GND ×3 → GND
|
||||||
|
D8 = TX2 (F9P UART2 TX) → USART1_RX (K1.NC + PA10 tap) 3V3/VIN/RESET/A0–A5/D3–D7/D9–D13/
|
||||||
|
AREF/SDA/SCL → NC (per Ardusimple:
|
||||||
|
don't connect unused special pins)
|
||||||
|
```
|
||||||
|
**XBee socket:** J7.1 VCC → **3V3_MODEM** (⚠ the Pro's HP socket spec is **3.3 V, 1 A/1.5 A pk**
|
||||||
|
— NOT 5 V; the old "socket gives 5 V" note was wrong) · J7.2 DOUT → `DOUT_4G` → F9P RX2
|
||||||
|
(RTCM3 **direct**, never through the MCU) · J7.3 DIN ← K1.COM (`DIN_4G`) · J7.10 GND. J8 all NC.
|
||||||
|
|
||||||
|
**Consequences:** Modo B is now the *permanent* uplink architecture with the K1 NC bypass as the
|
||||||
|
hardware fail-safe (dead/absent MCU ⇒ TX2→DIN direct). The F9P's own XBee socket stays EMPTY;
|
||||||
|
its **XBEE↔UART switch parks on UART1** so UART2 stays on the rails. **P3 / P13 / H3 → DNP**
|
||||||
|
(harness alternatives for non-socketed installs).
|
||||||
|
|
||||||
|
## 5e. Block K — 3V3_MODEM buck (U7) ✅ NEW 2026-07-02 (PM)
|
||||||
|
|
||||||
|
The modem needs 3.3 V @ ≥1.5 A pk — too much for the Blackpill's LDO, and an LDO from 5 V would
|
||||||
|
burn ~1.7 W. Second **MP1584EN** (U7, same BOM as Block A) fed from **SW_5V** so the watchdog's
|
||||||
|
stack power-cycle also reboots the modem (invariant #3):
|
||||||
|
`U7: VIN/EN=SW_5V · SW→L7 10 µH→3V3_MODEM · FB R60 100k / R61 31.6k (→3.33 V) · Dbk2 SS34 ·
|
||||||
|
Cbst2 10 nF · Rfreq2 100k · Rcomp2 40.2k + Ccomp2 2.2 nF · C40 22 µF in · C41 22 µF + C43 100 µF
|
||||||
|
elco out (LTE bursts)`.
|
||||||
|
|
||||||
|
## Build status (2026-07-02 PM) — carrier conversion BUILT
|
||||||
|
|
||||||
|
MOD1 + J7/J8 + Block K captured; **ERC 0 errors** (82 cosmetic). Board **120×100**, outline +
|
||||||
|
GND pour resized, holes at (5,5)(115,5)(5,95)(115,95). Placement: shield field center-bottom
|
||||||
|
(courtyard ≈ x22.6–98, y45–99) with **only SMD ≤6 mm underneath** (LTC4040 block, dividers,
|
||||||
|
I²C, NTC, Rdfu); Blackpill sockets horizontal above it; XBee rows vertical right (module field
|
||||||
|
x≈92–119, y26–44); K1/relay + buck A top-right; all operator/access parts (SW1, gauge, JSTs,
|
||||||
|
P1) outside the shield. **DRC: 87 pre-route errors** — ~55 are the *by-design* under-shield
|
||||||
|
courtyard overlaps vs MOD1 + ~29 sub-mm courtyard kisses left for the placement review.
|
||||||
|
⚠ Review notes: P3 (DNP) sits in the shield's notch corner; J8 is 1.2 mm from the board edge;
|
||||||
|
**verify D2/D8 = RX2/TX2 against a physical Pro before routing** (positions read from the
|
||||||
|
official pinout image).
|
||||||
|
|
||||||
|
## 5c. Block I — NTC→PB1 hot-spot temperature (block 11) ✅ NEW 2026-07-02
|
||||||
|
|
||||||
|
| Ref | Part | Note |
|
||||||
|
|---|---|---|
|
||||||
|
| R42 | 10 k **1 %** (3V3 → PB1 node) | divider top |
|
||||||
|
| P12 | JST-XH 2-pos | external 10 k NTC (B≈3950), placed at the hot spot (battery/modem) |
|
||||||
|
| C24 | 100 nF (PB1 → GND) | ADC settling |
|
||||||
|
|
||||||
|
`3V3 → R42 → PB1 (+C24) → P12.1 ; P12.2 → GND`. ≈1.65 V @ 25 °C; firmware Beta/Steinhart;
|
||||||
|
can drive the `CHRG_EN` cutoff. This is the proto's temperature path (no SHT40 in hand);
|
||||||
|
the PCB keeps U3/U4 (I²C) **and** this channel.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Corrections to make on BOTH boards (proto + production) ✅
|
||||||
|
|
||||||
|
1. **PA4 5V-sense tap → vehicle side (live Finding 3).** With the LTC4040 backing MAIN5V,
|
||||||
|
`R7.1` must move from `MAIN5V` to **`VEH5V`** (the P2/SD-15B-05 node, before hold-up).
|
||||||
|
On the **proto** (no LTC4040) MAIN5V == vehicle 5 V so it's harmless there, but make the
|
||||||
|
net `VEH5V` now so both boards match and production is correct. *Without this, `v5v` never
|
||||||
|
drops below `V5V_OFF`, `vehiclePower` never clears, and the cell drains.*
|
||||||
|
2. **Finish the GND unify.** The file still has **4 `power:GNDREF`** symbols (canonical §4
|
||||||
|
claimed these were converted to `power:GND` — not persisted). Convert all 4 to `power:GND`
|
||||||
|
(or wire them to the GND-label net) and re-run ERC, or ground splits into GND vs GNDREF.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Open decisions / flags
|
||||||
|
|
||||||
|
- **H1 (SWD header) — DECIDED 2026-06-25: DROP.** SWD (PA13/PA14) isn't on the Blackpill
|
||||||
|
2×20 socket — it's on the module's own separate SWD header — so a carrier H1 buys nothing the
|
||||||
|
USB-C path doesn't already give: flashing via USB DFU (BOOT0), diagnostics via the USB CDC
|
||||||
|
STREAM log. **Optional:** lay an **unpopulated (DNP) 4-pad** SWD footprint (3V3 / SWDIO /
|
||||||
|
SWCLK / GND) for bench bring-up; if ever used, jumper SWDIO/SWCLK to the module's SWD header.
|
||||||
|
**Remove or mark DNP** the H1 rows in `watchdog-connections.xlsx` and `watchdog-pcb-v3-bom.xlsx`.
|
||||||
|
- **PB12 reassigned** from "2nd-fan-tach spare" to gauge BATLED1 (fans are 2-wire, no tach —
|
||||||
|
canonical open item). PB10 tach stays a DNP provision.
|
||||||
|
- **JP1 stays OPEN** (dedicated fan rail). Only close if SD-15B-05 is upsized to 5 V/5 A.
|
||||||
|
|
||||||
|
## 8. Build mechanics
|
||||||
|
|
||||||
|
- Production project copy already created: `kicad/hbox-watchdog-v3-PROD.kicad_{pro,sch,pcb}`
|
||||||
|
(the proto file is untouched — it was open in KiCad).
|
||||||
|
- I can generate this in KiCad once the KiCad backend is back up **and** the proto is closed
|
||||||
|
(so there's no file conflict). Suggest also renaming the proto to `…-proto` once you're out.
|
||||||
|
|
||||||
|
## Related
|
||||||
|
- [[watchdog-electrical-design-state]] (CANONICAL) · [[watchdog-pcb-v3-design]] (§4 sub-circuits) ·
|
||||||
|
[[watchdog-connections-rationale]] (Finding 3) · `watchdog-connections.xlsx` ·
|
||||||
|
`watchdog-pcb-v3-bom.xlsx` · `kicad/hbox-watchdog-v3-PROD.kicad_sch`
|
||||||
181
03-Architecture-Hardware/watchdog-proto-bench-bringup-v3.md
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
date: 2026-06-24
|
||||||
|
status: Active — tomorrow's bench guide (supersedes the procedure half of watchdog-protoboard-bringup.md for v3)
|
||||||
|
---
|
||||||
|
|
||||||
|
# Watchdog v3 — Proto Build Readiness & Bench Bring-up
|
||||||
|
|
||||||
|
> **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`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Verdict — are you ready to build? **Yes, with three caveats**
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. What you can prove tomorrow (firmware v2.3 supports it) vs. not
|
||||||
|
|
||||||
|
| Sub-circuit | Pins | v2.3 firmware | Testable tomorrow? |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 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 + tach | PA6 / PB10 | ✅ 25 kHz PWM, RPM, stall fault | **Yes (3-wire fan)** |
|
||||||
|
| I²C temp/RH (closed-loop fan) | PB6/PB7 → SHT40 0x44 + TMP102 0x48 | ✅ + MCU-temp fallback | **Yes** (fallback works even with no sensor) |
|
||||||
|
| 4-LED battery gauge | PB12–15 | ❌ not coded | wire OK, **stays dark** |
|
||||||
|
| Temp-qualified charge cut (`CHRG_EN`) | PA8 | ❌ not coded | **No** (also LTC4040/PROD-only) |
|
||||||
|
| Reset (hardware) | NRST | n/a (HW only) | **Yes** — button just works |
|
||||||
|
|
||||||
|
**Fan note:** v2.3 reads a **3-wire** tach on PB10, so use a **3-wire 5 V fan** on the breadboard.
|
||||||
|
(The "2-wire production fan" decision in the canonical doc is a *PCB* change; it doesn't apply to
|
||||||
|
tomorrow's bench.)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. The ERC situation (so you can stop worrying about it tonight)
|
||||||
|
|
||||||
|
- **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. Pre-build parts checklist (reconstructed — confirm against your box)
|
||||||
|
|
||||||
|
**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.*
|
||||||
|
|
||||||
|
**Core (the "brains" — must-have):**
|
||||||
|
|
||||||
|
- [ ] 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)
|
||||||
|
|
||||||
|
**Thermal (v3 new):**
|
||||||
|
|
||||||
|
- [ ] **3-wire** 5 V fan, 40–60 mm (3-wire so PB10 reads RPM — matches v2.3)
|
||||||
|
- [ ] **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)
|
||||||
|
- [ ] I²C **SHT40/SHT31** breakout (0x44) — *or* LM35/DS18B20 fallback (tell me which; I'll patch the read)
|
||||||
|
|
||||||
|
**v3 additions (build only if you want them wired now — see §4):**
|
||||||
|
|
||||||
|
- [ ] 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) +
|
||||||
|
**10 kΩ NTC** *(reproduces charge / power-loss→backup / BAT_SENSE; the temp-qualified cutoff is
|
||||||
|
LTC4040-only → firmware-validated, not on the proto)*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Decision before you sit down: how much of v3 to wire
|
||||||
|
|
||||||
|
- **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)
|
||||||
|
|
||||||
|
```
|
||||||
|
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.
|
||||||
|
```
|
||||||
|
|
||||||
|
> **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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. After the proto works — next steps (not tomorrow)
|
||||||
|
|
||||||
|
- 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).
|
||||||
|
|
||||||
|
## 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`
|
||||||
@ -1,41 +0,0 @@
|
|||||||
$$$AS+I=1111
|
|
||||||
$$$AS+A=internet.itelcel.com
|
|
||||||
$$$AS+Q=webgprs
|
|
||||||
$$$AS+q=webgprs2002
|
|
||||||
$$$AS+O=0
|
|
||||||
$$$AS+L=1
|
|
||||||
$$$AS+D=1
|
|
||||||
$$$AS+f=0
|
|
||||||
$$$AS+B=115200
|
|
||||||
$$$AS+N=1
|
|
||||||
$$$AS+S=rtk2go.com
|
|
||||||
$$$AS+P=2101
|
|
||||||
$$$AS+U=rtkh0021@helgen.tech:none
|
|
||||||
$$$AS+M=HelgenTestStation
|
|
||||||
$$$AS+n=0
|
|
||||||
$$$AS+s=
|
|
||||||
$$$AS+p=
|
|
||||||
$$$AS+u=
|
|
||||||
$$$AS+m=0
|
|
||||||
$$$AS+i=
|
|
||||||
$$$AS+a=0
|
|
||||||
$$$AS+Z=0
|
|
||||||
$$$AS+z=pp.services.u-blox.com
|
|
||||||
$$$AS+Y=
|
|
||||||
$$$AS+y=0
|
|
||||||
$$$AS+X=0
|
|
||||||
$$$AS+x=0
|
|
||||||
$$$AS+W=0
|
|
||||||
$$$AS+w=
|
|
||||||
$$$AS+V=
|
|
||||||
$$$AS+v=
|
|
||||||
$$$AS+t=
|
|
||||||
$$$AS+T=1
|
|
||||||
$$$AS+r=199.85.208.94
|
|
||||||
$$$AS+h=5010
|
|
||||||
$$$AS+k=2
|
|
||||||
$$$AS+K=H0021
|
|
||||||
$$$AS+j=300
|
|
||||||
$$$AS+C=1
|
|
||||||
$$$AS+c=0
|
|
||||||
$$$AS+F=1
|
|
||||||
@ -0,0 +1,513 @@
|
|||||||
|
% Helgen Technologies — HBOX RTK · RCA + Plan de Robustez (Project Drogheda)
|
||||||
|
% Audiencia: ICAVE (cliente, supervisor tecnico). Tono: responsable, tecnico, honesto.
|
||||||
|
% Compilar con XeLaTeX: latexmk -xelatex -interaction=nonstopmode <file>.tex (pdflatex tambien funciona, con fuentes fallback)
|
||||||
|
% v1.1 (2026-07-02): REGISTRO HISTORICO INTACTO — el contenido entregado el 22-jun no se modifica
|
||||||
|
% (verificado contra el ledger 2026-07-02: ASA correcto, rectificacion master-14 presente, sin
|
||||||
|
% "40 Ah"/"PLA"/tach, honestidad termica presente). Unico cambio: se AGREGA una lamina de adenda
|
||||||
|
% al final (sin numero de pagina) con el avance al 2-jul. v1.0 se conserva intacta.
|
||||||
|
\documentclass[10pt,aspectratio=169]{beamer}
|
||||||
|
|
||||||
|
\usetheme[progressbar=frametitle, numbering=fraction, block=fill]{metropolis}
|
||||||
|
|
||||||
|
% ---------- Paleta oficial Helgen (Guia de Identidad v1.5, 2026) ----------
|
||||||
|
\definecolor{HelgenIndigo}{HTML}{2C3C5B} % Indigo — color primario
|
||||||
|
\definecolor{HelgenCyan}{HTML}{51F3DA} % Verde cian — acento
|
||||||
|
\definecolor{HelgenTeal}{HTML}{17A08C} % derivado: cian oscurecido para TEXTO sobre blanco
|
||||||
|
\definecolor{HelgenMist}{HTML}{EFF1F5} % derivado: tinte indigo 8% para rellenos
|
||||||
|
\definecolor{HelgenAmber}{HTML}{C0392B} % rojo de alerta (umbrales/peligro)
|
||||||
|
|
||||||
|
\setbeamercolor{normal text}{fg=HelgenIndigo, bg=white}
|
||||||
|
\setbeamercolor{alerted text}{fg=HelgenTeal}
|
||||||
|
\setbeamercolor{frametitle}{bg=HelgenIndigo, fg=white}
|
||||||
|
\setbeamercolor{progress bar}{fg=HelgenCyan, bg=HelgenMist}
|
||||||
|
\setbeamercolor{title separator}{fg=HelgenCyan}
|
||||||
|
\setbeamercolor{block title}{bg=HelgenMist, fg=HelgenIndigo}
|
||||||
|
\setbeamercolor{block title alerted}{bg=HelgenIndigo, fg=white}
|
||||||
|
|
||||||
|
% ---------- Fuentes de marca + idioma ----------
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\IfFontExistsTF{League Spartan}{%
|
||||||
|
\newfontfamily\helgentitle{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\setbeamerfont{title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{frametitle}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{section title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{standout}{family=\helgentitle, series=\bfseries}
|
||||||
|
}{}
|
||||||
|
\IfFontExistsTF{MADE Evolve Sans}{\setsansfont{MADE Evolve Sans}}{}
|
||||||
|
\else
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\fi
|
||||||
|
% babel-spanish no esta en este TeX Live; XeLaTeX maneja acentos UTF-8 nativamente.
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{array}
|
||||||
|
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{arrows.meta, positioning, shapes.misc, fit, backgrounds}
|
||||||
|
\usepackage{listings}
|
||||||
|
\lstset{
|
||||||
|
basicstyle=\ttfamily\scriptsize,
|
||||||
|
keywordstyle=\color{HelgenIndigo}\bfseries,
|
||||||
|
commentstyle=\color{gray},
|
||||||
|
stringstyle=\color{HelgenTeal},
|
||||||
|
showstringspaces=false, breaklines=true, frame=single,
|
||||||
|
framerule=0.2pt, rulecolor=\color{HelgenMist}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------- Estilos TikZ ----------
|
||||||
|
\tikzset{
|
||||||
|
box/.style={rounded rectangle, draw=HelgenIndigo, fill=HelgenMist,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
st/.style={rounded rectangle, draw=HelgenIndigo, fill=HelgenMist,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
hot/.style={rounded rectangle, draw=HelgenAmber, fill=HelgenMist, very thick,
|
||||||
|
font=\scriptsize, minimum height=7mm, inner xsep=2mm, align=center},
|
||||||
|
arr/.style={-{Stealth}, thick, HelgenTeal},
|
||||||
|
arrb/.style={-{Stealth}, thick, HelgenIndigo}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------- Vinetas + separador (la fuente de marca no trae bullet ni middot) ----------
|
||||||
|
\setbeamertemplate{itemize item}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.85ex}{0.85ex}}}
|
||||||
|
\setbeamertemplate{itemize subitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.6ex}{0.6ex}}}
|
||||||
|
\setbeamertemplate{itemize subsubitem}{\textcolor{HelgenTeal}{\rule[0.25ex]{0.5ex}{0.5ex}}}
|
||||||
|
\newcommand{\sep}{\raisebox{0.35ex}{\rule{0.45ex}{0.45ex}}}
|
||||||
|
% Pie de figura con ancho acotado (evita desbordes al centrar texto largo)
|
||||||
|
\newcommand{\figcap}[1]{\par\vspace{1.2mm}\centerline{\begin{minipage}{0.92\textwidth}\footnotesize\centering #1\end{minipage}}}
|
||||||
|
|
||||||
|
% ---------- Pie de pagina ----------
|
||||||
|
\setbeamertemplate{frame footer}{%
|
||||||
|
\scriptsize\color{gray}\insertshortauthor\ \sep\ \insertshorttitle\ \sep\ Confidencial — Helgen Servicios Especializados}
|
||||||
|
|
||||||
|
% ---------- Metadatos ----------
|
||||||
|
\title[RCA HBOX RTK \sep\ ICAVE]{HBOX RTK — Análisis de Causa Raíz y Plan de Robustez}
|
||||||
|
\subtitle{Fallas de campo en ICAVE (Veracruz) \sep\ Camino a HBOX v3.0}
|
||||||
|
\author[Helgen Technologies]{Helgen Technologies — Ingeniería de Producto}
|
||||||
|
\date{22 de junio de 2026}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{frame}{Agenda}
|
||||||
|
\setbeamertemplate{section in toc}[sections numbered]
|
||||||
|
\tableofcontents[hideallsubsections]
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Contexto y hallazgo principal}
|
||||||
|
|
||||||
|
\begin{frame}{¿Qué pasó?}
|
||||||
|
\begin{itemize}
|
||||||
|
\item 5 HBOX RTK instalados en equipo pesado de ICAVE (RTG, reach stackers, montacargas, tractoplana).
|
||||||
|
\item Operación intermitente desde el arranque y, después, una \alert{falla casi simultánea} en toda la flota.
|
||||||
|
\item En paralelo, durante semanas: \alert{desconexiones recurrentes} en Wialon.
|
||||||
|
\item Escalamiento del cliente (17 jun). Unidades retiradas: 4 en mano (3 fuera de servicio, 1 funcional) en Veracruz; equipo en Querétaro.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Lo primero: transparencia}
|
||||||
|
Nuestra primera hipótesis fue el calor. El análisis con datos revela un cuadro más complejo, y este informe \textbf{corrige el diagnóstico con evidencia}.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Hallazgo principal}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{No hay una causa única.} La evidencia apunta a \alert{al menos dos causas independientes}, amplificadas por una tercera.
|
||||||
|
\item \textbf{(1) Backend} — \alert{confirmado en el código}: puede retirar de Wialon a unidades que en realidad están \emph{sanas}.
|
||||||
|
\item \textbf{(2) Hardware / térmico} — causa física probable de las unidades genuinamente dañadas (a confirmar con desmontaje + termopar).
|
||||||
|
\item \textbf{(3) Firmware} — convierte interrupciones breves en cortes prolongados (ya corregido en v2).
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Una consecuencia favorable}
|
||||||
|
Varias unidades reportadas como «caídas» pueden tener el \textbf{radio sano} y ser \textbf{víctimas del servidor}: esa parte es de corrección inmediata y de bajo costo.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{En una línea}
|
||||||
|
\begin{block}{Síntesis}
|
||||||
|
\large Los radios \textbf{funcionan}: entregamos posición GPS estándar (SPS) de forma confiable, \alert{todavía no RTK}. Los frentes por cerrar son la \textbf{fuente de correcciones}, la \textbf{observabilidad}, el \textbf{térmico} y la \textbf{vibración} — los cuatro, en corrección.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Metodología de diagnóstico}
|
||||||
|
|
||||||
|
\begin{frame}{Cómo diagnosticamos}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Principio:} validar primero las causas \alert{más probables y de comprobación inmediata} —sin desmontar unidades— antes que las hipótesis exóticas.
|
||||||
|
\item \textbf{3 vistas de log independientes por unidad:} receptor u-blox (\texttt{.ubx}), consola del 4G-NTRIP-Master (\texttt{.log}) y captura del retranslator en el servidor (\texttt{tcpdump}).
|
||||||
|
\item \textbf{+} archivos de configuración (caster NTRIP y ZED-F9P) \textbf{+} un \alert{baseline sano} de referencia (\texttt{RTK14\_440}).
|
||||||
|
\item \textbf{Herramientas propias} (\texttt{hbox-log-tools}): Log Explorer en navegador, analizador por lotes y dashboard.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Diagnóstico diferencial (H1–H8)}
|
||||||
|
\centering\scriptsize
|
||||||
|
\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.15}
|
||||||
|
\begin{tabular}{@{}c L{0.42\textwidth} c c L{0.18\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
\# & Hipótesis & A: simult. & B: descon. & Estado / Prior \\
|
||||||
|
\midrule
|
||||||
|
H1 & Térmico (batería / booster / módem en gabinete sellado + Mean Well) & Sí & Sí & Alto \\
|
||||||
|
H2 & Backend HOL (retranslator bloqueante) & Sí & Sí & \textbf{Confirmado (código)} \\
|
||||||
|
H2b & Filtro anti-salto (bloqueo permanente) & No & Sí & \textbf{Confirmado (código)} \\
|
||||||
|
H3 & Vibración (Dupont / SMA / soldadura) & No & Sí & Alto \\
|
||||||
|
H4 & Módulo 4G NTRIP (cuelgue / falla) & Parc. & Sí & Alto \\
|
||||||
|
H5 & Fusible sub-dimensionado & Sí* & Parc. & Medio \\
|
||||||
|
H6 & Lógica de watchdog (reset / loop) & No & Sí & Alto (para B) \\
|
||||||
|
H7 & Brownout de batería (caída de tensión por calor) & Sí & Sí & Medio-alto \\
|
||||||
|
H8 & Riel de potencia / EMI de la máquina & Parc. & Sí & Medio \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Las dos comprobaciones \alert{más rápidas} (backend H2, fusible H5) se confirman en una hora, \textbf{sin desmontar una sola unidad}.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Evidencia: los datos}
|
||||||
|
|
||||||
|
\begin{frame}{Dos fallas, probablemente \emph{dos} causas}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\textbf{(A) Falla casi simultánea}
|
||||||
|
\begin{itemize}\small
|
||||||
|
\item Apunta a un estresor de \alert{modo común}.
|
||||||
|
\item Candidatos: calor, backend / caster / SIM, servidor.
|
||||||
|
\end{itemize}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\textbf{(B) Desconexión crónica}
|
||||||
|
\begin{itemize}\small
|
||||||
|
\item Apunta a \alert{intermitencias}.
|
||||||
|
\item Candidatos: vibración, cuelgue del 4G, watchdog lento.
|
||||||
|
\end{itemize}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Por qué no reducirlo todo a «calor»}
|
||||||
|
Atribuir todo al calor pierde una corrección barata de \textbf{backend}, y un rediseño térmico \textbf{no} detendría las intermitencias por \textbf{vibración}. Se atienden ambas.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Ninguna unidad alcanzó RTK}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth,height=0.76\textheight,keepaspectratio]{figs/fig_fix_compare.pdf}
|
||||||
|
\vfill
|
||||||
|
\figcap{Todas las capturas en \textbf{SPS (calidad 1)}; \alert{cero en RTK (4/5)}. El posicionamiento centimétrico nunca se entregó.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{El receptor está sano — el problema no es el ZED-F9P}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth,height=0.76\textheight,keepaspectratio]{figs/fig_baseline_gnss.pdf}
|
||||||
|
\vfill
|
||||||
|
\figcap{Baseline \texttt{RTK14\_440}: \textbf{12 satélites, HDOP 0.75}, C/N0 sano — pero atrapado en SPS. El receptor funciona.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{La entrega extremo-a-extremo es sana}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth,height=0.74\textheight,keepaspectratio]{figs/fig_delivery.pdf}
|
||||||
|
\vfill
|
||||||
|
\figcap{\texttt{RTK14\_440}: \textbf{984 paquetes, 1 Hz estable, cero caídas} al servidor. Lección clave: \alert{«entrega sana» $\neq$ «RTK»}.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Las correcciones son marginales}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\linewidth,height=0.70\textheight,keepaspectratio]{figs/fig_ntrip_delay.pdf}
|
||||||
|
\vfill
|
||||||
|
\figcap{\textbf{Causa:} caster público gratuito \texttt{rtk2go} (sin SLA) + configuración del F9P \alert{solo en RAM} + cielo interior (banco). El cliente NTRIP rara vez alcanza el estado «conectado».}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{La trampa diagnóstica (y una rectificación)}
|
||||||
|
\begin{itemize}
|
||||||
|
\item La \textbf{consola del 4G-NTRIP-Master no es un indicador de salud confiable}: el baseline \emph{sano} registra la misma consola escasa que las unidades que «parecían» falladas.
|
||||||
|
\item \alert{Rectificación:} la supuesta «falla de ingest en master-14» queda \textbf{retirada} — master-14 \emph{es} el baseline y demuestra reenvío.
|
||||||
|
\item \textbf{Solo master-21} es una falla confirmada (el módem nunca registra: \texttt{0xFFFFF} + 511 errores del parser AT).
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Lección}
|
||||||
|
La salud por unidad debe provenir de un componente que \textbf{interpreta el fix} —el Blackpill— registrado en un formato confiable.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Causas raíz}
|
||||||
|
|
||||||
|
\begin{frame}{Térmico (H1 / H7) — qué es real y qué falta probar}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Trampa térmica anidada:} el HBOX va sellado dentro de un gabinete ABS IP67 que \emph{además} aloja la fuente Mean Well, a pleno sol en Veracruz (interior estimado 60–80\,°C).
|
||||||
|
\item \textbf{La carcasa ASA fue una elección correcta:} UV-estable y reblandece a $\sim$95–100\,°C, con margen frente a esa temperatura. \alert{El gabinete no es el eslabón débil.}
|
||||||
|
\item \textbf{El eslabón débil son los componentes de potencia de grado prototipo} en ese espacio caliente: batería 18650 (carga $\leq$45\,°C $\rightarrow$ caída de tensión / hinchamiento), PowerBoost 1000C (booster \emph{hobby}) y el módem 4G (throttling térmico).
|
||||||
|
\item El \textbf{ZED-F9P} ($-40\ldots+85$\,°C) \alert{no} es la víctima.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Honesto}
|
||||||
|
En banco las fallas se reproducen \textbf{en frío} $\rightarrow$ el calor \emph{no} explica lo observado en estos logs. La hipótesis térmica de \textbf{campo} sigue \alert{abierta} (falta soak con termopar).
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}[fragile]{Backend (H2 / H2b) — confirmado en el código}
|
||||||
|
\begin{itemize}\small
|
||||||
|
\item \textbf{H2:} el envío a Wialon (con \texttt{connect} de 20\,s y espera de ACK) ocurre \alert{dentro} del único bucle UDP $\rightarrow$ un upstream lento detiene el bucle y \textbf{toda la flota cae a la vez}.
|
||||||
|
\item \textbf{H2b:} el filtro anti-salto no actualiza su referencia tras un «salto» rechazado $\rightarrow$ una unidad sana queda \alert{fuera de Wialon de forma permanente}.
|
||||||
|
\end{itemize}
|
||||||
|
\begin{lstlisting}
|
||||||
|
# retranslator.py (defecto): envio sincrono en el bucle de recepcion
|
||||||
|
for pkt in udp_recv_loop(): # un solo hilo, toda la flota
|
||||||
|
wialon.connect(timeout=20) # bloquea a TODOS si el upstream tarda
|
||||||
|
wialon.send(pkt); wialon.wait_ack() # head-of-line stall
|
||||||
|
\end{lstlisting}
|
||||||
|
\footnotesize Triage \alert{sin costo}: ONLINE en htracker pero OFFLINE en Wialon $\Rightarrow$ víctima del backend, no hardware dañado.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Firmware (H6) — convierte una interrupción breve en un corte largo}
|
||||||
|
\begin{itemize}
|
||||||
|
\item v1 reacciona a la pérdida de correcciones con un \texttt{hot-reset} del \textbf{GNSS} (\texttt{UBX-CFG-RST}) $\rightarrow$ reinicia el ZED-F9P, \alert{no} el módem 4G colgado (la falla \#1 reportada). 5 min en una acción sin efecto.
|
||||||
|
\item v1: reset duro cada $\sim$10 min \alert{sin backoff} $\rightarrow$ \textbf{ciclo de reinicios}; cada ciclo equivale a varios minutos de desconexión. Una flota así produce «desconexiones recurrentes».
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{v2 (ya disponible)}
|
||||||
|
Recupera \textbf{ciclando el stack 4G}, detecta silencio de NMEA en $\sim$60\,s, aplica \textbf{backoff exponencial} y cae a \textbf{modo LIMP} (sigue reportando GPS estándar) en lugar de desaparecer.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{La revisión de ICAVE es correcta (H3 / H4)}
|
||||||
|
\centering\scriptsize
|
||||||
|
\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.18}
|
||||||
|
\begin{tabular}{@{}L{0.27\textwidth}L{0.33\textwidth}L{0.32\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Punto del cliente & Mecanismo & Corrección permanente \\
|
||||||
|
\midrule
|
||||||
|
Conectores Dupont & la vibración los afloja $\rightarrow$ apertura intermitente & conectores con seguro (JST / Molex) \\
|
||||||
|
Esfuerzo en soldaduras & flexión + ciclos térmicos los agrietan & PCB con alivio de esfuerzos \\
|
||||||
|
Sin diseño anti-vibración & la resonancia afloja todo & PCB + standoffs + grommets + coat \\
|
||||||
|
SMA / terminales flojos & se aflojan con la vibración & SMA con torque, conectores retenidos \\
|
||||||
|
Fallas de la tarjeta 4G & térmico + mecánico + sin recuperación & fix térmico + v2 + módem calificado \\
|
||||||
|
Cambio de SIM difícil & SIM enterrada en el stack & SIM en panel frontal / eSIM \\
|
||||||
|
«No apto para producción» & cableado a mano, piezas únicas & PCB diseñada, documentada, repetible \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Nada de esto se resuelve con firmware: es el núcleo del trabajo de \textbf{PCB + ruggedización}.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Acciones ya tomadas}
|
||||||
|
|
||||||
|
\begin{frame}{Backend — reescrito}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Retranslator + monitor: \alert{envío asíncrono}, sin bloqueo de cabeza de línea (HOL).
|
||||||
|
\item \textbf{Identidad por \texttt{cell\_id}} (no por orden de llegada) $\rightarrow$ la trazabilidad por unidad deja de depender del orden de los paquetes.
|
||||||
|
\item Filtro anti-salto \textbf{corregido}: ya no deja fuera de forma permanente a una unidad sana.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Resultado esperado}
|
||||||
|
Una unidad sana \textbf{ya no puede quedar fuera por el servidor}. Esto descarta una de las dos causas de modo común antes de la próxima prueba de campo.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Observabilidad — Blackpill v2.1 + herramientas}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Spec de logging v2.1:} reemplaza el dashboard ANSI auto-sobrescrito por un flujo \alert{estructurado, con marca de tiempo y parseable}: estado, fix, paquetes, batería, \textbf{temperatura del MCU}, recuperación y \textbf{causa del reset}.
|
||||||
|
\item \textbf{\texttt{hbox-log-tools}:} Log Explorer (parseo + graficado automático + comparación contra baseline + export PNG/SVG), analizador por lotes y dashboard.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{block}{Efecto}
|
||||||
|
La salud por unidad deja de ser ambigua: proviene de la \textbf{propia unidad}, no de una consola que no es confiable.
|
||||||
|
\end{block}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}[fragile]{GNSS / correcciones — persistencia y caster}
|
||||||
|
\begin{itemize}\small
|
||||||
|
\item Persistir la configuración del F9P en \alert{FLASH} (hoy es \textbf{solo RAM} $\rightarrow$ se pierde en un ciclo de energía y rompe el feed de forma silenciosa).
|
||||||
|
\item Migrar las correcciones de \texttt{rtk2go} (gratuito, sin SLA) a un \textbf{caster dedicado (HelgenSRV)} con disponibilidad garantizada.
|
||||||
|
\item Reverificar el switch \texttt{XBEE$\leftrightarrow$UART2} del simpleRTK2B Pro.
|
||||||
|
\end{itemize}
|
||||||
|
\begin{lstlisting}
|
||||||
|
; Persistir configuracion en BBR + FLASH (no solo RAM) -- ilustrativo
|
||||||
|
UBX-CFG-CFG saveMask = ioPort | msgConf | navConf
|
||||||
|
devices = devBBR | devFlash
|
||||||
|
; GGA en UART2 @1 Hz -> verificado correcto
|
||||||
|
\end{lstlisting}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Camino a HBOX v3.0}
|
||||||
|
|
||||||
|
\begin{frame}{Estrategia fásica}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{block}{Fase 1 — Ruggedizar ahora}
|
||||||
|
\small Sobre los módulos actuales, sin esperar la PCB: eliminar Dupont, buck industrial 24$\rightarrow$5\,V $\geq$3\,A (retira el PowerBoost), fijación mecánica + conformal coat, SIM frontal, conducción térmica al plato + parasol, flashear v2.
|
||||||
|
\end{block}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{block}{Fase 2 — PCB de producción}
|
||||||
|
\small Una placa \emph{carrier} industrial que reemplaza todo el cableado a mano y las placas \emph{hobby}. La corrección \textbf{de fondo}, en paralelo.
|
||||||
|
\end{block}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Estabilización «permanente-suficiente» de la flota \textbf{ahora}; la PCB se fabrica en paralelo.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Térmico v3.0 — gestión activa con ducto impermeable}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Hecho de ingeniería:} un ventilador dentro de una caja \emph{sellada} no enfría — solo agita el aire atrapado.
|
||||||
|
\item \textbf{v3.0:} un \alert{ducto impermeable} (membrana hidrófoba tipo Gore / laberinto sellado) crea una trayectoria de aire controlada que \emph{sí} extrae calor \textbf{sin comprometer el ingreso} (agua / polvo / salitre).
|
||||||
|
\item \textbf{Control inteligente del ventilador} gobernado por el Blackpill: sensa la temperatura interior $\rightarrow$ modula el flujo.
|
||||||
|
\item \textbf{La carcasa ASA se mantiene} (es adecuada); el foco es \textbf{conducir el calor} al plato metálico, reducir la ganancia solar (parasol) y bajar el calor interno (buck eficiente, retirar / reubicar la batería).
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\footnotesize \alert{Abierto:} definir la membrana / ducto y validar con soak de termopar. Opcional: gabinete metálico como disipador.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{PCB de producción (Fase 2) — diagrama de bloques}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[node distance=4.5mm and 6mm]
|
||||||
|
\node[box] (vin) {24\,V gabinete\\(ya protegido)};
|
||||||
|
\node[box, right=of vin] (prot) {TVS +\\FET anti-inv.};
|
||||||
|
\node[box, right=of prot] (buck) {Buck 24$\rightarrow$5\,V\\$\geq$3\,A};
|
||||||
|
\node[box, right=of buck] (rail) {Riel 5\,V};
|
||||||
|
\node[box, above=of rail] (mcu) {STM32\\watchdog};
|
||||||
|
\node[box, right=of rail] (sw) {Load switch\\/ eFuse};
|
||||||
|
\node[box, right=of sw] (stack){Stack RTK\\+ 4G};
|
||||||
|
\node[box, below=of buck] (sense){Sense: Vin / 5\,V / batt / \alert{temp}};
|
||||||
|
\draw[arrb] (vin)--(prot); \draw[arrb] (prot)--(buck); \draw[arrb] (buck)--(rail);
|
||||||
|
\draw[arrb] (rail)--(sw); \draw[arrb] (sw)--(stack);
|
||||||
|
\draw[arr] (rail)--(mcu); \draw[arr] (mcu) -| (sw) node[midway,above,font=\tiny,text=HelgenIndigo]{enable};
|
||||||
|
\draw[arr] (sense)-- (mcu.south west);
|
||||||
|
\draw[arr] (mcu.east) -- ++(0.6,0) |- (stack.north) node[near start,above,font=\tiny,text=HelgenIndigo]{UART/UBX};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Conectores con seguro \sep\ SMA bulkhead con torque \sep\ SIM en panel frontal / MFF2 \sep\ test points en cada riel.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Vibración — mitigación del módulo 4G NTRIP}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Standoffs con \textbf{aisladores / grommets}; retención del módulo XBee 4G en su socket con bracket o clip.
|
||||||
|
\item Conformal coat del cableado discreto; conectores con seguro; SMA con thread-lock + torque.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{Abierto — en definición}
|
||||||
|
Definir el \textbf{esquema de amortiguación específico del módulo 4G} (montaje aislado vs. retención rígida), a confirmar con una \textbf{prueba de vibración} controlada. Este es el punto que todavía estamos cerrando.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Watchdog — FSM de recuperación (v2 $\rightarrow$ v3)}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[node distance=8mm and 14mm]
|
||||||
|
\node[st] (normal) {NORMAL\\(reporta RTK/SPS)};
|
||||||
|
\node[hot, right=of normal] (cycle) {CICLAR STACK 4G\\(backoff exp.)};
|
||||||
|
\node[st, right=of cycle] (limp) {LIMP\\(GPS estándar,\\sigue reportando)};
|
||||||
|
\node[st, below=of cycle] (temp) {SENSAR TEMP\\$\rightarrow$ CTRL VENTILADOR};
|
||||||
|
\draw[arr] (normal) -- node[above,font=\tiny,text=HelgenIndigo]{silencio NMEA 60\,s} (cycle);
|
||||||
|
\draw[arr] (cycle) -- node[above,font=\tiny,text=HelgenIndigo]{persiste} (limp);
|
||||||
|
\draw[arr] (limp.north) to[bend right=35] node[above,font=\tiny,text=HelgenIndigo]{enlace OK} (normal.north);
|
||||||
|
\draw[arr] (cycle.south west) to[bend right=20] node[left,font=\tiny,text=HelgenIndigo]{recupera} (normal.south);
|
||||||
|
\draw[arrb, dashed] (normal) -- (temp);
|
||||||
|
\draw[arrb, dashed] (temp) -- (limp);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Invariantes: \textbf{nunca desaparecer, nunca ciclo infinito}; el estado seguro por defecto es \alert{OFF}. v3 añade el lazo térmico (líneas punteadas).
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\section{Estado honesto y plan a una semana}
|
||||||
|
|
||||||
|
\begin{frame}{Dónde estamos — sin adornos}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.34\textwidth}
|
||||||
|
\begin{block}{Confirmado}
|
||||||
|
\scriptsize
|
||||||
|
\begin{itemize}
|
||||||
|
\item Backend HOL + anti-salto (en código)
|
||||||
|
\item Receptores GNSS sanos; SPS, no RTK
|
||||||
|
\item Consola 4G no es indicador de salud
|
||||||
|
\item master-21: módem caído
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\column{0.32\textwidth}
|
||||||
|
\begin{block}{Hipótesis}
|
||||||
|
\scriptsize
|
||||||
|
\begin{itemize}
|
||||||
|
\item Térmico de \textbf{campo} (falta termopar / soak)
|
||||||
|
\item Fusible sub-dimensionado
|
||||||
|
\item Brownout de batería
|
||||||
|
\end{itemize}
|
||||||
|
\end{block}
|
||||||
|
\column{0.34\textwidth}
|
||||||
|
\begin{alertblock}{Abierto}
|
||||||
|
\scriptsize
|
||||||
|
\begin{itemize}
|
||||||
|
\item ¿Resuelto? — pendiente reflash v2 + análisis en entorno controlado (QRO)
|
||||||
|
\item Anti-vibración del 4G
|
||||||
|
\item Fix RTK $\geq$4 con caster dedicado en cielo abierto
|
||||||
|
\end{itemize}
|
||||||
|
\end{alertblock}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Plan a una semana $\rightarrow$ viernes 26 de junio}
|
||||||
|
\centering\footnotesize
|
||||||
|
\setlength{\tabcolsep}{6pt}\renewcommand{\arraystretch}{1.25}
|
||||||
|
\begin{tabular}{@{}l L{0.78\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Ventana & Actividad \\
|
||||||
|
\midrule
|
||||||
|
Lun–Mar & Desplegar \textbf{watchdog v2} y analizar en \textbf{entorno controlado (QRO)}; persistir F9P en FLASH + caster dedicado \\
|
||||||
|
Mar–Mié & \textbf{Retest RTK en cielo abierto} (confirmar fix $\geq$4/5); kit de ruggedización Fase 1 sobre 1 unidad de referencia \\
|
||||||
|
Mié–Jue & Definir \textbf{ducto + ventilador inteligente} + esquema anti-vibración del 4G; soak térmico con termopar \\
|
||||||
|
\textbf{Vie 26} & \alert{Enviar la versión más robusta del HBOX a Veracruz} para continuar las pruebas \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\footnotesize El objetivo de esta semana no es «cerrado»: es un \textbf{HBOX medible y más robusto} de vuelta en el campo.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Compromisos — responsable y fecha}
|
||||||
|
\centering\footnotesize
|
||||||
|
\setlength{\tabcolsep}{6pt}\renewcommand{\arraystretch}{1.25}
|
||||||
|
\begin{tabular}{@{}lll@{}}
|
||||||
|
\toprule
|
||||||
|
Acción & Responsable & Fecha \\
|
||||||
|
\midrule
|
||||||
|
Watchdog v2 + análisis controlado (QRO) & Leo / Daniel & 23–24 jun \\
|
||||||
|
Persistir F9P en FLASH + caster dedicado & Gibran & 24 jun \\
|
||||||
|
Retest RTK en cielo abierto & Gibran & 25 jun \\
|
||||||
|
Kit de ruggedización Fase 1 (unidad ref.) & Adriana & 25 jun \\
|
||||||
|
Diseño ducto + fan + anti-vibración 4G & Leo & 25–26 jun \\
|
||||||
|
Envío del HBOX robusto a Veracruz & Adriana & 26 jun \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
\begin{frame}[standout]
|
||||||
|
Diagnóstico con datos.\\
|
||||||
|
Corrección en ejecución.\\[2mm]
|
||||||
|
{\normalsize HBOX v3.0 — más robusto — a prueba el \textbf{26 de junio}.}
|
||||||
|
\vfill
|
||||||
|
{\footnotesize Gracias \sep\ Preguntas}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% =====================================================================
|
||||||
|
% v1.1 — ADENDA (2026-07-02). El contenido anterior es el registro entregado
|
||||||
|
% el 22-jun y se conserva sin cambios; esta lámina documenta el avance.
|
||||||
|
% [noframenumbering] preserva la numeración original del deck entregado.
|
||||||
|
\begin{frame}[noframenumbering]{Actualización al 2 de julio de 2026 — adenda}
|
||||||
|
\footnotesize El diagnóstico entregado el 22 de junio \textbf{se mantiene vigente, sin fe de erratas}: carcasa ASA adecuada, rectificación de master-14 sostenida (solo master-21 confirmada) e hipótesis térmica de campo aún por confirmar con soak instrumentado. Avance desde la entrega:
|
||||||
|
\vfill
|
||||||
|
\centering\scriptsize
|
||||||
|
\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.12}
|
||||||
|
\begin{tabular}{@{}L{0.15\textwidth} L{0.30\textwidth} L{0.47\textwidth}@{}}
|
||||||
|
\toprule
|
||||||
|
Frente & Estado al 22 jun & \textbf{Estado al 2 jul} \\
|
||||||
|
\midrule
|
||||||
|
Backend & Reescritura lista (asíncrono + anti-salto corregido) & \textbf{Desplegado en producción} y estable \\
|
||||||
|
Térmico & Hipótesis de campo abierta & Cámara a 50\,°C: el RTK opera \textbf{normal}; la víctima es la \textbf{energía} (respaldo ${\sim}30\,\%$ con celda caliente); 2 soluciones en prueba (ducto impermeable / disipador de aluminio) \\
|
||||||
|
Watchdog v3 / PCB & Diagrama de bloques (plan) & Esquemáticos verificados (\textbf{ERC: 0 errores}); circuito \textbf{operando en protoboard} (campaña de banco en curso); \textbf{cierre de esquemático de producción y layout de PCB inician el 2 jul} \\
|
||||||
|
Batería de respaldo & 18650 + booster \emph{hobby} & Pack 1S4P ${\sim}$12\,Ah con cargador de grado industrial y \textbf{carga calificada por temperatura} — cierra el eslabón \#1 del RCA \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\vfill
|
||||||
|
\footnotesize Cronograma vigente: unidades nuevas a ICAVE \textbf{7 jul} \sep\ comparativa de disponibilidad al \textbf{17 jul} \sep\ despliegue a las 4 BUs desde \textbf{mediados de julio} \sep\ meta: 30 unidades operando hacia agosto.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
24
CLAUDE.md
@ -70,6 +70,28 @@ easy-to-find parts (`watchdog-protoboard-BOM-3boards.xlsx` + Spanish shop list
|
|||||||
`watchdog-LISTA-DE-COMPRAS-ES.xlsx`). **Canonical electrical state →
|
`watchdog-LISTA-DE-COMPRAS-ES.xlsx`). **Canonical electrical state →
|
||||||
`03-Architecture-Hardware/watchdog-electrical-design-state.md` — read first for any electrical context.**
|
`03-Architecture-Hardware/watchdog-electrical-design-state.md` — read first for any electrical context.**
|
||||||
|
|
||||||
|
**PROD schematic complete + PCB layout kickoff (2026-07-02).** `hbox-watchdog-v3-PROD.kicad_sch`
|
||||||
|
now carries **all blocks — ERC 0 errors**: LTC4040 Block B **sized to the 12 Ah pack** (RPROG
|
||||||
|
825 Ω → 2.42 A ≈ C/5 · RS 8 mΩ → 3.1 A input limit · PFI trip 4.60 V · backup 4.79 V · charge
|
||||||
|
4.00 V Li-ion via VSYS-referenced straps), Block E cutoff (P11, MAIN5V→SYS5V), Block F PA4→VEH5V
|
||||||
|
re-tap, **Block H fail-safe Modo-B bypass** (K1 *normally-closed* signal relay — corrections
|
||||||
|
survive a dead/absent MCU), Block I NTC→PB1 (block 11). New MCU pins live: PB1 · PB3 · PB4 · PB5 ·
|
||||||
|
PA8. **Same day (PM): CARRIER-BOARD conversion** — the PROD board now sockets **all three
|
||||||
|
modules on female headers**: Blackpill (J1/J2) + **simpleRTK2B Pro as UNO-form shield** (MOD1,
|
||||||
|
D0/D1=UART1, D2=RX2, D8=TX2, IOREF=3V3, 5V=SW_5V) + **4G NTRIP Master on an on-board XBee
|
||||||
|
socket** (J7/J8 2 mm; VCC = **3V3_MODEM**, a second MP1584 buck off SW_5V — the HP XBee socket
|
||||||
|
is 3.3 V not 5 V). Modo B + K1 NC bypass = permanent uplink; RTCM3 downlink direct; P3/P13/H3
|
||||||
|
DNP. **Board 120×100 mm**, shield field with SMD-only underneath, XBee field right, access
|
||||||
|
parts outside; ERC 0; **carrier DRC baseline saved** (`…-drc-carrier-baseline.txt`; ~29 sub-mm
|
||||||
|
placement kisses + by-design under-shield courtyard overlaps). **Next gate: placement review vs
|
||||||
|
HBOX/cabinet mechanicals (+ verify D2/D8=RX2/TX2 on a physical Pro), then routing** (5 V ≥0.5 mm,
|
||||||
|
SW_5V ≥0.8 mm per kicad-guide). Fab gate unchanged: bench-validate the LTC4040 backup +
|
||||||
|
hot-cell charge cutoff on the proto first. Latest proto
|
||||||
|
assumptions ledger = `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx` (*Estado y cambios*) +
|
||||||
|
`Drogheda_Guia-Conexion-Protoboard_ES_v2.1.pdf` (LaTeX source now in repo:
|
||||||
|
`Guia-Conexion-Protoboard/`). Wiring diagrams v2 (blocks 1–11) in `circuitikz-wiring/`;
|
||||||
|
client decks Avance + RCA refreshed to v1.1.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. System architecture (corrected from the BOM, 2026-06-20)
|
## 1. System architecture (corrected from the BOM, 2026-06-20)
|
||||||
@ -144,7 +166,7 @@ these before presenting; if it breaks one, say so and propose the compliant fix.
|
|||||||
| `00-Project-Management` | plan, ethos, hackathon, **financials**, **handover**, client comms, Drive tooling | [[00-Project-Management/PLAN\|PLAN]] · [[00-Project-Management/Engineering-Handover\|Engineering-Handover]] · `ethos.md` · `hackathon-plan.md` · `Financials.md` · `Drive-Upload/` · `client-comms/` |
|
| `00-Project-Management` | plan, ethos, hackathon, **financials**, **handover**, client comms, Drive tooling | [[00-Project-Management/PLAN\|PLAN]] · [[00-Project-Management/Engineering-Handover\|Engineering-Handover]] · `ethos.md` · `hackathon-plan.md` · `Financials.md` · `Drive-Upload/` · `client-comms/` |
|
||||||
| `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.md` |
|
| `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.md` |
|
||||||
| `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` |
|
| `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` |
|
||||||
| `03-Architecture-Hardware` | HBOX/cabinet, wiring, BOM, **watchdog PCB v3** | `hardware-respec-and-pcb-brief.md` · `cabinet-electrical-bom.md` · `watchdog-schematic.md` · `watchdog-health-telemetry.md` · `firmware-review.md` · `BOM-master.md` · **`watchdog-pcb-v3-design.md`** (schematic spec: +1 fan, +I²C temp/RH) · `watchdog-pcb-v3-bom.xlsx` (proto+production, LCSC) · `watchdog-pcb-v3-kicad-guide.md` (KiCad→JLCPCB) · `watchdog-pcb-v3-blockdiagram.svg` · `watchdog-protoboard-bringup.md` (shop list) · `watchdog-connections.xlsx` (pin/net connection list, PCB+proto) · `watchdog-connections-rationale.md` (per-connection justification + firmware cross-check; flags Q10 Vgs, ignition level, 5V-sense tap) · **`watchdog-electrical-design-state.md`** (CANONICAL electrical state — read first) · `kicad/hbox-watchdog-v3.kicad_sch` (schematic, ERC-clean) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs) |
|
| `03-Architecture-Hardware` | HBOX/cabinet, wiring, BOM, **watchdog PCB v3** | `hardware-respec-and-pcb-brief.md` · `cabinet-electrical-bom.md` · `watchdog-schematic.md` · `watchdog-health-telemetry.md` · `firmware-review.md` · `BOM-master.md` (+§5 Block B/E/H/I parts) · **`watchdog-pcb-v3-design.md`** (schematic spec) · `watchdog-pcb-v3-bom.xlsx` · `watchdog-pcb-v3-kicad-guide.md` (KiCad→JLCPCB) · `watchdog-pcb-v3-blockdiagram.svg` · `watchdog-protoboard-bringup.md` + `watchdog-proto-bench-bringup-v3.md` · `watchdog-connections.xlsx` (PCB pin/net list; H1 DNP; +B/H/I rows) · `watchdog-connections-rationale.md` (+§7 additions 2026-07-02) · **`watchdog-electrical-design-state.md`** (CANONICAL — read first) · **`watchdog-production-schematic-delta.md`** (PROD build spec; LTC4040 §4 values) · `kicad/` — `hbox-watchdog-v3.kicad_sch` (**DEV/proto**) · `hbox-watchdog-v3-PROD.kicad_sch/.kicad_pcb` (**PRODUCTION**: ERC 0, layout started, DRC baseline) · `Drogheda-sym.kicad_sym` (MP1584EN · LTC4040EUFD · AO4406A) · `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx` (**proto assumptions ledger**) · `Guia-Conexion-Protoboard/` (LaTeX source) → `Drogheda_Guia-Conexion-Protoboard_ES_v2.1.pdf` · `circuitikz-wiring/` (sheet + Beamer v2, blocks 1–11) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs) |
|
||||||
| `04-Source-Code` | firmware + backend repos | `firmware/` (**own git repo `hbox-firmware`**: `blackpillrtkcode_v2/` deploy · `legacy/` v1 · `docs/LOGGING-SPEC.md` v2.1) · `htracker/` · `notifications/` · `rtk-config/` |
|
| `04-Source-Code` | firmware + backend repos | `firmware/` (**own git repo `hbox-firmware`**: `blackpillrtkcode_v2/` deploy · `legacy/` v1 · `docs/LOGGING-SPEC.md` v2.1) · `htracker/` · `notifications/` · `rtk-config/` |
|
||||||
| `05-Analytics-Reports` | SQL views, dashboards (VERONICA/PowerBI), **observability** | `2026-06-22_Drogheda_Manual-Logs-Grafana_v1.0.pdf` (Grafana/Loki log-consultation manual) |
|
| `05-Analytics-Reports` | SQL views, dashboards (VERONICA/PowerBI), **observability** | `2026-06-22_Drogheda_Manual-Logs-Grafana_v1.0.pdf` (Grafana/Loki log-consultation manual) |
|
||||||
| `06-Testing-Validation` | RCA, diagnostics, test evidence, **log analysis & tooling** | `RCA-2026-06-field-failures.md` · `remote-diagnostic-protocol.md` · `2026-06-20_Drogheda_Bench-Log-Analysis_v1.0.md` (rev-3) · `2026-06-20_Drogheda_GNSS-Findings-Summary.md` · `log-analysis/` (repo **`hbox-log-tools`**: `log-explorer.html` · `analyze_logs.py` · `build_dashboard.py` · `docs/manual.pdf`) |
|
| `06-Testing-Validation` | RCA, diagnostics, test evidence, **log analysis & tooling** | `RCA-2026-06-field-failures.md` · `remote-diagnostic-protocol.md` · `2026-06-20_Drogheda_Bench-Log-Analysis_v1.0.md` (rev-3) · `2026-06-20_Drogheda_GNSS-Findings-Summary.md` · `log-analysis/` (repo **`hbox-log-tools`**: `log-explorer.html` · `analyze_logs.py` · `build_dashboard.py` · `docs/manual.pdf`) |
|
||||||
|
|||||||
BIN
Marketing/HBOX-Pictures/cabinet.png
Normal file
|
After Width: | Height: | Size: 5.3 MiB |
BIN
Marketing/HBOX-Pictures/hbox-heatsink.jpeg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Marketing/HBOX-Pictures/hbox-in-cabinet.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
BIN
Marketing/HBOX-Pictures/image.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
Marketing/HBOX-Pictures/image2.png
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
Marketing/HBOX-PitchDeck/helgen-logo-white.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
Marketing/HBOX-PitchDeck/helgen-logo.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
357
Marketing/HBOX-PitchDeck/main.tex
Normal file
@ -0,0 +1,357 @@
|
|||||||
|
% Helgen Technologies — HBOX RTK \hdot Pitch Deck (Ronda de inversión)
|
||||||
|
% Helgen Servicios Especializados S.A. de C.V. — Querétaro, México.
|
||||||
|
% Audiencia: inversionistas (plataforma / equity crowdfunding). Idioma: es-MX.
|
||||||
|
% Tesis: la demanda ya existe (los puertos lo pidieron). 3 MDP para entregar 6 MDP.
|
||||||
|
% Compilar: latexmk -xelatex HBOX-PitchDeck.tex
|
||||||
|
\documentclass[10pt,aspectratio=169]{beamer}
|
||||||
|
|
||||||
|
\usetheme[progressbar=frametitle, numbering=fraction, block=fill]{metropolis}
|
||||||
|
|
||||||
|
% ---------- Paleta oficial Helgen (Guía de Identidad v1.5, 2026) ----------
|
||||||
|
\definecolor{HelgenIndigo}{HTML}{2C3C5B}
|
||||||
|
\definecolor{HelgenCyan}{HTML}{51F3DA}
|
||||||
|
\definecolor{HelgenTeal}{HTML}{17A08C}
|
||||||
|
\definecolor{HelgenMist}{HTML}{EFF1F5}
|
||||||
|
|
||||||
|
\setbeamercolor{normal text}{fg=HelgenIndigo, bg=white}
|
||||||
|
\setbeamercolor{alerted text}{fg=HelgenTeal}
|
||||||
|
\setbeamercolor{frametitle}{bg=HelgenIndigo, fg=white}
|
||||||
|
\setbeamercolor{progress bar}{fg=HelgenCyan, bg=HelgenMist}
|
||||||
|
\setbeamercolor{title separator}{fg=HelgenCyan}
|
||||||
|
\setbeamercolor{block title}{bg=HelgenMist, fg=HelgenIndigo}
|
||||||
|
\setbeamercolor{block body}{bg=HelgenMist!50}
|
||||||
|
\setbeamercolor{section title}{fg=HelgenIndigo}
|
||||||
|
\setbeamercolor{standout}{bg=HelgenIndigo, fg=white}
|
||||||
|
|
||||||
|
% ---------- Paquetes ----------
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\usepackage{polyglossia}\setmainlanguage[variant=mexican]{spanish}
|
||||||
|
\IfFontExistsTF{League Spartan}{%
|
||||||
|
\newfontfamily\helgentitle{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\newfontfamily\helgenwordmark{League Spartan}[BoldFont={* Bold}]
|
||||||
|
\setbeamerfont{title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{frametitle}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{section title}{family=\helgentitle, series=\bfseries}
|
||||||
|
\setbeamerfont{standout}{family=\helgentitle, series=\bfseries}
|
||||||
|
}{\newcommand{\helgenwordmark}{\sffamily\bfseries}}
|
||||||
|
\IfFontExistsTF{MADE Evolve Sans}{\setsansfont{MADE Evolve Sans}}{}
|
||||||
|
\else
|
||||||
|
\usepackage[T1]{fontenc}\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[spanish,es-noindentfirst]{babel}
|
||||||
|
\newcommand{\helgentitle}{\sffamily\bfseries}
|
||||||
|
\newcommand{\helgenwordmark}{\sffamily\bfseries}
|
||||||
|
\fi
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{arrows.meta, positioning, shapes.misc, calc, fit}
|
||||||
|
\usepackage{adjustbox}
|
||||||
|
|
||||||
|
% ---------- Estilos TikZ de marca ----------
|
||||||
|
\tikzset{
|
||||||
|
caja/.style={draw=HelgenIndigo, fill=HelgenMist, rounded corners=2pt, text=HelgenIndigo,
|
||||||
|
align=center, font=\footnotesize, inner sep=5pt, minimum height=9mm},
|
||||||
|
cajaoscura/.style={draw=HelgenIndigo, fill=HelgenIndigo, rounded corners=2pt, text=white,
|
||||||
|
align=center, font=\footnotesize\bfseries, inner sep=5pt, minimum height=9mm},
|
||||||
|
cajacian/.style={draw=HelgenTeal, fill=HelgenCyan!25, rounded corners=2pt, text=HelgenIndigo,
|
||||||
|
align=center, font=\footnotesize\bfseries, inner sep=5pt, minimum height=9mm},
|
||||||
|
etiqueta/.style={font=\scriptsize\bfseries, text=HelgenTeal},
|
||||||
|
flecha/.style={-{Stealth[length=2.6mm]}, thick, draw=HelgenIndigo},
|
||||||
|
flechaacento/.style={-{Stealth[length=2.6mm]}, very thick, draw=HelgenTeal},
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------- Viñetas y separadores de marca (independientes de la fuente de texto) ----------
|
||||||
|
\setbeamertemplate{itemize item}{\raise0.18ex\hbox{\color{HelgenTeal}\rule{0.42em}{0.42em}}}
|
||||||
|
\setbeamertemplate{itemize subitem}{\raise0.18ex\hbox{\color{HelgenCyan}\rule{0.32em}{0.32em}}}
|
||||||
|
\newcommand{\hdot}{\ensuremath{\,\cdot\,}} % punto medio via fuente matemática (la de texto no lo trae)
|
||||||
|
|
||||||
|
% ---------- Imagotipo Helgen (anillo + dos "gotas/ojos"), reconstruido en vector ----------
|
||||||
|
% NOTA: reconstrucción fiel del logotipo Helgen. Para usar el PNG/SVG oficial, ver _brand/.
|
||||||
|
\newcommand{\helgenmarkraw}[1]{%
|
||||||
|
\begin{tikzpicture}[line cap=round, line join=round]
|
||||||
|
\draw[#1, line width=1.7pt] (0,0) circle (0.46);
|
||||||
|
\begin{scope}[shift={(-0.15,-0.02)}, rotate=8, scale=0.70]
|
||||||
|
\fill[#1] (0,0.30) .. controls (-0.15,0.06) and (-0.15,-0.17) .. (0,-0.17)
|
||||||
|
.. controls (0.15,-0.17) and (0.15,0.06) .. (0,0.30);
|
||||||
|
\end{scope}
|
||||||
|
\begin{scope}[shift={(0.17,-0.03)}, rotate=26, scale=0.95]
|
||||||
|
\fill[#1] (0,0.30) .. controls (-0.15,0.06) and (-0.15,-0.17) .. (0,-0.17)
|
||||||
|
.. controls (0.15,-0.17) and (0.15,0.06) .. (0,0.30);
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}}
|
||||||
|
\newcommand{\helgenmark}[2]{\resizebox{#1}{!}{\helgenmarkraw{#2}}} % {ancho}{color}
|
||||||
|
% Lockup claro (sobre indigo): marca + wordmark en blanco
|
||||||
|
\newcommand{\helgenlockuplight}[1]{%
|
||||||
|
\raisebox{-0.30\height}{\helgenmark{#1}{white}}\hspace{6pt}%
|
||||||
|
{\helgenwordmark\fontsize{24}{26}\selectfont\color{white}Helgen}}
|
||||||
|
|
||||||
|
% ---------- Pie: marca nativa + confidencialidad ----------
|
||||||
|
\setbeamertemplate{frame footer}{%
|
||||||
|
\raisebox{-0.8mm}{\includegraphics[height=3.2mm]{helgen-logo.png}}\hspace{5pt}%
|
||||||
|
\scriptsize\color{gray}\insertshorttitle\ \hdot\ Confidencial}
|
||||||
|
|
||||||
|
% ---------- Metadatos ----------
|
||||||
|
\title[HBOX RTK \hdot Industria pesada]{HBOX RTK}
|
||||||
|
\subtitle{Posicionamiento de precisión para la industria pesada}
|
||||||
|
\author[Helgen]{Helgen Servicios Especializados S.A. de C.V.}
|
||||||
|
\date{2026}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% ============================ PORTADA ============================
|
||||||
|
\begin{frame}[plain]
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\fill[HelgenIndigo] (current page.south west) rectangle (current page.north east);
|
||||||
|
\node[anchor=north west] at ([xshift=1.0cm, yshift=-0.85cm]current page.north west)
|
||||||
|
{\includegraphics[height=0.95cm]{helgen-logo-white.png}};
|
||||||
|
\node[anchor=north west, text=HelgenCyan] at ([xshift=1.05cm, yshift=-1.95cm]current page.north west)
|
||||||
|
{\helgentitle\small Ingeniería que produce, mantenimiento que protege};
|
||||||
|
\draw[HelgenCyan, line width=2pt]
|
||||||
|
([xshift=1.05cm, yshift=-3.0cm]current page.north west) -- ([xshift=8.6cm, yshift=-3.0cm]current page.north west);
|
||||||
|
\node[anchor=north west, text=white, text width=14cm] at ([xshift=1.0cm, yshift=-3.75cm]current page.north west)
|
||||||
|
{\helgentitle\fontsize{50}{54}\selectfont HBOX\,\textcolor{HelgenCyan}{RTK}};
|
||||||
|
\node[anchor=north west, text=white, text width=13cm] at ([xshift=1.05cm, yshift=-5.35cm]current page.north west)
|
||||||
|
{\helgentitle\fontsize{17}{22}\selectfont Posicionamiento centimétrico y telemetría\\ para maquinaria pesada — puertos e industria};
|
||||||
|
\node[anchor=south west, text=HelgenCyan] at ([xshift=1.05cm, yshift=1.55cm]current page.south west)
|
||||||
|
{\helgentitle\normalsize RONDA DE INVERSIÓN 2026\, \hdot\, \$3{,}000{,}000 MXN};
|
||||||
|
\node[anchor=south west, text=white] at ([xshift=1.05cm, yshift=0.7cm]current page.south west)
|
||||||
|
{\scriptsize Querétaro, México\, \hdot \,leo@helgen.tech\, \hdot \,ventas@helgen.tech\, \hdot \,Confidencial};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% ============================ LA DEMANDA ============================
|
||||||
|
\section{La demanda ya existe}
|
||||||
|
|
||||||
|
\begin{frame}{Qué hace Helgen}
|
||||||
|
Ponemos \alert{posición de centímetros} y \alert{telemetría confiable} en la maquinaria
|
||||||
|
pesada que mueve la economía — y convertimos esos datos en decisiones.
|
||||||
|
\vfill
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.33\textwidth}
|
||||||
|
\begin{block}{HBOX (hardware)}
|
||||||
|
\footnotesize Unidad RTK ruggedizada, IP67, con watchdog. Diseño propio.
|
||||||
|
\end{block}
|
||||||
|
\column{0.33\textwidth}
|
||||||
|
\begin{block}{Correcciones RTK}
|
||||||
|
\footnotesize Red de estaciones base + NTRIP sobre 4G. Precisión $<$2 cm.
|
||||||
|
\end{block}
|
||||||
|
\column{0.33\textwidth}
|
||||||
|
\begin{block}{Plataforma de datos}
|
||||||
|
\footnotesize Backend Helgen: flota, seguridad, eficiencia y analítica.
|
||||||
|
\end{block}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{La demanda ya existe: los puertos nos lo pidieron}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.56\textwidth}
|
||||||
|
\textbf{Operando / contratado — red Hutchison MX}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Puerto de \alert{Veracruz}
|
||||||
|
\item Puerto de \alert{Manzanillo}
|
||||||
|
\item Puerto de \alert{Ensenada}
|
||||||
|
\item Puerto de \alert{Lázaro Cárdenas}
|
||||||
|
\end{itemize}
|
||||||
|
\vspace{4pt}
|
||||||
|
\textbf{En negociación}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Puerto de \alert{Panamá} \hdot Puerto de \alert{Caucedo} (RD)
|
||||||
|
\end{itemize}
|
||||||
|
\column{0.44\textwidth}
|
||||||
|
\begin{block}{Nueva vertical: industria pesada}
|
||||||
|
\footnotesize Seguimiento de maquinaria en planta — \alert{automotriz y montacargas}.
|
||||||
|
Piloto en marcha con \alert{Toyota (TMMGT)}.
|
||||||
|
\end{block}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{No vendimos esto en frío}
|
||||||
|
\footnotesize Llegamos porque los clientes lo solicitaron. Ahora levantamos capital para \emph{cumplir}.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% ============================ EL PROBLEMA Y LA SOLUCIÓN ============================
|
||||||
|
\section{El problema y la solución}
|
||||||
|
|
||||||
|
\begin{frame}{El problema: la industria pesada opera a ciegas}
|
||||||
|
\begin{itemize}
|
||||||
|
\item El GPS convencional yerra por \alert{metros}: inservible entre contenedores, grúas y naves.
|
||||||
|
\item Sin posición \alert{centimétrica} no hay automatización, anticolisión ni gemelo digital.
|
||||||
|
\item La telemetría genérica se degrada bajo sol, polvo y vibración; las unidades ``mueren'' sin avisar.
|
||||||
|
\item Resultado: \alert{ineficiencia, riesgo y datos no confiables} sobre activos de millones.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{HBOX: precisión centimétrica, lista para el campo}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.56\textwidth}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Unidad RTK ruggedizada: \alert{$<$2 cm} sobre 4G (NTRIP/RTCM3).
|
||||||
|
\item u-blox ZED-F9P multibanda; gabinete \alert{IP67}; conector GX16-5.
|
||||||
|
\item \alert{Watchdog} embebido (STM32): recupera el enlace solo — \emph{nunca queda en silencio}.
|
||||||
|
\item Telemetría al backend Helgen para flota, eficiencia y seguridad.
|
||||||
|
\end{itemize}
|
||||||
|
\column{0.44\textwidth}
|
||||||
|
\begin{block}{Especificaciones}
|
||||||
|
\footnotesize
|
||||||
|
\begin{tabular}{@{}ll@{}}
|
||||||
|
GNSS & u-blox ZED-F9P \\
|
||||||
|
Precisión & $<$2 cm (NTRIP) \\
|
||||||
|
Tasa & desde 1 Hz \\
|
||||||
|
Correcciones& NTRIP/RTCM3 \hdot 4G \\
|
||||||
|
Entrada & 24 V + ignición \\
|
||||||
|
Carcasa & IP67 \\
|
||||||
|
\end{tabular}
|
||||||
|
\end{block}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Arquitectura: Rover + Estación Base + datos}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[font=\footnotesize, node distance=9mm and 15mm]
|
||||||
|
\node[cajaoscura, text width=2.3cm] (base) {Estación\\Base RTK};
|
||||||
|
\node[caja, right=of base, text width=2.5cm] (rover) {Rover HBOX\\(en la máquina)};
|
||||||
|
\node[cajacian, right=of rover, text width=2.5cm] (back) {Plataforma\\Helgen};
|
||||||
|
\draw[flechaacento] (base) -- node[etiqueta, above]{RTCM3 \hdot 4G} (rover);
|
||||||
|
\draw[flechaacento] (rover) -- node[etiqueta, above]{NMEA \hdot UDP} (back);
|
||||||
|
\node[etiqueta, below=2mm of rover] {posición $<$2 cm};
|
||||||
|
\node[caja, below=12mm of back, text width=2.6cm] (bi) {Analítica \hdot BI\\Seguridad};
|
||||||
|
\draw[flecha] (back) -- (bi);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
Las correcciones viajan por el \alert{módem 4G} — el enlace se recupera reiniciando la pila, sin tocar el GNSS.
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{El verdadero activo: los datos}
|
||||||
|
Cada HBOX transmite \alert{posición de centímetros + telemetría} de un activo crítico, 24/7.
|
||||||
|
El hardware es la cuña; \alert{la plataforma de datos es el valor que compone}.
|
||||||
|
\vfill
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gemelo digital del patio y utilización de flota.
|
||||||
|
\item \alert{Anticolisión} y seguridad de personal.
|
||||||
|
\end{itemize}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Mantenimiento \alert{predictivo} por uso real.
|
||||||
|
\item Capa recurrente, de alto margen y \alert{defensible}.
|
||||||
|
\end{itemize}
|
||||||
|
\end{columns}
|
||||||
|
\vfill
|
||||||
|
{\footnotesize\color{HelgenTeal}\textbf{De caja de rastreo} $\to$ \textbf{sistema operativo de datos para la industria pesada.}}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% ============================ MERCADO ============================
|
||||||
|
\section{Mercado y momento}
|
||||||
|
|
||||||
|
\begin{frame}{Por qué ahora}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Ola de \alert{automatización portuaria}: $\sim$71 terminales de contenedores ya automatizadas.
|
||||||
|
\item Los fabricantes integran telemetría/IoT en grúas y montacargas (p.\,ej.\ Hyster-Yale, 2024).
|
||||||
|
\item El RTK se abarata y el \alert{4G es ubicuo}: la precisión centimétrica ya escala.
|
||||||
|
\item En México hay demanda desatendida — y nosotros \alert{ya estamos dentro}.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Mercado}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[font=\footnotesize, node distance=3mm]
|
||||||
|
\node[cajaoscura, text width=11.2cm] (tam)
|
||||||
|
{TAM \hdot RTK GNSS global $\approx$ \textbf{USD 4.2\,B} (2024), $\sim$9\% CAGR $\to$ $\sim$USD 9\,B (2033)};
|
||||||
|
\node[caja, below=of tam, text width=9.0cm] (sam)
|
||||||
|
{SAM \hdot Posición + telemetría para industria pesada\\ (puertos + intralogística automotriz, LatAm)};
|
||||||
|
\node[cajacian, below=of sam, text width=6.8cm] (som)
|
||||||
|
{SOM \hdot Puertos de México (red Hutchison)\\ + primeras plantas automotrices (Toyota)};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vfill
|
||||||
|
{\scriptsize\color{gray} Fuentes (estimaciones externas): Dataintelo / Growth Market Reports (RTK GNSS);
|
||||||
|
Polaris / GM Insights (equipo de manejo de contenedores), 2025.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% ============================ EJECUCIÓN Y OFERTA ============================
|
||||||
|
\section{Ejecución y oferta}
|
||||||
|
|
||||||
|
\begin{frame}{Aprendizaje de campo $\to$ producto endurecido}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Térmico:} calor en batería/módem en gabinete sellado $\to$ \alert{carga calificada por temperatura} (LTC4040 + NTC) y enfriamiento por conducción.
|
||||||
|
\item \textbf{Backend:} bloqueo de cabeza de línea y veto de ``saltos'' $\to$ \alert{corregido y desplegado}, con observabilidad (Grafana Loki).
|
||||||
|
\item \textbf{Hardware:} prototipo cableado a mano $\to$ \alert{PCB de producción} (watchdog v3, ERC-limpio); Serie 2 en curso.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\begin{alertblock}{La ventaja de estar desplegados}
|
||||||
|
\footnotesize Desplegamos, medimos y endurecemos rápido. Cada falla de campo es una mejora que un competidor de laboratorio aún no ha visto.
|
||||||
|
\end{alertblock}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Modelo de negocio: hardware + recurrente}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Hardware:} venta del gabinete HBOX \alert{por máquina} (CapEx del cliente).
|
||||||
|
\item \textbf{Recurrente:} datos/SIM, correcciones (NTRIP) y plataforma \alert{por unidad/mes}.
|
||||||
|
\item \textbf{Expansión por sitio:} de decenas a cientos de máquinas en cada puerto o planta.
|
||||||
|
\item Precios y márgenes unitarios: \alert{[marcador — dato interno]} (sala de datos bajo NDA).
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Por qué ganamos}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \alert{Integración vertical}: hardware + firmware + datos bajo una sola responsabilidad.
|
||||||
|
\item \alert{Ingeniería a prueba de fallos}: estado seguro por defecto; ni silencio ni reinicios en bucle.
|
||||||
|
\item \alert{Referencia desplegada} en la red de puertos más grande de México — difícil de replicar.
|
||||||
|
\item \alert{Base en México}: costo, cercanía y soporte frente a proveedores extranjeros.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{Equipo}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Leo Rodríguez} — Fundador y CEO/CTO \hdot arquitecto principal HW/SW.
|
||||||
|
\item \textbf{Adriana Del Ángel} — Implementación y operación.
|
||||||
|
\item \textbf{Gibran Ortega} — GPS / telemetría.
|
||||||
|
\item \textbf{Daniel Martínez} \hdot \textbf{Paola Rodríguez} — Ingeniería y despliegue.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
{\footnotesize\color{gray} Helgen Servicios Especializados S.A. de C.V. — Querétaro, México.}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}{La oferta}
|
||||||
|
\begin{columns}[T]
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{block}{Levantamos}
|
||||||
|
\centering
|
||||||
|
{\helgentitle\fontsize{26}{28}\selectfont\color{HelgenIndigo}\$3 MDP}\\[2pt]
|
||||||
|
{\normalsize para entregar \textbf{\$6 MDP} en ingresos}\\[1pt]
|
||||||
|
{\scriptsize\color{gray}$\approx$ USD \$170K $\to$ \$345K \hdot FX 17.5}
|
||||||
|
\end{block}
|
||||||
|
\textbf{Uso de fondos}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item Producción y primer lote de unidades
|
||||||
|
\item Despliegue e instalación (4 puertos)
|
||||||
|
\item Validación: térmica \hdot vibración \hdot IP67
|
||||||
|
\item Plataforma de datos + comercial
|
||||||
|
\end{itemize}
|
||||||
|
\column{0.5\textwidth}
|
||||||
|
\begin{alertblock}{Por qué es de bajo riesgo}
|
||||||
|
\footnotesize \alert{2$\times$ ingreso sobre capital}, respaldado por demanda existente — los clientes ya lo pidieron.
|
||||||
|
\end{alertblock}
|
||||||
|
\textbf{Hitos}
|
||||||
|
\small
|
||||||
|
\begin{itemize}
|
||||||
|
\item Entregar los 4 puertos en operación
|
||||||
|
\item Cerrar Panamá y Caucedo
|
||||||
|
\item Lanzar piloto automotriz (Toyota)
|
||||||
|
\item Serie 2 (PCB de producción) lista
|
||||||
|
\end{itemize}
|
||||||
|
\vspace{3pt}
|
||||||
|
{\scriptsize\color{gray} Valuación y términos: [marcador] — a definir con la plataforma.}
|
||||||
|
\end{columns}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% ============================ CIERRE ============================
|
||||||
|
\begin{frame}[standout]
|
||||||
|
\includegraphics[height=1.0cm]{helgen-logo-white.png}\par\vspace{10pt}
|
||||||
|
Los puertos ya dijeron sí.\\ Construyamos la capa de datos\\ de la industria pesada.\par\vspace{14pt}
|
||||||
|
{\normalsize\normalfont leo@helgen.tech\quad\hdot\quad ventas@helgen.tech}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
@ -11,7 +11,14 @@ high-vibration port environment.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Where we are (2026-06-20)
|
## Where we are (2026-06-20 · updated 2026-07-02)
|
||||||
|
|
||||||
|
> **2026-07-02:** backend deployed + stable; thermal chamber run done; 3-board protoboard
|
||||||
|
> campaign in flight (units to ICAVE 7-jul). **Watchdog v3 PROD schematic is complete (ERC 0)**
|
||||||
|
> — LTC4040 battery-backup sized to the 12 Ah pack, fail-safe Modo-B relay bypass — and the
|
||||||
|
> **PCB is now a 120×100 carrier board**: Blackpill + simpleRTK2B Pro (UNO-shield sockets) +
|
||||||
|
> 4G NTRIP Master (on-board XBee socket) all on female headers. Layout in placement review;
|
||||||
|
> fab gate = proto bench validation. Canonical: `03-Architecture-Hardware/watchdog-electrical-design-state.md`.
|
||||||
|
|
||||||
We deployed a first batch of HBOX trackers on ICAVE machines in **Veracruz**. They worked
|
We deployed a first batch of HBOX trackers on ICAVE machines in **Veracruz**. They worked
|
||||||
"ish," then failed. We are **mid-crisis, hardening for scale** — target **30 units by
|
"ish," then failed. We are **mid-crisis, hardening for scale** — target **30 units by
|
||||||
|
|||||||