Coder Social home page Coder Social logo

kitspace / kicad_footprints Goto Github PK

View Code? Open in Web Editor NEW
310.0 22.0 46.0 428 KB

A collection of all the KiCad footprints on the internet

Home Page: https://github.com/kitspace/kicad_footprints#readme

License: MIT License

Python 75.06% Shell 24.94%
kicad electronics kicad-footprints pcb

kicad_footprints's Introduction

Build and deploy workflow status badge Backers on Open Collective Sponsors on Open Collective

Watch a 5 minute lightning-talk about Kitspace from the 35th Chaos Communication Congress (35C3).

video

Kitspace (formerly Kitnic) is a registry of open source hardware electronics projects that are ready to order and build. It could be described as a "Thingiverse for electronics". The most important elements of a Kit Space project page are what allow a design to be manufactured:

  • A preview of the printed circuit board and prominent link to download the Gerber manufacturing files
  • The ability to quickly add the required components to a distributor shopping cart (using our browser extension)

Help us build an open hardware repository of useful electronics projects!

Get in touch

How many people visit the site?

Our visitor stats are public on plausible.io.

Tracespace

The renderings of the PCB files are made using Tracespace tools. You can get similar renderings and also inspect invdividual layers, using the Tracespace Gerber viewer.

Adding your project

kitspace.yaml format

Currently the kitspace.yaml makes use of the following fields:

summary: A description for your project

site: https://example.com # A site you would like to link to (include http:// or https://)

color: purple # for example
   # The solder resist color of the preview rendering. If left undefined "green" is used. Can be one of:
       # - green
       # - red
       # - blue
       # - black
       # - white
       # - orange
       # - purple
       # - yellow

bom: my-bom.xlsx
  # A path to your 1-click-bom in case it isn't `1-click-bom.tsv`. Supported extensions are:
  # - .tsv
  # - .csv
  # - .ods
  # - .xlsx
  # Check out https://github.com/kitspace/1clickBOM#readme for more details


gerbers: my/gerber/folder # A path to your folder of gerbers in case it isn't `gerbers/`.

eda:
  type: kicad # or eagle
  pcb: path/to/your/file.kicad_pcb # your/eagle.brd

readme: my/special/readme.md # A path to your README file in case it isn't in the repository root directory.

multi: # Identifier field only used if the repository contains multiple projects. See below for details.

Paths should be in UNIX style (i.e. use / not \) and relative to the root of your repository. The YAML format is pretty straight forward but if you need to know more check the example below and the YAML website. Use this YAML validator to be extra sure that your kitspace.yaml is valid.

KiCad PCB

If you you used KiCad for your design you can also specify a KiCad PCB file to use by adding an eda field.

eda:
  type: kicad
  pcb: path/to/your/file.kicad_pcb

If your project has a KiCad PCB file, and interactive assembly guide for the board will be created using the Interactive HTML BOM plugin from the Open Scope Project.

If both eda and gerbers are present the Gerber files will be used.

Some examples

Check out the repo links of the projects listed on kitspace.org already. The minimum required file tree is something like :

.
├── 1-click-bom.tsv
└── gerbers
    ├── example.cmp
    ├── example.drd
    ├── example.dri
    ├── example.gko
    ├── example.gpi
    ├── example.gto
    ├── example.plc
    ├── example.sol
    ├── example.stc
    └── example.sts

A more advanced example could be something like:

.
├── kitspace.yaml
└── manufacture
    ├── advanced-example-BOM.tsv
    └── gerbers-and-drills
        ├── advanced-example-B_Adhes.gba
        ├── advanced-example-B_CrtYd.gbr
        ├── advanced-example-B_Cu.gbl
        ├── advanced-example-B_Fab.gbr
        ├── advanced-example-B_Mask.gbs
        ├── advanced-example-B_Paste.gbp
        ├── advanced-example-B_SilkS.gbo
        ├── advanced-example.drl
        ├── advanced-example-Edge_Cuts.gbr
        ├── advanced-example-F_Adhes.gta
        ├── advanced-example-F_CrtYd.gbr
        ├── advanced-example-F_Cu.gtl
        ├── advanced-example-F_Fab.gbr
        ├── advanced-example-F_Mask.gts
        ├── advanced-example-F_Paste.gtp
        └── advanced-example-F_SilkS.gto

with kitspace.yaml containing:

summary: A more advanced example
site: https://example.com
color: red
bom: manufacture/advanced-example-BOM.tsv
gerbers: manufacture/gerbers-and-drills

The multi field

Kitspace supports multiple projects in one repository with the multi field. When multiple projects exist, multi will always be the first field in the kitspace.yaml, with the paths to your projects folder nested underneath.

