Global System for Mobile (GSM)


There are various GSM modules available in market like SIM900, SIM700, SIM800, SIM808, SIM5320 etc.SIM900A module allows users to send/receive data over GPRS, send/receive SMS and make/receive voice calls.

The GSM/GPRS module uses USART communication to communicate with microcontroller or PC terminal. AT commands are used to configure the module in different modes and to perform various functions like calling, posting data to a site, etc

SIM900A GSM modemGlobal System for Mobile communication (GSM) is digital cellular system used for mobile devices. It is an international standard for mobile which is widely used for long distance communication.




Types of GSM Modems

There are many GSM modems are available in market Simcom SIM300, SIM900 and Quectel M10. 


Points to consider while choosing GSM Modem


There are many GSM modems available in market these are SIM300, SIM900 and SIM900A, Quectel M10 is much reliable and a little bit costly. SIM300 is older modem now it is becoming absolute.

  1. Power supply requirement
  2. Available interface UART(TTL) or RS232
  3. Size
  4. Price

Power Supply Requirement


Most GSM modem require 4.2V to operate and they are compatible with 5V and 3.3V some modems are also available in 3.3V. Depending on your microcontroller requirement choose correct modem. GSM modem requires more current while sending SMS, making call and during registering on network. Remember always use 2 Amp Power supply. 

 Available interface UART(TTL) or RS232


As we are using AVR ATmega8 we prefer TTL UART Interface. Most GSM Modem have RS232 and UART (TTL) Interface.

Few GSM Modem comes with USB Interface also, when you are interfacing GSM Modem with PC use USB Interface. It eliminates need of USB to serial converter and few modems are USB powered so no need of external power supply.


Size, Price

Size and price of each modem varies based on its manufacturer use of external components.


AT Commands

The protocol used by GSM modems for setup and control is based on the AT Command set. The GSM modem specific commands are adapted to the services offered by a GSM modem such as: text messaging, calling a given Phone number, deleting memory locations etc. Since the main objective for this tutorial is to show how to send and receive text messages, only a subset of the AT-Command set needs to be implemented. The European Telecommunication Standard Institute (ETSI) GSM 07.05 defines the AT-Command interface for GSM compatible modems. In this tutorial some selected commands are chosen, and presented briefly in this section. This command subset will enable the modem to send and receive SMS messages.

The commands can be tried out by connecting a GSM modem to one of the PC’s COM ports. Use hyper terminal or any Serial Terminal Software to give AT commands to GSM Modem.




Check if serial interface and GSM modem is working.


Turn echo off, less traffic on serial line.


Display of new incoming SMS.


Selection of SMS memory.


SMS string format, how they are compressed.


Read new message from a given memory location.


Send message to a given recipient.


Delete message.


Connection of GSM Modem with Arduino Uno


Connecting GSM modem with arduino is very simple just connect RX Line of Arduino to TX Line of GSM Modem and vice versa TX of arduino to Rx of GSM modem. Make sure use TTL RX, TX lines of GSM modem.

Give 12V 2Amp power supply to GSM modem, Use of less current power supply can cause reset problem in GSM modem, give sufficient current to GSM modem.

Arduino Code for Sending SMS using GSM Modem

void setup()


    Serial.begin(9600);   //Initialise serial to communicate with GSM Modem



void loop()


     delay(10000); //Give enough time for GSM to register on Network

     SendSMS();    //Send one SMS

     while(1);     //Wait forever



void SendSMS()


  Serial.println(“AT+CMGF=1”);    //To send SMS in Text Mode


  Serial.println(“AT+CMGS=\”+9198xxxxxxxx\”\r”); //Change to destination phone number


  Serial.println(“Hello from GSM Modem!”);//the content of the message


  Serial.println((char)26); //the stopping character Ctrl+Z





Code is kept very simple we are using we are using few AT commands to send the SMS. every AT command ends with Carrige return. Always use Serial.println. 

  1. AT+CMGF=1 set the GSM modem in text mode.
  2. AT+CMGS=”+9198xxxxxxxx”Send SMS to this number
  3. Message text
  4. Message closing character Control+Z. (char(26))

Note: While Programming Remove GSM Modem serial lines. You can use software serial also.

Testing of Code

  1. Insert the sim card.
  2. Upload Code with removed RX,TX lines.
  3. After uploading power off and connect RX,TX Lines.
  4. Turn on Both Arduino and GSM Modem.
  5. Wait for few seconds and see the blinking of network LED slows down. It means it is registered on network.
  6. You will receive SMS after 15 Seconds. If it takes too long to register on network in crease the 10 Second delay to larger value.



  • Used to send Message
  • Also useful for calling purpose
  • Very useful for location sending along with GPS