Arduino Uno R3 + SIM900 cant make it work

Please guys i'm frustrated :frowning:
I bought an Arduino Uno R3 Board + SIM900 (GPRS Shield For arduino UNO)
I connected them as i understood from the internet (Picture of the connection attached)
The simplest code i'm trying to run is modem checking but it doesnt return any imei,
and also when i send through the ide AT commands it doesnt respond at all.

Please guys its for my work and it really important for me, Please help me!!

Thank you all :slight_smile:




Code?

Silly question - you are turning it on?

Thanks bro for the reply - Yes I do power it , and the modem do find the network , that I am sure.
Does the my cables connect properly? Or should I change it?

Please post your code, and use the code (</>) tags to do so.

How do you know that it connects to the network?

Because the red led is blinking every 4-5 seconds and i get a dial sound from my phone when i call the sim number…

And the code is on of the examples you get from the arduino ide (SendSMS):

/*
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.

*/

// 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 = ‘\0’;

  • Serial.flush();*
  • return 0;*
  • }*
  • if (inChar != ‘\r’)*
  • {*
    _ result = inChar;_
    * i++;*
    * }*
    * }*
    * }*
    }
    maybe i need to define more things?

This one also not working:

#include <SoftwareSerial.h>
SoftwareSerial SIM900(0, 1); // configure software serial port

void setup()
{
SIM900.begin(19200);
SIM900power();
delay(1000); // give time to log on to network.
}

void SIM900power()
// software equivalent of pressing the GSM shield “power” button
{
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
}

void callSomeone()
{
SIM900.println(“ATD + 0502777108;”); // dial US (212) 8675309
delay(100);
SIM900.println();
delay(30000); // wait for 30 seconds…
SIM900.println(“ATH”); // hang up
}

void loop()
{
callSomeone(); // call someone
SIM900power(); // power off GSM shield
do {} while (1); // do nothing
}

SoftwareSerial SIM900(0, 1); // configure software serial port

That won't work if it's still wired up as per the photos. You appear to be using D7 & D8?

yes.
i tried this way also:

Arduino - rx (D0) => Shield - D7
Arduino - tx (D1) => Shield - D8

and even when i try to update the board doesnt answer also…
But it didnt damage and i can call the sim.

This works:

#include <SoftwareSerial.h>
SoftwareSerial SIM900(7,8); // configure software serial port
 
void setup()
{
  Serial.begin(19200);
  SIM900.begin(19200);               
  SIM900power();  
  delay(20000);  // give time to log on to network. 
}
 
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
}
 
void callSomeone()
{
  Serial.println("About to dial...");
  SIM900.println("ATD +447751123456;"); // dial US (212) 8675309
  delay(100);
  SIM900.println();
  delay(30000);            // wait for 30 seconds...
  SIM900.println("ATH");   // hang up
}
 
void loop()
{
  callSomeone(); // call someone
  SIM900power();   // power off GSM shield
  while (1){}; // do nothing
}
[\code]