diff --git a/00-Project-Management/PLAN.md b/00-Project-Management/PLAN.md index 163a3fa..77b8e49 100644 --- a/00-Project-Management/PLAN.md +++ b/00-Project-Management/PLAN.md @@ -1,6 +1,6 @@ # PLAN.md — Project Drogheda URGENT Remediation -**Updated:** 2026-06-19 · **Owner:** Leo Rodriguez +**Updated:** 2026-07-10 · **Owner:** Leo Rodriguez **Situation:** **all HBOX units have been removed from the machines.** We have **4 units in hand — 3 not working, 1 working-ish.** They are **physically in Veracruz**; the team is in **Querétaro → debugging is remote** until they ship or @@ -9,6 +9,46 @@ Strategy: **ruggedize now + PCB in parallel**; near-term work pivots to **remote backend analysis (doable from QRO today)** + a **remote diagnostic protocol** (`06-Testing-Validation/remote-diagnostic-protocol.md`). +--- + +## Current status & schedule (2026-07-10) — supersedes the dated remediation view below + +**Where we are.** The June crisis response drove a full hardware redesign: +**EinarBoard 1.0 (Rev 1.1)** — the production carrier that folds the watchdog, +LTC4040 battery-backup, and locking I/O onto one board — is **designed, audited +(ERC 0 / DRC 0), and now in fabrication + PCBA at JLCPCB.** + +- **PCBA order `#W2026070815023249` (SMT `SMT026070860804`) — in production.** + DFM/remark resolved with JLCPCB (Swee): J1/J2 left unpopulated, C50984 not + purchased, edge rails removed → finished board **135.0 × 100.0 mm**. + **Advanced-option payment (depanel + edge rail, $4.93) settled from JLC balance + on 2026-07-10**; awaiting dispatch estimate. +- **First lot schedule.** Assembled boards land in **Querétaro ~Jul 14** → **final + HBox assembly + validation Jul 14–17** → **ship to Veracruz ~Jul 18** (client + update sent by Adriana, 2026-07-10). +- **Client escalation (open).** León David Piña (Hutchison) pushed back on the slip + and asked whether a latest-version unit went to **ICAVE for parallel testing** + (agreed Jul 2). It **has not shipped yet** — commitment: **dispatch one of the 3 + pre-assembled units to ICAVE by ~Jul 15** so on-site testing runs in parallel; + results to follow. *(Draft reply prepared for Leo, 2026-07-10.)* +- **Target:** **30 units operational by August** across ICAVE, TIMSA, EIT, LCT. + +| Date | Milestone | Status | +|---|---|---| +| 2026-07-10 | EinarBoard PCBA advanced-option payment settled (JLC balance) | ✅ done | +| ~2026-07-15 | Dispatch 1 pre-assembled unit to ICAVE for parallel testing | ⬜ committed | +| ~2026-07-14 | Assembled PCBs received in Querétaro | 🔄 in production | +| 2026-07-14–17 | Final HBox assembly + validation | ⬜ upcoming | +| ~2026-07-18 | Ship first validated lot to Veracruz | ⬜ upcoming | +| Aug 2026 | 30 units operational (ICAVE · TIMSA · EIT · LCT) | ⬜ target | + +> The **P0–P2 remediation plan below** (dated 2026-06-19) is retained for the +> still-open **backend** items (anti-jump hotfix, async retranslator, secret +> rotation) and the RCA/thermal work; hardware has since progressed from +> “ruggedize + PCB in parallel” to the EinarBoard production build above. + +--- + Legend: ⬜ todo · 🔄 in progress · ✅ done · 👤 owner TBD · ⛔ blocker --- diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.pdf b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.pdf new file mode 100644 index 0000000..e50f319 Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.pdf differ diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.tex b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.tex new file mode 100644 index 0000000..dda3324 --- /dev/null +++ b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/2026-07-09_Drogheda_Avance-Semanal_v1.0.tex @@ -0,0 +1,272 @@ +% Helgen Technologies — HBOX RTK · Avance Semanal (Project Drogheda) +% Audiencia: Hutchison Ports (ICAVE / TIMSA / EIT / LCT). Semana del 7 al 11 de julio de 2026. +% Compilar: latexmk -xelatex -interaction=nonstopmode (fuentes de marca solo con XeLaTeX). +% Nota de licencia: se usa League Spartan (OFL) para titulos; el cuerpo NO embebe MADE Evolve Sans +% (licencia de uso personal) por ser documento para cliente — cae al sans por defecto. +\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 Semanal HBOX RTK \sep\ Hutchison Ports]{HBOX RTK — Avance Semanal} +\subtitle{PCB de producción liberada a fabricación \sep\ Gabinete finalizado \sep\ Semana del 7 al 11 de julio} +\author[Helgen Technologies]{Helgen Technologies — Ingeniería de Producto} +\date{9 de julio de 2026} +\titlegraphic{\hfill\includegraphics[height=1.05cm]{figs/logo-helgen.png}} + +\begin{document} + +\maketitle + +% ===================================================================== +\begin{frame}{Resumen de la semana} + \centering\footnotesize + \setlength{\tabcolsep}{5pt}\renewcommand{\arraystretch}{1.22} + \begin{tabular}{@{}L{0.15\textwidth} L{0.30\textwidth} L{0.46\textwidth}@{}} + \toprule + Frente & Estado al 2 jul & \textbf{Esta semana (9 jul)} \\ + \midrule + Electrónica / PCB & Esquemático cerrado; layout iniciado & \alert{PCB de producción liberada a fabricación} (EinarBoard 1.0, auditada). Recepción \textbf{13--17 jul} \\ + Gabinete / Térmico & 2 alternativas en prueba & \alert{Diseño de gabinete finalizado}; disipador en prueba; \textbf{termopar} en curso \\ + Backend & Desplegado en producción & \textbf{Estable} — 3 correcciones verificadas \\ + Módulo 4G & — & \alert{En aislamiento} (2 unidades desmontadas); comparativa GPS pendiente \\ + \bottomrule + \end{tabular} + \vspace{2mm} + \begin{block}{En una línea} + De prototipo a \textbf{placa industrial liberada a fábrica}, con el gabinete finalizado; la PCB impresa llega a \alert{mediados de la próxima semana}. + \end{block} +\end{frame} + +% ===================================================================== +\section{Logro de la semana — PCB a fabricación} + +\begin{frame}{PCB de producción liberada a fabricación} + \begin{columns}[T] + \column{0.54\textwidth} + \begin{itemize}\small + \item \textbf{EinarBoard 1.0}: la placa industrial unificada que reemplaza el cableado Dupont del prototipo. + \item Esquemático y trazado \textbf{cerrados con verificación cero errores}; una auditoría de pre-fabricación \alert{cerró 4 hallazgos críticos antes de ordenar}. + \item \textbf{Orden de fabricación liberada} (7 jul). Estándar \textbf{idéntico} para ICAVE, TIMSA, EIT y LCT. + \end{itemize} + \begin{alertblock}{El «pero» de la semana — honesto} + \small La PCB impresa es la \textbf{ruta crítica}: los primeros prototipos se reciben a \textbf{mediados de la próxima semana (13--17 jul)}. Hasta entonces, las unidades operan con el \textbf{circuito v3 en protoboard} ya validado — el despliegue de campo \alert{no se detiene}. + \end{alertblock} + \column{0.44\textwidth} + \centering + \includegraphics[width=\linewidth]{figs/pcb-einarboard.jpeg} + \figcap{EinarBoard 1.0 (HBox v1.1): un solo circuito impreso integra watchdog, receptor RTK y módem 4G.} + \end{columns} +\end{frame} + +% ===================================================================== +\section{Memoria técnica — qué hace la placa} + +\begin{frame}{Qué es la EinarBoard 1.0} + \begin{itemize} + \item Una sola placa de \textbf{4 capas (135 $\times$ 100 mm)} que aloja los \textbf{tres módulos en zócalos}: el microcontrolador \emph{watchdog} (STM32), el receptor \textbf{RTK} (simpleRTK2B Pro) y el \textbf{módem 4G-NTRIP}. + \item Elimina por completo los \textbf{cables sueltos (Dupont)}, el \textbf{estrés de soldadura} y la \textbf{vulnerabilidad por vibración} — todo lo que antes era módulos y cableado a mano queda integrado y protegido a bordo. + \end{itemize} + \vfill + \begin{block}{Responde directo a su observación \#1} + El aspecto de prototipo (cableado Dupont) fue una etapa deliberada para congelar la lógica en el entorno más exigente. \textbf{Esa etapa cumplió su función}: la versión industrial ya está liberada a fabricación. + \end{block} +\end{frame} + +\begin{frame}{Qué hace — funciones a bordo} + \begin{columns}[T] + \column{0.48\textwidth} + \begin{itemize}\small + \item \textbf{Estado seguro por diseño:} el stack RTK arranca \emph{apagado} hasta que el watchdog confirma — \alert{nunca ciclo infinito}. + \item \textbf{Carga calificada por temperatura:} corta la carga con celda caliente — responde a la causa \#1 del RCA. + \item \textbf{Correcciones a prueba de fallas:} puente \emph{normalmente cerrado}; aun con el watchdog fuera, \alert{no se interrumpen}. + \item \textbf{Sensado térmico + ventilador:} sensores + NTC de punto caliente gobiernan enfriamiento y telemetría. + \item \textbf{Diagnóstico por unidad:} el estado (T$^\circ$, batería, tensiones, ignición) viaja en el \textbf{mismo flujo GPS}. + \end{itemize} + \column{0.52\textwidth} + \centering + \resizebox{\linewidth}{!}{% + \begin{tikzpicture}[node distance=3.2mm and 4.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] (sw) {Load switch\\(OFF = seguro)}; + \node[box, right=of sw] (stack){Stack RTK\\F9P + 4G}; + \node[box, below=6mm of psu] (bat) {LTC4040 + batería\\carga calif.\ por T$^\circ$}; + \node[box, below=6mm of sw] (mcu) {STM32\\watchdog}; + \node[box, below=6mm of stack](temp){Sensores\\T$^\circ$/HR + NTC}; + \draw[arrb] (vin)--(prot); \draw[arrb] (prot)--(psu); \draw[arrb] (psu)--(sw); + \draw[arrb] (sw)--(stack); + \draw[arrb, {Stealth}-{Stealth}] (bat) -- (psu) 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] (bat) -- (mcu); + \draw[arr] (mcu.north east) to[bend right=12] node[right=0.5mm, font=\tiny, text=HelgenIndigo]{diagnóstico} (stack.south west); + \end{tikzpicture}} + \figcap{Protección, ignición, respaldo, sensado y control térmico: \alert{a bordo de una sola placa}.} + \end{columns} +\end{frame} + +% ===================================================================== +\section{Gabinete y pruebas} + +\begin{frame}{Diseño del gabinete finalizado — en prueba} + \begin{itemize}\small + \item \textbf{Diseño finalizado} y en espera de materiales; electrónica interna \textbf{idéntica para las 4 BUs} (sólo cambian los herrajes de sujeción a cada máquina). + \item Chasis con \textbf{disipador de aluminio integrado}: el calor sale por \textbf{conducción} con la caja sellada — \alert{IP67 se mantiene}. + \end{itemize} + \vfill + \begin{columns}[c] + \column{0.5\textwidth}\centering + \includegraphics[height=0.46\textheight]{figs/box-heatsink.jpeg} + \figcap{Gabinete impreso (RV1.4) con disipador — en banco esta semana.} + \column{0.5\textwidth}\centering + \includegraphics[height=0.46\textheight]{figs/hbox-in-cabinet.jpeg} + \figcap{HBOX instalado en el gabinete IP67, en cabina de máquina.} + \end{columns} +\end{frame} + +\begin{frame}{Estado térmico — sin adornos} + \begin{itemize} + \item La solución térmica (disipador + ventilador interno, caja sellada) está \textbf{en prueba}; enfría por conducción \textbf{sin comprometer el ingreso de agua}. + \item \textbf{Honesto:} estamos \alert{cuantificando la temperatura interior real del gabinete con un termopar} durante un turno completo de sol. Blindamos el diseño contra la temperatura \textbf{medida}, no la de ficha técnica. + \end{itemize} + \vfill + \begin{block}{Lo que ya sabemos (validación en cámara, 2 jul)} + \small El calor \textbf{no} degrada el posicionamiento: el RTK opera normal a 50\,°C. El eslabón térmico es la \textbf{energía} — ahora protegida por la \textbf{carga calificada por temperatura} de la EinarBoard. + \end{block} +\end{frame} + +% ===================================================================== +\section{Confiabilidad e integración} + +\begin{frame}{Confiabilidad e integración — estado} + \begin{columns}[T] + \column{0.5\textwidth} + \begin{block}{Backend — resuelto y desplegado} + \small 3 correcciones verificadas (10/10 pruebas de extremo a extremo). El tablero ya distingue una unidad \emph{sin señal} de una \emph{en línea que el backend no reenviaba}. + \end{block} + \begin{block}{Módulo 4G — en aislamiento} + \small Desmontamos \textbf{2 unidades} para aislar la causa en laboratorio; el watchdog mitiga reiniciando el hardware de forma autónoma. Presentaremos la \textbf{comparativa de precisión GPS} (nivel centimétrico cuando el módem transmite). + \end{block} + \column{0.5\textwidth} + \begin{block}{Estación base — lista} + \small Operativa y validada; viaja en el \textbf{primer paquete logístico} para asegurar la red RTK de alta precisión. + \end{block} + \begin{alertblock}{Integración VERONICA — dependencia} + \small La retransmisión nativa \textbf{ya funciona para ICAVE}. Para habilitarla en \textbf{TIMSA, EIT y LCT} requerimos formalmente las \textbf{credenciales de acceso} de esas 3 BUs — único insumo pendiente de su lado. + \end{alertblock} + \end{columns} +\end{frame} + +% ===================================================================== +\section{Cronograma} + +\begin{frame}{Próximos pasos — de la fábrica al despliegue} + \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-07}{2026-07-31} + \gantttitle{Julio 2026}{25} \\ + \gantttitlelist{7,...,31}{1} \\ + \ganttmilestone[name=rel]{PCB liberada a fabricación}{2026-07-07} \\ + \ganttbar[name=camp]{Campaña de banco — protoboard v3 (3 tarjetas)}{2026-07-07}{2026-07-16} \\ + \ganttbar[name=comp]{Comparativa de confiabilidad en ICAVE}{2026-07-10}{2026-07-17} \\ + \ganttbar[name=fab]{Fabricación de PCBs}{2026-07-13}{2026-07-17} \\ + \ganttmilestone[name=rx]{Recepción de PCBs impresos}{2026-07-17} \\ + \ganttmilestone[name=cmp]{Comparativa entregada}{2026-07-17} \\ + \ganttbar[name=ens]{Ensamble + validación de PCBs}{2026-07-18}{2026-07-24} \\ + \ganttbar[name=desp]{Despliegue e instalación en las 4 BUs}{2026-07-25}{2026-07-31} \\ + \ganttmilestone[name=op]{30 unidades operativas → agosto}{2026-07-31} + \ganttlink{rel}{fab} + \ganttlink{fab}{rx} + \ganttlink{rx}{ens} + \ganttlink{ens}{desp} + \ganttlink{desp}{op} + \end{ganttchart}} + \vfill + \figcap{Dos rutas en paralelo: \textbf{campo} (comparativa en ICAVE) y \textbf{fábrica} (PCBs). Convergen en el despliegue a las 4 BUs y \alert{30 unidades operativas en agosto}.} +\end{frame} + +% ===================================================================== +\begin{frame}[standout] + EinarBoard 1.0 liberada a fabricación.\\ + Gabinete finalizado, en prueba.\\[2mm] + {\normalsize PCB impresa: \textbf{13--17 jul} \sep\ Comparativa ICAVE: \textbf{17 jul} \sep\ 30 unidades: \textbf{agosto}} + \vfill + {\footnotesize Gracias \sep\ Preguntas} +\end{frame} + +\end{document} diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/box-heatsink.jpeg b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/box-heatsink.jpeg new file mode 100644 index 0000000..9123edc Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/box-heatsink.jpeg differ diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/hbox-in-cabinet.jpeg b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/hbox-in-cabinet.jpeg new file mode 100644 index 0000000..735e86b Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/hbox-in-cabinet.jpeg differ diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/heatsink.jpeg b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/heatsink.jpeg new file mode 100644 index 0000000..d697373 Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/heatsink.jpeg differ diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/logo-helgen.png b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/logo-helgen.png new file mode 100644 index 0000000..62b6946 Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/logo-helgen.png differ diff --git a/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/pcb-einarboard.jpeg b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/pcb-einarboard.jpeg new file mode 100644 index 0000000..456dcc4 Binary files /dev/null and b/00-Project-Management/client-comms/Avance-Semanal-2026-07-09/figs/pcb-einarboard.jpeg differ diff --git a/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.jpg b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.jpg new file mode 100644 index 0000000..362b284 Binary files /dev/null and b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.jpg differ diff --git a/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.pdf b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.pdf new file mode 100644 index 0000000..6bfeb10 Binary files /dev/null and b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.pdf differ diff --git a/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.png b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.png new file mode 100644 index 0000000..33b53d9 Binary files /dev/null and b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.png differ diff --git a/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.tex b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.tex new file mode 100644 index 0000000..76c426b --- /dev/null +++ b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto.tex @@ -0,0 +1,362 @@ +% Drogheda_Diagrama-Unico-Proto.tex — UN solo diagrama de conexiones del protoboard +% HBOX Watchdog v3 (DEV) · bloques 1–11 en una sola hoja, todos los símbolos. +% Fuente de verdad: watchdog-electrical-design-state.md §2 + Guía v3.0 (Bloques 1–11). +% Autocontenido: pdflatex Drogheda_Diagrama-Unico-Proto.tex +\documentclass[border=14pt]{standalone} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{circuitikz} +\usepackage{helvet}\renewcommand{\familydefault}{\sfdefault} +\usetikzlibrary{calc,arrows.meta} +\definecolor{net5V}{HTML}{C62828} +\definecolor{net3V3}{HTML}{EF6C00} +\definecolor{netGND}{HTML}{212121} +\definecolor{netSig}{HTML}{1565C0} +\definecolor{netAna}{HTML}{2E7D32} +\definecolor{netIgn}{HTML}{800020} +\definecolor{Indigo}{HTML}{2C3C5B} +\ctikzset{bipoles/length=0.75cm, font=\footnotesize} +\newcommand{\flagg}[4]{\node[circle,fill=#1,text=white,inner sep=1.6pt,font=\bfseries\tiny] (#2) at (#3) {#4};} +\newcommand{\ant}[2]{\draw (#1,#2) -- ++(0,0.34) -- ++(-0.18,0.22); \draw (#1,#2) ++(0,0.34) -- ++(0.18,0.22);} +\newcommand{\bnum}[2]{\node[circle,draw=Indigo,text=Indigo,inner sep=1.2pt,font=\bfseries\tiny] at (#1) {#2};} +\begin{document} +\begin{tikzpicture}[every node/.append style={font=\footnotesize}] + +% ================= TITULO + LEYENDA ================= +\node[anchor=north west,font=\bfseries\large,Indigo] at (-20.4,13.6) + {HBOX Watchdog v3 — Diagrama ÚNICO de conexiones del protoboard (bloques 1–11)}; +\node[anchor=north west,font=\scriptsize,gray] at (-20.4,12.9) + {Todo el sistema en una hoja, para verificación rápida · Modo B dibujado (Modo A: ver Avisos) · Proyecto Drogheda / Helgen · v1.0 · 2026-07-09}; +\begin{scope}[shift={(-20.4,12.1)}] + \foreach \i/\c/\t in {0/net5V/{5 V},1.6/net3V3/{3.3 V},3.2/netGND/GND,4.6/netSig/{Señal},6.2/netAna/{Analógico},8.6/netIgn/{Ign. / 24 V}}{ + \draw[\c,line width=2pt] (\i,0)--(\i+0.45,0); \node[anchor=west,font=\scriptsize] at (\i+0.5,0){\t};} + \node[anchor=west,font=\scriptsize] at (11.6,0){$\bullet$ = unión · cruce sin punto = NO se conectan · SAL/3V3/VEH: misma red donde se repite la etiqueta}; +\end{scope} + +% ================= RIEL MAIN5V ================= +\draw[net5V,line width=1.2pt] (-8.6,10.6) -- (23.0,10.6); +\node[net5V,font=\bfseries,anchor=south west] at (-8.6,10.65){MAIN5V}; +\node[net5V,font=\bfseries,anchor=south east] at (23.0,10.65){MAIN5V}; +\bnum{-9.0,10.6}{1} +% cap de reserva del riel +\fill[net5V] (-7.4,10.6) circle(1.4pt); +\draw (-7.4,10.6) to[C,l=$100\,\mu$F$+$100 nF] (-7.4,9.1) node[ground]{}; + +% ================= MCU BLACKPILL ================= +\node[draw,fill=blue!8,rounded corners,inner sep=0] (MCU) at (2.3,0.9) [minimum width=4.6cm,minimum height=13cm]{}; +\node[font=\bfseries\small,Indigo,rotate=90] at (2.3,2.6){Blackpill STM32F411 (WeAct)}; +\node[font=\tiny,gray,rotate=90] at (2.9,2.6){3V3 = salida del regulador del módulo}; +% --- pin 5V (borde superior) --- +\draw[net5V,line width=1pt] (1.6,7.4) -- (1.6,10.6); \fill[net5V] (1.6,10.6) circle(1.4pt); +\node[font=\bfseries\tiny,anchor=north] at (1.6,7.3){5V}; +% --- GND (borde inferior) --- +\draw[netGND,line width=1pt] (0.8,-5.6) -- (0.8,-6.1) node[ground]{}; +\node[font=\bfseries\tiny,anchor=south] at (0.8,-5.5){GND}; +% --- 3V3 (borde izq) --- +\draw[net3V3,line width=1pt] (0,6.6) -- (-0.9,6.6); \flagg{net3V3}{f3a}{-1.15,6.6}{3V3} +\node[font=\bfseries\tiny,anchor=west] at (0.05,6.6){3V3}; +% --- pines izquierda --- +\foreach \y/\nm in {4.4/PA0,3.2/PA4,1.8/PA5,0.0/PA7,-1.6/PB1,-3.0/PA8,-4.8/NRST}{ + \node[font=\bfseries\tiny,anchor=west] at (0.05,\y){\nm};} +% --- pines derecha --- +\foreach \y/\nm in {6.6/PA1,5.6/PA2,5.0/PA3,4.2/PA10,3.4/PA9,2.2/PB6,1.6/PB7,0.4/PB0,-1.2/PA6}{ + \node[font=\bfseries\tiny,anchor=east] at (4.55,\y){\nm};} +% --- pines borde inferior (gauge) --- +\foreach \x/\nm in {1.8/PB12,2.6/PB13,3.4/PB14,4.2/PB15}{ + \node[font=\bfseries\tiny,anchor=south,rotate=90] at (\x,-5.45){\nm};} + +% ================= BLOQUE 10 · FUENTE + RESPALDO (izquierda arriba) ================= +\bnum{-19.0,9.7}{10} +\node[draw,rounded corners,minimum width=2.3cm,minimum height=1.5cm,align=center,font=\scriptsize] (SRC) at (-18.0,8.6){Fuente 5 V\\«vehículo»\\SD-15B-05 / banco}; +\draw[netGND] (-18.0,7.85) -- (-18.0,7.4) node[ground]{}; +% fila VEH -> D1 -> SYS -> corte -> riel +\draw[net5V,line width=1pt] (-16.8,8.6) -- (-15.0,8.6); +\node[net5V,font=\bfseries\tiny,anchor=south] at (-16.1,8.65){VEH 5V}; +\draw[net5V] (-15.0,8.6) to[D,l={\tiny 1N5819}] (-13.2,8.6); +\draw[net5V,line width=1pt] (-13.2,8.6) -- (-10.6,8.6); +\fill[net5V] (-10.6,8.6) circle(1.5pt); +\node[net5V,font=\bfseries\tiny,anchor=south] at (-10.6,8.72){nodo SYS}; +\draw[net5V,line width=1pt] (-10.6,8.6) -- (-10.0,8.6); +\draw[net5V] (-10.0,8.6) to[nos] (-9.0,8.6); +\node[font=\tiny,anchor=south,align=center] at (-9.5,9.0){apagador de\\corte (SPST)}; +\draw[net5V,line width=1.2pt] (-9.0,8.6) -- (-8.6,8.6) -- (-8.6,10.6); +% --- compuerta de carga CHRG_RUN (PA8) --- +\node[pmos,anchor=gate] (MC) at (-16.4,6.0){}; +\node[font=\tiny,anchor=west,align=left] at (-15.5,6.0){IRF9540N (P)}; +\draw[net5V,line width=0.9pt] (MC.source) -- (MC.source |- 0,8.6); +\fill[net5V] (MC.source |- 0,8.6) circle(1.4pt); +\draw[netSig] (MC.gate) -- (-17.6,6.0); \fill (-17.6,6.0) circle(1.3pt); +\draw (-17.6,6.0) to[R,l=$10$k] (-17.6,7.4); +\draw (-17.6,7.4) -- (MC.source |- 0,7.4); \fill (MC.source |- 0,7.4) circle(1.3pt); +\node[npn,anchor=collector] (QC) at (-17.6,5.3){}; +\node[font=\tiny,anchor=west] at (-17.25,4.75){2N3904}; +\draw[netSig] (QC.collector) -- (-17.6,6.0); +\draw[netSig] (QC.base) to[R,l_=$1$k] (-20.2,4.75 |- QC.base); +\draw[netGND] (QC.emitter) -- ++(0,-0.35) node[ground]{}; +\node[font=\tiny,Indigo,align=left,anchor=west] at (-20.2,3.05){\textbf{CHRG\_RUN (PA8):} ALTO = carga\\MCU ausente = SIN carga (inverso al PCB)}; +% --- TP4056 --- +\node[draw,rounded corners,fill=blue!6,minimum width=1.8cm,minimum height=1.2cm,font=\tiny,align=center] (TP) at (-15.5,3.8){TP4056\\cargador}; +\draw[net5V,line width=0.9pt] (MC.drain) -- (MC.drain |- 0,4.4); +\node[font=\tiny,anchor=south west] at (-15.55,4.42){IN$+$}; +\draw[netGND] (-16.4,3.8) -- (-16.9,3.8) -- (-16.9,3.4) node[ground]{}; +\node[font=\tiny,anchor=west] at (-16.38,3.58){IN$-$}; +% B+ hacia bus +\draw[net5V,line width=0.9pt] (-15.2,3.2) -- (-15.2,2.6); +\node[font=\tiny,anchor=north west] at (-15.18,3.2){B$+$}; +\node[font=\tiny,gray,align=left,anchor=north west] at (-16.6,2.0){NTC del kit: SIN USAR\\(módulo sin pin TEMP;\\en PCB $\rightarrow$ LTC4040)}; +% --- bus BAT+ --- +\draw[net5V,line width=1pt] (-15.2,2.6) -- (-9.1,2.6); +\node[net5V,font=\bfseries\tiny,anchor=south] at (-12.6,2.65){BAT$+$}; +% bateria +\fill[net5V] (-13.6,2.6) circle(1.4pt); +\draw (-13.6,2.6) to[battery1] (-13.6,0.8); +\draw[netGND] (-13.6,0.8) -- (-13.6,0.55) node[ground]{}; +\node[font=\tiny,anchor=west,align=left] at (-13.35,1.6){18650 1S4P\\$\sim$12 Ah}; +% --- MT3608 --- +\node[draw,rounded corners,fill=blue!6,minimum width=1.9cm,minimum height=1.2cm,font=\tiny,align=center] (MT) at (-10.9,3.8){MT3608\\elevador $\rightarrow$5 V}; +\fill[net5V] (-11.4,2.6) circle(1.4pt); +\draw[net5V,line width=0.9pt] (-11.4,2.6) -- (-11.4,3.2); +\node[font=\tiny,anchor=south west] at (-11.38,3.22){IN$+$}; +\draw[netGND] (-11.85,3.8) -- (-12.35,3.8) -- (-12.35,3.35) node[ground]{}; +\draw[net5V,line width=0.9pt] (-10.6,4.4) -- (-10.6,5.2); +\draw[net5V] (-10.6,5.2) to[D,l={\tiny 1N5819}] (-10.6,6.6); +\draw[net5V,line width=0.9pt] (-10.6,6.6) -- (-10.6,8.6); +\node[font=\tiny,anchor=west] at (-10.35,5.9){aj. $<$ 5 V veh.}; + +% ================= BLOQUE 4 · SENSADO ================= +\bnum{-9.0,6.4}{4} +% PA0 (BAT_SENSE): bus -> riser -> divisor vertical en x=-2.8 +\fill[net5V] (-9.1,2.6) circle(1.4pt); +\draw[netAna,line width=0.9pt] (-9.1,2.6) -- (-9.1,6.0) -- (-2.8,6.0); +\node[netAna,font=\tiny,anchor=south] at (-6.2,6.05){BAT\_SENSE ($\div$2)}; +\draw (-2.8,6.0) to[R,l=$10$k] (-2.8,4.4); +\fill (-2.8,4.4) circle(1.4pt); +\draw (-2.8,4.4) to[R,l=$10$k] (-2.8,3.0); +\draw[netGND] (-2.8,3.0) -- (-2.8,2.7) node[ground]{}; +\draw[netAna,line width=0.9pt] (-2.8,4.4) -- (0,4.4); +% PA4 (5V_SENSE): divisor vertical en x=-6.0 +\flagg{net5V}{fveh}{-6.0,4.9}{VEH} +\draw (-6.0,4.7) to[R,l_=$10$k] (-6.0,3.2); +\fill (-6.0,3.2) circle(1.4pt); +\draw (-6.0,3.2) to[R,l_=$10$k] (-6.0,1.7); +\draw[netGND] (-6.0,1.7) -- (-6.0,1.45) node[ground]{}; +\draw[netAna,line width=0.9pt] (-6.0,3.2) -- (0,3.2); +\node[netAna,font=\tiny,anchor=south] at (-4.0,3.25){5V\_SENSE ($\div$2)}; +% PA5 (ignicion): DFR1015 +\node[netIgn,font=\bfseries\tiny,align=right,anchor=east] at (-8.8,2.0){Ignición\\12--24 V\\(GX16 p3)}; +\draw[netIgn,line width=1pt] (-8.75,2.0) -- (-8.2,2.0); +\node[draw,rounded corners,minimum width=1.6cm,minimum height=1.2cm,font=\tiny,align=center] (DFR) at (-7.4,1.8){DFR1015\\$\rightarrow$ 5 V}; +\node[font=\tiny,anchor=south west] at (-8.18,2.02){IN$+$}; +\draw[netGND] (-8.2,1.4) -- (-8.5,1.4) -- (-8.5,1.0) node[ground]{}; +\draw[net5V,line width=0.9pt] (-6.6,1.8) -- (-5.6,1.8); +\draw (-5.6,1.8) to[R,l=$100\,\Omega$] (-3.9,1.8); +\draw[netGND] (-6.6,1.4) -- (-6.35,1.4) -- (-6.35,1.0) node[ground]{}; +\draw[netSig,line width=0.9pt] (-3.9,1.8) -- (0,1.8); +\fill (-3.1,1.8) circle(1.3pt); \fill (-2.2,1.8) circle(1.3pt); +% clamp BAT54 hacia 3V3 (dibujado hacia abajo; cátodo en 3V3) +\draw (-3.1,1.8) to[D] (-3.1,0.85);% ánodo en PA5, cátodo hacia 3V3 (clamp Schottky) +\flagg{net3V3}{f3c}{-3.1,0.55}{3V3} +\node[font=\tiny,anchor=east,align=right] at (-3.35,1.05){1N5819\\\textcolor{gray}{(PCB: BAT54)}}; +\draw (-2.2,1.8) to[C,l=100 nF] (-2.2,0.9); +\draw[netGND] (-2.2,0.9) -- (-2.2,0.7) node[ground]{}; +\node[font=\tiny,gray,anchor=north west,align=left] at (-8.8,0.55){banco: apagador 3V3$\rightarrow$PA5\\simula la ignición (sin DFR1015)}; +\node[font=\tiny,netSig,anchor=south] at (-1.1,1.85){digital, sin divisor}; + +% ================= BLOQUE 11 · LM35 (PA7) + NTC (PB1) ================= +\bnum{-7.6,-0.35}{11} +\node[draw,rounded corners,minimum width=1.4cm,minimum height=1.5cm,font=\bfseries\scriptsize,align=center] (LM) at (-5.9,-1.25){LM35}; +\node[font=\tiny,anchor=north] at (-5.9,-1.5){TO-92}; +\draw[netAna,line width=0.9pt] (-5.9,-0.5) -- (-5.9,0.0) -- (0,0.0); +\node[font=\tiny,anchor=west] at (-5.8,-0.22){OUT}; +\node[netAna,font=\tiny,anchor=south] at (-1.6,0.08){10 mV/°C · aire/tarjeta}; +\draw[net5V,line width=0.9pt] (-6.6,-0.8) -- (-7.4,-0.8); +\node[net5V,font=\bfseries\tiny,anchor=south east] at (-7.05,-0.7){MAIN5V}; +\fill[net5V] (-7.4,-0.8) circle(1.2pt); +\draw (-7.4,-0.8) to[C,l_=100 nF] (-7.4,-1.7); +\draw[netGND] (-7.4,-1.7) -- (-7.4,-1.9) node[ground]{}; +\draw[netGND] (-5.9,-2.0) -- (-5.9,-2.35) node[ground]{}; +% NTC -> PB1 (columna x=-3.3) +\flagg{net3V3}{f3d}{-3.3,-0.45}{3V3} +\draw (-3.3,-0.65) to[R,l=$10$k 1\%] (-3.3,-1.6); +\fill (-3.3,-1.6) circle(1.4pt); +\draw (-3.3,-1.6) to[thR,l=NTC $10$k] (-3.3,-2.8); +\draw[netGND] (-3.3,-2.8) -- (-3.3,-3.0) node[ground]{}; +\draw[netAna,line width=0.9pt] (-3.3,-1.6) -- (0,-1.6); +\node[netAna,font=\tiny,anchor=south] at (-1.55,-1.5){al punto caliente (celda/módem)}; +\draw (-3.3,-1.6) -- (-4.3,-1.6); \draw (-4.3,-1.6) to[C] (-4.3,-2.6); +\node[font=\tiny,anchor=east] at (-4.45,-2.1){100 nF}; +\draw[netGND] (-4.3,-2.6) -- (-4.3,-2.8) node[ground]{}; + +% ================= PA8 (ruta larga a la compuerta de carga) ================= +\draw[netSig,line width=0.9pt] (0,-3.0) -- (-1.3,-3.0) -- (-1.3,-3.4) -- (-20.2,-3.4) -- (-20.2,4.75 |- QC.base); +\node[netSig,font=\tiny,anchor=south] at (-11.0,-3.35){PA8 = CHRG\_RUN $\rightarrow$ compuerta de carga (Bloque 10)}; + +% ================= BLOQUE 7 · RESET + GAUGE ================= +\bnum{-3.5,-4.3}{7} +\draw[netSig,line width=0.9pt] (0,-4.8) -- (-1.2,-4.8); +\draw (-1.2,-4.8) to[push button] (-2.6,-4.8); +\draw[netGND] (-2.6,-4.8) -- (-2.6,-5.3) node[ground]{}; +\node[font=\tiny,anchor=north,align=center] at (-1.9,-5.35){reset $\rightarrow$ GND}; +% gauge x4 +\foreach \x in {1.8,2.6,3.4,4.2}{ + \draw[netSig,line width=0.8pt] (\x,-5.6) -- (\x,-6.0); + \draw (\x,-6.0) to[R] (\x,-7.3); + \draw (\x,-7.3) to[leD] (\x,-8.4); + \draw[netGND] (\x,-8.4) -- (\x,-8.6) node[ground]{};} +\node[font=\tiny,anchor=east] at (1.7,-6.65){$330\,\Omega$}; +\node[font=\tiny,anchor=north,align=center] at (3.0,-8.9){gauge de batería $\times$4 · quedan APAGADOS hasta firmware}; + +% ================= BLOQUE 3 · INTERRUPTOR DE CARGA (PA1 -> SAL) ================= +\bnum{5.4,7.3}{3} +\draw[netSig,line width=0.9pt] (4.6,6.6) -- (5.1,6.6); +\draw (5.1,6.6) to[R,l=$1$k] (7.1,6.6); +\node[npn,anchor=base] (Q1) at (7.6,6.6){}; +\node[font=\tiny,anchor=west] at (8.5,6.3){2N3904}; +\draw[netSig] (7.1,6.6) -- (Q1.base); +\draw[netGND] (Q1.emitter) -- ++(0,-0.35) node[ground]{}; +\draw[netSig] (Q1.collector) -- (Q1.collector |- 0,8.4); \fill (Q1.collector |- 0,8.4) circle(1.4pt); +\draw (Q1.collector |- 0,8.4) to[R,l=$10$k] (Q1.collector |- 0,10.6); +\fill[net5V] (Q1.collector |- 0,10.6) circle(1.4pt); +\node[pmos,anchor=gate] (M1) at (9.9,8.4){}; +\node[font=\tiny,anchor=south,align=center] at (10.6,9.35){IRF9540N (P)}; +\draw[netSig] (Q1.collector |- 0,8.4) -- (M1.gate); +\draw[net5V,line width=0.9pt] (M1.source) -- (M1.source |- 0,10.6); +\fill[net5V] (M1.source |- 0,10.6) circle(1.4pt); +\draw[net5V,line width=1pt] (M1.drain) -- (M1.drain |- 0,7.6); +\coordinate (SALn) at (M1.drain |- 0,7.6); +\fill[net5V] (SALn) circle(1.5pt); +\node[net5V,font=\bfseries\tiny,anchor=south west] at ($(SALn)+(0.1,0.04)$){SAL = 5 V conmutado del stack}; + +% ================= BLOQUES 8/9 · STACK RTK (Modo B dibujado) ================= +\bnum{15.35,7.85}{8} +\node[font=\bfseries\tiny,Indigo,anchor=west] at (15.55,7.85){/ 9}; +% linea SAL +\draw[net5V,line width=1pt] (SALn) -- (20.0,7.6); +% F9P +\node[draw,fill=blue!7,rounded corners,inner sep=0] (F9P) at (15.5,4.6) [minimum width=4cm,minimum height=5.2cm]{}; +\node[font=\bfseries\scriptsize,align=center] at (15.5,6.6){simpleRTK2B Pro\\(ZED-F9P)}; +\node[font=\tiny,align=center,Indigo] at (15.5,2.55){switch XBee $\rightarrow$ \textbf{UART1}\\(socket del Pro VACÍO)}; +% 5V top +\fill[net5V] (14.2,7.6) circle(1.4pt); +\draw[net5V,line width=0.9pt] (14.2,7.6) -- (14.2,7.2); +\node[font=\bfseries\tiny,anchor=north] at (14.2,7.15){5V}; +% IOREF / GND izq +\node[font=\bfseries\tiny,anchor=west] at (13.55,6.4){IOREF}; +\draw[net3V3,line width=0.9pt] (13.5,6.4) -- (12.8,6.4); \flagg{net3V3}{f3b}{12.5,6.4}{3V3} +\node[font=\bfseries\tiny,anchor=west] at (13.55,5.6){GND}; +\draw[netGND,line width=0.9pt] (13.5,5.6) -- (12.9,5.6) -- (12.9,5.15) node[ground]{}; +% RX1 / TX1 +\node[font=\bfseries\tiny,anchor=west] at (13.55,4.6){RX1}; +\node[font=\bfseries\tiny,anchor=west] at (13.55,4.0){TX1}; +\draw[netSig,line width=0.9pt] (4.6,5.6) -- (12.3,5.6) -- (12.3,4.6) -- (13.5,4.6); +\draw[netSig,line width=0.9pt] (4.6,5.0) -- (11.9,5.0) -- (11.9,4.0) -- (13.5,4.0); +\node[netSig,font=\tiny,anchor=south] at (8.0,5.62){PA2 $\rightarrow$ RX1 (NMEA, cruce TX/RX)}; +\node[netSig,font=\tiny,anchor=north] at (6.8,4.97){PA3 $\leftarrow$ TX1}; +% antena GNSS (borde derecho) +\draw (17.5,6.6) -- (18.4,6.6); \ant{18.4}{6.6} +\node[font=\tiny,anchor=north west] at (18.4,6.35){Ant. GNSS (SMA)}; +% TX2 / RX2 (borde inferior) +\node[font=\bfseries\tiny,anchor=south] at (14.6,2.05){TX2}; +\node[font=\bfseries\tiny,anchor=south] at (16.4,2.05){RX2}; +% TX2 -> PA10 +\draw[netSig,line width=0.9pt] (14.6,2.0) -- (14.6,1.2) -- (11.5,1.2) -- (11.5,4.2) -- (4.6,4.2); +\node[netSig,font=\tiny,anchor=south] at (8.6,4.25){F9P TX2 $\rightarrow$ PA10 (subida al MCU · Modo B)}; +% pull-up 22k DFU en PA10 +\fill (11.5,3.0) circle(1.3pt); +\draw (11.5,3.0) to[R,l=$22$k] (12.6,3.0); \flagg{net3V3}{f3e}{12.9,3.0}{3V3} +\node[font=\tiny,gray,anchor=north] at (11.9,2.62){DFU-safe}; +% PA9 -> DIN +\draw[netSig,line width=0.9pt] (4.6,3.4) -- (5.5,3.4) -- (5.5,3.9) -- (11.1,3.9) -- (11.1,0.8) -- (19.6,0.8) -- (19.6,3.3) -- (20.0,3.3); +\node[netSig,font=\tiny,anchor=north] at (9.3,3.85){PA9 $\rightarrow$ 4G DIN (releva + inyecta \$PHLG)}; +% XBee 4G +\node[draw,fill=black!8,rounded corners,inner sep=0] (G4) at (21.7,3.7) [minimum width=3.4cm,minimum height=3.8cm]{}; +\node[font=\bfseries\scriptsize,align=center] at (21.7,4.6){4G NTRIP Master\\(XBee)}; +\node[font=\tiny,align=center] at (21.7,3.85){en breakout BOB-08276\\(paso 2.0 mm $\rightarrow$ 2.54)}; +\node[font=\bfseries\tiny,anchor=west] at (20.05,3.3){DIN}; +\node[font=\bfseries\tiny,anchor=west] at (20.05,2.5){DOUT}; +\node[font=\bfseries\tiny,anchor=east] at (23.35,4.9){VCC}; +\node[font=\bfseries\tiny,anchor=west] at (21.8,2.05){GND}; +\draw[netGND,line width=0.9pt] (21.7,1.8) -- (21.7,1.3) node[ground]{}; +% DOUT -> RX2 directo (RTCM3) +\draw[netSig,densely dashed,line width=1pt,-{Stealth}] (20.0,2.5) -- (19.2,2.5) -- (19.2,1.5) -- (16.4,1.5) -- (16.4,2.0); +\node[netSig,font=\tiny,anchor=north] at (17.9,1.4){RTCM3 \textbf{DIRECTO} $\rightarrow$ F9P RX2 (no pasa por el MCU)}; +% antenas LTE +\draw (21.0,5.6) -- (21.0,5.9); \ant{21.0}{5.9} +\draw (22.4,5.6) -- (22.4,5.9); \ant{22.4}{5.9} +\node[font=\tiny,anchor=south] at (21.7,6.8){2$\times$ ant. LTE (¡antes de energizar!)}; +% servidor +\draw[-{Stealth},Indigo,thick] (23.4,3.4) -- (24.4,3.4); +\node[Indigo,font=\tiny,anchor=west] at (24.45,3.4){$\rightarrow$ servidor NTRIP}; +% buck MODEM 3.3V +\node[draw,rounded corners,fill=blue!6,minimum width=2.6cm,minimum height=1.2cm,font=\tiny,align=center] (BKM) at (21.8,8.6){LM2596/MP1584\\«MODEM 3.3 V» (aj.)}; +\draw[net5V,line width=0.9pt] (20.0,7.6) -- (20.0,8.6) -- (20.5,8.6); +\draw[netGND] (21.2,8.0) -- (21.2,7.5) node[ground]{}; +\draw[net3V3,line width=0.9pt] (23.1,8.6) -- (23.9,8.6) -- (23.9,4.9) -- (23.4,4.9); +\node[net3V3,font=\bfseries\tiny,anchor=west] at (24.0,8.6){3.3 V — NUNCA 5 V}; +\fill[net3V3] (23.9,6.4) circle(1.4pt); +\draw (23.9,6.4) -- (24.7,6.4); \draw (24.7,6.4) to[C,l=$100\,\mu$F$+$100 nF] (24.7,5.3); +\draw[netGND] (24.7,5.3) -- (24.7,5.1) node[ground]{}; +\node[font=\tiny,gray,anchor=west,align=left] at (24.0,7.5){junto al pin VCC\\(picos LTE 1--1.5 A)}; + +% ================= BLOQUE 6 · AHT10 (I2C1) ================= +\bnum{7.5,3.35}{6} +\node[draw,rounded corners,inner sep=0] (AHT) at (8.85,1.9) [minimum width=2.1cm,minimum height=2.2cm]{}; +\node[font=\bfseries\scriptsize,align=center] at (8.85,2.55){AHT10\\(T $+$ RH)}; +\node[font=\tiny] at (9.0,2.0){0x38 fija}; +\node[font=\tiny,Indigo,align=center] at (8.95,1.2){SOLO él en el bus\\3V3 — nunca 5 V}; +\node[font=\bfseries\tiny,anchor=west] at (7.85,2.2){SCL}; \node[font=\bfseries\tiny,anchor=west] at (7.85,1.6){SDA}; +\draw[netSig,line width=0.9pt] (4.6,2.2) -- (7.8,2.2); +\draw[netSig,line width=0.9pt] (4.6,1.6) -- (7.8,1.6); +\fill (6.6,2.2) circle(1.3pt); \draw (6.6,2.2) to[R,l_=$4.7$k] (6.6,3.4); \flagg{net3V3}{f3f}{6.6,3.6}{3V3} +\fill (7.5,1.6) circle(1.3pt); \draw (7.5,1.6) to[R,l_=$4.7$k] (7.5,0.4); \flagg{net3V3}{f3g}{7.5,0.18}{3V3} +\draw[net3V3,line width=0.9pt] (9.9,2.6) -- (10.5,2.6); \flagg{net3V3}{f3h}{10.75,2.6}{3V3} +\node[font=\bfseries\tiny,anchor=east] at (9.85,2.6){VCC}; +\node[font=\bfseries\tiny,anchor=west] at (9.0,0.62){GND}; +\draw[netGND,line width=0.9pt] (8.85,0.8) -- (8.85,0.42) node[ground]{}; + +% ================= BLOQUE 2 · LED PB0 ================= +\bnum{5.3,-0.25}{2} +\draw[netSig,line width=0.9pt] (4.6,0.4) -- (5.1,0.4); +\draw (5.1,0.4) to[R,l=$330\,\Omega$] (6.6,0.4); +\draw (6.6,0.4) to[leD] (6.6,-0.7); +\draw[netGND] (6.6,-0.7) -- (6.6,-0.9) node[ground]{}; +\node[font=\tiny,anchor=west] at (6.95,-0.75){LED estado}; + +% ================= BLOQUE 5 · VENTILADOR ================= +\bnum{5.6,-1.9}{5} +\draw[netSig,line width=0.9pt] (4.6,-1.2) -- (6.1,-1.2) -- (6.1,-2.6); +\draw (6.1,-2.6) to[R,l=$220$] (7.9,-2.6); +\fill (8.3,-2.6) circle(1.3pt); +\draw[netSig] (7.9,-2.6) -- (8.3,-2.6); +\node[nmos,anchor=gate] (M2) at (8.9,-2.6){}; +\node[font=\tiny,anchor=west] at (10.0,-3.3){IRLZ44N (N, lógico)}; +\draw (8.3,-2.6) to[R,l_=$100$k] (8.3,-4.2); +\draw[netGND] (8.3,-4.2) -- (8.3,-4.4) node[ground]{}; +\draw[netGND] (M2.source) -- (M2.source |- 0,-3.7) node[ground]{}; +\draw[netGND,line width=0.9pt] (M2.drain) -- (M2.drain |- 0,-1.5); +\draw[netGND,line width=0.9pt] (M2.drain |- 0,-1.5) -- (11.65,-1.5); +\node[draw,circle,minimum size=1.1cm,font=\scriptsize] (FAN) at (12.2,-1.5){VENT}; +\node[font=\tiny,anchor=north] at (12.2,-2.1){2 hilos}; +\node[font=\tiny,anchor=north west] at (11.6,-1.55){$-$}; +\node[net5V,font=\tiny,anchor=south west] at (12.28,-0.98){$+$}; +\draw[net5V,line width=0.9pt] (FAN.north) -- (12.2,-0.3); +\draw[net5V,line width=1pt] (10.4,-0.3) -- (13.8,-0.3); +\node[net5V,font=\bfseries\tiny,anchor=south] at (11.2,-0.25){5 V VENT (separado)}; +\fill (10.4,-1.5) circle(1.3pt); \fill[net5V] (10.4,-0.3) circle(1.3pt); \fill[net5V] (12.2,-0.3) circle(1.3pt); +\draw (10.4,-1.5) to[D,l={\tiny 1N5819}] (10.4,-0.3); +\node[draw,rounded corners,fill=blue!6,minimum width=2.3cm,minimum height=1.2cm,font=\tiny,align=center] (BKV) at (15.0,-0.3){LM2596 «VENT»\\24 $\rightarrow$ \textbf{5.0 V} (aj.)}; +\draw[netIgn,line width=0.9pt] (16.2,-0.3) -- (17.0,-0.3); +\node[netIgn,font=\bfseries\tiny,anchor=west] at (17.05,-0.3){Fuente 24 V (banco)}; +\draw[netGND] (15.0,-0.9) -- (15.0,-1.35) node[ground]{}; + +% ================= AVISOS ================= +\node[draw,rounded corners,fill=gray!6,anchor=north west,align=left,font=\scriptsize,text width=19.6cm,inner sep=7pt] at (-20.4,-5.9){% +\textbf{\textcolor{Indigo}{Avisos (verificación):}}\\[2pt] +$\bullet$ \textbf{Modo A (por defecto):} el 4G va \textbf{dentro} del socket XBee del Pro (switch $\rightarrow$ UART2); PA9, PA10, la buck «MODEM 3.3 V» y el breakout \textbf{no se usan}; todo lo demás igual. El diagrama dibuja el \textbf{Modo B} (diagnóstico \$PHLG).\\ +$\bullet$ \textbf{Apagado = estado seguro:} el stack arranca \textbf{OFF} (pull-up de 10 k en la compuerta del IRF9540N); PA1 en ALTO lo enciende.\\ +$\bullet$ \textbf{Nunca 5 V} a PA0/PA4/PA7/PB1 sin divisor ni a \textbf{PA5} (digital, máx 3.3 V — clamp Schottky \textbf{1N5819} del kit a 3V3; en el PCB es BAT54). \textbf{IOREF $\rightarrow$ 3V3 es obligatorio} (sin él, los UART del Pro no responden).\\ +$\bullet$ \textbf{XBee VCC = 3.3 V, NUNCA 5 V} (buck dedicada desde SAL: reiniciar el stack reinicia el módem). \textbf{AHT10: solo él} en I\textsuperscript{2}C1 y solo a 3V3.\\ +$\bullet$ Ventilador en \textbf{5 V separado} (LM2596 ajustado a 5.0 V con multímetro); IRLZ44N debe ser \textbf{lógico}. MT3608 ajustado \textbf{apenas por debajo} del 5 V del vehículo (prioridad al vehículo). Electrolíticos \textbf{con polaridad}.\\ +$\bullet$ Blackpill: \textbf{USB y riel 5 V nunca al mismo tiempo}. Bench: bloques 1+3 bastan para el arranque; agrega el resto en orden.}; +\end{tikzpicture} +\end{document} diff --git a/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto_HiRes-300dpi.png b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto_HiRes-300dpi.png new file mode 100644 index 0000000..2a3d878 Binary files /dev/null and b/03-Architecture-Hardware/circuitikz-wiring/Drogheda_Diagrama-Unico-Proto_HiRes-300dpi.png differ diff --git a/CLAUDE.md b/CLAUDE.md index 4f31272..63d6c3a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -218,7 +218,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/` | | `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.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` (+§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; `modulos-pinout.tex` = visual parts catalog) → `Drogheda_Guia-Conexion-Protoboard_ES_v3.0.pdf` · **`2026-07-08_Drogheda_4G-Modem-Alternatives_v1.0.md`** (XBee 2.0 mm bridge + cheap-4G survey) · `circuitikz-wiring/` (sheet + Beamer v2.1, blocks 1–11; XBee-socket 3V3 fix 07-08) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs) · **`2026-07-06_Drogheda_EinarBoard-1.0-PreFab-Audit_v1.0.md`** (CLOSED — Rev 1.1 fixes) · `Assembly-BOM-Split.md` + `LCSC-search-list.md` (verified LCSC) + `JLCPCB-Order-Guide.md` (ordering runbook) · `harness-connector-pinout.md` + `Socket-Pinout-Silkscreen.md` · **`EinarBoard-Manual/`** (Rev 1.1 order-prep pack: `einarboard-manual.tex` → branded PDF · `helgen_einarboard_1.0_production_bom.xlsx` · `tools/generate_production_bom.py` + `tools/sync_bom.py` Excel→LaTeX BOM sync) — plus repo-root `scripts/prep_order_release.sh` (safe cleanup + release commit) | +| `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; `modulos-pinout.tex` = visual parts catalog) → `Drogheda_Guia-Conexion-Protoboard_ES_v3.0.pdf` · **`2026-07-08_Drogheda_4G-Modem-Alternatives_v1.0.md`** (XBee 2.0 mm bridge + cheap-4G survey) · `circuitikz-wiring/` (sheet + Beamer v2.1, blocks 1–11; XBee-socket 3V3 fix 07-08; **`Drogheda_Diagrama-Unico-Proto`** = todo-en-una-hoja para verificación rápida, Modo B, 07-09) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs) · **`2026-07-06_Drogheda_EinarBoard-1.0-PreFab-Audit_v1.0.md`** (CLOSED — Rev 1.1 fixes) · `Assembly-BOM-Split.md` + `LCSC-search-list.md` (verified LCSC) + `JLCPCB-Order-Guide.md` (ordering runbook) · `harness-connector-pinout.md` + `Socket-Pinout-Silkscreen.md` · **`EinarBoard-Manual/`** (Rev 1.1 order-prep pack: `einarboard-manual.tex` → branded PDF · `helgen_einarboard_1.0_production_bom.xlsx` · `tools/generate_production_bom.py` + `tools/sync_bom.py` Excel→LaTeX BOM sync) — plus repo-root `scripts/prep_order_release.sh` (safe cleanup + release commit) | | `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) | | `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`) | diff --git a/Marketing/HBOX-Pictures/3D Printed HBOX with Heatsink.jpeg b/Marketing/HBOX-Pictures/3D Printed HBOX with Heatsink.jpeg new file mode 100644 index 0000000..24fc04c Binary files /dev/null and b/Marketing/HBOX-Pictures/3D Printed HBOX with Heatsink.jpeg differ diff --git a/Marketing/HBOX-Pictures/HBOX-PCB.jpeg b/Marketing/HBOX-Pictures/HBOX-PCB.jpeg new file mode 100644 index 0000000..456dcc4 Binary files /dev/null and b/Marketing/HBOX-Pictures/HBOX-PCB.jpeg differ