hi;
This is a code for interfacing GSM sim900 and arduino UNO.
// serial speed to use with phone
#define PHONE_SERIAL_BUAD 9600
// Puts teh phone into SMS texting mode ( as opposed to MMS, etc.)
#define PHONE_SET_SMS_TXT_MODE_COMMAND “AT+CMGF=1”
// Command used to send a message
#define PHONE_SEND_MSG “AT+CMGS=”
// Command to dial a call
#define PHONE_DIAL_CALL “ATD”
#define PHONE_END_CALL “ATH”
#define BUFFSIZ 90 // plenty big
#define ARDUINORX 6
#define ARDUINOTX 7
#include <NewSoftSerial.h>
NewSoftSerial gsmSerial(ARDUINORX, ARDUINOTX);
char buffer[BUFFSIZ];
//char *parseptr;
char buffidx;
void setup()
{
Serial.begin(9600);
Serial.println(“Hello PC”);
// set the data rate for the NewSoftSerial port
gsmSerial.begin(PHONE_SERIAL_BUAD);
delay(500);
ATTest();
Serial.println(“Arduino: Reset modem to factory default setting, wait…”);
gsmSerial.println(“AT&F”); wait4OK();
Serial.println(“Enable modem’s debug message, wait…”);
gsmSerial.println(“AT+CMEE=2”); wait4OK();
}
void loop() // run over and over again
{
char input = ‘n’;
Serial.println("----- Arduino GSM Control Menu -----");
Serial.println("Press “s” to send SMS ");
Serial.println("Press “d” to dial a phone call ");
Serial.println(“Press “e” to end a phone calll “);
Serial.println(”----- ------------------------ -----”);
while(Serial.available()<=0){
delay(200);
}
readline();
input = buffer[0];
switch(input){
case ‘s’:
char phoneNum[40];
char smsContent[40];
Serial.println(“Target Phone number:”);
readline();
strcpy(phoneNum, buffer);
Serial.println(phoneNum);
Serial.println(“SMS Content”);
readline();
strcpy(smsContent, buffer);
Serial.println(smsContent);
//-----------------------------------------------
gsmSerial.println(PHONE_SET_SMS_TXT_MODE_COMMAND);
delay(500);
gsmSerial.print(PHONE_SEND_MSG);
gsmSerial.println(phoneNum);
delay(500);
gsmSerial.print(""");
gsmSerial.print(smsContent);
gsmSerial.print(""");
gsmSerial.print((char)26);
//-----------------------------------------------
Serial.println(“SMS is sending…”);
// delay(4000);
// wait4OK();
if (wait4OK()==1) {
Serial.println(“Done! SMS Sent”);
}
else{
Serial.println(“Failed…SMS Fail”);
}
break;
case ‘d’: Serial.println(“Dialing a call”);
//char phoneNum[40];
Serial.println(“Target Phone number:”);
readline();
strcpy(phoneNum, buffer);
Serial.println(phoneNum);
//-----------------------------------------------
gsmSerial.print(PHONE_DIAL_CALL);
gsmSerial.print(phoneNum);
gsmSerial.println(";");
//-----------------------------------------------
Serial.println(“Calling… use the voice adapter to talk as usual”);
delay(500);
//wait4OK();
break;
case ‘e’:
gsmSerial.print(PHONE_END_CALL);
break;
default: Serial.println(“Wrong Input”);
break;
}
/*
if (gsmSerial.available()>0) {
Serial.print((char)gsmSerial.read());
}
if (Serial.available()>0) {
gsmSerial.println((char)Serial.read());
}
*/
delay(500);
}
void ATTest(){
Serial.println(“Arduino: Test modem Communication…wait…(if >5sec…fail…)”);
gsmSerial.println(“AT”);
if (wait4OK()==1) {
//Serial.println(“Arduino: OK”);
}
else{
Serial.println("Arduino: Fail!, please check connection! ");
Serial.print(“Connect pin”); Serial.print(ARDUINOTX); Serial.print(“to GSM RX, “);Serial.print(ARDUINORX); Serial.print(” to GSM TX”);
}
}
int wait4OK() {
int returnVal=0;
GSMreadline();
Serial.print("GSM: ");
Serial.println(buffer);
if (strncmp(buffer, “OK”,2) == 0) {
returnVal=1;
} else {
returnVal=-1;
}
return returnVal;
}
void GSMreadline(void) {
char c;
buffidx = 0; // start at begninning
int crCount=0;
while (1) {
c=gsmSerial.read();
if (c == -1){
delay(500);
continue;
}
if (c == ‘\n’)
continue;
if((int) c == 13){
crCount++;
if (crCount==1 || crCount==2)
continue;
if (crCount==3){
buffer[buffidx] = 0;
return;
}
}
if (buffidx == BUFFSIZ-1){
buffer[buffidx] = 0;
return;
}
if (crCount==2){
buffer[buffidx++]= c;
}
// buffer[buffidx++]= c; //org
}
Serial.println(“END WAIT”);
}
void readline(void) {
char c;
buffidx = 0; // start at begninning
while (1) {
c=Serial.read();
if (c == -1){
delay(500);
continue;
}
if(((int)c == 13) || (int)c == 10){
buffer[buffidx] = 0;
return;
}
if (buffidx == BUFFSIZ-1){
buffer[buffidx] = 0;
return;
}
buffer[buffidx++]= c;
}
}
but it’s showing me errors…Please suggest me the solution