For open source projects, I usually create a table containing the parts details or bill of materials (BoM), but it is tiresome to then re-enter all that information into the Farnell or Newark website, to order the bits.


The March 2019 update to the element14 website contains the ability to paste BoM content and it will auto-convert into a nice table with hyperlinked buttons to go directly to the Farnell/Newark product page for each component, or a single-button to purchase all.

For more information, see the March 2019 Site Update by mcollinge .



I still use EAGLE, so I wanted a way of getting the component values from the schematic into blogs. I messed around with an EAGLE user program (known as an EAGLE User Language Program or ULP) and the results are usable! I edited the EAGLE-supplied bom.ulp file and called it bom-new.ulp, attached to this blog post.


Using It; Build your Schematic

To use it, when you create your schematic in EAGLE, as you add each part, make sure you add a couple of attributes (there's an icon on the toolbar for that, or just right-click and select the option called Attribute).


Here I right-clicked on the resistor, selected Attribute and then clicked on New to add FARNELL and NEWARK attributes, with the part codes, and a MANUFACTURER attribute with the manufacturer name (e.g. Vishay).

You could also name the attributes to something similar, like FARNELL_PARTCODE for instance, as long as the text FARNELL or NEWARK is part of the attribute name. If MANUFACTURER is too long to type for attributes, use MNFR.


Running the bom-new User Language Program

Once you've completed the schematic, click on File -> Run ULP and select the new bom-new.ulp program!

Select Values, and ensure List attributes is selected. You'll see the attributes on the right. Select the output format to be element14 and click on Save!


There should now be a comma separated value (.csv) file in element14 BoM format on your file system. Double-click on it to open with Excel or similar.

The bom-new.ulp program combines some of the columns of data, into a single column, so you may wish to edit the first column to something nicer (or it could be done later when it is in the blog post).


Copy all of it to the clipboard (Ctrl-A followed by Ctrl-C) and now your're ready for pasting into the blog post, as described below.


Working with the Blog Post

Create your blog post and describe the project as normal. and then when you're ready to insert in the BoM contents at the current cursor position, on the toolbar, select the >> icon, and go to Product Link :


Three tabs appear. Click on Paste BOM:

Provided you've got the BoM content in your clipboard, you can now click in the blue circled area, and then paste (Ctrl-V) the clipboard. Then click on Insert.

The BoM will now be inside the blog post. It may take a minute or so to entirely process.


If you wish, edit the Product Name column content to something easier to read. That's it. When you publish the blog post, the table will look like this:




Bill of Materials




Product NameManufacturerQuantityBuy KitBuy Kit
- LED5MM [LED5MM] // LED1Buy NowBuy Now
- OS102011MA1Q [OS102011MA1Q] // OS Series C&K Components, example is OS102011MA1QN1OS102011MA1QN1 Farnell 12014311Buy NowBuy Now
- SIL2 [SIL2] //1Buy NowBuy Now
- SW-BOURNS-1543-OR-TACT-NEW [SW-1543-TACT] // Switch Bourns 1543 or generic TACT switch, e.g. from ALPS, slightly better schematic symbol1Buy NowBuy Now
1.27mm pitch - M50-3500542M50-3500542 [DIL2X5-1.27MM] // SMD 10WAY DIL header (2x5) 1.27mm spacing Harwin M50-3500542M50-3500542 Farnell 10223051Buy NowBuy Now
100n - C-EU050-025X075 [C050-025X075] // CAPACITOR, European symbol2Buy NowBuy Now
10u - CPOL-EUE2.5-6 [E2,5-6] // POLARIZED CAPACITOR, European symbol2Buy NowBuy Now
180R - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
1k - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
1n - C-EU025-025X050 [C025-025X050] // CAPACITOR, European symbol1Buy NowBuy Now
1u - C-EU050-025X075 [C050-025X075] // CAPACITOR, European symbol2Buy NowBuy Now
2.2k - R-EU_0207/10 [0207/10] // RESISTOR, European symbol2Buy NowBuy Now
22k - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
32.768kHz - XTAL-32768-WIRE-ENDED [XTAL-32KHZ-WIRE-ENDED] // 32.768kHz crystal, wire ended. Example is AEL Crystals X32K768L104X32K768L104 8mm x 3mm Dia, 12.5 pF, 20 ppm Farnell 95096821Buy NowBuy Now
330R - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
47R - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
47k - R-EU_0207/10 [0207/10] // RESISTOR, European symbol1Buy NowBuy Now
BC547 - BC547-2 [SOT54A] // BC5471Buy NowBuy Now
MCP1702-3302E - MCP1702 [TO92] // MCP1702 LDO Voltage Regulator example is MCP1702-3302E Farnell 13314851Buy NowBuy Now
MSP430G2553 - MSP430G2553 [DIL20] // MSP430G2553IN20MSP430G2553IN20 PDIP20 Farnell 2113748TI1Buy NowBuy Now
R-78E5.0-0.5R-78E5.0-0.5 - R-78E [R-78E] // Recom R-78E series DC-DC converter, example is R-78E-05-0.5 (5V 500mA) Farnell 2078564 or R-78E-3.3-0.5 (3.3V 500mA) Farnell 22186021Buy NowBuy Now
SD5620-001SD5620-001 - SD56X0 [TO18-] // Honeywell SD5620 or SD5630 Optoschmitt Detector, e.g. SD5620-001SD5620-001 Farnell 327610Honeywell1Buy NowBuy Now




The bom-new.ulp program could be improved or customized further. It may be buggy (although it works for me, I've only tested it with one schematic) but the code is easy to edit even with little .ulp code familiarity.


If you have any comments or improve the bom-new.ulp file, or come up with other techniques to work with BoMs, please do share!