---
weight: 4
title: "Notas de KiCAD"
date: 2021-05-12T12:10:36+0200
draft: false
summary: "Notas sobre KiCAD"
resources:
- name: "featured-image"
  src: "featured-image.png"
- name: "featured-image-preview"
  src: "featured-image-preview"
categories:
  - notes
tags:
  - pcb
  - electronica
  - kicad
---

Apuntes **muy incompletos** sobre _KiCAD_.

<!--more-->


{{< admonition type=warning title="Work in progress" open=true >}}
Estos apuntes son personales y no valen para aprender a usar KiCAD, mejor búscate un buen tutorial en la red
{{< /admonition >}}


## Notas sueltas de KiCAD 6

### Schematic Editor

- Nueva opción para buscar y sustituir símbolos: _Edit->Change Symbols_ o botón derecho del ratón sobre el símbolo a cambiar. Hay que mirar las opciones con atención para hacer los cambios deseados.
- Se puede seleccionar por rectángulos añadiendo "pedacitos" manteniendo pulsada la tecla de mayúsculas y quitando "pedacitos" sin soltar la mayúscula y pulsando Control.

## Import dxf file as _Edge Cut_

### Pasos básicos

Estas notas están basadas en la importación del silk para la Badge de la OSHwdem

1) Abri el PDF desde Inkscape

2) Me pasé un buen rato limpiándolo

3) Hice unas cuantas operaciones para dejar la silueta como un solo
'Path' en Inkscape

4) Me hice un fichero solo con la silueta y lo salve como DXF, puede
haber más caminos, pero yo siempre uso DXF (LibreCAD) para diseñar los
contornos de las placas). Use "Autocad DXF R14" en la
opción 'Save as'

5) Importe el DXF en KiCAD, asegurándome de importarlo en la capa Edge
Cut (que es el contorno físico de la PCB)

Pruebas con KiCAD 7

**Desde LibreCAD**

- LibreCAD con un círculo simple: OK
- LibreCAD con un círculo simple (R14): No conserva bien el tamaño (sale muy grande)
- LibreCAD complejo con una sola capa: OK
- LibreCAD complejo capa visible exportada a svg: OK

En pocas palabras. Salvar la capa que nos interese (de momento yo sólo trabajo con UserDrawings y EdgeCuts) en formato DXF 2007.

En KiCAD hay que importar los DXF con offset fijo y todos con el mismo offset. Hay que importar cada uno en la capa que toque, evidentemente.


## Crear silks

Partimos de un fichero svg que gestionamos con Inkscape.

- El fichero tiene que ser en blanco y negro. Desde KiCAD vamos a
  poder gestionar el fichero y su negativo
- No puede tener canal alfa, hay que añadir un fondo, blanco o negro.
- Tenemos que exportar el fichero a png, al menos con 1200 dpi
- Para no liarnos es mejor dimensionar el fichero en Inkscape al tamaño
  que queramos en la placa
- Lo que vemos negro en la pantalla del Bitmap será entintado en el silk
- Si vemos el logo muy pequeño en la pantalla del _Bitmap Converter_ es
  señal de que hay que aumentar los dpi en el export de Inkscape.

## Usar Bibliotecas de terceros  (por ejemplo las de Bricolabs)

Tendremos dos maneras de usar las Bibliotecas

* Globalmente en nuestro sistema
* Como submodulos de nuestro proyecto

### Globalmente

Esta es la forma más simple de tener las bibliotecas disponibles para todos nuestros proyectos y también facilita poder contribuir con nuevos componentes a esas bibliotecas. Pero si queremos distribuir nuestro proyecto no será tan elegante.

