% !TEX program = pdflatex \documentclass{standalone} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{tikz} \usetikzlibrary{shapes.geometric, positioning, arrows.meta, calc, fit, backgrounds} \begin{document} \begin{tikzpicture}[ font=\sffamily\small, >=Latex, mcu/.style={draw=blue!80!black, rectangle, rounded corners=4pt, fill=blue!10, minimum width=3.6cm, minimum height=4.2cm, align=center, line width=1.2pt}, adc/.style={draw=orange!80!black, rectangle, rounded corners=4pt, fill=orange!10, minimum width=2.8cm, minimum height=3.6cm, align=center, line width=1pt}, block/.style={draw, rectangle, rounded corners=3pt, fill=yellow!10, minimum width=3.4cm, minimum height=1.1cm, align=center, line width=0.8pt}, driver/.style={draw=green!60!black, rectangle, rounded corners=3pt, fill=green!10, minimum width=2.6cm, minimum height=1.1cm, align=center, line width=0.8pt}, cloud/.style={draw=cyan!80!black, ellipse, fill=cyan!10, minimum width=3.6cm, minimum height=1.4cm, align=center, line width=1pt}, motor/.style={draw=purple!80!black, circle, fill=purple!10, minimum size=1.1cm, align=center, line width=0.8pt}, bus/.style={line width=1.2pt, <->}, sig/.style={line width=0.8pt, ->} ] % ========================================== % 1. NÚCLEO CENTRAL (ESP32 y ADC) % ========================================== \node[mcu] (esp) {\textbf{ESP32 MCU}\\[3pt]\footnotesize Dual-Core 32-bit\\[2pt]\scriptsize WebServer \& WebSockets\\[1pt]\scriptsize NVS Memory}; \node[adc, below=-3.14cm of esp, left=2.26cm of esp] (adc) {\textbf{ADS122C04}\\[2pt]\footnotesize 24-Bit $\Delta\Sigma$ ADC}; % Bus I2C entre ADC y ESP32 \draw[bus] (-4.1,0) -- node[above, font=\scriptsize] {$\text{I}^2\text{C}$ (SDA, SCL)} (esp.west); % ========================================== % 2. NUBE Y TELEMETRÍA (ARRIBA) % ========================================== \node[cloud, above=1.8cm of esp] (cloud) {\textbf{Cloud Platform}\\[-1pt]\footnotesize Monitoring \& Backup}; \draw[bus, dashed, cyan!80!black] (esp.north) -- node[right, font=\scriptsize, text=cyan!80!black, near end] {WiFi / HTTP / WS} (cloud.south); % ========================================== % 3. SENSORES E INSUMOS (COLUMNA IZQUIERDA) % ========================================== \node[block, anchor=north east, below=2.09cm of adc.north west, left=2.18cm of adc.north west] (pira) {\textbf{Pyranometer}\\[-1pt]\scriptsize (Apogee SP-212)}; \node[block, fill=red!10, draw=red!70!black, above=0.31cm of pira] (cpv) {\textbf{HCPV Sensing Circuit}\\[-2pt]\scriptsize $I_{sc}$ / $V_{oc}$ Switching \& Cond.}; % Conexiones analógicas al ADC \draw[sig] (pira.east) -- node[above=1pt, font=\scriptsize, pos=0.42] {AIN2 ($G_{POA}$)} (adc.west |- pira.east); \draw[sig] ($(cpv.east)+(0,0.2)$) -- node[above, font=\scriptsize, pos=0.44] {AIN0/1 ($I_{sc}$)} ($(adc.west |- cpv.east)+(0,0.2)$); \draw[sig] ($(cpv.east)+(0,-0.2)$) -- node[below, font=\scriptsize, pos=0.43] {AIN3 ($V_{oc}$)} ($(adc.west |- cpv.east)+(0,-0.2)$); % \draw[sig, gray, dashed] (curr.east) -- node[above, font=\scriptsize, gray, pos=0.45] {AINx (N.C.)} (adc.west |- curr.east); % (disabled: no 'curr' node exists in this schematic) % LÍNEA DE CONTROL PIN_VOC (Limpia y bordeando por abajo) \draw[sig, red!80!black, line width=1pt] (esp.south west) -- (esp.south west |- 0,-2.6) -- node[below, pos=0.4, font=\scriptsize, text=red!80!black] {\texttt{PIN\_VOC} (Gate Driver Control)} ($(cpv.west)+(-0.35,0)$) -- (cpv.west); % ========================================== % 4. DRIVERS Y MOTORES (ABAJO) % ========================================== \node[driver, below=1.36cm of esp.south, left=0.15cm of esp.south] (tmcX) {\textbf{TMC2209}\\[-2pt]\scriptsize Driver (X-Axis)}; \node[driver, below=1.34cm of esp.south, right=0.12cm of esp.south] (tmcY) {\textbf{TMC2209}\\[-2pt]\scriptsize Driver (Y-Axis)}; \node[motor, below=0.8cm of tmcX] (motX) {\textbf{M1}\\[-3pt]\tiny Zenith}; \node[motor, below=0.8cm of tmcY] (motY) {\textbf{M2}\\[-3pt]\tiny Azimuth}; % Conexiones de Control a los Drivers \draw[sig] (esp.south -| tmcX.north) -- node[left, font=\scriptsize, align=right] {UART /\\STEP / DIR} (tmcX.north); \draw[sig] (esp.south -| tmcY.north) -- node[right, font=\scriptsize, align=left] {UART /\\STEP / DIR} (tmcY.north); % Conexiones a Motores \draw[sig, line width=1pt] (tmcX.south) -- node[right, font=\scriptsize] {NEMA 11} (motX.north); \draw[sig, line width=1pt] (tmcY.south) -- node[right, font=\scriptsize] {NEMA 11} (motY.north); % ========================================== % 5. MARCO DE LA TARJETA % ========================================== \begin{scope}[ on background layer, yshift=6pt, yscale=0.9 ] \node[draw=blue!50, line width=1pt, dashed, rounded corners=6pt, fill=blue!2, fit=(esp) (adc) (tmcX) (tmcY), inner sep=14pt, label={[blue!80!black, font=\bfseries\small, label distance=0pt]north west:Controller Board (WiT-CPV)}] (board) {}; \end{scope} \draw[thick, solid] (-1.8,1.5) -- (-10.81,1.5)node[font=\scriptsize, pos=0.31, above, north] {PIN-CTRL (HIGH $\rightarrow I_{sc}$, LOW $\rightarrow V_{oc}$)}; \draw[->, thick, solid] (-10.81,1.5) -- (cpv.north); \end{tikzpicture} \end{document}