Homemade Hardware - Week 3: Board design and fabrication

Designing and fabricating a PCB using Eagle CAD and the Othermill:

Having completed several schematic designs in Eagle, it came time to design and fabricate an actual board.  With the aim of making several embedded devices, or standalone projects, I felt a good place to start was creating a minimalist arduino uno board using the ATmega328.  The schematic below shows the design of the board:

Minimalist Arduino Uno Schematic

I wanted to be able to boatload the IC directly on the board, so I included the necessary header pins for using an FTDI programmer.  I also included several Analog and Digital IO pins, to make provision for several sensors.  The image below shows the board design, along with the reference for the ATmega's pins from the datasheet.

Eagle Board Design with ATmega328p pin reference

The board comprises a crystal, a collection of capacitors, resistors and an LM7805 voltage regulator. Once the board design was complete, I setup the Othermill according to the procedures outlined in class.  The images below outline the steps in this process:

Before soldering on the components, I tested all the connections using my multimeter, there were several small traces that the Othermill failed to cut, so I had to scrape them off with a razor blade. I soldered on all the components and attempted to bootload a new ATmega chip.  The Arduino IDE failed to recognise the device.  Unsure of whether or not one of the serial pins was wired incorrectly, I bootloaded the chip using a separate Arduino and uploaded a simple blink sketch before transferring it back to my new board.  Unfortunately the blink sketch doesn't work with the board either.  Using a multimeter, I get no potential difference reading across the LED, which means the error must be in my wiring, as I've tested all of the soldered connections.

Moving forward:

My first mistake was not putting an indicator LED on the board itself, this will definitely have to be added to the board moving forward.  I need to complete the debugging process in order to figure out where the problem lies.  To do this, I will start by breadboarding the circuit and systematically test the system pin by pin.