Problem connecting Arduino Uno R3 to SIM900 GPRS/GSM shield and sending an SMS

Before getting your SMS to run - load up a simple local echo program to send your typing to the modem and vice versa. That will let you know you have communication tot he modem.

You can check the modem connection status, etc

After that - you can start faffing around with a functional sketch code, but always keep that echo code nearby so you can see what is expected & returning.

I've found a similar board to yours and the first thing I note is where you have your Rx/Tx connections. Try connecting to D7 & D8 on the SIM900 board (assuming that you have the two jumpers near the aerial set to use D7 & D8, and that is how it appears.).

lastchancename:
Before getting your SMS to run - load up a simple local echo program to send your typing to the modem and vice versa. That will let you know you have communication tot he modem.

You can check the modem connection status, etc

After that - you can start faffing around with a functional sketch code, but always keep that echo code nearby so you can see what is expected & returning.

Thanks for your response. Please I don't know how to load a simple echo program I am pretty new to using Arduino and SIM900 GSM Shield. Is there any example sketch I can use to do that and how can I check modem status please?

Serial Relay sketch

// Serial Relay - Arduino will patch a 
// serial link between the computer and the GPRS Shield
// at 19200 bps 8-N-1

#define RxPin 7
#define TxPin 8

#include <SoftwareSerial.h>

SoftwareSerial GPRS(RxPin, TxPin); // RX, TX

void setup()
{
  pinMode(13, OUTPUT); // Turn off pin 13
  digitalWrite(13,LOW);  
  GPRS.begin(19200);
  Serial.begin(19200);
}

void loop()
{
  if (GPRS.available())
  {
    while(GPRS.available())
    {
      Serial.write(GPRS.read());
    }
  }
  if (Serial.available())
  {
    while(Serial.available())
    {
      GPRS.write(Serial.read());
    }
  }
}

Open serial monitor and make sure the baud rate is set to 19200. Type AT (return) and it sound echo in the main screen AT OK.

dannable:
I've found a similar board to yours and the first thing I note is where you have your Rx/Tx connections. Try connecting to D7 & D8 on the SIM900 board (assuming that you have the two jumpers near the aerial set to use D7 & D8, and that is how it appears.).

Thanks dannable once more. I have tried several connections on the SIM900 board. I have tried using RX2 TX3 on the Arduino Board and RX7 TX8 on the software serial of SIM900.

When I run the GSM_GPRSLibrary_AT example sketch I get DB:NO RESP Trying to force the baud-rate to 9600. ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp status=IDLE.

I am using a USB to power Arduino Uno and a Power adaptor(12.0v 2.0A) for SIM900 GSM Shield.
I have downloaded the SIM900 library and added it to my IDE library.

Please do you have any suggestion

One wire from Uno D7 to SIM900 D7. Another wire Uno D8 to SIM900 D8. Ground to ground. This assumes that the jumper block adjacent to the aerial allows you to select between D0,D1 and D7,D8. I cannot read your board markings.

Load the serial relay sketch as above and try it.

I have loaded the serial relay sketch as you instructed using the connection as you have specified but it is still not working. Do you think the SIM900 board is in good condition?

Ridiculous question first - you are turning it on?

What happens when you apply power? Does the net light blink rapidly for several seconds, then change to a slower blink?

dannable:
Ridiculous question first - you are turning it on?

What happens when you apply power? Does the net light blink rapidly for several seconds, then change to a slower blink?

Yes it does, but I have been trying to get both device to work for over a month now and it has been so frustrating.

Right, similar module to yours. D7 - D7, D8 - D8, Gnd - Gnd, 9v 1A psu for testing module, USB supply to Uno:

Connect using serial monitor:

ScreenCap.jpg

I dialed my cell (mobile) phone and it connected.

ScreenCap.jpg

Thanks dannable for all your support and lucid explanations and illustrations. I have tried to use the connection based on the image you posted, but it did not work for me. I did not get any response when I typed in AT into my Serial Monitor.

The IDE I am using is ARDUINO 1.8.4 from https://www.arduino.cc/en/Main/Software, and I got word from the shop where I bought the hardware at https://www.hub360.com.ng, here in Nigeria to use ARDUINO 1.6.5, and I uninstalled the 1.8.4 and installed 1.6.5, and when I tried I got an OK from my Serial Monitor.

I have resolved the problem I am having and I say "thank you so much dannable and lastchancename, you guys are a blessing to this forum and because of your speedy response I will like to stick around this community much longer than I thought, I love you guys".

