How to Make Custom Shields for Your Microcontrollers




About: My name is Jason Poel Smith. In my free time, I am an Inventor, Maker, Hacker, Tinker, and all around Mad Genius

Microcontrollers such as Arduinos are a great way to control your custom electronics projects. But you always need some way to connect the external components to the microcontroller board. Jumper wires can work for this, but having too many loose wires running around is just asking for trouble. A good solution for this problem is to use some kind of a shield. This is a circuit board that uses a set of pins to connect directly to some (or all) of the pins on the microcontroller.

A shield is an easy way to connect all of your external components together. You can use shields to control motors, relays, LEDs, or anything else. You can even use proto shields to prototype your whole circuit directly on the board.

In this project, I am going to show you how you can make your own custom shields for your microcontroller.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Watch the Video

Here is a video walkthrough of the project.

Step 2: Tools That You Will Need

Here are the tools that you will need to make this project.


Soldering Iron and Solder

Wire Cutters

Wire Strippers

Needle Nose Pliers

Step 3: Select a Set of Header Pins

All shields are going to use a set of header pins to connect to the microcontroller. The two most common types of header pins used on shields are male break away header pins and stacking header pins.

The stacking header pins are female header pins that have extra long pins. They are used on shields when you want to be able to stack other shields on top of them. They are also used when you want to be able to make temporary connections to the board with jumper wires. I purchased mine from Adafruit. They sell a set of stacking pins that match all the pins on a standard Arduino board.

Male break away pins are used on most other kinds of shields. They are small connectors that can easily solder directly to either the top or bottom side of the circuit board.

Step 4: Select a Circuit Board

Most kinds of circuit boards will work for making a shield. The easiest kind of boards to use are double sided circuit boards. These have etching on both sides. This lets you make your connections on either side to suit whatever works best for your design. If you do not have access to double sided circuit boards, it is often possible to take two one sided circuit boards and mount them back to back. This will let you make connections on either side but it does take up a lot more space. I personally prefer to use plain perf boards because they let you make all the connections yourself.

Step 5: How to Make a Proto Shield

A proto shield is the most basic kind of shield. This is essentially just a plain circuit board with a set of attached header pins.

You just need to make one modification to the header pins before you can solder them to the circuit board. Most of the pin holes on the Arduino have the standard 0.1 inch spacing between each hole. However, this is not true of the spacing between pins 7 and 8. This spacing is slightly smaller. To compensate for this, you need to bend each of the pins slightly. By bending the pins you can make the tops match up with the standard 0.1 inch spacing on the perf board and the bottoms match up with the smaller spacing on the Arduino. For male header pins, you will want to bend the tops of each pin. For stacking header pins you will want to bend the bottoms of each pin. To ensure that everything lines up properly, I recommend inserting the pins into the Arduino before soldering.

Once your protoshield is finished, you can add parts and build any kind of circuit that you want.

Step 6: How to Make a Relay Shield

To create a basic relay shield, you start with the protoshield from the previous step. On to this, you will add the following parts:

5V Relay


NPN Transistor

1 kohm Resistor

100 ohm Resistor


Screw Terminal Connector

Jumper Wires

The relay coil is connected between the collector of the transistor and the 5V pin on the Arduino. The diode is connected in parallel with the relay coil with the cathode connected to 5V. An LED and resistor are also wired in parallel with the relay coil. This gives a visual indication of when the relay is activated. The emitter pin of the transistor is connected the GND pin on the Arduino. The base pin of the transistor is connected to one of the digital pins through a 1 kohm resistor. Finally the switch terminals of the relay are connected to the screw terminals. This gives you an easy way to make temporary connections to the relay switch.

Step 7: How to Make a Servo Shield

To create a servo shield, again start with the basic proto shield. To turn the proto shield into a servo shield all you need to add are some header pin connectors, some jumper wires and a power connector.

To drive a servo motor, you need to connect the wires according to the following color code. The red wire is connected to the positive supply voltage. The black (or brown) wire is connected to ground. The third wire will be colored white, orange, yellow, blue or black. This is the signal wire and is connected to the one of the digital pins.

For low powered servos, you can power the motor directly from the Arduino. However, the Arduino can only output a maximum of 200 mA. So if you want to control multiple servo motors, or if your motor requires a lot of current, then you will need an external power source such as a battery pack. If your servo is rated to operate at 6 volts, then the easiest solution is a battery pack made from four AA batteries. The battery pack needs to be connected to the Vin pin and the GND pin on the Arduino. This will allow the battery pack to power the Arduino as well.

