i used to use eagle CAD for my PCB designs for nearly 15 years. it was free to use for non-commercial projects (with some limitations, that most of the time were ok for me). at some point i even got a commercial license, as i occasionally did some board design for others and earned money. it used to be very cheap, so it quickly payed off.
fast forward some ears and Autodesk bought Eagle. in a the very next release it just stopped working well under Linux. first of all debian dropped it from its repo, as it was no longer allowed to be repackaged. then it turned out that it was really hard to run, in a first place, due to library and dependencies issues. finally it became subscription-based, instead of one-off license as it used to be.
i still used my old version though. first via VM, then as eagle docker image (based on old debian)… and finally decided – that's it! time to move on.
doing quick research on the net, it became very clear that KiCad is the way to go. there are tons of tutorials, but my favorite was Shawn Hymel's intro to KiCad. it was easy to learn. components database is now enormous – far better than my old Eagle had. it's also so easy to create new models, when needed, i no longer consider it a much of a fuss. Gerber exports work out of the box, too. but most importantly thanks to being opensource and designed to be modular, KiCad allows some truly awesome things, like automatic generation of:
the sole fact of having 3D visualizations like this:
is game-changing, as you can clearly see where you're missing some extra space for connectors, capacitors, that could lead out to making soldering a painful task. but that's just the beginning! having this 3D view, you can also export it as a 3D model! to do so it's enough to generate STEP file of the board from KiCad and convert it to STL:
kicad2step -o stuff.step stuff.kicad_pcb ./step2stl stuff.step stuff.stl
where step2stl
is a simple python script1):
import sys sys.path.append("/usr/lib/freecad/lib") import FreeCAD import Part s = Part.Shape() s.read(sys.argv[1]) s.exportStl(sys.argv[2], 2.5)
and we get our 3D model:
that can be imported to OpenSCAD and used as a reference for enclosure design! hell – with a bit of preprocessing you can actually 3D print it, and use as a physical reference of a final board! :D
the funny thing is that back in a day i did consider KiCad, but Eagle won as easier to use with far better build in components list, not to mention other features (we're talking early 2000s here). now thanks to KiCad community and open, modular design, Eagle is a no-match for it.
i'm currently exploring automation possibilities as a part of toy satellite project that i create for my children to play (both are space nerds ;)). while the project is trivial from electronic perspective, it's an excellent playground on end-to-end automation of building: software, hardware and enclosure. stay tuned for more! :)
oh… btw: did a mentioned that KiCad can import Eagle projects natively? ;) bye, bye Eagle – we had our moments, but it's over now…