├── kitspace.yaml
├── project_one
│   ├── 1-click-bom.tsv
│   ├── README.md
│   └── gerbers
│       ├── example.cmp
│       ├── example.drd
│       ├── example.dri
│        ...
│       ├── example.stc
│       └── example.sts
└── project_two
    ├── 1-click-bom.tsv
    ├── README.md
    └── gerbers
        ├── example.cmp
        ├── example.drd
        ├── example.dri
         ...
        ├── example.stc
        └── example.sts

with kitspace.yaml containing:

multi:
    project_one:
        summary: First project in a repository.
        color: blue
        site: https://example-one.com
    project_two:
        summary: Second project in a repository.
        color: red
        site: https://example-two.com

If you want to use custom paths for the readme, bom, or gerbers then note that these are from the root of the repository.

E.g.

├── kitspace.yaml
├── manufacturing_outputs
│   └── project_one_gerbers
│       ├── example.cmp
│       ├── example.drd
│       ├── example.dri
│        ...
│       ├── example.stc
│       └── example.sts
├── project_one
│   ├── documentation
│   │   └── README.md
    └── BOM.csv
└── project_two
    ...
multi:
    project_one:
        readme: project_one/documentation/README.md
        bom: project_one/BOM.csv
        gerbers: manufacturing_outputs/project_one_gerbers
    project_two:
      ...

Terms and Conditions for Adding a Project

  1. We (Kitspace developers) do not claim any ownership over your work, it remains yours.
  2. By submitting your project you give us permission to host copies of your files for other people to download.
  3. If you change your mind, you can remove your project any time by removing the public git repository, sending a pull-request to remove it from boards.txt or notifying @kasbah in some other way.

Development

Architecture

This repository is the Kitspace front-end. The contents including all project data are currently pre-compiled into a static site. The main part of the site that requires server side components is the submission preview (/submit). Pages also use freegeoip lookup to decide what sites to link to for people that do not have the 1-click BOM browser extension. This roughly illustrates the main data flow when someone is browsing the site.

We have two services running for the submission preview.

And one for the geo ip lookup on pages.

Requirements

  • Nodejs version 10 or higher
  • fswatch on OSX/Windows or inotify-tools on Linux
  • Ninja Build >= 1.5.1
  • Inkscape (v0.92) for converting SVGs to PNGs
  • Yarn to ensure the correct dependencies are installed
  • The rest of the dependencies can be retrieved via yarn install

Quick start for Debian/Ubuntu

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install git nodejs inotify-tools ninja-build inkscape yarn
git clone https://github.com/kitspace/kitspace && cd kitspace
yarn install

Running a local dev server

Get requirements above then:

yarn install    # retrieves dependencies
yarn get-boards # gets the test projects and puts them into boards/
yarn build      # generates a build.ninja file using the ./configure script
# and calls ninja to execute the build.ninja file which builds everything (similar to how make executes a makefile)
yarn serve      # starts a development server to preview the site

Visit http://127.0.0.1:8080 in your browser to see your local development site.

Code of Conduct

We are committed to making working on Kitspace an inclusive and welcoming environment. All contributors are expected to abide by our code of conduct. It's just common sense.

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

kicad_footprints's People

Contributors

johnthagen avatar kasbah avatar phsilva avatar tuna-f1sh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kicad_footprints's Issues

Parsing errors in stable KiCAD

After running ./generate-table and copying it into the OSX location for it (doing a .backup of the former first as advised in the README):

~/Library/Preferences/kicad/fp-lib-table

I'm getting this couple of footprint parsing errors while running CvPcb on KiCad 4.0.5:

Errors were encountered loading footprints:
PARSE_ERROR: Expecting 'circle, rectangle, oval, or trapezoid' in input/source '/Users/romanvg/dev/kicad_modules/kicad_footprints/lowstar/IPC7351C-Nominal.pretty/CAPC160X80X87L35N.kicad_mod' line 24 offset 14 from /Users/ansible/4.0.5/kicad-mac-packaging-4.0.0/kicad/common/dsnlexer.cpp : Expecting() : line 369
PARSE_ERROR: Expecting 'circle, rectangle, oval, or trapezoid' in input/source '/Users/romanvg/dev/kicad_modules/kicad_footprints/adamjvr/KiCAD-OnHand-Lib/OnHand-Components.pretty/BLM15HG601SN1D.kicad_mod' line 16 offset 14 from /Users/ansible/4.0.5/kicad-mac-packaging-4.0.0/kicad/common/dsnlexer.cpp : Expecting() : line 369

Adding on Windows?

Hi,

I am running KiCad on Windows. I've successfully generated a fp-lib-table file using Python with generate_table script and then moved it to C:\Users\%username%\.config\kicad directory. However, I am not seeing the footprints in CvPcb when I am loading it. Am I missing something or this is not supported?

For what it's worth, there are several fp-lib-table files in KiCad installation directory, however I am not sure what is the right one to replace if that's what is necessary.

