How to easily find or create parts for Eagle schematic/board layout

(1) Finding existing Eagle parts already created by other people out there: I recommend the following four sources ( aside from Googling "partname Eagle" ;-) ):

  • You can look in Cadsoft's searchable collection of Eagle libraries

  • You can use Jason Tribbeck's Eagle part/package/device search, which allows wildcard/partial-term searches

  • You can use Esawdust's Eagle part search which also allows wildcards and regular expressions in search terms.

  • You can get the library that Sparkfun mains; it's a huge collection of common parts called Sparkfun.lbr, which is located at this page.

A WORD OF CAUTION (courtesy of user @Grant)... When using others' libraries or parts, first compare it to the datasheet, and/or print it out on paper for comparison to actual part. There are some untested and/or incorrectly dimensions footprints out there.

(2) Creating your own parts: It is not that hard at all to make Eagle parts for most things; frankly, if you are able to construct a schematic and a layout, making parts yourself will be hardly a step beyond. I have four pointers:

  • For learning part creation, I suggest you start with these three tutorials; the creator spent the effort to make them very beginner-friendly: Tutorial #12, Tutorial #13, and Tutorial #14 on this Eagle tutorial-page.
  • Start learning with simple examples such as a resistor, a DIP part, or even an SOIC-8 part to understand how it works; the clarity of understanding will then readily carry over to more complex parts.
  • If the part has a footprint that is a common one (such as SOIC-8), just copy an existing part's footprint.
  • Follow the manufacturer-recommended layout: Nearly all parts' datasheets prescribe dimensions for a recommended footprints/layout for the part; if you follow those precisely, life will be easier and you'll have a part ready in no time.

For any serious work, you won't want to get parts made by someone else because they won't adhere to your conventions. I always make my own parts, which is really not that difficult.

I have certain requirements for parts, like attributes for automatic BOM generation, and text at particular sizes and and layers for the silkscreen, the assembly drawing, etc. Others aren't likely to make parts just the way I want them, and to inspect and vet someone else's parts would take at least as long as just making my own in the first place. When you do this for business and your reputation depends on it, you have to be picky.

However, hobbyists can be more lax. Others are welcome to use my parts and a bunch of other Eagle-related utilities I have developed over the years. Go to my downloads page and install the Eagle Tools release. This contains a bunch of libraries with parts, but also various ULPs, scripts, and host programs I use around Eagle. For example, there is a whole system for genering the BOM from the schematic and board, and then creating the labels for the kit. Start with the CSV_BOM documentation file in the DOC directory and follow the cookie crumbs.

To give you some idea of how the BOM generation system works, here is most of the EAGLE_ATTR documentation file:

This document describes the Embed Inc conventions for using optional
attributes in Eagle, which were first made available in version 5.  In
previous versions a part could only have a few fixed attributes built into
Eagle, such as VALUE and NAME.  In version 5 these fixed attributes still
exist but arbitrary additional attributes can be created by the user.

This document specifies certain attributes that are expected by parts of
the Embed Inc system, mostly to aid in automatic bill of materials (BOM)
generation.  The process of generating a BOM from a eagle board or
schematic is desribed in the CSV_BOM program documentation file.

The Eagle optional attributes that have special meaning within the Embed Inc
system are:

MANUF

    Manufacturer:partnum; manufacturer:partnum; ...

    The PARTNUM fields and their leading colons may be omitted, but is a
    bad idea unless only a single manufacturer is listed.

PARTNUM

    Generic part number or part number within single manufacturer.

SUPPLIER

    Supplier:partnum; supplier:partnum; ...

    The PARTNUM fields and their leading colons may be omitted, but is a
    bad idea unless only a single supplier is listed.

BOM

    Whether this part should be included on the BOM.  Some "parts" are
    only features on the board, like pogo pin pads for example.  These
    should not be listed on the BOM because they do not need to be bought
    and will not be installed.  Supported values are:

      YES  -  Include this part in the BOM.  This is the default if the
        part has a package.

      NO  -  Do not include this part in the BOM.  This is the default if
        the part does not have a package.

VALSTAT

    Indicates how the VALUE attribute is used.  The choices are:

      VAL  -  Normal part value, like the resistance of a resistor.  The
        part value will be listed on the BOM and used to distinguish
        different parts.  For example, a 10K ohm resistor is a different
        part than a 330 ohm resistor.

      PARTNUM  -  The part number.  The value field will be shown in the
        BOM and used to distinguish different parts, like VAL.  However,
        the part number field will be set to VALUE unless the part number
        is otherwise explicitly set.  VALSTAT PARTNUM is for generic
        library devices where the value field is used to show some or all
        of the part number on the schematic.  For example, the library
        might contain a generic 14 pin opamp device, and the value set to
        LM324 to show the type of opamp on the schematic.  In this
        example, VALUE is only set to the generic part number without
        package type, temperature grade, etc.  In this case the PARTNUM
        attribute should be used to specify the exact part number, but
        VALSTAT should still be set to PARTNUM.

      LABEL  -  Label intended for the silkscreen.  The value field will
        not be transferred to the BOM and will not be used to
        differentiate parts.  This might be used, for example, to label a
        LED on the board.  Different LEDs might be labeled "Power" and
        "Error", but they are the same physical part and should be listed
        on the same BOM entry.

SUBST

    Sets the substutions allowed field for the part on the BOM.  Valid
    values are "YES" and "NO".  The default is YES if SUBST does not exist
    or is empty.

DESC

    Explicit description string for the BOM.  By default, the BOM
    description is derived from the library name and the device name
    within that library.  If the DESC attribute is present and not empty,
    its contents will override that default.

DVAL

    Detailed part value.  If present and not empty, this field overrides
    the part value string on the BOM and will be used to differentiate
    parts.  DVAL is always assumed to be the true part value, so is not
    effected by VALSTAT.  The purpose of DVAL is to provide more
    information than reasonable to show on the schematic.  Generally the
    standard VALUE attribute will be shown on the schematic with DVAL
    shown on the BOM.

I built a crawler to help with this problem. I totally agree you shouldn't use parts found on the public internet without careful inspection, but I find it saves time to start with something that someone else has built, and I often find they are more meticulous than I am so I have a better starting point.

You can search for and download parts that my crawler has found here:

http://www.schematicpal.com

No charge, just give feedback at the feedback link if you have any problems.

-Jim