Base de datos de componentes en kicad
Maykol Rey

Maykol Rey

Ing. Electrónico

24/07/2024

Base de datos de componentes en kicad

Desde la versión 6 de kicad se había venido desarrollando una idea sobre agregar la capacidad a kicad de conectarse a una base de datos para administrar componentes. Ahora ya es posible en kicad 7 y en este pequeño artículo te enseño como funciona y cómo implementarlo.

¿Cómo funciona la base de datos de componentes?

Si has usado Altium Design te habrás dado cuenta que los componentes son extraídos directamente desde los principales proveedores de componentes como Digikey, mouser y arrow. Bueno exactamente esto es lo que permite hacer ahora kicad, Claro!!, aún hace falta que alguien desarrolle una interfaz gráfica para que esto sea más fácil de usar.

El proyecto llamado Ki-nTree de spark microsystem hace esto muy fácil, sin embargo, depende de una API Key que por ahora no voy a tratar al respecto.

Pie de imagen:

¿Cómo implementar una base de datos SQLite para administrar componentes de kicad?

Decidi hacerlo con SQlite porque me parecio la forma mas simple, pero tambien puedes hacerlo con otro tipo de base de datos SQL.

El objetivo de la base de datos es guardar las propiedades de un símbolo junto con el huella y sus características, algo como esto:

Pie de imagen:

Todos los parámetros que observamos fueron cargados automáticamente lo cual reduce considerablemente el tiempo de desarrollo de proyectos.

Estos parámetros también pueden ser personalizados, el que vieron en la imagen es el que yo uso.

Archivo kicad_dbl

Este es el archivo que maneja la estructura de las distintas propiedades que tendrá una biblioteca, en el siguiente ejemplo pueden ver la biblioteca de resistencias.

{
    "meta": {
        "version": 0
    },
    "name": "My Database Library",
    "description": "A database of components",
    "source": {
        "type": "odbc",
        "dsn": "",
        "username": "",
        "password": "",
        "timeout_seconds": 2,
        "connection_string": ";Database=/home/maykol/kicad/kicad_components.sqlite3;Driver=SQLite3"
    },
    "libraries": [
        {
            "name": "Resistors",
            "table": "Resistors",
            "key": "Mfr_Part",
            "symbols": "Symbols",
            "footprints": "Footprints",
            "fields": [
                {
                    "column": "LCSC_Part",
                    "name": "LCSC Part",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": true,
                    "inherit_properties": true
                },
                {
                    "column": "Value",
                    "name": "Value",
                    "visible_on_add": true,
                    "visible_in_chooser": true,
                    "show_name": false
                },
                {
                    "column": "Manufacturer",
                    "name": "Manufacturer",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": false
                },
                {
                    "column": "Mfr_Part",
                    "name": "Mfr. Part",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": false
                },
                {
                    "column": "Description",
                    "name": "Description",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": false
                },
                {
                    "column": "Price",
                    "name": "Price",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": false
                },
                {
                    "column": "Datasheet",
                    "name": "Datasheet",
                    "visible_on_add": false,
                    "visible_in_chooser": true,
                    "show_name": false
                }
            ],
            "properties": {
                "description": "Description",
                "footprint_filters": "Footprint Filters",
                "keywords": "Keywords",
                "exclude_from_bom": "No BOM",
                "exclude_from_board": "Schematic Only"
            }
        }
    ]
}

Aunque este código se ve abrumador, solo es una estructura de datos que debe escribirse una vez por cada librería, por ejemplo, si voy a crear la librería de capacitores agregaria una estructura similar al array libraries

Este archivo se guarda con la con nombre que desees, en mi caso lo llame componentes.kicad_dbl. Para que kicad pueda leer este archivo se agrega igual que un símbolo en el administrador de símbolos.

Pie de imagen:

Podrán observar que el formato de la librería la detectara como una Database, de esta forma kicad está casi listo para leer símbolos desde la base de datos, pero falta lo más importante!! los datos!! :)

El en archivo .kicad_dbl existe un linea llamada connection_string en esa línea deben colocar la ruta a la base de datos SQLite con el siguiente formato

"connection_string": ";Database=/home/maykol/kicad/kicad_components.sqlite3;Driver=SQLite3"

Creación de la base de datos

Una base de datos con SQLite es un archivo con extensión .sqlite3. Para poder editarlo es necesario tener un administrador de base de datos, en mi caso uso https://sqlitebrowser.org/ el cual es multiplataforma y muy fácil de usar.

¿Cómo cargar componentes a la base de datos?

Yo les voy a explicar una forma simple y manual, solo para que se hagan la idea de como funciona, pero recuerda que como es una base de datos puede ser administrada por cualquier aplicación, tener una interfaz gráfica, conectarse a la red, en fin, muchas posibilidades que facilitan el uso.

Ejecutamos el programa db Browser y abrimos nuestro archivo .sqlite3, en mi caso kicad_components.sqlite3 y se crea una nueva tabla, esta tabla debe tener la siguiente forma.

Pie de imagen:

Si se fijan bien, por defecto estoy dejando el símbolo “Device:R_US” el cual será el símbolo por defecto para todos los símbolos de resistencias de esta librería, toda base de datos debe tener un elemento único que no se repite en la tabla, en mi caso escogí el número de parte del fabricante ya que de esta forma me aseguro que el valor sea único.

Ahora si, para cargar un nuevo componentes presionamos en Browser Data y insertar nuevo registro

Pie de imagen:

En este apartado se completan todos los campos y estos ya podrán ser leídos desde Kicad, Lo interesante de esto es que ya el símbolo tendran, el numero de parte asociado, el footprint y la referencia de LCSC en caso que trabajen con ese distribuidor.

Usar símbolo esquemático

El símbolo se usa como cualquier otro símbolo de kicad.

Pie de imagen:

Usando este metodo ya no existirá un proceso de búsqueda de footprint u otras propiedades ya que solo es el trabajo que se realizará una vez.

Bueno creo que esto es todo, espero que no se me haya olvidado nada. cualquier duda lo ponen en los comentarios.

¿Qué te pareció la lectura?