Arduino Controlled Car Tracking System Based on SMS

34,284

92

25

About: Computer engineer

Intro: Arduino Controlled Car Tracking System Based on SMS

Hi I made an Arduino Controlled Car Tracking System based on SMS for my father's car. 
The used modules are;
Arduino nano V3.0
SkyLab GPS module
WaveCom GSM module

The SoftwareSerial Library , TinyGPS are used to communicate with modules.
When I called the device from registered phone numbers , it returns the lat , lon and the googlemap link in a sms =)

Source Code is :




<code>

#include <TimerOne.h>
#include <TinyGPS.h>
#include <SoftwareSerial.h>

TinyGPS gps;

SoftwareSerial gsmSerial(2, 3);
SoftwareSerial ss(5,6);

String inData = "";
boolean inputAvailable = false;

String ADMIN_PHONE_NUMBER_1 = "05558233343";
String ADMIN_PHONE_NUMBER_2 = "05323342543";
String ADMIN_PHONE_NUMBER_3 = "05396933985";
String ADMIN_PHONE_NUMBER_4 = "05373624959";

String recievedNumber = "";
String  bora =  "";
int callback_counter=0;
int indexofMsgStr = 0;
float flat, flon, fkmph;
unsigned long age;
char okunanKarakter = '*';
float flat_store = 0.0;
float flon_store = 0.0;
boolean gsmdinle = false;

void setup()
{
  delay(30000);
  Serial.begin(9600);
  ss.begin(9600);
  gsmSerial.begin(9600);

  Timer1.initialize(8388480); //about 8.3 seconds
  Timer1.attachInterrupt(callback);

  delay(2000);
  gsmSerial.listen();

  //Serial.println("basla");

  gsmSerial.println("AT+CLIP=1");
  
  delay(1000);
  gsmSerial.println("ATE=0");
 
  delay(1000);
 
  gsmSerial.listen();
}

void loop() // run over and over
{
  
   while(gsmSerial.available())
   {
     inputAvailable = true;
     okunanKarakter = (char) gsmSerial.read();
     inData += okunanKarakter;
     if(okunanKarakter == ','){
       break;
     }
   }
  
   if(inputAvailable)
   {
     inputAvailable=false;
     processData();
     inData="";
   }
}
void printGPSDATA(){
  gps.f_get_position(&flat, &flon, &age);

  if( flat > 0.0 )
    flat_store = flat;

  if( flon > 0.0 )
    flon_store = flon;

  fkmph = gps.f_speed_kmph(); // speed in km/hr

}

void TAKEGPSDATA(){
  //Serial.println("---->TAKEGPSDATA");
  boolean gps_valid = false;
  ss.listen();
  delay(1000);
 
 
  for(int i =0 ; i < 200 ; i++)
  {
    if(!gps_valid)
    {
      while (ss.available())
      {
        char c = ss.read();
        if (gps.encode(c)) // Did a new valid sentence come in?
        {
          printGPSDATA();
          gps_valid = true;
          break;
        }
      }
      delay(5);
    }
  }
 
  gsmSerial.listen();
  delay(1000);
  //Serial.println("<----TAKEGPSDATA");
 
}

void processData(){
  //Serial.println(inData);

  if(IsRinging())
  { // telefon caliyor
    //Serial.println("telefon caliyor");
    indexofMsgStr = inData.indexOf("05");
    recievedNumber = inData.substring(indexofMsgStr , indexofMsgStr+11);
    //Serial.print("recieved number=");
    //Serial.println(recievedNumber);

    if(IsAdminNumber())
    {
      //Serial.println("admin ok!");
      TAKEGPSDATA();
      KoordinatBilgisiGonder();
    }

  }
}

