Go Down

Topic: GSM Shield says SMS complete but message doesn't send (Read 1 time) previous topic - next topic

stephenpperry

Hi, I'm using a gsm shield to send SMS messages, and I'm literally on the first step with the info at http://arduino.cc/en/Guide/ArduinoGSMShield

The strange thing is I've used multiple numbers in the

char remoteNumber[20]= "12125551212";   

field and none of them receive a message from the arduino despite it saying

SENDING

Message:
Test

COMPLETE!

I'm using an 02 United Kingdom sim. Which has credit and isn't sim locked, I tried it in my phone and managed to send texts, but sir some reason can't get the arduino to do it.

Any thoughts would be greatly appreciated!

stephenpperry

Managed to sort it using instructions and script at http://arduino.cc/en/Tutorial/GSMExamplesSendSMS instead

davidgoth

You have to add your country code to telephone number (for example: +44123456789)

visualxl

I am facing the same problem!

I have also added the country code without success.

I am using the exact "sendSMS" sample. It was actually working yesterday without country code. I did not change anything.

Please assist.

Code: [Select]

/*
SMS sender

This sketch, for the Arduino GSM shield,sends an SMS message
you enter in the serial monitor. Connect your Arduino with the
GSM shield and SIM card, open the serial monitor, and wait for
the "READY" message to appear in the monitor. Next, type a
message to send and press "return". Make sure the serial
monitor is set to send a newline when you press return.

Circuit:
* GSM shield
* SIM card that can send SMS

created 25 Feb 2012
by Tom Igoe

This example is in the public domain.

http://arduino.cc/en/Tutorial/GSMExamplesSendSMS

*/

// Include the GSM library
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

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 Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
 
  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);
   
  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);
 
  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
*/
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}

davidgoth

Hi,

Replace the line "GSM gsmAccess;" by "GSM gsmAccess(true);".
Then, you can see the commands of modem. Post the output.

visualxl

I did not replace the line "GSM gsmAccess;" by "GSM gsmAccess(true);

The SMS will only work if I bring up the Serial Monitor. If I were to supply external power to the BLUNO (Uno + BLE) without bringing up the Serial Monitor, the SMS won't work. Why is that so?

visualxl

I replaced it with
Code: [Select]
GSM gsmAccess(true);

It solves the serial monitor problem as well it seems. Though would appreciate if you can explain that.

davidgoth

I don't know if you use BLUNO, it'll influence serial connection. I have never work with BLUNO. Anyway, it could be a timing problem in the GSM library for this board.

I have an idea, you could put LED blinks in each part of sketch to see in which part (how many blinks have happened) sketch stops or fails.

visualxl

Usually it stucks around this area. I don't know why. But if you press the 'RESET' button twice or thrice, it would work.

Code: [Select]

void setupGSM() {
  // connection state
  boolean notConnected = true;
  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected) {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  //sendSMS();
}


Go Up