Electronics Design


  • Redraw the echo hello-world board to add (at least) a button and LED (with current-limiting resistor).
  • Check the design rules, make it, and test it

What should be done

  • Shown your process using words/images/screenshots
  • Explained problems and how you fixed them, including how you worked with design rules for milling (DRC in EagleCad and KiCad)
  • Included original design files (Eagle, KiCad, Inkscape, .cad - whatever)
  • NB. Also, if you make a board and it doesn't work; franken-hack that board (with jumper wires etc) until it does work, then make a new one with the knowledge you have gained.

Design using Eagle 8.0

Schematic Design

I had rough knowledge with Eagle v7 so I wanted to explore the version 8. So I downloaded Eagle 8 for linux and unpacked it into my home folder.

Then I downloaded the Fab Inventory library into the "lbr" folder.

After loading of Eagle, I started a new project by right clicking on the "eagle" folder and named it "hello.echo".

Then I started a new schematic and named it by right clicking on the project.

Now that the Schematic window is loaded, I started adding components by typing the command add. The scrolled down till I found the "fab" library and chose ATTINY44-SSU the doubled click it to add it.

Then by clicking one, I added on instance of the component the pressed "ESC" to exist the adding mode.

Then I started adding "nets" by typing "net" and clicking on each of the pins of the MCU, moving a little to the side and double clicking to finish drawing the net.

Then started to add power supply components "VCC" and "GND" by writing "add vcc" and "add gnd" the choosing the right component from the list of matching components. I chose the ones from "supply 1" library.

When placing the components, I had to rotate the components by right-clicking so that I can connected to the nets of the "VCC" and "GND" pins on the MCU.

When I connected them I got a warning that Eagle was going to rename the net segment into the name of the component. This is very useful when connecting the nets as nets that have the same name are connected together.

I then continued to add the rest of the nets for the MCU pins.

Afterwards I proceeded to place the rest of the components starting by the ISP pin header "AVRISPSMD",

Then I created nets for all the pins of the AVRISP and named them using the name tools to their respective pin names and also named their pins on the MCU so that they can be connected to each other.

Then started adding the resonator and naming its nets and the corresponding MCU pins.

Then I placed and connected the noise-canceling capacitor "CAP-UNPLOARIZEDFAB" and the pull-up resistor "RES-US1206FAB" for the reset pin and connected them to GND and VCC, I chose "RES-US1206FAB" to have space underneath if I wanted draw a trace there.

Afterwards, I placed an FTDI header "FTDI-SMD-HEADER" component along with its nets.

I then placed the power supply components for it and name the TX, RX pins to be connected to MCU's PA0 and PA1 respectively. I then added labels for the nets used by using "label" tool.

I then saved to the schematic and switched to the board view.

Board Design

Using the "Group" tool, I selected all the components to be moved inside the working area by clicking and dragging.

Then to actually move the group, I right clicked on the highlighted components and chose "Move: Group" then clicked on the grouped and moved them inside the working space. I moved them and left a room to the left so that I can have enough room to move components around.

By using the "move" tool, I was able to move the components apart to better visualize the connections the I moved the components to the most appropriate locations.

To better determine the proper orientation of components I used the "show" tool to visualize the connected elements starting with the "GND" and "VCC".

So I figured I needed to rotate components which I did and approximated more components to the MCU.

The I starting routing the traces by using the "route" tool. I began by trying to route the "RST" and "SCK" pads of the "AVRISP" to their pins on the MCU but found that the traces will be too close the pins pads of the MCU so canceled the operation by hitting "ESC".

I overcame this by changing the "wire bend style" by clicking on the pad to start drawing and then right click until a bending style is satisfactory.

I then realized that I made a mistake in the schematic. The "R1" resistor should be connected to the "RST" pin on the MCU not the "GND". So, I went back to the schematic and removed the "GND" component, drew a net, named it "RST" and labeled it. Then went back to the board and routed the trace to it.

Then started routing the "VCC" which was straightforward by just changing the bending style.

Then I continued from by creating a route from the "R1" pad for "VCC" to reach the upper right corner where I clicked to anchor the route to that point.

Then continued the route down to the "VCC" pad on the "FTDI Header" where it snapped so I clicked and placed the terminated the route to it

Then I started routing "VCC" from the "AVRISP" so that it get snapped to the previous route to make it continuous.

I the same manner, I routed the "GND" pad of the "Crystal" to the "GND" pad of the "AVRISP"

