This page is for an outdated product. The current GSM shield can be purchased from the Arduino online store. For information on using the current GSM shield, visit the GSM shield getting started guide.

Got a GPRS/GSM Shield in your hands and can’t wait to use it? Not interested in the project’s history? Visit the step by step tutorial and start sending/receiving SMS, voice calls, and data with your shield.

This page gives background on the Arduino GPRS/GSM Shield, which was designed to work with the Arduino Uno and Arduino Mega boards. If you’re not familiar with concepts like Internet of Things, or GPRS/GSM networks, read on.


The Arduino GPRS/GSM Shield is a physical add-on to Arduino that comes with a library to send/receive SMS and voice calls, but also to establish TCP communication over the broadly spread GPRS network.

This shield has been created as a collaboration between Arduino and Telefonica I+D (TID) [1], [2]. During the Spring 2011 TID approached Arduino with the aim of promoting their vision [3] for the Internet of Things (IoT) [4]. According to it, there will be more and more objects that will have a direct connection to the internet. Independently if that will happen over a direct connection or over a gateway, this will generate a new line of revenue for Telcos. TID is interesting in the promotion of Research and Development in the field. Collaborating with Arduino seems natural since all the work made by the project is open source and spreads freely over the internet.

The parties decided to create a shield and an Arduino library to control it. This shield will not be tied to run on Telefonica’s network, but users will be offered a special dataplan for prototyping.

About the GPRS/GSM Shield

The GPRS/GSM Shield has been created to work using the voltage provided by a computer’s USB port. It has been our aim to provide people with an easy GPRS/GSM standalone device but also with an easy way to connect any computer to a wireless data network.

Arduino GPRS/GSM Shield

This shield uses a radio module manufactured by Quectel [5]. It can be fully commanded using AT commands over a serial port. The way we have configured it is by keeping Arduino’s native serial port available and using two pins with a modified version of the NewSoftwareSerial library [6].

There are two libraries needed to make the system work:

  • NewSoftwareSerial: handles the serial communication to/from the radio module
  • GprsAtCommands: handles the series of AT commands to control the modem

Since we have modified the NewSoftwareSerial library for the purpose of these experiments, we offer both libraries bundled together with a series of examples. Please note this will overwrite any pre-existing version of any of the libraries installed.

AT commands: what are those?

Devices like modems, use the so-called AT commands to communicate in a textual form with other devices [7]. Originally designed in 1977 for devices that were communicating at the amazing speed of 300bps, this protocol seems to be aging slowly enough to still be part of a whole bunch of devices that require an easy way of commanding them.

The AT commands are called like that because they start with the string AT that stands for ATtention.

Available Software Tools

The typical toolchain for a GPRS/GSM Arduino developer consists of just the Arduino IDE. Eventually a serial port monitor different from the one offered with Arduino.

Arduino IDE

Arduino’s software is based on Processing’s IDE. The current release is version 0022. The libraries needed to program the GPRS/GSM Shield are not included as part of version 0022, so you’ll need to download them from the internet.

The Getting Started section has a link to the software and the libraries.

Other Serial Monitors

Arduino’s IDE provides you with a simple but yet functional Serial Port Monitor (also known as Serial Monitor). However when working with things like the GPRS/GSM Shield you might be interested in sending the same commands to it again and again and features like macros (sequences of strings to be sent over the port) or multiple port connectivity might be interesting for you to check the proper functionality of the system.

Attach:201107_Arduino_Serial_Port_Monitor_0022.png Δ

Serial Port Monitor for Arduino 0022

What has been developed here?

We have developed some tools and examples for you to learn how to use Arduino boards connected to a GPRS/GSM modem.

  • a library that simplifies the code for an Arduino


Fco. Javier Zorzano: Coordinated the creation of the shield, managed communication to part vendors and made research on the best hardware configuration. Javier works for Telefonica I+D (Research & Development) in Madrid

David Cuartielles: Defined the basic examples and wrote the initial version of the documentation. David is one of the co-founders of the Arduino project

Gianluca Martino: designed the GPRS/GSM Shield board. Gianluca is one of the co-founders of the Arduino project