February 10, 2010 3:27 PM
Second article for MAKE Blog
by Shawn WallacePublished in the MAKE Blog.
Our assignment this time around was to design a circuit board, mill it, and program it in Assembly language. Each student had to become acquainted with the following work flow:

Makeda Stephenson in the Providence Fab Lab
In a Fab Lab, circuit boards are either milled from copper-clad PCB stock or cut on a vinyl cutter from copper tape with conductive adhesive. We try to avoid the etching process in order to limit the used chemistry we have to deal with. Whether etching or cutting, the first step is to choose one of the options for creating a tool path to send to the machine:
Tool paths can also be created programmatically using the cad.py script; most of the Fab Academy "hello world" scripts are available in this script form.

Tshepiso Monaheng has been following the Fab Academy curriculum from the Pretoria South Africa Fab Lab where she built all fourteen of the Hello World circuits.

If you don't have access to a milling machine like the Modela, you can download the plans for a $300 substitute from the Machines That Make project. MTM is a research project of the Center for Bits and Atoms with the goal of
creating a suite of build-your-own Fab Lab tools that can be made for just hundreds of dollars each. While the MTM project is not yet at the point of offering plug-and-play replacements for the Fab Lab tools, the prospect of a $1,000 Fab Lab seems sunny. And the milling machine works well.

Fab Academy students begin microcontroller programming using Atmel's ATtiny products. The Fab Lab inventory has a list of all the standard issue components, including ATTiny45s, 44s, and 88s. Another important component in the inventory is the 0-ohm resistor. Milled PCBs are generally one-sided because there's not a great way to register a two-sided board. The 0-ohm resistors are used as jumpers. Once you try routing a one-sided board with a lot of traces you'll see how essential they are!

While the Modela can be used to both mill a board and drill holes for through-hole components, the Fab Academy students generally use all surface-mount components. Some people seem to shy away from hand soldering surface-mount parts, but we've found that even people with no previous experience can easily solder them with a little practice.
Once a circuit board is stuffed, it can be programmed using one of several free toolchains. Most people seem to like the gavrasm assembler for creating hex files and avrdude for uploading to the microcontroller. All of the sample Assembly code for the classes works well with gavrasm, and the assembler works on Linux and Mac (see here for the Mac version). We've also used the CrossPack collection of GNU AVR tools for the Mac, which require slight reworking of the sample code to be compiled.
Unlike Arduino-compatible development boards, ATtiny-based boards do not have bootloaders or USB connectivity, so you'll need an In-System Programmer (ISP) to talk to the microcontroller and upload your compiled program. We have a AVRISP mkII which students can use to bootstrap their own FabISP programmer:

Here are a few of the projects created by Fab Academy students for the embedded programming assignment:



Next week: Moldmaking and Casting!
Puppet Master Final Project Page Updated
Shopbot Project - Modular Shelving
Diploma Completion Checklist Update - 08.14.2010
Unsuccessful Modela Troubleshooting - Partially Successful Switch to Roland Vinyl Cutter
Very Basic Beginner Assembly Tutorial III: How to Use Avrdude
Very Basic Beginner Assembly Tutorial II: How to Use Gavrasm to compile an .asm flie
Very Basic Assembly Tutorial I: Where to Get Gavrasm for the Mac OS
Complete and Working --> Modified Hello Echo + Button + FTDI v.2
Modified Hello Echo + Button + FTDI v.2 ---> In Progress
Modified Hello Echo + Button + FTDI v.1
Mantis Hardware / Software Trial Run
First 3D Scans - Modela Scan of Laughing Die and Shell
Interlocking Rings - 3D Printing
MakerBot Cupcake CNC- Assembling the Plastruder mk4 Spindle
Capacitive Sensing - PuppetMaster v.1-v.2
[Revised] Fab Academy Final Project Proposal: PuppetMaster
FabISB Round 2: Stuffing and Programming the Board
Making Programming, Connector and Serial Cables
Final Project Licencing and Distribution
Internet 0 / Zero - Milling, Stuffing & Setting Up the Boards
Spindle Assembly - Mantis Milling Machine
PuppetMaster Final Project Page
Encoded Building Materials with Computer Numerical Control Assembly
Final Project Plan: PuppetMaster Universal Remote
Final project: pinball machine themed on an unfinished opera by Dylan Thomas and Stravinsky
Electronics design and production
The Fabian: an Arduino-compatible, student-friendly board for Fab Labs
Super simple bootstrap 3-axis controller
Breadboard-friendly Attiny45 board
Using a GUI to Control Processing Output with ControlIP5, Firmata via Serial
My favorite python/GTK reference
Fab ISB - Round 1: Milling Out The Board
Completed TARDIS Cast | Working Light