Pages

GSM Modem with Arduino UNO

How to send an SMS using GSM Modem connected to Arduino UNO

Components Required:
1. Arduino UNO
2. GSM/GPRS Modem (In this I have used SIM900 Module)
3. PC/Laptop
4. Connecting wires and USB cable for connecting Arduino to PC.

Connection Diagram:
For Code Without using Library files:

For Code With Using Library files:
Because the library files for GSM Shield are defined with software serial with Rx as Pin2 and Tx as Pin3 by default, which we can change if we require in the GSM.cpp file inside the library folder.

Code:
Without using Library files:

void setup()
{
  Serial.begin(2400);  //Baud rate of the GSM/GPRS Module 
  Serial.print("\r");
  delay(1000);                  
  Serial.print("AT+CMGF=1\r");    
  delay(1000);
  Serial.print("AT+CMGS=\"+91944xxxxxx8\"\r");    //Number to which you want to send the sms
  delay(1000);
  Serial.print("Test SMS -Jay\r");   //The text of the message to be sent
  delay(1000);
  Serial.write(0x1A);
  delay(1000); 
}
void loop()
{
}


With using GSM Library file:
#include "SIM900.h"

#include <SoftwareSerial.h>

#include "sms.h"

SMSGSM sms;

void setup()
{
  Serial.begin(9600);
  Serial.println("GSM Testing to send SMS");
  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true; 
  }
  else Serial.println("\nstatus=IDLE");
 
  if(started){
    if (sms.SendSMS("+919********8", "Arduino SMS"))// number to which you want to send the sms and the sms text//
    Serial.println("\nSMS sent OK");
  }
};
void loop()
{
};


Note: 
The GSM Library can be downloaded from the link below:
https://code.google.com/p/gsm-shield-arduino/downloads/list

Video Demo of the Project:


Credits:
Marco Martines and Boris Landoni for the GSM/GPRS Library for SIM900 GSM Module










