Over the years of developing the 1-click BOM (bill of materials) extension and starting out with the Kitnic.it site I have spent a lot of time thinking about the ideal format for the BOM of a project.
BOMs can have different purposes and our focus here is prototype and hobby projects. While it's important to think about what is needed on the BOM when something goes to manufacture (like Bunnie Huang does in this excellent blog post) we also want to keep things as simple and flexible as possible as we are still amending and adding to our BOM. We want a strong informative core of our BOM that can be used to expand upon later.
Ours is an electronics parts BOM, so no plastics or PCBs will be included. The bare minimum BOM needs just 3 columns really:
References | Quantity | Description |
The references and quantity fields tie your parts to the project. The references are the references used in the schematic and can tell you at any point what this parts purpose is in your project. Quantity could technically be derived from the reference but let's keep things simple (sometimes you could have multiple references for a single package like a dual transistor for instance could be labelled Q1 and Q2).
The description field could tell you everything else but sometimes it makes more sense just to name the manufacturer part number as this will tell you a lot more and much more precisely.
References | Qty | Description | Part Number |
C1 | 1 | 1uF 0603 X5R | |
C2 | 1 | 10uF 0603 X5R | |
D1 | 1 | 1N4148WS | |
Q1 | 1 | IRF7309PBF | |
R1 | 1 | 10k 0603 | |
R2, R4 | 2 | 100k 0603 | |
R3 | 1 | 300k 0603 | |
SW1 | 1 | 4-1437565-1 |
The 1-click BOM extension can help you expand upon a minimal BOM like above turning it into a more complete BOM.
If you run the above through 1-click BOM's auto-complete feature, it will currently search Octopart and Findchips for you and give you something like below.
References | Qty | Description | Manufacturer | MPN | Digikey | Mouser | RS | Newark | Farnell |
C1 | 1 | 1uF 0603 X5R | AVX | 0603ZD105KAT2A | 478-1251-1-ND | 0603YD105MAT2A | 9040215 | 95W9118 | 1327684 |
C2 | 1 | 10uF 0603 X5R | AVX | 06034D106MAT2A | 478-5718-1-ND | C1608X5R0J106K080AB | 7882887 | 04X3243 | 2211164 |
D1 | 1 | 1N4148WS | 1N4148WSFSCT-ND | 1N4148WSG308 | 7384737 | 74M5710 | 2453269 | ||
Q1 | 1 | IRF7309PBF | IRF7309PBFTR-ND | IRF7309PBF | 5429377 | 19K8239 | 9102175 | ||
R1 | 1 | 10k 0603 | AVX | NB21K00103JBB | 490-2436-1-ND | 0603YC473KAT4A | 6197740 | 33P7715 | 2502397 |
R2,R4 | 2 | 100k 0603 | AVX | NB21N50104JBB | 478-3670-1-ND | 0603YA100KAT2A | 8133568 | 33P7726 | 2332633 |
R3 | 1 | 300k 0603 | Multicomp | MCMR06X304 JTL | 541-300KHCT-ND | ERJPA3F3003V | 8626899 | 65T8626 | 2073466 |
SW1 | 1 | TE Connectivity 4-1437565-1 | 450-1129-ND | 414375651 | 4791508 | 93K3887 | 3801305 |
Pretty neat, huh? Now this won't always work as well as that, and all these parts do need to be checked over but we have a lot of plans to help improve the results of this feature and take the chore out of making a "complete" BOM.
The "complete" BOM not only allows others to buy parts from their preferred retailers but will also help you in the future if a part you need is out of stock on at your retailer. Filling in the manufacturer and manufacturer part number (MPN) fields makes this BOM future proof and clearly defines the component you want to use without tying it to any retailer stock number.
If a BOM is complete and has parts for all retailers the project's Kitnic page will be adorned with some lovely green buttons like below.
If not all parts are specified for a retailer the button will use a warning red color or, if no parts are specified, it will even disable itself greying itself out.
On hover a red button will show you tooltip telling you how many parts are missing if you go for this retailer. You can check the BOM below these buttons on the page to see exactly which part, the missing fields will are also marked red.
There is a lot I still want to cover regarding BOMs and the conventions people use, how we decided on tabs vs comma (surely, the flame-war fodder of the data science world) and how to better incorporate generic parts and multiple sources into a BOM format. and I could talk about BOMs for days but I will stop with this entry here. To be continued for sure.
If you have strong opinions with sound reasons on BOM conventions please let us know. We are happy to discuss issues and develop and adapt our formats accordingly. There is already some lively discussion on a GitHub issue on this very matter.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.