void KoordinatBilgisiGonder(){
 
 
  bora = "AT+CMGS=\"";
  bora+= "+9";
  bora+=recievedNumber;
  bora+= "\"";
 
  gsmSerial.println("AT+CMGF=1");
  delay(2000);
  gsmSerial.println(bora);
  delay(1000);

  gsmSerial.print("ENLEM =");
  gsmSerial.println(flat_store,6);
  gsmSerial.print("BOYLAM =");
  gsmSerial.println(flon_store,6);
 
  gsmSerial.print("HIZ =");
  gsmSerial.print(fkmph);
  gsmSerial.println(" km/saat");
 
  gsmSerial.println("LINK =");
  gsmSerial.print("http://maps.google.com/?ie=UTF8&hq=&ll=");
  gsmSerial.print(flat_store,6);
  gsmSerial.print(",");
  gsmSerial.print(flon_store,6);
  gsmSerial.print("&z=20");
  gsmSerial.write(26);

 
}

int IsRinging()
{
  if (inData.indexOf("CLIP:") >= 0 )
  {
    return 1;
  }
  else
  {
    return 0;
  }
}
int IsAdminNumber()
{

  if(ADMIN_PHONE_NUMBER_1 == recievedNumber)
  {
    return 1;
  }
  else if(ADMIN_PHONE_NUMBER_2 == recievedNumber)
  {
    return 1;
  }
  else if(ADMIN_PHONE_NUMBER_3 == recievedNumber)
  {
    return 1;
  }
  else if(ADMIN_PHONE_NUMBER_4 == recievedNumber)
  {
    return 1;
  }
  return 0;

}

void callback()
{
  callback_counter++;
 
  if(callback_counter >= 80)
  {
    //Serial.print("callback ok!");
    callback_counter = 0;
    TAKEGPSDATA();
  }
}


</code>

2 People Made This Project!

Recommendations

  • Optics Contest

    Optics Contest
  • Plastics Contest

    Plastics Contest
  • Audio Contest 2018

    Audio Contest 2018

25 Discussions

0
None
Zeeshan AhmedV

1 year ago

Hii,
Can U please provide me interfacing of this.

0
None
JohnrickW

2 years ago

hello, is this code compatible with arduino uno?

0
None
SyaheraS

2 years ago

Hi, can i replace the GSM modem with SIM800L?

1 reply
0
None
AzreenA1

2 years ago

Hi. Can u help me to make this tracker system by using lonet sim808 and arduino uno?

0
None
svampaxel

2 years ago

hello! we have made a gps tracking device but we are using a Sim800l gsm. Do you know what code we should use

thanks beforehand

0
None
boracinerzack247

Reply 6 years ago on Introduction

GSM Module 80 USD
GPS Module 35 USD
Microcontroller almost 25 USD
The other materials (cables, RS232 to TTL converter etc.. ) 20 USD

totally 160 -180 USD

0
None
sergiotuxboraciner

Reply 6 years ago on Introduction

Hi, how are you?
Please, I have the GPS and GPRS skylab SKM53 Hilo - Sagem and I want to do anything similar.
Could you send me the code for the arduino test?

Thanks

Sérgio
sergiolinux@gmail.com

0
None
boracinersergiotux

Reply 5 years ago on Introduction

The source Code :
https://github.com/boraciner/gps-gsm-boraciner/blob/master/gps-gsm-boraciner.ino

0
None
MichaelP58

3 years ago on Introduction

sir good day, i can you if you have a code for arduino 238 codes just to receive long and lot then plot it to the web page? heres my e mail sir artusalbi@gmail.com, thank you ver much..

wow this is the same which I was looking from long

I am a newbie but I am very much fascinated by the this or projects from arduino board.

Could anybody can help me understanding & setting up the project step by step.

I would be very much thankful.Please help me

0
None
boracinereggspanther

Reply 5 years ago on Introduction

THERE IS A NEW VERSION ===================>>>>>>>>>>>>
https://www.instructables.com/id/Version-20-Arduino-Controlled-Car-Tracking-System/

Hey
Im trying to make a Cheap Car tracker
so I want to make one with the cost between $25 - $35
so ive found this arduino 3$ arduino and the gprs shield is the only problem so ive found this guy who make mini shield but I have no idea how to make one with a gprs module
and also ive found this shield for 16.20€

im very new bie so ive bought this for u
I think that u aew interested in made a very cheap car track too with less than 180 USD!
Gimme ur opnion! Im from Brazil and we have a lot of prob with car thiefs