58 comments:

  1. Hello sir, my name is nitin i have looked at your video and the code. i have got few questions to ask you?
    1)Can you plz upload the pin diagram of the sim 900 gsm module, and also the connection diagram related to the arduino uno r3 board.
    2)in my project iam connecting a ultrasonic sensor hc sr04 placed on a servo motor, which is connected to a motor shield placed on uno board,so will there be a problem of overlapping of the pins if i connect a gsm module also?

    ReplyDelete
  2. You can get the pin diagram and other details of the module with user manual in the link given below:
    http://www.simcom.us/product_detail.php?cid=1&pid=37
    Scroll to the bottom of the page to get the download link.

    But I want to know weather you are using a module alone, or a ready made modem with UART converter or RS232 Converter. Then the connections will change accordingly. Let me know what product you are using, if you bought it online, comment the product link so that I can help you out.

    And about servo shield on UNO board,
    if you are not using the pins that you have defined as serial Rx and Tx for interfacing the GSM module for controlling the servo then there wont be any problem, if you write the program with two pins defined for different operations, then you will automatically get an error while compiling itself...

    ReplyDelete
  3. Actually my project is ultra sonic security system with sms notification ie; the ultrasonic sensor is rotated by the servo motor, and when an object is detected the arduino board sensds an sms to the user via the gsm module sim 900.
    Components used:
    1) ultrasonic sensor HC SR 04
    2) servo motor
    3) motor shield(not the arduino one, but prep in collg)
    4) gsm module sim 900( i want to use the module what u have used)....so plz help me out

    ReplyDelete
  4. Ok I understand your project, mail me the schematic of your motor shield that you have developed. And please understand the difference between a module and a modem... Do you have a sim card holder and pins for input supply and interfacing with arduino... Or just the module alone with which you have to connect the sim card holder and then make pin connections for level converters... From where did you buy the module or the modem... Because different modems have different pin connection...

    ReplyDelete
  5. Ok then i will email you the schematic of the motor shield iam using.
    I didn't buy any modem or module still....plz post the link from which you bought your gsm modem which has an in bulit rs 232 converter....

    ReplyDelete
  6. http://www.rhydolabz.com/index.php?main_page=product_info&products_id=1080
    This is the link of the GSM Modem that I have used in the video. Arduino Uses TTL Logic, so for direct and easy interfacing with Arduino, this is the best one, don't confuse RS232 with TTL. Google about it and get clear information about it...

    ReplyDelete
  7. i emailed you the schematic of my motor shield...plz compare with the gsm shield and tell me if any of the pins are coinciding or not.....

    ReplyDelete
  8. Hey can u just tell me the connections for the arduino and gsm modem, its not clear in your video, plz tell me what all pins on gsm modem are connected to the arduino and other pins etc....

    ReplyDelete
  9. hey can plz tell me the connections between the arduino and the sm modem, beacuse its not clear in t video, plz tell me what all pins on arduino are connected to the gsm modem and other pin connections

    ReplyDelete
  10. Which GSM modem have you bought. See the connection is simple, the Tx of GSM modem connected to Rx of Arduino and Rx of GSM modem connected to Tx of arduino. And the Vcc of GSM is connected to 5V and similary Gnd of GSM modem to Gnd of arduino. If you tell me which GSM modem you are using. I can help you out easily and clearly.

    ReplyDelete
  11. with respect to conditional statements, if you want to send the sms, you can use the code below, that will send the sms when digital pin 13 reads a HIGH value:

    Code:
    int x=13;
    void setup()
    {
    Serial.begin(2400); //Baud rate of the GSM/GPRS Module
    Serial.print("\r");
    delay(1000);
    pinMode(x, INPUT);
    }
    void loop()
    {
    if(digitalRead(x) == HIGH)
    {
    Serial.print("AT+CMGF=1\r");
    delay(1000);
    Serial.print("AT+CMGS=\"+91944xxxxxx8\"\r"); //Number to which you want to send the sms
    delay(1000);
    Serial.print("Test SMS -Jay\r"); //The text of the message to be sent
    delay(1000);
    Serial.write(0x1A);
    delay(1000);
    }
    else
    {
    Serial.print("AT\r");
    }
    }

    ReplyDelete
  12. Yes,sir. I will try that. It looks short and sweet.
    Thanks a lot.
    Subramanian.M.N.

    ReplyDelete
  13. Thank you. I will try that.
    Subramanian.M.N

    ReplyDelete
  14. I have made the following connections with arduino uno r3 board and sim 900 ttl modem from rhydolabz..............gnd of modem is connected to gnd of the arduino ,rxd of modem to txd of arduino, txd of modem to rxd of arduino...and V interface of modem to 5v pin on arduino....now i also have to connect the gnd and vin(5v) pins on gsm modem..without which no leds blink on the modem...so now should i give a external power supply to these pins....if yes...will it be ok to give 9v external power supply...

    ReplyDelete
  15. hi sir,i have interfacing code for arduino uno and adxl345 acceleromter
    and also i have interfacing code for arduino uno and gsm sim 900.i donow how to run as one full code.will u help me sir?

    ReplyDelete
  16. priyanka vijayakumar, I'll try my level best to help you.. But I haven't worked with accelerometers yet... But I'll try to help you if you say, what project you want to make, give me some description about the project that your are making by integrating accelerometers and gsm modem... Mail me the codes that you want to integrate...

    ReplyDelete
  17. Iam having a small problem when implementing the code....on the serial monitor window ie; where u receive the outputs, iam just receiving one message " GSM testing to send sms"....i have waited for about min or 2...and i didnt receive any message from the gsm modem....so what shud i do...shud i change the baud rate in the gsm.begin function...plz tell me what to do...and also after uploading the code or before uploading the code what all changes did u make..??

    ReplyDelete
  18. NRK... Did you try changing the baud rate... First tell me weather your sim card got connected to the network or not... It can be identified by the flickering of the blue light in the modem... Read the manual of the GSM Modem for more info...

    ReplyDelete
  19. Sir, Can I use arduino uno for SMS based moving message display on LED board(8x96 matrix)with 140 words scrolling capacity.

    I have fargo 20 GSM modem(RS232 interface)

    I am really very confused what to do. Which arduino to go for? also tell me If it can be done without arduino.

    most importantly what kind of LED matrix to use.

    ReplyDelete
  20. Abhishek, SMS based moving message display can be done using Arduino, but you will face some difficulties while doing it. I am also working on something similar, reading an SMS using GSM Modems has delay issues and SIM Storage problems, I am working one that, but many people are sending mails to me asking doubts in various domains, so it is a bit difficult for me to reply to everyone give detailed information from scratch. Do, some search in google, it will help you out and Fargo 20 is a RS232 interface so, you will need a RS232 to TTL Converter to interface it with Arduino. I'll get back to you on when I solve the delay problem, or when get solution from somewhere. All the best to do your project...

    ReplyDelete
  21. Hello sir,
    my project is based on ultrasonic distance measurement sensor. I programmed the arduino to find the exact range of the subject at a distance.now i have to send the exact distance of the subject (output that i get in the serial monitor) as an sms to my mobile phone.

    can you please help me out , how to do the same.can you please tell me step wise how to connect the arduino uno and the gsm module sim 900.

    ReplyDelete
  22. hello sir,
    i am doing a project to find the exact distance of a subject. here i am using the ultrasonic distance measurement sensor. i already did the coding part in the arduino to fond the distance. now the output that i get in the serial monitor ( the distance), i need to send it as an sms to my mobile.

    can you help us out how go about it.how to connect the arduino uno and gsm module sim 900?

    ReplyDelete
  23. also i have this doubt that how will i upload two codes( one is the code to find the distance using the sensor and the second code will be connecting gsm code)in the arduino uno board. very confused with the connections. please tell me step wise.. will be very grateful.

    ReplyDelete
  24. how to send the output that is displayed in the serial monitor as an sms.?

    ReplyDelete
  25. Hello sir,
    please i am doing a project on vehicle tracking system using arduino nano Atmega328 and Siemens GSM/Gprs Modem TMA- M39i which is a RS232 serial interface.
    The problem i have is that i cannot send sms message message to my phone with the arduino code i have written but when i test the Gsm modem and arduino on hyper terminal they both work ok.
    i have tried connecting a common ground from the RS232 to TTL converter to my the arduino nano and still did not get the message on my phone.
    i have been advice by my supervisor to Hard-wire the RS232 from the modem to TTL converter but i dont know how to do this, could you pls advice me how i can achieve this task thanx!

    ReplyDelete
  26. Hello sir,
    please i am doing a project on vehicle tracking system using arduino nano Atmega328 and Siemens GSM/Gprs Modem TMA- M39i which is a RS232 serial interface.
    The problem i have is that i cannot send sms message message to my phone with the arduino code i have written but when i test the Gsm modem and arduino on hyper terminal they both work ok.
    i have tried connecting a common ground from the RS232 to TTL converter to my the arduino nano and still did not get the message on my phone.
    i have been advice by my supervisor to Hard-wire the RS232 from the modem to TTL converter but i dont know how to do this, could you pls advice me how i can achieve this task thanx!

    ReplyDelete
  27. please tell me how to connect to a arduino if i am using GSM module sim 300 RS232 logic

    ReplyDelete
  28. Mcmmanuel and adrita, to connect an RS232 based GSM Modem to Arduino, you have to buy a RS232 to TTL Converter which will give you Rx and Tx which you have to connect to the Arduino...

    ReplyDelete
  29. Great thanks to you sir.... This is very helpful post for me. I am working on project of sms based farm watering system. If possible plz upload code for reading message when it receive.

    ReplyDelete
  30. Hello sir, my partner and I are trying to send an sms just like you show at your blog yet we can't. we keep geting this: GSM Testing to send SMS
    Trying to force the baud-rate to 9600

    ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp

    status=IDLE
    we use a very similar shield:http://www.ebay.com/itm/261032737732?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
    can you please check it and tell what we are doing wrong? Thanks in advance

    ReplyDelete
  31. Felipe Refender, did you try using baudrate 2400...

    ReplyDelete
  32. i have one of the similar gsm modules.. can these be used for internet access on a laptop using the data plan on the sim card?

    ReplyDelete
  33. Hi again,
    Yes I tryed it exactly as you posted above, with the libraries and baud rate at "serial begin(2400). The "Trying to force baud rate to 9600" appears about a minute after "GSM testing to send SMS" appears in my serial monitor.

    ReplyDelete
  34. Sir I have visited your blog and i have implemented the code without using library files using ardunio uno and sim 900 rs232 gsm modem. But after writing the code I am unable to send sms from gsm to any other number. Sir plz help me how to do this.

    --
    Subir Nath

    ReplyDelete
  35. how to compile gsm.cpp??because i want to change pin of TX and RX to pin 0 and 1

    ReplyDelete
  36. how to compile gsm.cpp??i want to change pin RX and TX to pin 0 and 1...

    ReplyDelete
  37. hello bro...
    can you give me the circuit for this project ?? thank you...

    ReplyDelete
  38. can you give to me the circuit for this project ?? thank you..

    ReplyDelete
  39. Hi , why do we need a RS232 converter for a ready made modem?

    ReplyDelete
  40. Hi. Can you post the sms receiving code. I tried a lot on google but not able to find it. You are my last hope. Thank you.

    ReplyDelete
  41. hi sir.. your code works like a charm.. thanks you very much..

    i have another problem.. controlling digilat pins when the gsm modem recieves a certain message.. for ex.. when the gsm modem recieve a message ("light led") the led on digital pin 4,5 will light up..

    hope you can help me.. thank you

    ReplyDelete
  42. hi sir.. your code works like a charm. thank you..

    ReplyDelete
  43. Hello Sir,
    I am using arduio uno to measure the temperature from rtd (pt 100)for the project, i want to monitor it using sms based data logger and i am going to get the gsm module that you have suggested in the video. the problem is i want to get the temp. reading automatically with in the interval of 10 min. i wandering about the program for it because i am new in c++, sir, can you please help me sir?
    Thank You.
    kiran

    ReplyDelete
  44. Will i able to control status of any pin with the help of received sms on arduino from any cell phone.

    ReplyDelete
  45. HII DEAR,
    i want to send URL with variabil for example
    "http://maps.google.co.uk/maps?hl=en&ll= AND "

    HOW CAN MAKE THIS THANK YOU

    ReplyDelete
  46. hi sir..i want to know the concept of software serial in arduino..thnkz advance.

    ReplyDelete
  47. This comment has been removed by a blog administrator.

    ReplyDelete
  48. omar talal ,

    Its simple, add the variables value with the string in the format you want and send the string as a text message...

    ReplyDelete
  49. Sir,
    I am facing problem in sending sms to my mobile no. using gsm module of simcom sim900 series using arduino uno.I have connected tx of gsm to Rx of arduino, Rx of gsm to Tx of arduino.I am taking +5v an gnd of gsm from arduino. I have connected 9V battery to gsm.Sir please suggest me a code for sending sms to my mobile no. and tell me if there is any problem in the connection..please help asap.

    ReplyDelete
    Replies
    1. Try powering your modem with a 9V, 1A power supply adapter.

      Delete
  50. Sir,
    Thanks for the help.My gsm started working.But I am facing problem in interfacing LCD (JHD 162a) with arduino uno.My connection is-
    -Pin 1(LCD) to GND.
    -Pin 2(LCD) to +5V
    -Pin 3(LCD) to potentiometer(10k)
    -Pin 4(LCD) to arduino PIN 12
    -Pin 5(LCD) to GND
    -Pin 6(LCD) to arduino PIN11
    -Pin 11(LCD) to arduino PIN5
    -Pin 12(LCD) to arduino PIN4
    -Pin 13(LCD) to arduino PIN3
    -Pin 14(LCD) to arduino PIN2
    -Pin 15(LCD) to +5v through 220 ohm resistor
    -Pin 16(LCD) to GND
    Nothing appears in the second row of my LCD and black boxes appears in the first row.Please help.

    ReplyDelete
  51. Sir,
    I am trying to send sms from my simcom gsm sim900 module. I burned the same program (without using library file) as you mentioned above.But I am able to receive any sms to my cell no..My gsm is catching signal strength properly.Sir please help me out.

    ReplyDelete
  52. Aditya Kumar Giri

    First check your LCD with Arduino with the help of Arduino with LCD tutorial available at Arduino Website...

    ReplyDelete
  53. hi sir, im using the coding without library. I am trying to send two consecutive sms's by duplicating some of the command. I want the sms to be sent to two different numbers, but it failed, it only was only sent to the first number. any idea how sir? thanks..

    ReplyDelete
  54. +Joe , try giving a delay of 5 to 10 seconds after sending the first message, then start executing the commands for the second sms...

    Code is, just add a line of delay(5000); or delay(10000); between the command sets for sending sms...

    ReplyDelete
  55. Hello Sir,
    I am Aashijit. I loved this tutorial. It was really helpful.

    ReplyDelete