openDatasheet - a Vision?

About this project

Of course you know OctoPart. If you’ve ever did something with electronics, you know how much of a pain it is to go throught numerous datasheets, resellers and references to find exactly what you need. OctoPart helps you a bit, providing you a nice list of components, very good search tool and prices. But one thing it doesn’t is to help you with your design.

Wheter you’re designing SMPS, DAC or simple sine-wave generator, you’ll always end up using calculator and spending at least half an hour burried in some datasheet. And what’s worst is, when the part you’ve chose and studied turns out to be a bad choice. Or, you just need to know what resistors to use to set proper gain, what diode to use to set correct reference voltage or if you need to considerate mounting heatsink to your power component. OctoPart doesn’t help you with this, and as far as I know, there isn’t any tool that does that.

openDatasheet

And this is where openDatasheet comes into the play. It’s backend is written in python, with well-documented codebase. Every component is in it’s own class, expanding on pre-generated general scaffold for that component. All common and necessary values are present and hand-picked for each component type, so there is no need to dig in documentation, as they are directly available.

But that’s just datasheet re-written in python, isn’t it? Yes. But that’s where the vision is. To replicate the datasheet in interactive form. All formulas will be present as functions, to which you’ll provide necessary values, and you’ll get what you need. Reference schematics and PCB layout guidelines are also in to-do list, to provide user with go-to design in no time, with all values pre-calculated. Heck, I might even integrate some form of schematic generator with appropriate values, so you’ll just set let’s say output voltage, current and ripple, and it’ll pick best IC and schematic for you.

But why?

I always find it extremely annoying, having to go throught dozen or so equations, just to calculate the value of filter capacitor at the end. I always end up writing those equations in python, because it is very easy to change something and get instantenious result. Over time, I’ve accumulated few of those functions, and that was basically how this whole idea came to me. Just create a big database of components, their most used values and set of functions, that’ll calculate all things necessary for you.

The Vision

I have no idea what this project will become. Main goal as of today is to create scaffold for every component, and populate it with at least 10 real components. And because there are millions of choices, that’s why I’ve decided to make the project open-source. People can just read the contribution guide, and help create new components. Say they are working with new op-amp from Analog Devices, and they need those calculations. Well, just create them in python, use them, and then request a pull to the main repo. Everyone will benefit (you’ll have nice reusable piece of code, and others can just use it) and the system can grow by itself. But I would love to see this project integrated in some bigger thing, maybe even in some EDA. But let’s be realistic. After scaffoldings are done, I’ll begin to work on API (probably GraphQL because dynamic queries yay) that will be exposed to everyone for free (with generous limitations), and some basic front-end. This will serve as presentation of the product - everyone then can deploy it in their own company, extend it, edit the code and whatever.

I want it to become your next electroDroid, your next alldatasheet. The go-to tool for referencing components.

So then.. can I see it?

Yes. Currently, there is not much to see however. I don’t have lots of free time to re-write datasheets of components. But, most of the scaffolding is already done (or, you can contribute), so if you have spare minutes, you can add new stuff. As of today (08/04/2021), there is no API that you can request, or website you can visit (besides GitHub). But, you can use it locally, or if you’re brave enough, build some sort of front-end to it. Everything is on GitHub, where you’ll find guidelines for basically everything, and a nice pull request button that you should definately click and contribute. I would be extremely thankful to anyone that will make the codebase better, faster and more robust. Any additions are welcome tho. If you’re interested, check it out :)