Thanks!

CvPcb load error on lowstar and adamjvr

Back to Ubuntu from OSX and giving your footprints compilation a good try :)

I just found this:

Errors were encountered loading footprints:
PARSE_ERROR: Expecting 'circle, rectangle, oval, or trapezoid' in input/source '/home/romanvg/dev/kicad_footprints/adamjvr/KiCAD-OnHand-Lib/OnHand-Components.pretty/C1206.kicad_mod' line 20 offset 14 from /build/kicad-lOwy61/kicad-4.0.4+dfsg1/common/dsnlexer.cpp : Expecting() : line 369
PARSE_ERROR: Expecting 'circle, rectangle, oval, or trapezoid' in input/source '/home/romanvg/dev/kicad_footprints/lowstar/IPC7351C-Nominal.pretty/LEDC160X80X65L30N.kicad_mod' line 24 offset 14 from /build/kicad-lOwy61/kicad-4.0.4+dfsg1/common/dsnlexer.cpp : Expecting() : line 369

Would it be possible to run the kicad lexer standalone or sth on travis so that those don't ever show up later on?

#idea

Script to remove kicad 6 incompatible files

I noticed that when I run ./update there's now a bunch of files that start with (footprint that cause footprint loading to fail completely in KiCad 6.0.10 and earlier. You can reproduce this locally by running python load_all.py where you'll get an IO_ERROR.

My previous strategy was to remove repos when they use unstable features, but we lose a lot of footprints that way that are actually still compatible. It's also more work for me. Would be better to have a script to remove these files.

Include a config file to exclude libraries

It'd be convenient if we could ignore any number of these submodules. A simple ignore_modules file would suffice, one ignored submodule name per newline. This way I could ignore some repos, for example the official one (because I already have it in my distro).

Cloning of out-of date submodules is failing

As reported in #2. Not up-to date submodules will fail on init:

Cloning xesscorp/RPi_Hat.pretty
Cloning xesscorp/xess.pretty
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
error: no such remote ref 9f166ffe86d1f3e41b1b8ce0c034773ac0f7983b
Fetched in submodule path 'tylercrumpton/CrumpPrints.pretty', but it did not contain 9f166ffe86d1f3e41b1b8ce0c034773ac0f7983b. Direct fetching of that commit failed.
falling back to deep clone for tylercrumpton/CrumpPrints.pretty
error: no such remote ref 9f166ffe86d1f3e41b1b8ce0c034773ac0f7983b
Fetched in submodule path 'tylercrumpton/CrumpPrints.pretty', but it did not contain 9f166ffe86d1f3e41b1b8ce0c034773ac0f7983b. Direct fetching of that commit failed.
 ** Failed ** tylercrumpton/CrumpPrints.pretty

wiebus repo fails on OSX

I was following the installation instructions and hit this error:

(...)
Submodule 'vontrapp/vontrapp.pretty' (https://github.com/vontrapp/vontrapp.pretty.git) registered for path 'vontrapp/vontrapp.pretty'
Submodule 'wiebus/SOT23_SOT143_SOT143R_TSOT6_MK06A_SC70-6_Housing_14Mar2014.pretty' (https://github.com/wiebus/SOT23_SOT143_SOT143R_TSOT6_MK06A_SC70-6_Housing_14Mar2014.pretty.git) registered for path 'wiebus/SOT23_SOT143_SOT143R_TSOT6_MK06A_SC70-6_Housing_14Mar2014.pretty'
Submodule 'xesscorp/RPi_Hat.pretty' (https://github.com/xesscorp/RPi_Hat.pretty.git) registered for path 'xesscorp/RPi_Hat.pretty'
Submodule 'xesscorp/xess.pretty' (https://github.com/xesscorp/xess.pretty) registered for path 'xesscorp/xess.pretty'
xargs: illegal option -- i
xargs: illegal option -- i
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
             [-L number] [-n number [-x]] [-P maxprocs] [-s size]
             [utility [argument ...]]

Apparently gxargs the GNU version of xargs is no longer in Homebrew, so I switched to GNU parallel and it went fine.

I hesitated to file a pullrequest since I'm not sure if you want to require users to install GNU parallel.

In any case, nice collection of kicad libs, thanks a ton for this effort!

KiCAD footprint repositories that have not been added

Path is /cygdrive/c/Users instead of c:/Users

I'm using the window branch, when generating fp_lib_table using Git Bash, it becomes :-

(lib (name "digikey/digikey-footprints.pretty")(type KiCad) (uri "/cygdrive/c/Users/stanley/Documents/Github/kicad_footprints/digikey/digikey-footprints.pretty") (options "") (descr ""))

This is a Win 7 32-bit version..

I have another Win 7 64-bit version with no such issues ...
Any idea why ??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.