I continued to route the "GND" of the MCU by multiple operations of bending and anchoring.

Then continued with the "GND" of the "C1" and the "FTDI Header".

Then routed the pads of the "Crystal" to there targets in the MCU.

To better match the original "hello.echo" board I removed the traces of the crystal using the "Ripup" tool, moved the "Crystal" a bit upwards and routed the pads again.

To make room to the route for the "MOSI" I had to move the segment of the "GND" route upwards using the "Move" tool then created the route.

Then routed the "MOSI" pins

Then proceeded to create routes for th "TX" and "RX".

At this point I had a good point close to the original board.

Design Rule Checking "DRC"

To ensure that the board can fabricated correctly, it had to be checked against the design rules for the fabrication method used.

For milling with Modela, a mill-bit with the diameter of 1/46 inch (~16 mil) is used; So to ensure that the mill-bit can mill around the traces and in-between them, there should be a minimum space of the mill-bit diameter between the traces to create a successful tool-path.

Eagle has "Design Rule Checker (DRC)" that can be used for this purpose. So I loaded the DRC from The "Tools" menu.

Then in the "Clearance" tab, I wrote "16mil" to all the fields there.

Then when clicking "Check", errors are highlighted by red regions in the board view.

First one to tackle was the "GND" trace close to the "Crystal".

To fine-move traces I decided to change the sizes for the grid by clicking on the "Grid" button from the toolbar the I changed the "Size" to "16mil" and the "Alt" to "8mil".

I then was able to move the trace a little to the left by selecting the "Move" tool, clicking on the middle portion of the trace , moving to the left while holding "Alt+Shift" to fine-move and click to the desired location.

I then did the same thing to the trace of the "RST" pin but as it was connected from the middle it had be done twice for each segment.

And then moved the trace for the "SCK" pins to the right.

I then ran the "DRC" once again to check if all issues were resolved; and found that the "SCK" and "RST" were too close to the MCU pads so I fine-moved them away.

I then ran "DRC" once again to find that all issues were resolved

Adding the LED and push-button

Startd by moving components in the schematic to make room for the new components. Then added the LED resistors and push-buttons from the Fab library and named and labelled them.

And switched to the board view to find the components available at the lower left corner of the view.

Then used the "Value" tool to edit the values of the resistors

Then used the "move" tool to move the border and group move the components to make room for the new ones.

I then positioned the new components and routed them.

And then ran "DRC"

After reviewing "hello.button" board in the Input devices week, I realized that I don't need a pull-up resistor as there is an internal one in the MCU that is activated when defined as input so I removed that from the schematic and the board.

And to remove air-wires left, I clicked on the "Ratsnest" tool.

Adding the FTDI header

We ran out of the Right angle male headers that are used as FTDI headers but we ordered another SMT pin headers as a quick alternative.

I then downloaded their eagle library into the "lbr" folder in eagle and from the "Library" menu I clicked on "Use" the chose the file. Then by using the "Add" tool I was able to view the library's components.

As I wanted a component with the same pins as the FTDI header, I looked into the webpage for the products with 6 pins and found two.

And by searching for order code of them I found that they are two pad alternative layouts.

So, I added the "61000618321" part and routed the pins as they were in the FTDI header and then removed the FTDI header.

Then repositioned the component in board view and routed the pads.

Exporting the board's images

To fabricate the board, I proceeded to generate the traces and interior images. I started by clicking the "Layers" tool and selected only the "Top" and "Dimensions" layer.

I clicked "File->Export->Image" then from the dialog box I browsed to the project path and named the file "hello_echo_traces.png" and enabled "Monochrome" and set the resolution to "500 DPI".

Then I found that Eagle exports the image with extra space.

So, I opened the image in GIMP to edit it.

Using the "Rectangle Select" tool, I selected the inner border of the dimension rectangle and then right-click->Image->Crop To Selection.

To add a border, I clicked Image->Canvas Size and added 20px to width and height and the clicked on the "Center" button.

Then to make the border white, I clicked Image->Flatten Image. Then saved the image by clicking File->Overwrite hello_echo_traces.png .

Using the "Bucket Fill Tool", I blackened all the traces so that I'm left with only a white border.

I then clicked Color->Value Invert to invert the color of the border and then exported the png and named it hello_echo_interior.png

Fabricating the board

Then set the images to fabmodules and fabricated the noard and soldered the components