Thanks for the 'thanks'... Dannable did the hard work, i just pushed in one possible direction!
Your learning experience is very standard, so don't despair.
Break every project into its separate parts, otherwise you can rarely find issues hidden by other issues !
Keep us up to date on your progress.

You guys are the best. I have edited the title line so other can know that it has been solved. I read through how to use this forum before I attempted making a post.

I am from Nigeria and now I believe in the true power of the open source community. You all are a blessing to our generation.

Thanks

In turn all I did was prove that it should work, meaning that the problem area had been narrowed down. Faulty connections, or in this case version of the IDE, all things that aren't immediately obvious.

Thanks for making your shoulder available for me to sit on so that I can see further into the Automation Land of Arduino.

In the diagram below, can I use female - female jumper wires to connect the 'SWserial' position on the SIM900 board in place of those connectors you have there? Because I have removed one of them and I cannot find it now. I have two SIM900 shields for now so I am using one of them and will like to use the other when I am through with the project I have in mind.

Jumpers.JPG

Yes, there's no problem with doing that, other than additional clutter!

Please in your years of using SIM900 and other shields have you encountered any IDE related problem? What are the pros and cons of using New Release of an IDE vs Older Versions? Is there anywhere I can get information about IDE compatibility with shields and boards?

I still use an ancient version of the IDE but it works. When it stops working I'll upgrade.

As for your question about differences in the different IDEs, I would ask that further up the board. Try Installation and Troubleshooting, if it's wrong a Moderator will move it.

Hello
I hope I can help I was working with the SIM900 and the GPS Neo-6M I have already make calls send messages what I need is to transmit data to the web using the GPRS of which I intend to do is to obtain the coordinates with the GPS and by means of the SIM900 send the information obtained to the web.

I leave my code.

#include <TinyGPS.h>
#include <SoftwareSerial.h>

TinyGPS gps;
SoftwareSerial GPS(4, 3);
SoftwareSerial SIM(7, 8);

static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
const int conectar = 2;
const int led = 13;
int conectando = 0;

void setup() {
Serial.begin(9600);
SIM.begin(9600);
GPS.begin(9600);
pinMode(led, OUTPUT);
pinMode(conectar, INPUT);
}

void loop() {
float latitud, longitud;
gps.f_get_position(&latitud, &longitud);
Serial.println("Latitud Longitud ");
print_float(latitud, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
print_float(longitud, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
conectando = digitalRead(conectar);
if (conectando == 0) {
digitalWrite(led, 0);
delay(2000);
SIM.print("AT+CGATT");
SIM.print("AT+CGDCONT=1,"IP","internet.itelcel.com"");// Establece parametros PDP
SIM.print((char)13);
delay(2000);
SIM.print("AT+CSTT="internet.itelcel.com","webgprs","webgprs2003""); //Seteo de APN usuario y password
SIM.print((char)13);
delay(2000);
SIM.print("AT+CIICR");// Inicia la conexión
SIM.print((char)13);
delay(20000);
SIM.print("AT+CIFSR");
SIM.print((char)13);
delay(2000);
SIM.print("AT+CIPSTART="TCP","ubicatek.hol","80"");// Inicia conexion TCP o UDP
Serial.println("conexion realizada");
SIM.print((char)13);
SIM.print((char)10);
delay(5000);
SIM.print("AT+CIPSEND");// Envias Datos TCP o UDP
SIM.print((char)13);
SIM.print((char)10);
Serial.println("conexion para enviar");
delay(2000);
SIM.print("GET /home.php HTTP/1.1");// //Archivo donde se enviara el dato y el parametro a enviar
SIM.print("latitud=");
SIM.print(latitud, TinyGPS::GPS_INVALID_F_ANGLE);
SIM.print("&longitud=");
SIM.print(longitud, TinyGPS::GPS_INVALID_F_ANGLE);
Serial.println("Datos Enviados");
SIM.print((char)13);
SIM.print((char)10);
SIM.print("Host: ubicatek.hol.es");//
SIM.print((char)13);
SIM.print((char)10);
SIM.print((char)10);
SIM.print((char)13);
SIM.print((char)10);
SIM.print((char)26);
delay(10000);
SIM.print("AT+CIPCLOSE");// Cierra la conexión TCP o UDP
SIM.print((char)13);
delay(2000);
SIM.print("AT+CIPSHUT"); //Cierra el contesto PDP de GPRS
SIM.print((char)13);
delay(2000);
smartdelay(10000);
}

digitalWrite(led, 1);

}

thank your support