I’m making this thing mostly so that I can walk through a few of the critical steps for HTMAA (how to make almost anything) projects: (1) circuit design, (2) circuit manufacture / soldering, (3) embedded programming, and (4) interface and application programming.
As a cheat-sheet, here’s the basics - these commands should be enough to get you through most design exercises.
schematic is a nonphysical space where we can describe which outputs or inputs from our various components are connected to one another. In a schematic, we find part
symbols that pave
pins, these are connected to one another on
delete in the schematic to add components to the sheet. Simple enough! We can also use
delete to remove “nets.”
net command lets you draw
schematic hookups which are known as … well, “nets” in ECAD terms. A net represents a kind of non-physical wire - or we can think of it as a vertex in a graph to which other things (component pads, for example) are connected. We can also think of a
net as a single signal in our circuit.
We can use
name to give
nets unique names. Drawing two
net lines but naming them the same thing will “virtually” connect them, meaning you can make schematics less messy. Nice.
board representation is where our design meets the physical world. Here we find
footprints that have
pads that are connected to one another via
traces, vias, and pours i.e. copper.
DRC stands for
design rule check and lets you configure Eagle such that it won’t let you draw signals that are i.e. too close to one another (such that they would be impossible to manufacture). It also helps check for errors: make sure you call
DRC before you send a board to fab!
route command lets us connect disparate elements of the same
net to one another: laying tracks / drawing wires / routing: all the same.
When routing, we can click the middle mouse button to lay a via, thus
t r a v e r s i n g through the stack of PCB layers.
ripup will remove tracks / traces, or delete vias.
Ripup has some settings: we can remove partial elements of a trace, or vias, or the entire signal, or only the piece of a signal on the current copper layer.
Move … moves things! When we call this, we have to pick things up right by their origin (denoted with a tiny
+ and on the
When moving, we can right-click to rotate by 90’. Nice.
grid is how we keep ourselves organized in Eagle, or line things up. You can set grid units and spacing by calling i.e.
grid mm 1 /
grid <unit> <spacing>
In order to move something on to the current grid, hold down
ctrl while picking it up with the
polygon command lets us draw copper “pours” - areas we want to cover with monolithic sweeps of connected copper. Pours are awesome for sucking the heat out of power components, or connecting large ground planes / etc.
To use polygon, call the command, draw a shape, and then name the polygon with the name of whichever “net” / signal you want to occupy that area.
We eventally need to draw an outline for our board, or maybe we want to doodle on the silkscreen, whatever.
line will let you draw those things - make sure you have the appropriate layer selected:
dimension is for board outlines,
bPlace for the silkscreen.
ratsnest will re-draw all polygon pours, and in older versions of Eagle, will redraw the airwires as well.
We can use
show to highlight signals / nets in our board design. This is awesome when we just need to sit there and consider how to route something, or want to do a little visual analysis on our current progress. For example
show +3v3 will highlight everything connected to the
+3v3 net, you get the idea.
Eagle has a layer system: top and bottom copper are on
bottom respectively, component names and values are on
tValues - (and with the
b prefix for anything on the other side), and when we are sending boards to a fabricator we should also consider the
tStop (solder mask) and
tCream (solder stencil) layers. Additionally, we have
measures where I normally put dimensions / measurements and guides, and
tDocu where footprint documentation (i.e. outlines we would like to see when routing, but would not want to print on the silkscreen) goes.
To show / hide these during routing, we can use
display -<layer_name> to hide a layer or
display <layer_name> to show it, and can issue multiple arguments during each command.
Want to mount something to your board? Use
hole - it’ll draw a circle on the
dimension layer, meaning it will be milled / drilled during fabrication.
Exporting PNGs that are appropriate for manufacturing using
mods in a fab lab is a bit of a trick. We need to get PNGs that are purely black and white, that contain only the layers we want to mill.
To export a PNG for the traces, use these commands:
display none to make all of the layers invisible
display top vias pads to display top copper layers
export image to export a PNG, use an appropriate DPI (1000 is likely high enough) and use the
To export a PNG for the outline, we do something similar:
display bottom dimension vias
export image - the same, monochrome, with the same DPI
now we need to process these PNGs (photoshop is good) to make them ready to mill: we have to do the same in KiCAD: the fab pcb milling process is unusual, and we haven’t developed an automated workflow yet!
- black parts of the image will be milled away !
- on the outline, make sure the board is completely filled in with white
- but leave vias completely black: this will mean that we drill via holes and mill the out outline with one job