One aspect of Arduino that has been key to its popularity is its open-source hardware specification. This openness has allowed both community enthusiasts and the Arduino working group to produce hardware that extends the capability of this versatile platform. The main avenue for this extension is through the use of shields.
What Are Shields?
Arduino shields are modules that expand the capability of the Arduino interface. They come in many shapes and sizes, and typically fit directly on top of headers on the Arduino board, and communicate through various pins on the board. There are a number of official shields that have been specified by the Arduino team, and even more that have been created by the wider community, due to the energetic open-source philosophy of its members.
Adding a shield to your Arduino project requires a number of considerations. While some projects may require only one shield, many Arduino experimenters look to combine functionality by "stacking" shields on top of one another. This is possible using stacking headers, however be aware that issues may arise due to pin constraints, software or driver conflicts, and particularly power consumption; the Arduino draws limited power (500mA) from its AC source or USB bus.
Here are a few examples of the types of shields that are popular in the Arduino community:
A big draw of the Arduino platform is the affordance to experiment with connected devices. Connectivity shields allow for a number of options for adding your Arduino to a network. The Arduino ethernet shield has been specified by the working group, and is probably the simplest and cheapest way to connect your Arduino device. A number of wireless shields have also been specified. Early versions of the wireless shield utilized the Xbee specification, and most recently, Arduino has specified an official WiFi shield offering 802.11b/g connectivity. A number of WiFi shield options exist, some more economical than others. Most recently, Arduino has specified a GSM/GRPS shield in collaborations with Telefonica, which will allow for full mobile connectivity over the BlueVia network.
Arduino has gained popularity because of the experimentation it allows, and nothing empowers experimentation with electronics like a breadboard, a mainstay of any electronics workbench. Breadboards allow for experimentation with circuits that are reusable, and don't require soldering, making them perfect for trying things out. A number of companies produce breadboard options for Arduino; one of the best is Adafruit, who produce a number of great Arduino add-ons in addition to this prototyping shield.
While many people use Arduino as a means to connect devices to the world of computers, another great use of Arduino, is to control and move things in the physical world. This is the technology paradigm that we're moving towards, one in which increasing parts of the physical world are connected and computer controlled - an "internet of things". There are many motor shields that fit with Arduino that allow for the control of a variety of direct current (DC) motors, steppers, servos and actuators. These features can make accessible robotics a reality, and opens up a world of possibilities in connected devices.
Though Arduino is typically used for simple prototyping, there is still a big requirement for human interface with Arduino projects, and there are a number of interface shields that allow this to happen. There are touchscreen shields that allow for the type of interactions that people are rapidly growing accustomed to in mobile devices. There are also LED and LCD displays that can provide human viewable status updates or information from the Arduino device. There are also data logging shields that will record information to an SD memory card for later interpretation and visualization without constant connection to a computer.
The modular nature of the Arduino platform, and the energetic open-source community have combined to create a world of possibilities in augmenting the Arduino's functionality using shields. The examples given here were really just the tip of the iceberg, to give an idea of some of the possibilities. Hopefully they can spark some ideas for possible projects with this versatile platform. For a more comprehensive view of shields that are available for Arduino, there are a number of curated lists; the best one I've found is at shieldlist.org.