docs(hardware): esquemáticos eléctricos + guía de montaje#20
docs(hardware): esquemáticos eléctricos + guía de montaje#20Pablomonte wants to merge 6 commits into
Conversation
Documentación de hardware generada programáticamente con schemdraw: - 6 esquemáticos SVG: pinout ESP32, I2C (SCD30+BME280), OneWire (DS18B20), ADC suelo (capacitivo + HD38 con doble Schottky clamp), RS485 Modbus (MAX485 + sensor TH + relay 2CH con bias y terminación), y diagrama de bloques del sistema completo - README.md: pinout, conexiones por bus, BOM, power budget, known risks (sobretensión ADC HD38), troubleshooting y cross-links al firmware - generate_schematics.py: script reproducible (make schematics) - requirements.txt: schemdraw==0.22 (pinned) - Makefile: targets all/setup/schematics/clean/help - .gitignore: ignora HardWare/.venv/ Esquemáticos con routing ortogonal (sin diagonales ni superposiciones), bias resistors RS485 dibujadas, y conexiones borde-a-borde en el diagrama de bloques. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
El pinout anterior tenía el orden físico de pines inventado y conteos incorrectos (31/32 pines, 3xGND). Corregido al layout real del DevKit V1 (board=esp32dev / WROOM-32): 30 pines, 15 por lado, 2xGND, orden físico top->bottom verificado. - generate_schematics.py: pinout reescrito con orden físico real; usa anchorname para mostrar 'GND' en ambos lados; título arriba del IC - README.md: 30 pines / 2xGND; nota de variante de placa (30 vs 38 pines); BOM actualizado - Diagrama de bloques: 'ESP32 DevKit V1 / 30 pines' Las asignaciones GPIO<->función (I2C 21/22, OneWire 4, ADC 34/35, RS485 16/17/18) ya eran correctas — provienen del firmware. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
El esquematico anterior mostraba el modulo MAX485 alimentado a 3.3V, pero el modulo real es un C25B (MAX485 azul basico sin level-shift), que requiere 5V y entrega RO ~5V — incompatible con el GPIO16 del ESP32 (max 3.6V) sin proteccion. generate_schematics.py: - MVCC del MAX485: 3.3V -> 5V - RX line: divisor 1kOhm serie + 2kOhm pulldown entre RO y GPIO16 (5V x 2k/3k = 3.33V en el tap, dentro del rango del ESP32) - Gap ESP32<->MAX485 aumentado (5 -> 7) para acomodar el divisor - Nota inferior actualizada con la alimentacion 5V y el divisor README.md: - Tabla pinout GPIO16: nota del divisor obligatorio - Conexiones RS485: filas para R1 1k y R2 2k del divisor + advertencia - BOM: agrega 1k y 2k como **obligatorios**; renombra MAX485 -> C25B; segundo Schottky BAT43 (clamp HD38 a GND) ahora con cantidad 2 - Power budget: C25B se alimenta del rail 5V (VIN), no del 3.3V - Known Risks: nueva seccion CRITICO con el circuito del divisor - Troubleshooting: 3 entradas nuevas (C25B a 3.3V no transmite, falta divisor, ESP32 danado al conectar) Las entradas DI/DE/RE del MAX485 aceptan 3.3V del ESP32 sin level shifter (VIH=2V), solo RO necesita el divisor. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
javierbrk
left a comment
There was a problem hiding this comment.
creo que falta madurar pero me parece una herramienta muy interesante
There was a problem hiding this comment.
tenemos alguna referencia para este diseño ? es valido ?
There was a problem hiding this comment.
esta parece util pero quedaron lejos las etiquetas de los pines
There was a problem hiding this comment.
tenemos un bloque grafana conectado en el diagrama en bloques, cual es el publico objetivo del diagrama. Creo que seria mas util dejarlo para el hw solamente
There was a problem hiding this comment.
estas resistencias no las estamos usando... deberian estar ?
There was a problem hiding this comment.
las vdd no estan bien conectadas
There was a problem hiding this comment.
aca veo unas resistencias que tampoco usamos en Ro
Reviews de @javierbrk (CHANGES_REQUESTED): - I2C: pull-ups 4.7k externos no estan en el HW (los modulos los traen) - OneWire: VDDs no estaban bien conectadas - ADC: clamp doble Schottky no esta construido - RS485: divisor 1k/2k en RO no esta; bias 560Ω tampoco - Full system: bloque Grafana es software, no va en HW - Pinout: etiquetas de funcion muy lejos del IC Politica cero falopa: el esquematico refleja el HW real, no recomendaciones. Si un componente no esta instalado, se elimina del schema, BOM, conexiones, Known Risks y troubleshooting. Sin sub-tablas 'recomendado para v2'. generate_schematics.py: - I2C: sin pull-ups externos (los modulos SCD30/BME280 los traen) - OneWire: rails comunes 3.3V/GND visibles, sensores con DQ arriba y power cableado a rails con simbolos Vdd/Ground claros - ADC: cajas para HD38 y capacitivo con pines VCC/AOUT/GND. Sin clamp. Warning factual sobre AO del HD38 >3.3V. Pinspacing=6.5 para evitar superposiciones entre power rails de los 2 sensores - RS485: rediseñado para reflejar el cableado real * Bus UTP 4 conductores: VCC (5-30V) + GND + A+ + B-, lineas paralelas color-coded * 2 borneras x4 (TH y Relay) como bloques visuales con dots en las 4 lineas y cables al dispositivo * Terminacion 120Ω al final del bus (entre A+ y B-) — SÍ instalada * Sin divisor 1k/2k, sin bias 560Ω (no estan en este HW) - Full system: sin Grafana/cloud, GPIO Relays conectado al ESP32 con rango configurable (UI 0-39, libres 13/19/23/25-27/32/33). Layout en 3 columnas con 5V USB centrado debajo, conexion vertical pura - Pinout: labels de funcion acercadas (offset 4.2 -> 2.0) README.md: - Tabla pinout: sin 'via divisor', sin 'requiere proteccion' - Conexiones RS485: nueva estructura ESP32↔C25B / bus UTP / nodos+borneras - ADC: HD38 y capacitivo directos (sin 10k serie) - BOM: removidos Schottky BAT43, R 10k clamp, R 1k/2k divisor, R 560Ω bias. Agregados cable UTP 4 pares y borneras x4. R 120Ω queda (sí instalado) - Known Risks: warnings factuales, sin diagramas ASCII de mitigaciones - Troubleshooting: removidas entradas que asumen componentes no instalados Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Gracias por las correciones, ahí está mejorando.. |
Mejoras de presentacion (sin cambiar componentes ni conexiones): - Sistema de titulo/nota por bounding box real (add_title/add_footer): centrados, nunca se solapan; titulo con linea separadora estilo datasheet - Paleta de color centralizada y consistente entre los 6 esquemas (un color por senal: I2C, 1-Wire, ADC, RS485 TX/RX/DE, A+/B-, VCC, GND, GPIO) - RS485: bus UTP 4 conductores (VCC/GND/A+/B-), borneras x4 por nodo, terminacion 120 ohm al final del bus - Pinout: etiquetas de funcion alineadas al borde del pin (estilo datasheet); colores alineados a la paleta; sin doble titulo ni label central solapado - OneWire: VDD/GND legibles sobre rails comunes coloreados - ADC: cajas de sensor sin solape de labels; caja ESP32 compacta; HD38 (5V, rojo) vs capacitivo (3.3V, teal) diferenciados - Full system: GPIO Relays conectado con rango de pines configurables; sin bloque Grafana (solo HW) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
generate_schematics.py ya no define localmente la paleta de color ni los helpers add_title/add_footer: los importa de schemkit (https://github.com/Pablomonte/schemkit), la utilidad dibujadora extraida como repo independiente y reutilizable. - requirements.txt: agrega schemkit via git URL - generate_schematics.py: reemplaza el bloque de framework local por import Salida SVG byte-identica a la version anterior (refactor sin cambios visuales). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resumen
Documentación de hardware completa para la carpeta
HardWare/, con 6 esquemáticos eléctricos generados programáticamente con schemdraw (Python → SVG) y un README con pinout, BOM, power budget y troubleshooting.Esquemáticos
sch_esp32_pinout.svgsch_i2c_sensors.svgsch_onewire.svgsch_adc_soil.svgsch_rs485_modbus.svgsch_full_system.svgDocumentación (
README.md)Tooling reproducible
generate_schematics.py— script canónicorequirements.txt—schemdraw==0.22(pinned)Makefile—make setup / schematics / clean / help.gitignore— ignoraHardWare/.venv/Calidad de los diagramas
Todos los esquemáticos usan routing ortogonal (sin líneas diagonales ni superposiciones), bias resistors RS485 dibujadas explícitamente, y conexiones borde-a-borde en el diagrama de bloques. Verificados visualmente renderizando cada SVG.
Verificación
🤖 Generated with Claude Code