gEDA is the open-source solution for hardware design.Â It has all the capabilities needed to develop professional boards, and does not have any of the limitations that commercial products put on their devices. However, like oh so many open source projects, it is a mess of a lot of little pieces. Â The good news is that they are all packaged up in Canonical, if you’re using Ubuntu.
So Let’s get started.
Install the geda packages:
sudo aptitude install geda, geda-doc, geda-utils, libgeda-common
These packages should get you the tools you need, which are tragesym, gschem, refdes_renum, and pcb.
Set up your build environment
Due to the lack of integration between different packages, it is in your interest to just tie them all together with a simple Makefile. Here is the one I use for OpenPLC:
sim_board: sim_uc.sch sim_phys_out.sch sim_ether.sch sim_pwr.sch \ sim_phys_in.sch packages/* symbols/* refdes_renum $^ gsch2pcb -v -v $^ -o $@ clean: rm -f *~ *- *.backup *.new.pcb *.png *.bak *.gbr *.cnc destroy_pcb: clean @bash -c 'echo "Are you sure? cuz this is gonna blow up all your pcb \ shit."; read answer; if [[ "$$answer" == *yes* ]]; then rm -v -f *.cmd \ *.pcb *.net; fi'
I found the destroy_pcb rule to be useful for a little while there, but I definitely don’t use that anymore. With the help of a makefile like this, gEDA starts feeling a lot more integrated.
The two subfolders you see in my project, packages and symbols, are used to store package footprints and schematic symbols that link to package footprints, respectively.
I also have a gafrc file with the following contents in it:
;; Add libraries (component-library "./symbols")
This file is used to tell gschem where to look for schematic symbols that I created. The packages folder is searched by pcb for footprints.
So now you should have two files in your project space: a Makefile and a gafrc. You can now type make and your schematics will be converted over to a pcb.
Stay tuned for next time, when I will talk about how to make footprints for those parts you need to make.