Keeping Track of Parts

I’ve touched upon Product Lifecycle Management (PLM) systems at work. The general idea makes sense, you have your thing, the subassemblies, and all the parts that go into them. And documents and whatever else. And while in big companies you end up with complex webs of objects within these systems which can sometimes feel offputing, the idea makes sense.

I’ve got a couple things going on with KiCad projects now. One is a DC-DC converter I’m throwing together, to get practice with DC-DC converters, and one is going to be a simple power/energy monitor. Both microcontroller-driven, both low voltage (12, 24, or 36 VDC nominal systems). I like KiCad, and I get that there’s a workflow associated with it in which one associates smaller things like generic passives with the design when it’s done. I however have gotten into the habit of using atomic parts – I create a part for things like a particular resistor or capacitor, in addition to bigger things like a microcontroller.

I’m not sure I need (or want) a full-blown PLM system like I’ve used at work. But, I’ve been daydreaming about something kind of similar. KiCad works on plain text, so it should be easy to script the creation of new parts. At least, for a lot of common ones, it’s a little more complicated when you need a custom symbol or footprint, but still. The other angle here is keeping track of what’s available, which is a problem thanks to all the supply chain issues going on. Digikey and Mouser, two distributors I tend to use, both have APIs where you can query for info about parts. So, I envision a script that takes a part number, grabs information about the part from one of these distributors or a different one, and sticks it in a database.

This could be something of a layer beyond KiCad then. So maybe it coalesces several 1k ohm resistors into a generic part to plop in. Maybe it queries the distributors every day and updates stock. Maybe something about tracking my own supply as well.

I may start to look at this between projects. I don’t know if it would a web app, a commandline-only thing, or heck, maybe an excuse to learn Qt. Probably, it would be best to divide this into chunks, so I don’t get stuck on producing something and get my other projects (which this would supposedly help) blocked. But it’s something to think about.