Now we need to add the header pins that will connect to the servo. I connected three sets of header pins to the circuit board just below the connectors for the digital pins. Take the top set of pins and use a bead of solder to connect these pins to the adjacent digital pin connectors. The next row of pins will correspond to either the positive wire or the ground wire on the servos. Use jumper wires to connect these pins to either the Vin pin or the GND pin (whichever is appropriate). Do the same for the third pin and connect it to either the Vin pin or the GND pin.

When you are working with multiple servos, you will want the positive servo wires to be connected together and you will want the ground wires to be connected together. You can do this by connected the adjacent terminals with a bead of solder. If you find it too difficult to use the soldering iron between the header pins, you can push the end pins down. This will give you more room when soldering the center pins. You can then push the pin back up to the original height so that you can solder it in place.

You can now hook up your servo motors. Using this basic design, you can control up to 12 servo motors with a standard Arduino.

Step 8: How to Make a Motor Speed Controller Shield

The last kind of shield that we are going to make is a motor speed controller. To build this shield, you will need the following parts:

DC Motor

NPN Power Transistor


1 kohm Resistor

Jumper Wires

Battery Connector

Screw Terminal Connector

LED (optional)

1 kohm Resistor (optional)

The simplest kind of speed controller uses a Pulse Width Modulation (PWM) signal. This signal can be generated by any of the PWM pins on an Arduino. Unfortunately the digital pins can only output a maximum of 40 mA. This isn't enough to power most motors. So we need to use an external power source such as a battery pack.

When working with an external power source, you need to use a power transistor. By connecting the PWM pin on the Arduino to the base pin of a NPN transistor, you are able to control the motor with the signal from the Arduino.

In addition to the transistor, you will need to add a resistor to limit the current going to the base pin of the transistor. You will also need to add a diode in parallel with the motor. This will help to protect the Arduino from voltage spike that may occur when the motor turns off.

Optionally, you can also add an LED in parallel with the motor to give a visual indication of the speed setting. I included this in my shield.

First connect the positive wire from the battery pack connector to the circuit board adjacent to the Vin pin. Then solder the end of the wire to the Vin header pin. Connect the negative wire from the battery connector to the board adjacent to the GND pin and connect the two together.

Next mount the transistor onto the board and connect the emitter pin to the GND pin on the Arduino.

Add a jumper wire to this connect these pins to one terminal of a screw connector. Connect the base pin to one of the PWM pins on the Arduino with a 1 kohm resistor. Lastly connect the collector pin to one of the terminals of a screw connector with a jumper wire. Connect the other terminal of the screw connector back to the Vin pin.

If you want to add an LED as a visual indicator, you need to connect it between the PWM pin and GND. Take a resistor and connect one end to the same PWM pin that is connected to the base of the transistor. Connect the other side of the resistor to the anode of an LED. Connect the cathode of the LED to the GND pin.

Now your motor speed controller shield is complete. Just connect the motor to the screw connector. Use the analogWrite command to send a PWM signal to the motor and control its speed.

Soldering Challenge

Participated in the
Soldering Challenge

Summer Fun Contest

Participated in the
Summer Fun Contest

1 Person Made This Project!


  • Instrument Contest

    Instrument Contest
  • Make it Glow Contest

    Make it Glow Contest
  • STEM Contest

    STEM Contest

15 Discussions


3 years ago

wow this is informative.... :-)


4 years ago on Introduction

I now this is a kind of random question, but what kind of lighting do you have above your workbench? I tried taking pictures with mine, but the flourecsent lighting made it look bad.

1 reply

That is something that I am trying to work out myself actually. Right now I am using 13 100W equivalent CLFs with daylight color (5000K). I have them spaced all around the room so that don't make distinctive shadows.This color was the closed match that I could make to the light that comes in a nearby window. But no matter what color cfl you use, it will always look a little off.

All lights have have something called a CRI or color rendering index. This is a number that tells you how close the color is to the labeled color. Flashes are the best. Incandescents are ok and CFLs are the worst(usually below 85 on a 100 scale). But I can't use a flash because I am shooting video at the same time. I can't use incandescent lights because they make too much heat. So I am stuck with CFLs. No matter what I do the color is a little off. So before each shoot, I color balance the camera. Then I have to do a little more manual color correction in photoshop. Light room is the best program for it but I haven't decided t spend the money on that yet.

I hope this helps.

based on known prices it could be cheaper to buy them from china than to make them yourself.

even tought its a good isntructable, in case you need more power than the provided on the readytogo ones

Eric Brouwer

4 years ago on Introduction

Ideal solution. I started the same way.
To bad I can not get my hands on the headers with the long pins as used on a shield.

2 replies

4 years ago


A very informative instructable when you don't want to go to the lengths to make a custom PCB. The 7-8 pin spacing is really a major pain for using standard proto-boards though.