Crear componentes personalizados para Fritzing
02/09/2020Fritzing es una de las mejores herramientas para el diseño y documentación de circuitos. Cuenta con una gran base de componentes y existen muchos creados por la comunidad. Aún así, en ocasiones no tendremos disponibles algunos de los que deseamos integrar en nuestros proyectos. En estos casos podemos crear nuestros componentes personalizados para Fritzing con nuestros propios diseños e importarlos en la aplicación.
Ahora mismo estoy trabajando en el diseño de la versión frontal de Bike Pixel. Durante su diseño he utilizado varios componentes nuevos como por ejemplo botones táctiles verticales. Estos no están disponibles en la aplicación y por tanto he tenido que crear mis propio componente. Su diagrama lo tenéis en la siguiente imagen:
Como veis se trata de un elemento bastante simple pero sirve muy bien como introducción. Desarrollando este ejemplo se realizan los mismos pasos que en el caso de partes más complicadas. La única diferencia es la complejidad gráfica de las piezas y el número de conexiones.
Creación de elementos gráficos
Para crear un componente nuevo en Fritzing, en primer lugar es necesario crear las imágenes para las cuatro vistas:
- Breadboard: o protoboard, que mostrará el componente en la placa de pruebas virtual.
- Schematic: que mostrará el diseño esquemático del circuito mostrando sus símbolos y conexiones.
- PCB: que representará las conexiones del elemento en un circuito impreso.
- Icono: qué sirve tan solo para mostrar el componente en el panel de componentes en la aplicación.
Todas estas imágenes deben ser creadas en formato de gráficos vectoriales SVG. Para ello os propongo utilizar Inkscape. Se trata de una de las mejores aplicaciones libre que nos permite editar y modificar imágenes vectoriales. Además, recientemente han lanzado una nueva beta de la versión 1.0, la cual os recomiendo descargar. Por supuesto podéis utilizar cualquier otra aplicación.
Vista PCB
Empezaremos por la vista PCB. Para ello crearemos un nuevo documento en Inkscape. Lo más cómodo es trabajar con una rejilla (por ejemplo de 0.25mm). Para establecer una solo debemos acceder a Archivo/Propiedades del documento y después en la pestaña de Rejilla crear una nueva.
En el siguiente paso, es muy importante crear la estructura de capas necesaria para que Fritzing las importe correctamente. Podemos tener cualquier número de capas pero es necesario que su nombre e ID contengan las palabras silkscreen o copper. En las capas silkscreen se deben incluir solo los elementos serigrafiados como textos y bordes de los elementos. Por otro lado en las capas copper se incluyen elementos como pistas y conectores.
Después de crear la estructura de capas podemos dibujar cada una de las partes del PCB. Si trabajamos con un PCB estándar, es recomendable que según el elemento con el que tratemos de usar:
- Bordes y otros elementos serigrafiados con un grosor en torno a los 0.3 mm de color negro (#000000).
- Pistas y elementos de cobre con un grosor en mínimo de 0.5 mm de color amarillo (se recomienda el #F7BD13). En el caso de los agujeros ser recomienda usar un mínimo de 1.0 mm para el taladro.
- No se deberían utilizar textos, pero sí por alguna extraña razón quieres añadirlos se recomienda utilizar la tipografía OCR A. Podéis descargarla desde la página de plantillas y tipografías de Fritzing.
- Debemos ajustar las medidas a la realidad sobre todo en el caso de los elementos de cobre.
Problemas con Inkscape
Finalmente queda lo más difícil. debido a que Inkscape genera IDs de capa automáticamente, será necesario establecerlos manualmente desde un editor de texto o el editor XML integrado en Inkscape. Es decir, debemos abrir el documento con cualquier editor de textos y buscar el marcador de definición de capa (<g>) y cambiar el valor del atributo id por silkscreen o copper dependiendo del tipo de capa que sea. Para facilitarme las cosas he creado un pequeño script que está disponible en github y qué hace exactamente lo mismo. Solo tenéis que descargarlo y ejecutarlo escribiendo:
python3 ink2fritz -i ruta/archivo_in.svg -o ruta/archivo_out.svg
Vista Breadboard
La vista para el prototipado es algo más simple aunque también requiere algo más de dotes gráficas. Antes de comenzar a trabajar deberemos modificar las propiedades del documento en Inkscape para trabajar en pulgadas (Archivo/Propiedades del documento -> General -> Unidad de visualización).
En principio se debe dibujar el elemento con algo perspectiva de modo que sea posible verlo intuitivamente una vez se coloque sobre el breadboard. Además a la hora de crear nuestra vista debemos tratar de adecuar cada uno de los elementos al estándar propuesto por Fritzing:
- Si el componente tiene patas estas deben ser de color #8C8C8C y estar separadas a una distancia de 0.1 inch y tener un grosor de 0.03 inch (si muy métrico todo).
- Si el elemento tiene conexiones en cobre se deberá usar el color #9A916C.
- En el caso de tener elementos de texto deberemos utilizar la tipografía estándar OCR A o DroidSans.
- Por supuesto se deben tratar de ajustar las medidas a la realidad, sobretodo en el caso de las patas y los conectores.
En nuestro caso, cómo es un elemento simple tan tendremos patas y el resto de elementos gráficos que representan el elemento. En esta vista tampoco será necesario mantener ninguna convención para las capas aunque siempre viene bien mantener el orden. Eso sí, es recomendable dibujar por separado la parte final de cada conector ya que será más sencillo marcarla como elemento conector.
Vista icono
Esta es la vista menos importante y su función es simplemente la de representar nuestro componente en en el panel de componentes de Fritzing.
Si queréis podéis utilizar la misma imagen que la diseñada para la vista de Breadboard aunque por supuesto podemos crear un diseño nuevo. Adicionalmente, en las imágenes que creemos para esta vista no es necesario considerar las medidas reales de la pieza ni ceñirnos a ningún estándar. La única recomendación es la de no incluir textos.
Vista esquemática
En nuestro caso no es necesario definir esta vista ya que se trata de un simple botón y este ya viene predefinido en Fritzing. Pero si queremos definir una vista esquemática personalizada, es necesario añadir el símbolo del componente y marcar sus conexiones siguiendo una serie de convenciones para diferentes propiedades del dieño:
- Colores: se debe usar negro (#000000) para el cuerpo principal y el nombre del componente. Gris oscuro (#555555) para los elementos conectores y gris claro (#999999) para las etiquetas y otros textos.
- Textos: Se debe usar la tipografía Droid Sans en diferentes tamaños según el tipo de elemento que describamos. Para el nombre del componente 4.25 puntos, 3.5 puntos para etiquetas y descripciones de los conectores (por ejemplo GND), y 2.5 puntos para la numeración de los pins.
- Distancias: se debe tratar de que los pins tengan una distancia de 0.1 pulgadas con un grosor de linea de 0.7 puntos (o 0.0097′). Si queréis un ejemplo detallado podéis descargar las plantillas oficiales. En este caso también recomiendo trabajar con una rejilla de 0.1′.
Convención para el nombrado de las imágenes
Aunque totalmente opcional, para guardar las imágenes con nuestros diseños es muy recomendable utilizar un estándar para el nombrado de nuestros archivos. Fritzing propone utilizar un nombre de archivo en el que se incluyen diferentes propiedades de los mismos incluyendo el nombre del componente, una breve descripción, el nombre del paquete, número de pins, su espaciado, color de la pieza (si hay varias opciones) y la vista en la que se aplicará (breadboard, PCB, etc.). Es decir, debemos intentar adaptar los nombres al esquema:
parte#_desc_paquete_pins_esp_color_vista.svg
En nuestro caso será:
pushbutton_vertical_bikepixels_icon.svg
Creación del componente
Una vez que ya tenemos listas las imágenes de todas las vistas podemos empezar a trabajar con el creador de partes de Fritzing. Para ello, sobre la herramienta de selección de partes, tan solo tenemos que hacer click con el botón secundario sobre el componente más similar y seleccionar la opción Editar parte. Si, por ejemplo estamos creando un nuevo módulo normalmente seleccionaremos un circuito integrado DIP-8 en el definiremos los conectores con los que cuente nuestro módulo. En este caso, cómo se trata de un botón de contacto (o push button) en vertical usaré el botón de contacto normal.
Tras seleccionar el componente que nos servirá de base aparecerá la ventana del editor de partes. Esta herramienta cuenta con seis pestañas o secciones a través de las cuales podemos definir cada una de las cuatro vistas junto con los metadatos y los conectores de nuestro componente.
Definición de las vistas
La forma de definir cada una de las vistas es muy similar. Tras seleccionar la pestaña correspondiente (Breadboard, Schematic, PCB o Icono) debemos sustituir la imagen por defecto con nuestro diseño. Para ello tan solo debemos seleccionar la opción Archivo/Cargar imagen para vista (File/Load image for view) y seleccionar la imagen correspondiente a la vista.
Después en cada una de las vistas (a excepción de la vista de icono) tendremos que configurar los conectores. Para ello debemos asignar una geometría de las imágenes a cada uno de los conectores definidos. En el panel lateral, dentro de la sección de conectores debemos pulsar el botón con la opción de seleccionar gráfico e ir haciendo click sobre la geometría que deseamos asignar a ese conector.
Metadatos y pasos finales
Ahora solo nos queda definir los metadatos de nuestro componente. Para ello en la pestaña de Metadatos debemos indicar diferentes propiedades adicionales de nuestro componente como autoría, descripción, etiqueta por defecto y diferentes propiedades.
Una vez completados todos los datos podemos guardar nuestro componente para lo que debemos seleccionar la opción Archivo/Guardar nueva parte como. En este paso debemos establecer un prefijo con el que distinguir nuestro componente como bike_pixel_push_button_vertical.
Todos estos pasos los podéis ver de manera más gráfica en el siguiente video.
Conclusión y más información
Como habéis visto, la parte más laboriosa de la creación de componentes personalizados en Fritzing es la de diseñar los elementos gráficos. Tenemos que tratar de adecuarnos a los estándares propuestos y ademas mantener las medidas reales del componente que estamos creando.
El elemento diseñado durante este artículo es parte del diseño del futuro Bike Pixel Front por lo que todos los diseños gráficos así como el componente exportado se encuentra disponible en el repositorio del proyecto.
Finalmente, para más información a continuación os dejo algunos enlaces:
- Página con la definición de los estándares gráficos de Fritzing.
- Lista de enlaces con documentación oficial sobre la creación de componentes.
- Entre ellos un buen tutorial creado por SparkFun con detalles sobre cómo crear un módulo.
Hola,¿Cómo estás/están?.
Les felicito por el proyecto y por este instructivo tan genial. Estuve probando el script y al ejecutarlo me arroja este mensaje de error:
File "ink2fritz.py", line 36, in
set_layer_ids(args.input, args.output)
File "ink2fritz.py", line 24, in set_layer_ids
label = layer.attrib['{http://www.inkscape.org/namespaces/inkscape}label']
KeyError: '{http://www.inkscape.org/namespaces/inkscape}label'
Si tuvieran alguna pista sobre esto se los agradecería mucho. Saludos!
Hola Mateo,
Muchas gracias por los cumplidos! Me podría indicar la forma de llamar el script, es decir los parámetros utilizados. También si fuera posible enlazar el archivo que intenta convertir.
Un saludo!