The best tools to make your project dreams come true

Login or Signup
USD

3/23/2018 | By Maker.io Staff

How to Choose an Arduino Shield

The Arduino is an immensely popular microcontroller that allows designers to quickly prototype projects. It provides many GPIO and peripherals, and it’s easily programmable. In this how-to, we will learn how to choose an Arduino shield.

Things Are Never Enough!

The Arduino series of microcontrollers usually have many IO connectors and peripherals, but, unfortunately, this may not be enough. Imagine, for example, that an Arduino Uno user wishes to integrate Wi-Fi capabilities into their project. They could purchase a Wi-Fi module (such as the ESP8266), connect it to the specific GPIO pins it requires, and then program the Uno to use the module. However, the designers of the Arduino thought ahead! They specifically designed their boards so that they could stack with other boards that have extra features.

The Arduino Shield

So, now that we know that Arduino shields are awesome, we still don’t know what they look like or how we should go about choosing one. First, you MUST identify your board! The name Arduino covers a whole range of development boards, and, because of the variety, some shields may not be compatible with all Arduinos.

Once you have identified the type of Arduino you have, you then need to check the following:

  • Pin-out of the shield
  • Operating voltage of the shield
  • Libraries for the shield

Pinout

Just about every electronic device has something called a pinout; this essentially refers to where the input/output pins are positioned, as well as their function. It is imperative that any shield you use has the same pinout as the Arduino you are using. There are many ways you can do this, and the list below shows the different methods you can use (ordered in importance).

  1. Check the datasheet! The datasheet will tell you which Arduino boards it works with.
  2. Research the shield online and what others have said about it.
  3. Look at images of the shield and see its pins are in similar locations to the Arduino board.
  4. Physically take the shield and place it on top of the board to see if the pins line up.

Operating Voltage

While a shield may look compatible due to the pinout, it may still be incompatible due to voltage levels. Some Arduino boards use 3.3V, while others may use 5V. Because of this, your shield could either damage the Arduino or be damaged by it. You can check the voltage levels by looking at the shield’s datasheet, which should include information such as supply voltage, I/O voltage, current draw, and power dissipation. Most shields are designed with the Arduino Uno in mind, which means they are most likely to operate at 5V. ARM-based Arduino (such as the Due) operate at 3.3V.

Libraries

Just because a shield is both pin compatible and voltage compatible with an Arduino devboard does not mean the libraries for that shield will work. This may occur because many libraries do not use the Arduino library for determining I/O pin numbers and use of hardware. Instead, the libraries directly access the hardware via registers that are unique to AVR or ARM cores. While this results in a performance boost, it also means that a library written for the Uno may not work on the Due (because one is an AVR core, while the other is an ARM core, and they are completely different architectures).

Finding Your Shield

So, now that you understand what technical details to look for when choosing a shield for your project, it’s now time to actually pick one! To find the shield for you, decide why you need a shield and what it needs to do. For example, the Uno does not have any type of internet capability, so something like a Wi-Fi circuit or Ethernet circuit would be highly ideal. There are literally thousands of shields. Here at Digi-Key we are here to help you navigate through that sea of confusion. Here are our Top 10 favorite shields:

For a complete list of Arduino shields available at Digi-Key click here.

Going back to my example, I want an ethernet shield or something that can give me internet capabilities. A simple search on ShieldList.org reveals multiple results, as seen in the image below.

Image of Arduino Shield List

One result that looks promising is the Arduino Ethernet Shield v5.0. Click on the link for more information, including which pins the shield will take control of, details about the main IC (W5100), and other specs that may otherwise not be entirely obvious.

Image of Arduino Ethernet Shield v5.0 Diagram

Now that we know what board to look for, we can now search for one from Digi-Key! Going to the Digi-Key website and searching for an “Arduino Ethernet shield” returns a couple of results. While the Arduino V5.0 Ethernet Shield is not listed, a more modern version is (based on the W5500), and a datasheet is also available for the shield (this is very important).

Image of Arduino Ethernet Shield

Opening the datasheet link takes us to wiki.seed.cc, which describes the module, lists all pin information on the shield, provides a tutorial with code examples, and also links to downloads, including an SD library and a library specifically for the W5500 IC!

Image of W5500 Ethernet Shield v1.0

The information provided on the seed website indicates that this module works with the Arduino Uno, and so, it is a suitable option for my internet-enabled Arduino!

Summary

The bare number of shields that are available for Arduino devboards is staggering, and all of these many shields can stack on top of each other. While shields are not required for any project (you could feasibly customize a setup with jumper wires or even your own shield), they can be incredibly helpful. They could be the key to getting your project up and running!