¿Alguna vez armaste un diagrama de conexiones en Fritzing y no encontraste la pieza del módulo que ibas a usar? Te pasa con casi cualquier breakout medianamente moderno: el sensor está en tu escritorio, pero en Fritzing no existe, así que terminas dibujando un rectángulo genérico con pines mal ubicados. La buena noticia es que si ese módulo ya tiene su PCB diseñada en KiCad, puedes generar una pieza de Fritzing prolija. vista breadboard, esquemático y PCB. de forma casi automática con kicad2fritzing.

En este tutorial vas a aprender a tomar un archivo .kicad_pcb, correr un script de Python y obtener una pieza de Fritzing lista para editar. Al final vas a poder crear tus propias piezas para los módulos que realmente usas (un ESP32, un HC SR04, un breakout I2C) y compartirlas para que tus diagramas se vean como los de las guías profesionales.

Qué es kicad2fritzing y por qué conviene

Hace años existe eagle2fritzing, un flujo para convertir PCBs diseñadas en Eagle a piezas de Fritzing. El problema es que muchos makers migraron a KiCad, que es libre, gratuito y multiplataforma. Ahí entra kicad2fritzing: toma la misma idea de eagle2fritzing pero apuntando a archivos de KiCad.

La diferencia técnica que más te va a facilitar la vida es que kicad2fritzing es 100% Python. No hay ejecutables que compilar ni binarios que dependan de tu sistema operativo: clonas el repositorio, instalas una dependencia y todo corre desde la línea de comandos. Esto importa porque eagle2fritzing exigía compilar herramientas en C++, un paso que en Windows o macOS frenaba a mucha gente antes de empezar.

El flujo completo tiene seis pasos:

  1. Apuntar a un archivo PCB (.kicad_pcb).
  2. Correr el script.
  3. Editar el archivo de parámetros y volver a correr el script (si hace falta).
  4. Revisar los archivos SVG generados.
  5. Revisar la pieza dentro de Fritzing.
  6. Exportar tu nueva pieza de Fritzing.

Antes de empezar: el software

Este proyecto no requiere comprar nada: son puras herramientas libres o gratuitas. Todas corren en Windows, macOS y Linux. Necesitas instalar:

  • KiCad. para abrir y exportar la PCB.
  • Fritzing. donde vas a terminar y empaquetar la pieza.
  • Python 3. el motor de kicad2fritzing.
  • Un editor de SVG como Inkscape (gratis) o Adobe Illustrator. para retocar los gráficos vectoriales.

Logos de KiCad, Fritzing, Python e Inkscape, el software necesario para el flujo de trabajo

Descarga e instala cada aplicación desde su sitio oficial siguiendo las instrucciones de cada una. Si nunca instalaste Python, fíjate de marcar la opción "Add Python to PATH" en Windows, porque el script se ejecuta desde la terminal.

Clona el repositorio e instala la dependencia

Lo primero es clonar el repositorio de kicad2fritzing en tu computador. El repo ya viene ordenado para que todos los archivos y carpetas estén en las rutas que el script de Python espera, así que no tienes que reordenar nada.

Abre una terminal (o la app de GitHub Desktop), ubícate en la carpeta donde quieres que viva el proyecto y clona:

Bash
git clone https://github.com/adafruit/kicad2fritzing.git

Estructura de carpetas del repositorio kicad2fritzing recién clonado

kicad2fritzing tiene una sola dependencia de Python: svgelements, la librería que se encarga de leer y manipular los SVG. Para instalarla, entra a la carpeta del repo y ejecuta:

Bash
pip install -r requirements.txt

Tip de debugging: si pip install falla, casi siempre es porque estás usando una versión vieja de Python o pip no apunta al intérprete correcto. Prueba con python -m pip install -r requirements.txt para forzar que use el mismo Python que vas a ocupar para correr el script.

Corre el script de conversión

Con el repo clonado y la dependencia instalada, ya puedes convertir tu primera PCB. Toma tu archivo .kicad_pcb y cópialo dentro de la carpeta /Fritzing_Test.

Para seguir el ejemplo de esta guía se usa el breakout Adafruit VCNL4030 STEMMA QT, un módulo con sensor de proximidad y luz ambiente por I2C. Ese archivo fue creado originalmente en Eagle, abierto y convertido en KiCad. Puedes descargar el archivo de ejemplo (VCNL4030.zip) desde el repositorio para practicar con el mismo caso.

Archivo .kicad_pcb copiado dentro de la carpeta Fritzing_Test, listo para convertir

Ubícate en la raíz del repositorio:

Bash
cd /path/to/kicad2fritzing

Y corre el script:

Bash
python -m kicad2fritzing.convert

Cuando termine, vas a ver en pantalla la lista de subpartes que hizo match y la ubicación de los SVG generados. Dentro de /Fritzing_Test van a aparecer dos carpetas nuevas: /params (el archivo de parámetros que controla cómo se arma la pieza) y /parts (todos los SVG que después se compilan en la pieza de Fritzing).

Carpetas params y parts generadas por kicad2fritzing con los SVG de la pieza

El archivo de parámetros: acá está la magia

El archivo .params (un XML que vive en /Fritzing_Test/params) es donde defines cómo se van a ver y ordenar las conexiones. Ábrelo en cualquier editor de texto.

