Pages: [1]   Go Down
Author Topic: GSM interfacing with Arduino Uno board to send and receive SMS  (Read 2418 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

We had interfaced GSM modem(MTSMC-G-F1)  with arduino uno R3 board and also an LCD to display the received SMS.
How to send  AT commands to modem from arduino board and receive the reply from modem to display it in the LCD...
Give me the coding please....
our coding is not working..
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

Post your code here smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i programmed the gsm for the reply 0 instead of OK ,because while using the modem in hyper terminal i got the reply as 0 for OK and 4 for error.


#include<LiquidCrystal.h>
LiquidCrystal lcd(9,8,7,6,5,4);
byte gsm_count=0;
byte reply=0;
byte d_count=0;
byte msg_flg=0;
byte msg_flag_2=0;
byte i=0;
byte j=0;
char Rec_Data=0;
byte message_rcd=0;
byte message_dpl=0;
char number[15];
char message[160];
void modem_initialization();
void gsm_read_message();
void clear_buffer();

void setup()
{
  delay(1000);
  Serial.begin(9600);
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Arduino with GSM");
  lcd.setCursor(0,1);
  lcd.print(" Interfacing ");
  delay(1000);
  delay(1000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("GSM Initialising      ");   
  modem_initialization();
}
void loop()
{   
  gsm_read_message();
  if(message_rcd==1)
      {
      lcd.clear();
      lcd.setCursor(0,0);lcd.print(number);
      lcd.setCursor(0,1);lcd.print(message);
      message_dpl=1;
      }
  if(message_dpl==1)
      {
    clear_buffer();
    Rec_Data =0;
    msg_flg=0;
    delay(100);
    array_clear();
    Serial.println("AT+CMGD=1");
    i=0;j=0;
      }
}
void modem_initialization()
{
  while(gsm_count<5)
  {
    clear_buffer();
    Serial.println("AT");
    delay(100);
    reply=Serial.read();
    if(reply!='0')
    {
      gsm_count++;
      modem_initialization();
    }
    else
    {
       lcd.setCursor(0,0);
       lcd.print("GSM Modem Found  ");
    }
  }
  if(gsm_count=='5')
  {
  lcd.setCursor(0,0);
  lcd.print("Error in GSM modem");
  }
}
void gsm_read_message()
{
  while(Serial.available() > 0) 
     {
            Rec_Data = Serial.read();
                        if( Rec_Data == '+'  && msg_flg == 0 )               
                            msg_flg=1;       
                   else if( Rec_Data == 'C' && msg_flg == 1 )
                            msg_flg=2;
                   else if( Rec_Data == 'M' && msg_flg == 2 )
                            msg_flg=3;
                   else if( Rec_Data == 'T' && msg_flg == 3 )
                            msg_flg=4;
                   else if( Rec_Data == 'I' && msg_flg == 4 )
                            {
                             clear_buffer();
                             Rec_Data =0;
                             msg_flg=0;
                             delay(300);
                             array_clear();
                             Serial.println("AT+CMGR=1");
                             i=0;j=0;
                              }
                else if( Rec_Data== 'G' && msg_flg == 3 )
                         msg_flg=4;
                else if( Rec_Data== 'R' && msg_flg == 4 )
                         msg_flg=5;
                else if( Rec_Data== ':' && msg_flg == 5 )
                         msg_flg=6;
                else if( Rec_Data == '"' && msg_flg == 6  )
                         d_count++;
                else if( Rec_Data != '"' && d_count==3 && msg_flg == 6)
                         number[i++] = Rec_Data;
                else if( Rec_Data=='*' && d_count>=5 &&  msg_flg == 8 )
                         msg_flag_2=1;
                else if( Rec_Data!='#' && msg_flag_2 == 1 &&  msg_flg == 8 && Rec_Data!=0X0D && Rec_Data!=0X0A )
                         message[j++]=Rec_Data;
                else if( Rec_Data=='#' && msg_flag_2 == 1 &&  msg_flg == smiley-cool
                              {   
                              msg_flag_2 = 2;
                              number='\0';
                              message[j]='\0';
                              i=0;j=0;
                              message_rcd=1;
                              } 
     }
}
void array_clear()
{
byte k=0; 
  for( k=0;k<=15;k++)
              number[k]='\0';
  for( k=0;k<=160;k++)
              message[k]='\0';
}
void clear_buffer()
 {
  char reply=0;
  while(Serial.available() > 0)
  reply = Serial.read(); 
}
Logged

Pages: [1]   Go Up
Jump to: