Thank you for visiting → Compete For Nothing.com ← If you find anything useful leave me a comment and share. Interested in Arduino, C#, Unity3D, Game Creation, VB.NET, learning and most important of all Sharing!.
Close Notification
Open Notification

Arduino UNO Icomsat v1.1 SIM900 GSM Module Send SMS

Arduino UNO Icomsat v1.1 SIM900 GSM Module Send SMS

Send SMS from an Arduino UNO.

Using the Icomsat v1.1 SIM900 GMS Module is easy to send SMS using the arduino with this great library, I tried heaps of libraries without luck until I found this one.

Library created by:
Marco Martines
http://code.google.com/p/gsm-shield-arduino/issues/

The phone number needs the country code included into it, e.g +6148123123123
This is the important part, the number and message.

(sms.SendSMS("+6148123123123", "SMS from Arduino"))

Now the full code to send SMS

REMEMBER – Remove Iconsat from Arduino BEFORE uploading sketch otherwise it wont work.

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
boolean started=false;

void setup() 
{
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");

  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");
  
  if(started){
    if (sms.SendSMS("+6148123123123", "SMS from Arduino"))
      Serial.println("\nSMS sent OK");
  }

};


void loop() 
{

}

112 Comments

  1. Tiago Nobre · October 23, 2012 Reply

    Hello. I am using a Arduino Mega 2560 R3 with an IcomSat V1.1 Shield and i cannot get it to communicate to serial port. I tried your example with the library in your post and the sitatuations remains the same (answers IDLE).
    When i follow the instructions in the instructions folder (UNO to Mega), i am unable to compiie.
    Seems that the library is not working properly, do you have any tips?
    Thanks in advance,
    Tiago

    • warren · October 23, 2012 Reply

      Did you make sure that you powered the icomsat with external power supply, the arduino cannot supply enough current too boot the GSM module. Let me know how you go.

      • Praveen · March 2, 2013 Reply

        Hi Warren,

        I am trying to connect the Uno with Icomsat v1.1. I tried with the libararies you provided. All is fine. I changed the parameters. But when I run serial monitor, it says :

        GSM Shield testing.
        ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

        status=IDLE

        I connected the Icomsat as a shield to the Uno. Do I need any kind of external power supply?

        Thank you very much.

    • warren · October 23, 2012 Reply

      1)
      Open GSM.h and comment-decomment
      //#define UNO
      #define MEGA

      2)
      Open HWSerial.h comment-decomment
      //#define UNO
      #define MEGA

      3)
      Open GSM.cpp and comment-decomment

      //#define _GSM_TXPIN_ 4
      //#define _GSM_RXPIN_ 5
      #define _GSM_TXPIN_ 2
      #define _GSM_RXPIN_ 3

      4)
      Comment with you’re real email and i will email
      my edited library if you want.

      • Tiago Nobre · October 24, 2012 Reply

        I’m feeding the arduino with a power 12V 2A and early in the IcomSat button you SIM900-POWER. The bibioteca when I make changes gives error while compiling, I do not understand why it does not work, you can send me one to test? Thank you.

        • warren · October 24, 2012 Reply

          I have emailed you the library and sketch, two things I forgot to mention are

          1)
          Remove the GSM Shield BEFORE uploading sketch.

          2)
          Have a close look at the board image above and set your jumpers to the same as mine.

          let me know how you go.

        • warren · October 24, 2012 Reply

          Where did you buy this GSM shield from? I suspect that it requires a custom library, can you email where you bought it from please.

        • warren · October 24, 2012 Reply

          Also i found this on arduino.cc

          Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

          This might be your problem, fingers crossed.

      • jaimon joseph · December 3, 2013 Reply

        Thank you warren,i was trying to connect arduino mega and sim900 gsm,but i couldnt do it by softserial but now it is working well

  2. Aaron Delia · October 27, 2012 Reply

    i had the same issue, the only way i managed to make it work is, to use the official library, from icomsat website, DO NOT use newsoft serial with the mega as it is limited and will not work well, any way you have 4 serial ports on the mega so why not spare 1 for the shield !!, i have connected pin 19 of the mega to the rx of the shield and pin 18 of the mega to the tx of the shield,

    Open the file gsm shield and make the replacements of the newsoft serial to serial1.

    here is a copy of my modified library that is working !!

    /*
    GSM.h – library for the GSM Playground – GSM Shield for Arduino
    Released under the Creative Commons Attribution-Share Alike 3.0 License
    http://www.creativecommons.org/licenses/by-sa/3.0/
    http://www.hwkitchen.com
    */
    #ifndef __GSM_Shield
    #define __GSM_Shield

    #if defined(ARDUINO) && ARDUINO >= 100
    #include “Arduino.h”
    #else
    #include “WProgram.h”
    #endif

    //#include “WProgram.h”
    //#include “NewSoftSerial.h”

    #define GSM_LIB_VERSION 101 // library version X.YY (e.g. 1.00)

    // if defined – debug print is enabled with possibility to print out
    // debug texts to the terminal program
    //#define DEBUG_PRINT

    // if defined – debug print is enabled with possibility to print out
    // the data recived from gsm module
    //#define DEBUG_GSMRX

    // if defined – debug LED is enabled, otherwise debug LED is disabled
    //#define DEBUG_LED_ENABLED

    // if defined – SMSs are not send(are finished by the character 0x1b
    // which causes that SMS are not send)
    // by this way it is possible to develop program without paying for the SMSs
    //#define DEBUG_SMS_ENABLED

    // pins definition
    #define GSM_ON 9 // connect GSM Module turn ON to pin 77
    #define GSM_RESET 8 // connect GSM Module RESET to pin 35
    //#define DTMF_OUTPUT_ENABLE 71 // connect DTMF Output Enable not used
    #define DTMF_DATA_VALID 14 // connect DTMF Data Valid to pin 14
    #define DTMF_DATA0 72 // connect DTMF Data0 to pin 72
    #define DTMF_DATA1 73 // connect DTMF Data1 to pin 73
    #define DTMF_DATA2 74 // connect DTMF Data2 to pin 74
    #define DTMF_DATA3 75 // connect DTMF Data3 to pin 75

    // length for the internal communication buffer
    #define COMM_BUF_LEN 200

    // some constants for the IsRxFinished() method
    #define RX_NOT_STARTED 0
    #define RX_ALREADY_STARTED 1

    // some constants for the InitParam() method
    #define PARAM_SET_0 0
    #define PARAM_SET_1 1

    // DTMF signal is NOT valid
    //#define DTMF_NOT_VALID 0×10

    // status bits definition
    #define STATUS_NONE 0
    #define STATUS_INITIALIZED 1
    #define STATUS_REGISTERED 2
    #define STATUS_USER_BUTTON_ENABLE 4

    // SMS type
    // use by method IsSMSPresent()
    enum sms_type_enum
    {
    SMS_UNREAD,
    SMS_READ,
    SMS_ALL,

    SMS_LAST_ITEM
    };

    enum comm_line_status_enum
    {
    // CLS like CommunicationLineStatus
    CLS_FREE, // line is free – not used by the communication and can be used
    CLS_ATCMD, // line is used by AT commands, includes also time for response
    CLS_DATA, // for the future – line is used in the CSD or GPRS communication
    CLS_LAST_ITEM
    };

    enum rx_state_enum
    {
    RX_NOT_FINISHED = 0, // not finished yet
    RX_FINISHED, // finished, some character was received
    RX_FINISHED_STR_RECV, // finished and expected string received
    RX_FINISHED_STR_NOT_RECV, // finished, but expected string not received
    RX_TMOUT_ERR, // finished, no character received
    // initial communication tmout occurred
    RX_LAST_ITEM
    };

    enum at_resp_enum
    {
    AT_RESP_ERR_NO_RESP = -1, // nothing received
    AT_RESP_ERR_DIF_RESP = 0, // response_string is different from the response
    AT_RESP_OK = 1, // response_string was included in the response

    AT_RESP_LAST_ITEM
    };

    enum registration_ret_val_enum
    {
    REG_NOT_REGISTERED = 0,
    REG_REGISTERED,
    REG_NO_RESPONSE,
    REG_COMM_LINE_BUSY,

    REG_LAST_ITEM
    };

    enum call_ret_val_enum
    {
    CALL_NONE = 0,
    CALL_INCOM_VOICE,
    CALL_ACTIVE_VOICE,
    CALL_INCOM_VOICE_AUTH,
    CALL_INCOM_VOICE_NOT_AUTH,
    CALL_INCOM_DATA_AUTH,
    CALL_INCOM_DATA_NOT_AUTH,
    CALL_ACTIVE_DATA,
    CALL_OTHERS,
    CALL_NO_RESPONSE,
    CALL_COMM_LINE_BUSY,

    CALL_LAST_ITEM
    };

    enum getsms_ret_val_enum
    {
    GETSMS_NO_SMS = 0,
    GETSMS_UNREAD_SMS,
    GETSMS_READ_SMS,
    GETSMS_OTHER_SMS,

    GETSMS_NOT_AUTH_SMS,
    GETSMS_AUTH_SMS,

    GETSMS_LAST_ITEM
    };

    class GSM
    {
    public:
    byte comm_buf[COMM_BUF_LEN+1]; // communication buffer +1 for 0×00 termination

    // library version
    int LibVer(void);
    // constructor
    GSM(void);
    // serial line initialization
    //void InitSerLine(long baud_rate);
    // set comm. line status
    inline void SetCommLineStatus(byte new_status) {comm_line_status = new_status;};
    // get comm. line status
    inline byte GetCommLineStatus(void) {return comm_line_status;};

    // turns on GSM module
    void TurnOn(long baud_rate);
    // sends some initialization parameters
    void InitParam (byte group);
    // enables DTMF decoder
    //void EnableDTMF(void);
    // gets DTMF value
    //byte GetDTMFSignal(void);
    // turns off/on the speaker
    void SetSpeaker(byte off_on);
    // checks if module is registered in the GSM network
    // must be called regularly
    byte CheckRegistration(void);
    // returns registration state
    byte IsRegistered(void);
    // returns whether complete initialization was made
    byte IsInitialized(void);
    // finds out the status of call
    byte CallStatus(void);
    byte CallStatusWithAuth(char *phone_number,
    byte first_authorized_pos, byte last_authorized_pos);
    // picks up an incoming call
    void PickUp(void);
    // hangs up an incomming call
    void HangUp(void);
    // calls the specific number
    void Call(char *number_string);
    // makes a call to the number stored at the specified SIM position
    void Call(int sim_position);

    // Speaker volume methods – set, increase, decrease
    char SetSpeakerVolume(byte speaker_volume);
    char IncSpeakerVolume(void);
    char DecSpeakerVolume(void);

    // sends DTMF signal
    char SendDTMFSignal(byte dtmf_tone);

    // User button methods
    inline byte IsUserButtonEnable(void) {return (module_status & STATUS_USER_BUTTON_ENABLE);};
    inline void DisableUserButton(void) {module_status &= ~STATUS_USER_BUTTON_ENABLE;};
    inline void EnableUserButton(void) {module_status |= STATUS_USER_BUTTON_ENABLE;};
    byte IsUserButtonPushed(void);

    // SMS’s methods
    char SendSMS(char *number_str, char *message_str);
    char SendSMS(byte sim_phonebook_position, char *message_str);
    char IsSMSPresent(byte required_status);
    char GetSMS(byte position, char *phone_number, char *SMS_text, byte max_SMS_len);
    char GetAuthorizedSMS(byte position, char *phone_number, char *SMS_text, byte max_SMS_len,
    byte first_authorized_pos, byte last_authorized_pos);
    char DeleteSMS(byte position);

    // Phonebook’s methods
    char GetPhoneNumber(byte position, char *phone_number);
    char WritePhoneNumber(byte position, char *phone_number);
    char DelPhoneNumber(byte position);
    char ComparePhoneNumber(byte position, char *phone_number);

    // routines regarding communication with the GSM module
    void RxInit(uint16_t start_comm_tmout, uint16_t max_interchar_tmout);
    byte IsRxFinished(void);
    byte IsStringReceived(char const *compare_string);
    byte WaitResp(uint16_t start_comm_tmout, uint16_t max_interchar_tmout);
    byte WaitResp(uint16_t start_comm_tmout, uint16_t max_interchar_tmout,
    char const *expected_resp_string);
    char SendATCmdWaitResp(char const *AT_cmd_string,
    uint16_t start_comm_tmout, uint16_t max_interchar_tmout,
    char const *response_string,
    byte no_of_attempts);

    // new routine TDGINO by Boris

    //echo
    void Echo(byte state);

    // debug methods
    #ifdef DEBUG_LED_ENABLED
    void BlinkDebugLED (byte num_of_blink);
    #endif

    #ifdef DEBUG_PRINT
    void DebugPrint(const char *string_to_print, byte last_debug_print);
    void DebugPrint(int number_to_print, byte last_debug_print);
    #endif

    private:
    byte comm_line_status;

    // global status – bits are used for representation of states
    byte module_status;

    // variables connected with communication buffer

    byte *p_comm_buf; // pointer to the communication buffer
    byte comm_buf_len; // num. of characters in the buffer
    byte rx_state; // internal state of rx state machine
    uint16_t start_reception_tmout; // max tmout for starting reception
    uint16_t interchar_tmout; // previous time in msec.
    unsigned long prev_time; // previous time in msec.

    // last value of speaker volume
    byte last_speaker_volume;

    char InitSMSMemory(void);
    };
    #endif

  3. Vorms · November 14, 2012 Reply

    Hello,
    I have some problem with the beta library for the icomsat v1.1
    I discover that pins for GSM_ON and GSM_REST are not initialized as OUTPUT with the pineMode function.
    I add it and i am now able to switch on and of the SIM 900 module.

    For now, the example furnished inside the folder of the library send SMS sent, I never receive the SMS. I just know the connection with the SIM900 is OK. I want to work inside the library and I activated the compiler switch “DEBUG_PRINT”. With this variable defined, the library doesn’t compile any more because the method DebugPrint is not implemented yet.
    In fact, can you explain me what is the argument last_debug_print ?
    If i understand what is it, I can try to implement it by myself.
    Can you send me the core of the DebugPrint methode or a new version of the library (I have the beta version 3).

    Many thanks for your help

    Thierry Vorms

    • Warren · November 14, 2012 Reply

      I dont really follow what your asking, I have’nt looked at the Debug_PRINT code… but the data sheet is pretty useless iteadstudio.com/store/images/produce/Shield/IComSat/icomsat_DS1.2.pdf . I will have a read of the library in a few days and see if I can make sense from it.

  4. nia · November 21, 2012 Reply

    Hello..I have the problem to send SMS using Arduino Uno R3 and Icomsat V1.1 . You can email me your edited library?
    Thanks…

  5. nia · November 21, 2012 Reply

    Hello..I have the problem to send SMS using Arduino Uno R3 and Icomsat V1.1 .
    You can email me your edited library?
    Thanks.

  6. mug · November 21, 2012 Reply

    please help. am getting

    DB:NO RESP

    with icomsat v1.1 and mega 2560

  7. Warrem · November 21, 2012 Reply

    Here is the link for the library for the Arduino MEGA 2560competefornothing.com/?attachment_id=613
    The instructions are in the file also…give it a go and let me know.

  8. kle0ps · December 4, 2012 Reply

    Hello warren
    can you sent me an email with scetch and library please
    Thank you

    • warren · December 8, 2012 Reply

      Hi mate I actually don’t have the library and sketch with me and I won’t get back home for about 10 days. But the whole sketch is posted into this post and under the images there is a link to the library. Come back and let us know when you get it going.

  9. maaz · December 15, 2012 Reply

    hi warren, thanks for great tutorial.. hopefully you can make a tutorial about Real-Time GSM GPS Tracker via google maps using Arduino Uno+Icomsat v1.1 SIM900 GSM+GPS shield iteadstudio(or SKM53 GPS)..

  10. neasmirni_2 · January 6, 2013 Reply

    ffds

  11. neasmirni_2 · January 6, 2013 Reply

    good evening my dear friends,
    i need your HELP, trying to communicate arduino MEGA 2560 – icomsat 1.1.
    I will prescribe the steps one by one like a revision, in order to be clear every step.
    STEP_1:
    Procedure:
    • connect MEGA2560 to pc with usb cord
    • upload the scetch of this article
    observations
    • only the MEGA and NOT the icomsat must be connected
    • the only power supply of the MEGA is the USB cord of the connection with the pc
    questions
    - are the observations right
    - is the procedure right

    STEP_2:
    Procedure:
    • connect MEGA2560 to icomsat (as the first picture of this article)
    observations
    • MEGA is still connected to the pc via usb cord
    • To my arduino software by the time I connect icomsat to MEGA the COM port my pc and MEGA communicate (COM24) evanished
    questions
    - are the observations right
    - is the procedure right
    - we must have power supply to icomsat?
    - Because COM24 is evanisthed is there any other way for me to communicate serial with MEGA
    - How can I understand if icomsat is turned on???
    - How it is possible to turn on icomsat without using the four digit password of SIM card??

    That’s for now. I understand that for you who Know all this, are tiring and boring these questions, but believe me for us is too too important Knowledge. Thanks anyway.

  12. Albarra Harahap · January 8, 2013 Reply

    Sir. in my project, I want to use this shield as the sender of the message containing the data from the sensor. so, I want to ask you a few questions via email. Can I? thanks you before. :)

  13. red · January 12, 2013 Reply

    hi, could u please tell me how to find the caller number?

  14. red · January 12, 2013 Reply

    hi, could u please tell me how to find the caller number? i dont know how to. thanks in advance

  15. Jorge · January 15, 2013 Reply

    Warren
    First of all let me thank you for such a great work making tutorials for all of us who want to learn and use Arduino.
    I am new to arduino and new to GSM/GPRS world. I have purchased a IComSat V1.1 and a Arduino UNO and want to use the shield to send serial data collected by the Arduino to a website so that information can be processed there (basically, I am sensing the temperature in different areas of a home and want to send them to a server for further analysis).
    I see your example of the SMS and I think that perhaps with some changes I could make the SIM900 work sending data to the internet via GPRS.
    Now the question is: How do I communicate with the SIM900 to set it up with the appropriate AT commands?
    I know that this might look as a silly question, but honestly I don’t know how to communicate physically with the SIM900.
    Should I use the USB connection in the Arduino? Do you, or anybody, have any idea how to make the connection between my PC and the IComSat for the programming? Is there any special application that I should use?
    Thank you in advance for any comment or help.
    Best regards
    Jorge

    • warren · January 15, 2013 Reply

      Hi Jorge,
      sending DATA via GPRS can be done apparently but I was unable to understand how so I gave up :( .

      What distance are you planning on being away from you ARDUINO project?
      would a APC220 suit your needs? I got about 650 meters using stock antenna(from inside my house, would easy get 1 kilometer los). Also APC230 is meant to get about 1800 meters.

  16. Kelidel · February 15, 2013 Reply

    Hi Warren,

    I already have my mega holding a shield on port 18 and 19, is there anyone who has got the softwareserial to work with the sim900 icomsat. And if yes, which library where they using.

    Thank you.

  17. Thaslim · February 16, 2013 Reply

    I AM NEW TO ARDUINO. I AM USING ARDUINO MEGA AND ICOMSAT V1.1. I TRIED TO SEND SMS. BUT THE DEVICS IS NOT COMMUNICATING. ANYONE PLEASE TELL ME THE JUMPER SETTING FOR HARDWARE SERIAL COMMUNICATION. I RAED THE DATASHEET. BUT I DON’T UNDERSTAND. AND TELL ME HOW TO CONNECT EXTERNAL POWER SUPPLY…I MEAN TO WHICH PIN? DBG_PORT POWER KEY?

  18. Hariharan · February 20, 2013 Reply

    I have three doubts:
    1. How to read an sms and use it as an command to make an led glow, can you give me the code for that.

    2. This code for sending sms works perfect but, it keeps on sending sms continuously, how should I modify the code to send the sms only once when an event occurs, say, when analog read value goes above the preset value.

    3. How should I modify the code to send the analog read value or some floating point variable’s value.

    • jaimon joseph · December 7, 2013 Reply

      just try this code to stop continuous sms,here i have used statechange detection for stop continuous sms

      #include
      //#define _GSM_TXPIN_ 7
      //#define _GSM_RXPIN_ 8

      #include “SIM900.h”

      //If not used, is better to exclude the HTTP library,
      //for RAM saving.
      //If your sketch reboots itself proprably you have finished,
      //your memory available.
      //#include “inetGSM.h”

      //If you want to use the Arduino functions to manage SMS, uncomment the lines below.
      #include “sms.h”
      SMSGSM sms;

      //To change pins for Software Serial, use the two lines in GSM.cpp.

      //GSM Shield for Arduino
      //www.open-electronics.org
      //this code is based on the example of Arduino Labs.

      //Simple sketch to send and receive SMS.

      int numdata;
      boolean started=false;
      char smsbuffer[160];
      char n[20];
      int button22PushCounter = 0; // counter for the number of button presses
      int buttonState22 = 0; // current state of the button1
      int lastButtonState22 = 0; // previous state of the button1
      int button23PushCounter = 0; // counter for the number of button presses
      int buttonState23 = 0; // current state of the button2
      int lastButtonState23 = 0; // previous state of the button2
      int button24PushCounter = 0; // counter for the number of button presses
      int buttonState24 = 0; // current state of the button1
      int lastButtonState24 = 0; // previous state of the button1
      int button25PushCounter = 0; // counter for the number of button presses
      int buttonState25 = 0; // current state of the button2
      int lastButtonState25 = 0;
      int button26PushCounter = 0; // counter for the number of button presses
      int buttonState26 = 0; // current state of the button1
      int lastButtonState26 = 0; // previous state of the button1
      int button27PushCounter = 0; // counter for the number of button presses
      int buttonState27 = 0; // current state of the button2
      int lastButtonState27 = 0;
      int button28PushCounter = 0; // counter for the number of button presses
      int buttonState28 = 0; // current state of the button1
      int lastButtonState28 = 0; // previous state of the button1
      int button29PushCounter = 0; // counter for the number of button presses
      int buttonState29 = 0; // current state of the button2
      int lastButtonState29 = 0;
      int button30PushCounter = 0; // counter for the number of button presses
      int buttonState30 = 0; // current state of the button1
      int lastButtonState30 = 0; // previous state of the button1
      int set22;
      void setup()
      {
      pinMode(22, INPUT);
      pinMode(23, INPUT);
      pinMode(24, INPUT);
      pinMode(25, INPUT);
      pinMode(26, INPUT);
      pinMode(27, INPUT);
      pinMode(28, INPUT);
      pinMode(29, INPUT);
      pinMode(30, INPUT);
      pinMode(31, INPUT);
      pinMode(12, OUTPUT);
      //Serial connection.
      Serial.begin(9600);
      Serial.println(“GSM Shield testing.”);
      //Start configuration of shield with baudrate.
      //For http uses is raccomanded to use 4800 2400or slower.
      if (gsm.begin(2400)){
      Serial.println(“\nstatus=READY”);
      started=true;
      }
      else Serial.println(“\nstatus=IDLE”);

      };

      void loop()
      {
      while(started=true)
      {
      buttonState22 = digitalRead(22);
      buttonState23 = digitalRead(23);
      buttonState24 = digitalRead(24);
      buttonState25 = digitalRead(25);
      buttonState26 = digitalRead(26);
      buttonState27 = digitalRead(27);
      buttonState28 = digitalRead(28);
      buttonState29 = digitalRead(29);
      buttonState30 = digitalRead(30);
      // compare the buttonState to its previous state
      if (buttonState22 != lastButtonState22) {
      // if the state has changed, increment the counter
      if (buttonState22 == HIGH) {

      // if the current state is HIGH then the button
      // wend from off to on:
      button22PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button22 pushes: “);
      Serial.println(button22PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”R900″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent R900 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }

      }
      lastButtonState22 = buttonState22;
      // compare the buttonState to its previous state
      if (buttonState23 != lastButtonState23) {
      // if the state has changed, increment the counter
      if (buttonState23 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button23PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button23 pushes: “);
      Serial.println(button23PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”R500″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent R500 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState23 = buttonState23;
      // compare the buttonState to its previous state
      if (buttonState24 != lastButtonState24) {
      // if the state has changed, increment the counter
      if (buttonState24 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button24PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button24 pushes: “);
      Serial.println(button24PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”R100″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent R100 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState24 = buttonState24;
      // compare the buttonState to its previous state
      if (buttonState25 != lastButtonState25) {
      // if the state has changed, increment the counter
      if (buttonState25 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button25PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button25 pushes: “);
      Serial.println(button25PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”R50″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent R50 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState25 = buttonState25;
      // compare the buttonState to its previous state
      if (buttonState26 != lastButtonState26) {
      // if the state has changed, increment the counter
      if (buttonState26 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button26PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button26 pushes: “);
      Serial.println(button26PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”OV SC”))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent OV SC OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState26 = buttonState26;
      // compare the buttonState to its previous state
      if (buttonState27 != lastButtonState27) {
      // if the state has changed, increment the counter
      if (buttonState27 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button27PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button27 pushes: “);
      Serial.println(button27PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”PO 0″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent PO 0 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState27 = buttonState27;
      // compare the buttonState to its previous state
      if (buttonState28 != lastButtonState28) {
      // if the state has changed, increment the counter
      if (buttonState28 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button28PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button28 pushes: “);
      Serial.println(button28PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”PO 1″))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent PO 1 OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState28 = buttonState28;
      // compare the buttonState to its previous state
      if (buttonState29 != lastButtonState29) {
      // if the state has changed, increment the counter
      if (buttonState29 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button29PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button29 pushes: “);
      Serial.println(button29PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”DOL”))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent DOL OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }
      lastButtonState29 = buttonState29;
      // compare the buttonState to its previous state
      if (buttonState30 != lastButtonState30) {
      // if the state has changed, increment the counter
      if (buttonState30 == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      button30PushCounter++;
      Serial.println(“on”);
      Serial.print(“number of button30 pushes: “);
      Serial.println(button30PushCounter);

      if(started){
      if (sms.SendSMS(“+918281458007″,”T HI”))// number to which you want to send the sms and the sms text//
      Serial.println(“\nSMS sent T HI OK”);
      delay(300);

      }

      else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println(“off”);

      }
      }
      }

      lastButtonState30 = buttonState30;

      }
      };

  19. priyanka · February 23, 2013 Reply

    i am using arduino uno…..i downloaded GSM library …but if i run the code…it says SIM900.h…does not exist….can u tell me the lib file 4 GSM

  20. BHC · February 28, 2013 Reply

    HI,
    host , i am starter to using arduino uno , i so appreciate about yr coding sharing , i copy and paste your coding and download yr library and paste to my libralies. but i face some problem , can u help me solve it ?
    =======================================================================================================
    #include “SIM900.h”
    #include
    #include “sms.h”
    SMSGSM sms;
    boolean started=false;

    void setup()
    {
    //Serial connection.
    Serial.begin(9600);
    Serial.println(“GSM Shield testing.”);

    if (gsm.begin(2400)){
    Serial.println(“\nstatus=READY”);
    started=true;
    }
    else Serial.println(“\nstatus=IDLE”);

    if(started){
    if (sms.SendSMS(“+6148123123123″, “SMS from Arduino”))
    Serial.println(“\nSMS sent OK”);
    }

    };

    void loop()
    {

    }
    =====================================================================================================
    sketch_feb28b.cpp:1:20: error: SIM900.h: No such file or directory
    sketch_feb28b.cpp:3:17: error: sms.h: No such file or directory
    sketch_feb28b.cpp:4:2: error: invalid preprocessing directive #SMSGSM
    sketch_feb28b.cpp: In function ‘void setup()’:
    sketch_feb28b:12: error: ‘gsm’ was not declared in this scope
    sketch_feb28b:19: error: ‘sms’ was not declared in this scope
    =====================================================================================================
    actually my concept is received signal from arduino uno, gsm module will automatic send sms to my mobile.

  21. Praveen · March 12, 2013 Reply

    Hi Warren,

    Thanks for your reply, I powered it up with additional 12V but still it says :

    GSM Shield testing.
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

    status=IDLE

    Thank you very much.

    • Jayant · March 19, 2014 Reply

      Hey i have the same problem.were u able to solve it ???if yes please rply how ????

  22. kai · March 13, 2013 Reply

    hi warren, i received the error same as what BHC post here. im using the code you provided and the libraries from the link under the image without editing. what i did is just stack the icomsat v1.1 (sim900) to arduino(Uno Rev3) without any wire connection. i had plugged in the usb cable and the 9v/2A adapter. did i missed up anything to solve the error?

    ================================================================
    sketch_mar13a.cpp:1:20: error: SIM900.h: No such file or directory
    sketch_mar13a.cpp:3:17: error: sms.h: No such file or directory
    sketch_mar13a.cpp:4:2: error: invalid preprocessing directive #SMSGSM
    sketch_mar13a.cpp: In function ‘void setup()’:
    sketch_mar13a:12: error: ‘gsm’ was not declared in this scope
    sketch_mar13a:19: error: ‘sms’ was not declared in this scope
    ================================================================

  23. Desmond · March 14, 2013 Reply

    Hello! thanks for your codes! they are really useful!
    I need help with a sketch, what should i write if i want a pin on the arduino to be HIGH when a Particular SMS is received? and LOW when another Particular SMS is received?

    For example, when arduino receives “on” pin 13 is HIGH and when it receives “OFF” pin 13 is LOW

    Thanks !

    • warren · March 14, 2013 Reply

      Desmond you are welcome :)

      With receiving a SMS, I have not tried it but I found the code to receive SMS and have uploaded it to the top of this post.

      I suggest trying to read the last SMS first, and once you are successful at that then work on reading strings from the message, which I will help you with.

      If you successfully manage to receive a SMS please come back and let me know or write a tutorial and upload it (to pastebay.net for example) and I will put it up for others the learn from.

  24. Desmond · March 15, 2013 Reply

    Hi, can someone help me understand this part? what is “type_sms” ?

    void Check_SMS() //Check if there is an sms ‘type_sms’
    {
    char pos_sms_rx; //Received SMS position
    pos_sms_rx=gsm.IsSMSPresent(type_sms);
    if (pos_sms_rx!=0)
    {

    • warren · March 26, 2013 Reply

      Hi Desmond sorry I took a while to respond i have been away for a few weeks. “type_sms” is just the variable name they have given in
      that example for the last un-read SMS

      its a little easier to understand if it is written like this..
      position = sms_classname.IsSMSPresent(SMS_UNREAD);

  25. jc · March 18, 2013 Reply

    thank you warren. the code is working.
    but i did not received any sms from my shield. i had double check the phone number and country code has no mistake. do you have any idea how to solve this?

    what i get from serialmonitor is :
    GSM Shield testing.
    status=READY
    SMS sent OK

  26. Topacio · March 24, 2013 Reply

    Hello, I new using Arduino, I have Arduino One, and a need send sms, i have de icomsat, but i dont know if I need a external supply for de arduino one as arduine mega. Can you help me please and show me how i can do it.

    • warren · March 26, 2013 Reply

      Topacio you need external power when using the Icomsat, most people have success using 9v plugged into the Arduino.

  27. jc · March 25, 2013 Reply

    hi warren, i guess i did not set my message service centre number. May i know how you set the message service centre number?

    • warren · March 26, 2013 Reply

      Hi JC, i’m not sure I understand what you mean by “message service center number”. Are you talking about the country code?

  28. jc · March 26, 2013 Reply

    because i run the coding you provided with the libraries from the link, but i did not received any sms from the shield. i had check the pin and and the country code all are correct. just wonder do i need to set/modify the message service centre number in libraries? the command should be something like this>> AT+CSCA = (number of telecom operator)

    • jc · April 1, 2013 Reply

      hi warren, i found my mistake already. the reason i did not received sms from shield is DO NOT stack the gsm shield onto arduino uno BEFORE uploading the sketch. means that upload coding first, then stack the gsm shield and compile it.
      thanks for your coding and libraries.

      • warren · April 4, 2013 Reply

        Hi Jessie, that is great you got it going :)
        I forgot to mention that you have to remove the Icomsat before uploading :/ i’ve updated it now so everyone knows.

  29. DelayLama · April 23, 2013 Reply

    Hi Warren, im using the UNO with the IcomSat v1.1, pins tx2 rx3. External power of 5v 2A, but still nothing…it cant be more power the problema…the shield specifications says the pulse use 1A and for voltaje uses 3v…so WTF! hahaha…it’s been like six months since i bought this shield and still cant use it.

    ps: i uploaded the code before ataching the shield.
    ps2: I’m really frustrated…
    ps3: Does anybody know for which IDE versión, the original libraries from iteadstudio are made for?

    • Warren · April 24, 2013 Reply

      DelayLama I think the voltage you are trying to use is to low, the shield is powered by 3v but the Arduino will supply that voltage. Most people have better luck using a 12v 2A pwer supply connected to the Arduino.
      Also did you download the library from the link at the top of the page? because the library from Icomsat doesnt seem to work for most people.

  30. gggggggg · April 23, 2013 Reply

    Thanks for this Warren, worked a charm.

    Do you know how I can get my reception ? i.e. how many bars or reception I have?

  31. gggggggg · April 23, 2013 Reply

    Also, how can I use software to turn on/reset the ICOMSAT v1.1 ?

    thank you

  32. DelayLama · April 24, 2013 Reply

    Hey do you know if the NET led on the shield should be blinking or just steady on?

  33. Anandghan · April 25, 2013 Reply

    Hi,

    My sim card has pin how to pass it to the library ? Also how to use this library with Leonardo?

    • Warren · April 29, 2013 Reply

      I’m not sure how to pass a SIM PIN number. With using this with the leonardo im not sure as i have had many problems using the leonardo with windows 8 so have shelved it. Emulating a mouse or keyboard was the reason for buying it :)

  34. Theo · April 28, 2013 Reply

    Hello,

    I’ve the same question :)

    I don’t succeed yet… but i’m looking commande AT CPIN
    mySerial.print(“AT+CPIN=”);
    mySerial.println( SIM_PIN_CODE );

    http://www.elecrow.com/wiki/index.php?title=GPRS/GSM_Shield_v1.0#Sending_SMS:_using_Software_UART

    Please keep update here !

    Thanks

  35. gggggggg · May 5, 2013 Reply

    How much power does this thing use? i.e. if I only want to send 1 SMS every 10mins, and I am on battery power, should I be using code to power it off between SMS’s?

  36. powerpuff girls · May 6, 2013 Reply

    hi, I try to send sms and got the serial monitor response SMS sent OK but I didnt receive any sms, pls help thanks

  37. Anandghan · June 11, 2013 Reply

    The output volume of the shield is very low . I have tried the command AT+CLVL=99 , but it had no effect. How can i increase the output volume?
    Thanks

  38. eud10 · June 13, 2013 Reply

    Hi i m french people and i woul like tu congratulate my project i have probleme

    I have the problem to send SMS using Arduino Uno R3 and Icomsat V1.1 . You can email me your edited library?

    And i use +336XXXXXXXX for the phone number it s correct isnt it?

    Thanks…

  39. eud10 · June 13, 2013 Reply

    hi

    i m a french people and i want to congratulate my personal project i want to use my arduino uno r3 and icomsat 1.1 but it’s don t working can you help me this is my problème

    GSM Shield testing.
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

    status=IDLE

    this is my code

    #include “SIM900.h”
    #include
    //If not used, is better to exclude the HTTP library,
    //for RAM saving.
    //If your sketch reboots itself proprably you have finished,
    //your memory available.
    //#include “inetGSM.h”

    //If you want to use the Arduino functions to manage SMS, uncomment the lines below.
    #include “sms.h”
    SMSGSM sms;

    //To change pins for Software Serial, use the two lines in GSM.cpp.

    //GSM Shield for Arduino
    //www.open-electronics.org
    //this code is based on the example of Arduino Labs.

    //Simple sketch to send and receive SMS.

    int numdata;
    boolean started=false;
    char smsbuffer[160];
    char n[20];

    void setup()
    {
    //Serial connection.
    Serial.begin(9600);
    Serial.println(“GSM Shield testing.”);
    //Start configuration of shield with baudrate.
    //For http uses is raccomanded to use 4800 or slower.
    if (gsm.begin(2400)){
    Serial.println(“\nstatus=READY”);
    started=true;
    }
    else Serial.println(“\nstatus=IDLE”);

    if(started){
    //Enable this two lines if you want to send an SMS.
    if (sms.SendSMS(“+33649XXXXXX”, “Arduino SMS”))
    Serial.println(“\n SMS sent OK”);
    }

    };

    void loop()
    {
    if(started){
    //Read if there are messages on SIM card and print them.
    if(gsm.readSMS(smsbuffer, 160, n, 20))
    {
    Serial.println(n);
    Serial.println(smsbuffer);
    }
    delay(1000);
    }
    };

    i use + 33 for my contry

    can you helps me please
    thanks

    eud

    • warren · June 14, 2013 Reply

      Have you made sure that you are setting you pins up the same as in GSM.cpp and also have you connected external power to the Icomsat.

  40. eud10 · June 14, 2013 Reply

    i suppose
    i don’t know if it’s the first or the second version.
    How i can know the version of my shield
    now i use the usb power supply delivry 12v 1A but its don’t fonction

    Can i have information for know the version and a picture eventually

    How can connect directly the shield if you have a schematic you are probably my god !!!

    thanks

    • warren · June 15, 2013 Reply

      have a look at the picture in this post and notice the jumpers, make sure they are the same if you are using this library. also most people get better luck with using 9v instead of 12v I dont know why.

  41. eud10 · June 15, 2013 Reply

    it’s ok for me thanks

  42. ellevs · July 11, 2013 Reply

    Hi,
    I manage to send an SMS with you example, but when I try your code for reciving SMS i get some errors. I don`t think it is possible to use this example with the lib. Do you have a example that works?

    You are awsome by the way!

  43. warren · July 11, 2013 Reply

    Hey Ellevs ,
    I have not tested the Receive SMS code myself a visitor send me that code (originaly came from arduino.cc), I have not actually tried receiving an SMS yet so im sorry to say i dont have a working example. But it should work just expect pain while trying lol

    • Miguel · July 12, 2013 Reply

      Hi Warren,

      so far, I had no success in receiving a SMS. To send one it is easy. But to receive, it seems to be impossible. Any help on this issue would be highly appreciated !!!

      • warren · July 12, 2013 Reply

        Try something like this, edit it to your settings, make sure to check inside GSM.h for settings

        
        // include the GSM library
        #include <GSM.h>
        
        // PIN Number for the SIM
        #define PINNUMBER ""
        
        // initialize the library instances
        GSM gsmAccess;
        GSM_SMS sms;
        
        // Array to hold the number a SMS is retreived from
        char senderNumber[20];  
        
        void setup() 
        {
          // initialize serial communications and wait for port to open:
          Serial.begin(9600);
          while (!Serial) {
            ; // wait for serial port to connect. Needed for Leonardo only
          } 
            Serial.println("SMS Messages Receiver");
            
        	// connection state
        	boolean notConnected = true;
        	
        	// Start GSM connection
        	while(notConnected)
        	{
        		if(gsmAccess.begin(PINNUMBER)==GSM_READY)
        		notConnected = false;
        		else
        		{
        			Serial.println("Not connected");
        			delay(1000);
        		}
        	}
        	
        	Serial.println("GSM initialized");
        	Serial.println("Waiting for messages");
        }
        
        
        
        void loop() 
        {
          char c;
          
          // If there are any SMSs available()  
          if (sms.available())
          {
             // Read message bytes and print them
            while(c=sms.read())
              Serial.print(c); 
           }
        
          delay(1000);
        
        }
        
  44. Wilmer · July 24, 2013 Reply

    It’s great to get your kid involved in having some fun while learning
    some things; it’s also fun for adults. Try it now, and you will
    enjoy and get this game addict. Another changes that can lure the developers for Android development are creation of marketplace by
    creating Google Play store so it can give some organized way of marketing for Android application development products by eliminating spam apps as well as useless free apps
    and piracy.

  45. Waruna · August 14, 2013 Reply

    i am using sim 900 gsm module shield and arduino mega 2560 for a project.so i am giving a extranal power to mega board 9Vand 0.75A power source.is it enough to properly work this.plz help me.and also what is the pins that we should define for rx and tx in mega 2560?.thank you.

  46. Waruna · August 16, 2013 Reply

    i am using the arduino 1.0.5 version.so has any affetive when we are programming the mega board?and also can we use the receive the sms using sim 900 module properly?if u can send me the code for send sms and receive sms.it will big help.
    thank u.

  47. Jay · September 17, 2013 Reply

    Hello Warren,
    i am learner of ardiuno and i hadn’t work on gsm, i am using fly sim 900 as a gsm module
    My project is like that whatever msg i am sending to ardiuno that is to be displayed on 16*2 lcd.
    So i want code for that. Please help me.

  48. sasi · December 1, 2013 Reply

    which pin does the icomsat v 1.1 uses when it is connected to the arduino uno… do u have any pic of the circuit connection.

  49. mimi · January 7, 2014 Reply

    what libraries can i use for arduino UNO with icomsat 1.1?

  50. J.T Burakowski · January 23, 2014 Reply

    Hi.

    I tried to use your code with the libraries you suggested, but got this as response through the serial monitor. Sorry if it chews up too much space, but i fear editing would render it impossible to decipher. I’ve done some stuff with arduino earlier, but this gsm stuff seems to be way over my head. Thx beforehand.

    Tuomas.

    ps. As you can probably tell, I’m not a native speaker/writer. Sorry for any typos.

    The serial monitor prints the following:

    GSM Shield testing.
    ATT: OK
    RIC: AT

    OK

    DB:ELSE
    ATT: OK
    RIC: AT

    OK

    DB:ELSE
    ATT: OK
    RIC: AT

    OK

    DB:ELSE
    ATT: OK
    RIC: AT

    OK

    DB:CORRECT BR
    ATT: OK
    RIC: AT

    OK

    ATT: OK
    RIC: AT&F

    OK

    ATT: OK
    RIC: ATE0

    OK

    ATT: OK
    RIC:
    OK

    ATT: OK
    RIC:
    OK

    ATT: OK
    RIC:
    OK

    ATT: OK
    RIC:
    OK

    ATT: +CPMS:
    RIC:
    +CPMS: 3,30,3,30,3,30

    OK

    ATT: OK
    RIC:
    OK

    ATT: SHUT OK
    RIC:
    SHUT OK

    status=READY
    DEBUG:SMS TEST
    ATT: >
    RIC:
    >
    DEBUG:>

    SMS sent OK

  51. Aldinal · February 28, 2014 Reply

    Hi Warren,
    Right now I am trying to send SMS by using Icomsat v1.1 and Arduino Uno but I keep on gaining this error :

    DB:NO RESP

    - I use code and library from this page
    - I have plugged external power source of 9 VDC and 1.2 ADC to Arduino board
    - I always remove the shield when uploading
    - On gsm.cpp, I have done this :

    (I de-commented this)
    //De-comment this two lines below if you have the
    //second version og GSM GPRS Shield
    #define _GSM_TXPIN_ 2
    #define _GSM_RXPIN_ 3

    (I commented this)
    //De-comment this two lines below if you have the
    //first version of GSM GPRS Shield
    //#define _GSM_TXPIN_ 4
    //#define _GSM_RXPIN_ 5

    Is there anything I missed?
    Do I have to attach any extra wires in the shield?

    I have been struggling with this for a long time. Your answer will be much appreciated :)

    • warren · March 1, 2014 Reply

      Hi Aldinal,
      That error means your Icomsat GSM is turned off, what should happen is when trying to make a call or send and SMS the library checks to see if the GSM is OFF and if it is then sends a command to turn it on.

      See line 69 in GSM.cpp (actually line 65).

      Where did you get the Icomsat?

  52. Salva · March 4, 2014 Reply

    Hi Warren,

    I have 2 doubts…

    First:
    I know that GSM Shield needed 1.5A to boot up, but… Could 6/7h maintain energy during a 12v Li-Ion battery and 1.8A?

    Second:
    Is necessary to press power ON button of GSM Shield after ON the Arduino UNO? Is possible to boot up the GSM Shield automatically?

    Thank you so much!
    Great tutorial and sorry for my english!

    • warren · March 4, 2014 Reply

      Hey Salva,
      1. I am not sure about powering from a 12v 1.8Ah battery for 6-7h because the datasheet is not clear on power requirements, it is very vague as it doesnt specify at what voltage it consumes the amps. Apparently the Icomsat can draw burst up to 2A but im not sure why it would, but if you turn off the icomsat and only use it every so often I cant see why it wouldnt last days.

      2. If you are using the library from imall.iteadstudio.com/im120417009.html . The pin 9 of Arduino interface is

      connecting to PWRKEY, and a high pulse with 400us wide can power on/off it.

      • Salva · March 4, 2014 Reply

        Hi Warren,

        I’m looking MarcoMartines library (https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield/blob/GSMSHIELD/GSM.h) and it uses pin 8 to ON and pin 9 to RESET… And I’m using this library: It’s possible to use this function? it’s right? What is the PWRKEY? How to send a high pulse?

        Thank you!!

        • warren · March 5, 2014 Reply

          Hey Salva,
          I had a quick look at that library and in the GSM.cpp it looks like he is turning on the GMS using this (on line 71)
          // generate turn on pulse
          digitalWrite(GSM_ON, HIGH);
          delay(1200);
          digitalWrite(GSM_ON, LOW);
          delay(10000);
          WaitResp(1000, 1000);

          so try that with a button and see if you can toggle on and off, let me know how you go.

        • warren · March 5, 2014 Reply

          also are you using the iTead studio Icomsat Sim 900? or another make?

          • Salva · March 6, 2014 Reply

            Sorry Warren,

            I didn’t lastest version of library for this reason I have a problem, I just update and tomorrow tried it (with my gsm shield icomsat)! I will tell you!

            Thanks for everything!

  53. ali · March 8, 2014 Reply

    can you help me to send data to web server with icomsat v1.1, then which the jumper i use ?
    please help me warren

  54. ali · March 10, 2014 Reply

    please help. am getting

    DB:NO RESP

    with icomsat v1.1 and arduino uno

  55. ali · March 10, 2014 Reply

    thanks for tutorial warren. its working.

  56. Rudy · March 23, 2014 Reply

    i was reading comment above, and try but is not work.
    is my part 12V 3A source external, and Arduino UNO, GSM Shield Icomsat v1.1.
    and i set jumper D3 with TX , D2 with RX,
    on script GSM.cpp :

    //De-comment this two lines below if you have the
    //second version og GSM GPRS Shield
    #define _GSM_TXPIN_ 2
    #define _GSM_RXPIN_ 3

    first power light red, status light green, and blink on NET, ()
    but show in serial monitor.

    GSM Shield testing.
    DB:NO RESP
    DB:NO RESP
    DB:NO RESP
    Trying to force the baud-rate to 9600

    1200
    2400
    4800
    9600
    19200
    38400
    57600
    115200
    ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

    status=IDLE

    please Help

    • Warren · March 24, 2014 Reply

      Did you unplug the Icomsat before uploading your sketch?

      • Scott · March 27, 2014 Reply

        Hey Warren, I have the same problem as the guy above, here’s what I did,
        1. Put the jumpers correctly on the board as you did
        2. Download all the libraries and source code that you posted
        3. Hooked up 12V and 2.5A , as well as USB plug from computer
        4. Uploaded the Source Code
        5. Connected the GSM Shield onto the Arduino Uno
        6. Pressed SIM900-Power Button for 3sec to turn on the SIM900
        7. Then Compile the arduino and checked the Serial Monitor
        8. But it still says DB:No Response, Forcing baud rate from 1200-115200,
        ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
        status=IDLE

        I’m using the same devices as you are with Arduino Uno and ICOMSAT v1.1 GSM Module
        Can you give me some help? I have absolutely no idea why this isn’t working

        • warren · March 27, 2014 Reply

          Hey Scott did you check the pins in the GSM.cpp? line 27 & 28

          • Scott · March 27, 2014 Reply

            Thank you for your reply, Yes I decommented the
            #define _GSM_TXPIN_ 2
            #define _GSM_RXPIN_ 3

            Because I assume TXPIN4 and RXPIN5 is for ICOMSAT V1.0 correct?
            where I am using V1.1

            I am so lost…I really don’t know what is the problem here

            • warren · March 27, 2014 Reply

              Are you sure you have wired it up correctly?
              Remember the TX on the Arduino goes to the RX on the Icomsat

              • Scott · March 27, 2014 Reply

                I placed the jumpers as you did in pictures and just merged the two boards. Do i need to have additional connection somewhere? Thank you for yout reply

Leave a reply