Por defecto, la máscara de soldadura de la vista breadboard es negra (#000000). Puedes cambiar ese valor por cualquier color HEX:

Xml
<breadboard breadboard-color='#000000'>

Lo más importante es cómo se agrupan las señales. El script las clasifica en cuatro categorías —power, ground, left y right— que corresponden directamente a dónde aparece cada pin en la vista esquemática de Fritzing. Así se generan por defecto las señales del VCNL4030:

Xml
<power>
<!-- left to right -->
<connector signal='VCC' id='6' package='JST_SH4' element='CONN3' name='2' type='smd'/>
<connector signal='VCC' id='21' package='1X06_ROUND_70' element='JP1' name='1' type='pad'/>
<connector signal='3.3V' id='22' package='1X06_ROUND_70' element='JP1' name='2' type='pad'/>
<connector signal='VCC' id='65' package='JST_SH4' element='CONN4' name='2' type='smd'/>
</power>
<ground>
<!-- left to right -->
<connector signal='GND' id='5' package='JST_SH4' element='CONN3' name='1' type='smd'/>
<connector signal='GND' id='9' package='JST_SH4' element='CONN3' name='MT1' type='smd'/>
<connector signal='GND' id='10' package='JST_SH4' element='CONN3' name='MT2' type='smd'/>
<connector signal='GND' id='23' package='1X06_ROUND_70' element='JP1' name='3' type='pad'/>
<connector signal='GND' id='64' package='JST_SH4' element='CONN4' name='1' type='smd'/>
<connector signal='GND' id='68' package='JST_SH4' element='CONN4' name='MT1' type='smd'/>
<connector signal='GND' id='69' package='JST_SH4' element='CONN4' name='MT2' type='smd'/>
</ground>
<left>
<!-- top to bottom -->
<connector signal='INT' id='26' package='1X06_ROUND_70' element='JP1' name='6' type='pad'/>
<connector signal='SCL' id='8' package='JST_SH4' element='CONN3' name='4' type='smd'/>
<connector signal='SCL' id='24' package='1X06_ROUND_70' element='JP1' name='4' type='pad'/>
</left>
<right>
<!-- top to bottom -->
<connector signal='SDA' id='66' package='JST_SH4' element='CONN4' name='3' type='smd'/>
<connector signal='SDA' id='25' package='1X06_ROUND_70' element='JP1' name='5' type='pad'/>
<connector signal='SDA' id='7' package='JST_SH4' element='CONN3' name='3' type='smd'/>
<connector signal='SCL' id='67' package='JST_SH4' element='CONN4' name='4' type='smd'/>
</right>

Por qué reordenar las señales

Acá conviene entender la lógica eléctrica, no solo copiar y pegar. En el esquemático de un módulo I2C quieres que SDA y SCL queden juntas y en un lado predecible (normalmente a la derecha), para que las líneas del bus no se crucen. En el volcado por defecto verás que dos de las tres señales SCL quedaron en left en lugar de right. Corta esas dos líneas de la sección left y pégalas en right:

Xml
<left>
<!-- top to bottom -->
<connector signal='INT' id='26' package='1X06_ROUND_70' element='JP1' name='6' type='pad'/>
</left>
<right>
<!-- top to bottom -->
<connector signal='SDA' id='66' package='JST_SH4' element='CONN4' name='3' type='smd'/>
<connector signal='SDA' id='25' package='1X06_ROUND_70' element='JP1' name='5' type='pad'/>
<connector signal='SDA' id='7' package='JST_SH4' element='CONN3' name='3' type='smd'/>
<connector signal='SCL' id='67' package='JST_SH4' element='CONN4' name='4' type='smd'/>
</right>

Hay un segundo detalle fino. En la sección unused vas a encontrar señales adicionales, y también puedes mover hacia allá las que no quieras exponer como conectores. En el VCNL4030, cuatro de las señales GND tienen MT1 o MT2 en su nombre: son los pads mecánicos de masa de los conectores STEMMA QT. Nunca vas a soldar un cable a ellos, así que no tiene sentido que aparezcan como conectores en Fritzing. Muévelos a unused y tu sección ground queda limpia:

Xml
<ground>
<!-- left to right -->
<connector signal='GND' id='5' package='JST_SH4' element='CONN3' name='1' type='smd'/>
<connector signal='GND' id='23' package='1X06_ROUND_70' element='JP1' name='3' type='pad'/>
<connector signal='GND' id='64' package='JST_SH4' element='CONN4' name='1' type='smd'/>
</ground>

Cada vez que guardes cambios en el archivo de parámetros, vuelve a correr python -m kicad2fritzing.convert para aplicarlos.

Contexto útil: STEMMA QT (equivalente a Qwiic) es un conector JST SH de 4 pines pensado para I2C: 3.3V, GND, SDA y SCL. Por eso ves esos cuatro nombres de señal repetidos entre los conectores CONN3 y CONN4: son los dos puertos STEMMA QT del breakout, encadenables.

Edita los archivos SVG

Después de re correr el script con tu archivo de parámetros editado, toca ajustar los gráficos vectoriales. Se generan tres SVG, uno por cada vista de Fritzing:

  • Breadboard (.../parts/svg/core/breadboard)
  • Esquemático (.../parts/svg/core/schematic)
  • PCB (.../parts/svg/core/pcb)

En la vista breadboard vas a ver que los componentes pasivos y los conectores STEMMA QT ya vienen dibujados: salen del directorio /subparts, que trae un montón de piezas SVG que el script identifica y ubica solo. Lo que casi siempre va a faltar es el chip central. en el ejemplo, el propio VCNL4030. porque no es un footprint estándar y no está en /subparts.

Antes de dibujarlo desde cero, revisa el archivo Components en la carpeta /Graphics: trae piezas SVG extra que muchas veces puedes usar tal cual o como base. En el caso del VCNL4030, ahí ya existe un vector del componente que puedes arrastrar a la vista breadboard (existe porque alguien ya había hecho una pieza con eagle2fritzing).

El último paso del SVG breadboard es ajustar el borde del artboard para que incluya los círculos de señal STEMMA QT que quedan fuera del contorno de la placa. Si no lo haces, esos círculos no se verán en Fritzing.

La vista esquemática normalmente se puede dejar tal cual: las etiquetas entran como elementos de texto, así que son fáciles de editar. La vista PCB renderiza el contorno de la placa, los pads y los taladros.

Termina la pieza en Fritzing

Ahora llevas la pieza a Fritzing. Copia la carpeta /parts (la que está dentro de /Fritzing_Test) hacia tu carpeta Documents/Fritzing, que la app crea al instalarse. Al abrir Fritzing va a aparecer un aviso de que el mecanismo de swapping está deshabilitado para la pieza nueva; haz clic en OK.

Ya adentro, ve a la pestaña Breadboard, busca tu pieza por nombre en el panel Parts, haz clic derecho y elige Edit Part para entrar al editor. Ahí ajustas cada vista:

  • Breadboard: Fritzing usa marcas de género en los conectores. Define cuáles son macho y cuáles hembra. Regla práctica: cualquier pin que enchufarías a una protoboard debería ser tipo macho; el resto, hembra o Pad. También puedes reasignar el gráfico de cada conector (por ejemplo, mover la señal GND desde el pad hacia el círculo negro del STEMMA QT).
  • Esquemático: lo clave es el terminal point de cada conector, que define de dónde sale la línea. Los de arriba usan N, los de abajo S, los de la derecha E y los de la izquierda W. Así, el conector INT usaría W y todos los GND usarían S.
  • Metadata: acá va el título, la etiqueta, la descripción, la familia y el número de parte. Es lo que se muestra al buscar la pieza.

Cuando estés conforme, ve a File → Save as new part, ajusta el prefijo de la pieza (normalmente el fabricante seguido de un guion) y haz clic en OK. Busca tu pieza de nuevo: van a aparecer dos resultados, el import original sin ediciones y tu versión editada. Arrástrala a la protoboard: deberías ver las filas resaltarse con las conexiones y poder tirar cables a los círculos STEMMA QT.

Para empaquetar tu pieza como archivo .FZPZ, haz clic derecho sobre ella y elige Export Part.... ¡Y listo: convertiste una PCB de KiCad en una pieza de Fritzing completa!

Variantes y mejoras

El ejemplo usa un breakout de sensor, pero el flujo sirve para cualquier módulo con PCB en KiCad. Algunas formas de llevarlo más lejos:

  • Arma tu propia librería de piezas: junta los .FZPZ de todos los módulos que usas seguido (ESP32 DevKit, drivers de motor, breakouts de sensores) en una carpeta y compártela con tu grupo o comunidad. Así nadie vuelve a dibujar el mismo rectángulo genérico.
  • Automatiza con un script propio: como todo es Python y línea de comandos, puedes envolver kicad2fritzing.convert en un pequeño script que procese varias PCBs de una carpeta en lote, útil si mantienes muchas placas.
  • Contribuye al repositorio oficial: si creaste la pieza de un módulo popular que aún no existe en Fritzing, puedes proponerla como aporte a la comunidad. Es una excelente forma de partir contribuyendo a open source sin escribir firmware.

Personalización para Chile

La gracia de dominar este flujo es que puedes crear piezas de Fritzing para los módulos que efectivamente consigues acá, en vez de depender de que alguien en el extranjero las haya dibujado. Los candidatos naturales para hacerte una pieza propia son los que más se repiten en los proyectos:

  • Placas ESP32 / ESP8266 DevKit. el corazón de casi cualquier proyecto IoT chileno.
  • Sensores I2C tipo STEMMA QT / Qwiic (proximidad, temperatura, IMU). justo el caso del ejemplo.
  • Sensores clásicos como el HC SR04. para que tus diagramas de robótica queden prolijos.

Todos estos los encuentras en el catálogo de MechatronicStore. Si mantienes una PCB en KiCad de tu propio shield o breakout, con esta guía la conviertes en una pieza reutilizable en minutos.

Nota de esta edición: el enlace directo a cada producto del catálogo se agregará en una pasada posterior de enriquecimiento (el buscador de productos no estuvo disponible al generar este artículo).

Recursos

Versión chilena inspirada en el tutorial de Adafruit, reenfocada para makers que quieren crear sus propias piezas de Fritzing de módulos disponibles en stock local en MechatronicStore.