i have big problem with these i gsm module is not sending the location of the vehicle
iam using
1.arduino uno board
2.16*2 lcd display for cross checking my location
3.gsm module sim900A
4.gps module royaltek ReB 4612
5.vibration sensor for detecting the vibrations
6.buzzer for sounding when even their is an accident
here is my code plz let me know faults in my code
#include <SoftwareSerial.h>
#include<LiquidCrystal.h>
#define buzzer 8
#define E 9 //vibration sensor
LiquidCrystal lcd(7,6,5,4,3,2);
SoftwareSerial mySerial(9, 10);
char str[60];
char *test="$GPGGA";
char longitude[9];
char latitude[10];
int i,j,k;
int temp;
int led=13;
void setup()
{
lcd.begin(16,2);
mySerial.begin(9600);
Serial.begin(4800);
pinMode(buzzer,OUTPUT);
pinMode(E, INPUT);
pinMode(led, OUTPUT);
lcd.setCursor(0,0);
lcd.print("GPS Based Vehicle ");
lcd.setCursor(0,1);
lcd.print("Tracking System");
delay(3000);
lcd.clear();
}
void loop()
{
if (digitalRead(E)== 1)
{digitalWrite(buzzer, HIGH);
{
for(i=18;i<27;i++) //extract latitude from string
{
latitude[j]=str[i];
j++;
}
for(i=30;i<40;i++) //extract longitude from string
{
longitude[k]=str[i];
k++;
}
lcd.clear();
lcd.setCursor(0,0); //display latitude and longitude on 16X2 lcd display
lcd.print("Lat(N)");
lcd.print(latitude);
lcd.setCursor(0,1);
lcd.print("Lon(E)");
lcd.print(longitude);
delay(100);
mySerial.begin(9600);
mySerial.println("AT+CMGF=1"); //select text mode
delay(10);
mySerial.println("AT+CMGS=\"+918885751592\"\r"); // enter receipent number
mySerial.println("Vehicle Accident Happend at Place:");
mySerial.print("Latitude(N): "); //enter latitude in msg
mySerial.println(latitude); //enter latitude value in msg
mySerial.print("Longitude(E): "); //enter Longitude in Msg
mySerial.println(longitude); //enter longitude value in msg
mySerial.print("Help Please");
mySerial.write((char)26); //send msg Ctrl+z=26
temp=0;
i=0;
j=0;
k=0;
delay(20000); // next reading within 20 seconds
Serial.begin(4800);
mySerial.begin(9600);
}
}
else{
for(i=18;i<27;i++) //extract latitude from string
{
latitude[j]=str[i];
j++;
}
for(i=30;i<40;i++) //extract longitude from string
{
longitude[k]=str[i];
k++;
}
lcd.clear();
lcd.setCursor(0,0); //display latitude and longitude on 16X2 lcd display
lcd.print("Lat(N)");
lcd.print(latitude);
lcd.setCursor(0,1);
lcd.print("Lon(E)");
lcd.print(longitude);
delay(100);
mySerial.begin(9600);
mySerial.println("AT+CMGF=1"); //select text mode
delay(10);
mySerial.println("AT+CMGS=\"+918885751592\"\r"); // enter receipent number
mySerial.println("Vehicle located at :");
mySerial.print("Latitude(N): "); //enter latitude in msg
mySerial.println(latitude); //enter latitude value in msg
mySerial.print("Longitude(E): "); //enter Longitude in Msg
mySerial.println(longitude); //enter longitude value in msg
mySerial.write((char)26); //send msg Ctrl+z=26
temp=0;
i=0;
j=0;
k=0;
delay(20000); // next reading within 20 seconds
Serial.begin(4800);
mySerial.begin(9600);
}
}
void serialEvent()
{
while (Serial.available()) //Serial incomming data from GPS
{
char inChar = (char)Serial.read();
str[i]= inChar; //store incomming data from GPS to temparary string str[]
i++;
if (i < 7)
{
if(str[i-1] != test[i-1]) //check for right string
{
i=0;
}
}
if(i >=60)
{
break;
}
}
}
my problem sms is not coming from gsm module please verify it and let me know.
iam new to these arduino i have programmed above program by seeing so many videos
please try to help me
Thanking you
yours faithfully
Rupa Velamuri