Sie sind auf Seite 1von 14

#include<SoftwareSerial.

h>

SoftwareSerial mySerial(6,7); //GSM RX and TX pins

SoftwareSerial gps(A0,A1); //GPS RX and TX pins

#include <LiquidCrystal.h>

LiquidCrystal lcd(8,9,10,11,12,13);

#define L1 4 //KEY

int m1 = 2; // MOTROR PIN 1

int buzzer=3;

int sms_count=0;

int i=0,k=0,J=0;

int gps_status=0;

float latitude=0;

float longitude=0;

String Speed="";

String gpsString="";

char *test="$GNRMC";

String input1,input2,input3;

String input4,input5,input6;

void clear1()
{

for(i=0;i<10;i++)

input1="\0";

void setup()

pinMode(buzzer, OUTPUT);

pinMode(m1, OUTPUT);

digitalWrite(m1, LOW);

digitalWrite(buzzer, LOW);

pinMode(L1, INPUT);

digitalWrite(L1, HIGH);

lcd.begin(16,2);

lcd.clear();

lcd.print(" WELCOME TO ");

lcd.setCursor(0,1);

lcd.print(" THE PROJECT ");

delay(5000);
Serial.begin(9600);

mySerial.begin(9600);

gps.begin(9600);

void loop()

get_gps();

show_coordinate();

delay(2000);

if(!digitalRead(L1))

lcd.clear();

lcd.setCursor(0,0);

lcd.print("IGNITION ON");

delay(500);

if(Serial.available()>0)

int start,sto;

input3=Serial.readString();

start=input3.indexOf("@")+1;
sto=input3.indexOf("*");

input1=input3.substring(start, sto);

input2=input3.substring(9,22);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(input1);

delay(1000);

if(mySerial.available()>0)

int startgsm,stogsm;

input6=mySerial.readString();

startgsm=input6.indexOf("@")+1;

stogsm=input6.indexOf("*");

input4=input6.substring(startgsm, stogsm);

input5=input6.substring(9,22);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(input4);

delay(1000);

if(input4=="TRACK")

{
lcd.clear();

lcd.setCursor(0,0);

lcd.print(" SMS RECEIVED ");

lcd.setCursor(0,1);

lcd.print("TRACK");

delay(1000);

lcd.clear();

lcd.print("WAITING FOR GPS");

lcd.setCursor(0,1);

lcd.print(" SIGNAL ");

delay(2000);

gps.begin(9600);

get_gps();

show_coordinate();

delay(2000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("SMS SENDING");

mySerial.println("AT+CMGS=\"+917036987444\"\r"); // change to the phone number you using

delay(1000);

mySerial.println("YOUR VEHICLE IS IN THIS LOCATION "); //the content of the message

delay(200);
mySerial.print("Latitude:");

mySerial.println(latitude);

delay(500);

mySerial.print(" longitude:");

mySerial.println(longitude);

delay(500);

mySerial.println("TO CHECK ON GOOGLE MAPS CLICK ON BELOW LINK:");

mySerial.print("http://www.google.com/maps/place/");

mySerial.print(latitude);

mySerial.print(",");

mySerial.print(longitude);

mySerial.println((char)26); //the stopping character

delay(5000);

lcd.setCursor(0,1);

lcd.print("SMS SENT");

if(input4=="BLOCK")

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" SMS RECEIVED ");

lcd.setCursor(0,1);

lcd.print("BLOCK");

digitalWrite(m1, HIGH);
delay(1000);

while(1);

if(input1=="HW")

digitalWrite(m1, HIGH);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("HELMET : YES ");

delay(1000);

clear1();i=0;

if(input1=="HNW")

lcd.clear();

lcd.setCursor(0,0);

lcd.print("HELMET : NO ");

delay(1000);

digitalWrite(buzzer, HIGH);

delay(100);

digitalWrite(buzzer, LOW);

digitalWrite(m1, LOW);

clear1();i=0;
}

if(input1=="HAL")

digitalWrite(m1, LOW);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("ALCOHOL HIGH");

digitalWrite(buzzer, HIGH);

delay(1000);

digitalWrite(buzzer, LOW);

delay(3000);

mySerial.println("AT+CMGF=1"); //To send SMS in Text Mode

delay(2000);

gps.begin(9600);

get_gps();

show_coordinate();

delay(2000);

lcd.clear();

lcd.setCursor(0,0);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("SMS SENDING");
mySerial.println("AT+CMGS=\"+919985557190\"\r"); // change to the phone number you using

delay(2000);

mySerial.println("ALCOHOL HIGH DETECTED.");//the content of the message

delay(200);

mySerial.println("TO CHECK ON GOOGLE MAPS CLICK ON BELOW LINK:");

mySerial.print("http://www.google.com/maps/place/");

mySerial.print(latitude);

mySerial.print(",");

mySerial.print(longitude);

mySerial.println((char)26); //the stopping character

delay(5000);

lcd.setCursor(0,1);

lcd.print("SMS SENT");

sms_count++;

delay(2000);

clear1();i=0;

while(1);

else

lcd.clear();

lcd.setCursor(0,0);

lcd.print("VEHICLE STOP");
delay(1000);

void gpsEvent()

gpsString="";

while(1)

while (gps.available()>0) //Serial incoming data from GPS

char inChar = (char)gps.read();

gpsString+= inChar; //store incoming data from GPS to temparary string str[]

i++;

Serial.print(inChar);

if (i < 7)

if(gpsString[i-1] != test[i-1]) //check for right string

i=0;

gpsString="";

if(inChar=='\r')

{
if(i>60)

gps_status=1;

break;

else

i=0;

if(gps_status)

break;

void get_gps()

lcd.clear();

lcd.print("GETTING GPS DATA");

lcd.setCursor(0,1);

lcd.print("PLEASE WAIT.....");

gps_status=0;

int x=0;

while(gps_status==0)
{

gpsEvent();

int str_lenth=i;

coordinate2dec();

i=0;x=0;

str_lenth=0;

void show_coordinate()

lcd.clear();

lcd.print("Lat:");

lcd.print(latitude);

lcd.setCursor(0,1);

lcd.print("Log:");

lcd.print(longitude);

Serial.print("Latitude:");

Serial.println(latitude);

Serial.print("Longitude:");

Serial.println(longitude);

// Serial.print("Speed(in knots)=");

// Serial.println(Speed);

delay(2000);

/* lcd.clear();
lcd.print("Speed(Knots):");

lcd.setCursor(0,1);

lcd.print(Speed);*/

void coordinate2dec()

String lat_degree="";

for(i=19;i<=23;i++)

lat_degree+=gpsString[i];

String lat_minut="";

for(i=24;i<=28;i++)

lat_minut+=gpsString[i];

String log_degree="";

for(i=32;i<=34;i++)

log_degree+=gpsString[i];

String log_minut="";

for(i=37;i<=41;i++)

log_minut+=gpsString[i];

Speed="";

for(i=45;i<48;i++) //extract longitude from string


Speed+=gpsString[i];

float minut= lat_minut.toFloat();

minut=minut/60;

float degree=lat_degree.toFloat();

latitude=degree+minut;

minut= log_minut.toFloat();

minut=minut/60;

degree=log_degree.toFloat();

longitude=degree+minut;

Das könnte Ihnen auch gefallen