Clonamos el [repo de las bibliotecas](https://gitlab.com/brico-labs/bricolabs_kicad_library) en algún directorio de nuestro ordenador (p.ej. `~/Resources/KiCAD/`)

En el propio _KiCAD_ añadimos las bibliotecas como bibliotecas globales: desde la ventana principal de KiCAD menu `Preferences::Manage Symbol Libraries`, para los símbolos de esquema, y `Preferences::Manage Footprint Libraries` para las huellas.

Alternativamente si queremos añadir las bibliotecas de forma que solo afecten al proyecto en el que estamos trabajando podemos añadirlas en la pestaña de Proyecto en lugar de en la global.

### Como submodulos git de nuestro proyecto

Aquí presuponemos que usas git para el control de versiones de tu proyecto KiCAD.

Las bibliotecas se añaden como submodulos git en el directorio del proyecto y se añaden después mediante las preferencias de KiCAD como dijimos en el punto anterior.

Las ventajas de hacerlo así son que facilita la distribución del proyecto y que se fija la versión de las bibliotecas que estamos usando.

## Crear un nuevo símbolo de componente para nuestros esquemas

{{< admonition type=info title="Referencias" open=false >}}
- [KiCAD: _Getting Started_](https://docs.kicad.org/5.1/es/getting_started_in_kicad/getting_started_in_kicad.html#make-schematic-symbols-in-kicad)
- [Creating Schematic components and libraries](https://michd.me/blog/kicad-working-with-schematic-components-and-libraries/)
- [Hackaday: KiCAD Best Practices, library management](https://hackaday.com/2017/05/18/kicad-best-practises-library-management/)
{{< /admonition >}}


Es super fácil crear un nuevo símbolo para los esquemas y hace falta a menudo. Merece la pena aprender a hacerlo.


{{< admonition type=warning title="git submodules" open=true >}}
No es muy conveniente cambiar el contenido de bibliotecas que se han añadido como submodulos git a nuestro proyecto. Salvo que controles bien el git te vas a meter en problemas. Mejor añadir las bibliotecas desde un directorio independiente y entonces las puedes editar sin problemas (aunque las propias bibliotecas las controles con git)
{{< /admonition >}}


## De Inkscape a KiCAD (extensión shenzhen)

Aparentemente la extensión [shenzhen](https://github.com/badgeek/svg2shenzhen) no funciona para Inkscape 1.1

Podemos hacerla funcionar:

* Descargamos la [AppImage para Inkscape 1.0.2](https://inkscape.org/release/all/gnulinux/appimage/). Yo la dejo en mi directorio `~/apps/inkscape`
* Creamos un enlace simbólico a la *AppImage* más reciente (esto es para facilitar los cambios de versión)
   ```bash
   cd ~/apps/inkscape
   ln -s <appImage> current
   ```

* Creamos un script `shenzhen` con el siguiente contenido

  ```bash
  #!/usr/bin/env bash

  export HOME=/home/salvari/apps/inkscape
  ~/current
  ```
* Una vez ejecutado el script para comprobar que se abre correctamente el Inkscape, bajamos el fichero de la extensión desde el [github](https://github.com/badgeek/svg2shenzhen#install) y lo descomprimimos en el directorio `~/apps/inkscape/.config/inkscape/extensions`

* Si rearrancamos nuestro Inkscape 1.0.2 con el script `shenzhen` veremos que ya tenemos la extensión funcionando.

## Crear ficheros de huellas (_footprints_)
<https://www.gabetaubman.com/blog/posts/kicad-custom-footprint/>

## De Eagle a KiCAD

Vamos a usar [estos scripts](https://github.com/lachlanA/eagle-to-kicad)

## Notas sueltas

* Para **copiar un símbolo entre bibliotecas**: Abrir el _Symbol Editor_ navegar hasta el símbolo a copiar y con el
botón derecho seleccionar _Salvar Copia como.._ Y seleccionamos en que
librería se quiere salvar.

* Para poner un **texto negado** (con una raya por arriba) se rodea el texto con tildes `~negado~`

* Para **copiar entre esquemas de distintos proyectos**. Hay que usar la aplicación _eeschema_ independiente para abrir los esquemas, no se puede copiar entre proyectos

## Huella mixta (tht smd)

Copiamos la THT desde la biblio de KiCAD


## KiCAD 6, módulos Python para Pcbnew

Podemos acceder a la consola (intérprete) de Python desde _pcbnew_.

```python
Py 0.9.8
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Startup script executed: /home/salvari/.config/kicad/6.0/PyShell_pcbnew_startup.py
>>>

## Para averiguar el python que estamos usando:
>>> import sys
>>> print(sys.executable)
/usr/bin/python3
>>>


import pip

pip.main(['install', 'kikit'])
```




## Referencias

### KiCAD
- [KiCAD: _Getting Started_](https://docs.kicad.org/5.1/es/getting_started_in_kicad/getting_started_in_kicad.html#make-schematic-symbols-in-kicad)
- [Creating Schematic components and libraries](https://michd.me/blog/kicad-working-with-schematic-components-and-libraries/)
- [Hackaday: KiCAD Best Practices, library management](https://hackaday.com/2017/05/18/kicad-best-practises-library-management/)
- [Build minimal STM32 development board](https://vivonomicon.com/2018/05/05/your-own-hardware-designing-an-stm32-development-board/)
- [Componentes habituales en PCBs por Luis Llamas](https://www.luisllamas.es/componentes-habituales-en-pcbs/)
- [Bibliotecas que puedes usar en KiCAD](https://michd.me/blog/kicad-working-with-schematic-components-and-libraries/)
- [SnapEDA KiCAD Libraries](https://www.elcorteingles.es/electrodomesticos/A30031273-plancha-de-vapor-rowenta-dw8221-pro-master-con-vapor-extra/)
- [Ultra Libraria KiCAD Libraries](https://www.ultralibrarian.com/cad-vendors/kicad/)

### Diseño PCB
- [Libro: Fundamentals of Circuit Design by Hongshen Ma](http://www-mdp.eng.cam.ac.uk/web/library/enginfo/electrical/hong1.pdf)
- [PCB Design Tutorial by David L. Jones](https://www.alternatezone.com/electronics/files/PCBDesignTutorialRevA.pdf)
- [Guia de la Universidad de Toronto](http://www.karadev.net/uroci/filespdf/files/pcb_tutorial_rev1.pdf)
- [Una guía de Analog Devices](https://www.analog.com/media/en/training-semininars/design-handbooks/Basic-Linear-Design/Chapter12.pdf)
- [Una playlist de Phil's Lab](https://invidious.projectsegfau.lt/playlist?list=PLXSyc11qLa1b9VA7nw8-DiLRXVhZ2iUN2)
- Algunos tutoriales:
    - https://learn.sparkfun.com/tutorials/pcb-basics/all
    - https://www.powerelectronicsnews.com/step-by-step-example-for-practical-pcb-design-power-supply-design-tutorial-section-3-3/
    - https://www.circuitstoday.com/pcb-design-basics

### Relacionadas con electrónica

- [LastMinuteEngineers](https://lastminuteengineers.com/)
- [STM32 step by step tutorial](https://blog.st.com/stm32-step-by-step-tutorial/)

### Proveedores de PCB

-[Aisler](https://aisler.net/) fabrican en Europa

### Plugins to review

- [KiBuzzard](https://github.com/gregdavill/KiBuzzard)
- [Interactive html BOM](https://github.com/openscopeproject/InteractiveHtmlBom)
- [KiKit](https://github.com/yaqwsx/KiKit)
- [KiCAD footprint generator](https://gitlab.com/kicad/libraries/kicad-footprint-generator)
- [KiCAD and FreeCAD](https://www.kicad.org/external-tools/stepup/)
- [KiCAD action plugins](https://github.com/MitjaNemec/Kicad_action_plugins)
- [KiCAD checklist](https://github.com/azonenberg/pcb-checklist)


### TBR

- https://www.pcbway.com/blog/PCB_Design_Tutorial/Using_Git_with_KiCad.html
- https://medium.com/inventhub/better-manage-kicad-projects-using-git-8d06e1310af8
- https://www.youtube.com/playlist?list=PLn6004q9oeqGl91KifK6xHGuqvXGb374G

### Proveedores de componentes
- [TME](https://www.tme.eu/)
- [LCSC](https://lcsc.com/)
