HTMAA Demo Project / Baby UI Pad
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.
(1) Eagle Electronics CAD (ECAD) Design
Above is a ~ 50 minute hello-world to get you situated in Eagle ECAD software. I’ve included files from the example project in this repository and the library used is located here, in the fab cloud.
Eagle in 10 Commands
As a cheat-sheet, here’s the basics - these commands should be enough to get you through most design exercises.
Schematic Design
The 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 nets
.
Add / Delete
We use add
or delete
in the schematic to add components to the sheet. Simple enough! We can also use delete
to remove “nets.”
Net
The 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.
Name
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 Design
The 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
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
The 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
Contrary to route
- 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
Move
… moves things! When we call this, we have to pick things up right by their origin (denoted with a tiny +
and on the tOrigins
or bOrigins
layer).
When moving, we can right-click to rotate by 90’. Nice.
Grid
The 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 move
command.
Polygon
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.
Line
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, tPlace
or bPlace
for the silkscreen.
Bonus
Ratsnest
Calling ratsnest
will re-draw all polygon pours, and in older versions of Eagle, will redraw the airwires as well.
Show
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.
Display
Eagle has a layer system: top and bottom copper are on top
and bottom
respectively, component names and values are on tNames
and 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 tPlace
(silkscreen) 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.
Hole
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.
(2) Fabricating Boards using PNGs and Eagle
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 monochrome
option
To export a PNG for the outline, we do something similar:
display none
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
GLHF