How to Make an Arduino Shield September 02 2008

Arduino Shield 

After perfecting your Arduino project, a great way to finish it off is to create your own shield. A "shield" is an accessory board which plugs into the headers "shielding" the Arduino. I wrote this blog post back in 2008 after creating my first Arduino shield. It also happened to be my first custom PCB, so please forgive my poor layout. This tutorial assumes a basic understanding of Cadsoft Eagle.  For more information about Eagle, see the Eagle Tutorials section below.  Without further ado, here are the steps to make your own Arduino shield:

  1. Part Selection- Carefully select your parts. Ensure that your parts meet your performance and power requirements.  It is better to carefully choose your parts now, than wish you chose something else later.

  2. Prototype - Prototype your design on a breadboard.  Ensure that your functional, performance, and power requirements are being met and change your design as necessary.  Do not begin designing the PCB until you are completely satisfied with your breadboard prototype.

     
    Figure 1: Breadboard prototype.

  3. Schematic Capture
    1. Add Custom Parts to Eagle - Place all of your parts in the schematic before drawing any wires.  This allows you to identify which parts you will need to create yourself.  I found most of the parts in Eagle's built-in library, but I had to create a custom part for the Arduino.  Drawing a symbol for the Arduino was easy, but drawing the package was more difficult because I had to determine the spacing between the headers.  I easily obtained this information from the Arduino design files which I downloaded from the Arduino website.  Download my Eagle Arduino library here.

       
      Figure 2: Relative header locations.


      Figure 3: Arduino symbol and package viewed in Eagle.

    2. Connect Parts - After placing all of your parts in the schematic, carefully connect your parts together using the wire tool.  If you make a mistake on your schematic, it will ultimately show up on your PCB.

  4. PCB Layout - Place the parts on the board.  If your PCB is long enough, the PCB will rest on top of the USB connector on the Arduino.  Parts and traces should not be placed here because it could potentially short out your PCB.  I accidentally placed the DC power connector in this area. Fortunately,  I was able to insulate the USB connector with a piece of electrical tape.  Also, follow PCB layout guidelines.  I learned this the hard way when I discovered that the rapid switching of the transistors was inducing a voltage in one of the traces connected to the button.


    Figure 4: I made the mistake of placing a part above the USB connector.  I prevented the part from shorting out by placing some electrical tape on top of the USB connector.

     
    Figure 5: The shield also doesn't sit properly due to misplacement of the power adapter.

  5. PCB Fabrication - You could fabricate the PCB yourself, but I highly recommend OSH Park.  OSH Park fabricates inexpensive, production quality PCBs.  And, you don't have to generate CAM files, just upload your Eagle board file.

     
    Figure 6: Final product.
Final Thoughts 
Although I wasn't completely happy with the way my PCB turned out, I learned a lot about PCB design from this project.  I hope people can learn from my mistakes on this project and design a better Arduino shield of their own. 

Eagle Tutorials