Hi,
Im working on the SIM900 module with the library at Github from MarcoMartines.
I'm having problems retrieving the data. This is what I get (the sketch is at the end of the post):
GSM Shield testing.
ATT: OK
DB:ELSE
ATT: OK
DB:CORRECT BR
ATT: OK
RIC: ATE0
ATT: +CPMS:
+CPMS: 28,190,28,190,28,190
ATT: OK
RIC:
OK
ATT: SHUT OK
RIC:
SHUT OK
status=READY
ATT: ERROR
RIC:
ERROR
DB:STARTING NEW CONNECTION
ATT: SHUT OK
RIC:
SHUT OK
DB:SHUTTED OK
ATT: OK
RIC:
OK
DB:APN OK
ATT: OK
RIC:
OK
DB:CONNECTION OK
ATT: ERROR
RIC:
10.124.39.139
DB:ASSIGNED AN IP
status=ATTACHED
10.124.39.139
ATT: OK
RIC:
OK
DB:RECVD CMD
ATT: CONNECT OK
RIC:
OK
DB:NOT CONN
ATT: OK
RIC: AT+CIPSTART="TCP","www.google.com",80
ERROR
DB:NOT CONN
ATT: OK
RIC: AT+CIPSTART="TCP","www.google.com",80
ERROR
DB:NOT CONN
Number of data received:
0
Data received:
I'm positive my chip has internet data access because I've put it into a phone and browsed with it. The SIM doesn't have a lock and I can see the module LED go from 0.8 second blink to 3 second blink which should mean it recognizes the network. I have successfully called, received calls and sent SMS using the same SIM.
The only thing I have not tried is reading the serial while using the 9v battery because Im not sure what will happen if I leave the USB-Serial cable connected and turn on the 9v battery pack switch ON as well.
Can I use the battery pack and the USB-Serial simultaneously?
Here is my sketch (its the sample Client Example from the SIM900 library):
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"
//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 start a connection as client.
InetGSM inet;
//CallGSM call;
//SMSGSM sms;
char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;
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){
//GPRS attach, put in order APN, username and password.
//If no needed auth let them blank.
if (inet.attachGPRS("internet.tigo.hn", "", "")) //internet.
Serial.println("status=ATTACHED");
else Serial.println("status=ERROR");
delay(1000);
//Read IP address.
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
//Read until serial buffer is empty.
gsm.WhileSimpleRead();
//TCP Client GET, send a GET request to the server and
//save the reply.
numdata=inet.httpGET("www.google.com", 80, "/", msg, 50);
//Print the results.
Serial.println("nNumber of data received:");
Serial.println(numdata);
Serial.println("nData received:");
Serial.println(msg);
}
};
void loop()
{
//Read for new byte on serial hardware,
//and write them on NewSoftSerial.
serialhwread();
//Read for new byte on NewSoftSerial.
serialswread();
};
void serialhwread(){
i=0;
if (Serial.available() > 0){
while (Serial.available() > 0) {
inSerial[i]=(Serial.read());
delay(10);
i++;
}
inSerial[i]='�';
if(!strcmp(inSerial,"/END")){
Serial.println("_");
inSerial[0]=0x1a;
inSerial[1]='�';
gsm.SimpleWriteln(inSerial);
}
//Send a saved AT command using serial port.
if(!strcmp(inSerial,"TEST")){
Serial.println("SIGNAL QUALITY");
gsm.SimpleWriteln("AT+CSQ");
}
//Read last message saved.
if(!strcmp(inSerial,"MSG")){
Serial.println(msg);
}
else{
Serial.println(inSerial);
gsm.SimpleWriteln(inSerial);
}
inSerial[0]='�';
}
}
void serialswread(){
gsm.SimpleRead();
}