Instructables

Athena: The Global Car Tracking System(3D Images)

FeaturedContest WinnerContest Winner
Bring out your 3D glasses and enjoy viewing in a novel way! I have added a new dimension to my instructable. If you do not have 3D glasses, then you can make one yourself. The following link explains how to make 3D glasses ( link ).

Please Note: This instructable contains 3D images which are best viewed with Red and Cyan 3D Glasses. However, for those of you who do not have 3D glasses, this instructable also contains 2D images.




Every year about 700,000 vehicles get stolen in US. In fact, a car is stolen every 45 seconds.

We all love our cars and whether it is a roaring Lamborghini or a purring Prius, we are attached to it and wish that it never gets stolen.

I am very attached to my family car and take lots of precaution that I do not park my car in secluded places or double check that I always lock my car when I park it anywhere and always carry my car keys with me. However, I am still worried whether my car is safe. In order to get rid of these genuine worries, I decided to design my own low cost car tracking system.

In this instructable, I have explained the process of building one's very own Global Car Tracking System -'Athena' - for a cost of just 100$. The steps for building this device is very simple and explained in a lucid manner. The skills required for you to build this is minimum (Basic knowledge about electronics and the Arduino IDE).

I have christened this device by the name 'Athena' because Athena is the Greek Goddess of navigation. 

So what are we waiting for.....let's get started.......

    
 
Remove these adsRemove these ads by Signing Up

Step 1: Parts Needed:

Picture of Parts Needed:
The following is a list of parts needed to build 'Athena' :-

Supplies :
  1. Arduino Uno
  2. Arduino GSM Shield (I have used a SIM900 GSM/GPRS Shield Module)
  3. GPS Module
  4. Adapter Plug for powering the Arduino
  5. 4pcs of LM7805 IC
  6. PCB
  7. Wires
  8. Male Header Pins
  9. Female Header Pins
  10. Project Enclosure
Tools :
  1. Soldering Iron
  2. Solder
  3. Soldering Wax
  4. Drill
  5. Hacksaw



 

Step 2: The Circuit: Voltage Regulator Circuit

The Arduino and GSM shield operate at voltages between 5 volts and 12 volts. Although the car has a 12 volt battery and electrical system, the voltage can sometimes spike up and damage the Arduino if connected directly. Hence to be on the safer side, I have decided to use an LM7805 Voltage regulator to regulate the 12 volts input voltage to 5 volts. The LM7805 IC generates an output of 5 volts 0.5 amps. Since the GSM module can sometimes draw upto 2 Amperes of current, I have used 4 pcs of LM7805 IC to meet the requirement.

The Circuit :
  1. Cut the PCB using a hacksaw into a piece large enough to fit the 4pcs of LM7805 IC (Refer to Pic. 1).
  2. Arrange the LM7805 in a parallel connection on the PCB (Refer to Pic. 1) and bend the leads of the IC to connect them in parallel(Refer to Pic. 3)
  3. Solder Wires to the 12v Input of LM7805, Ground Input, 5v Output of LM7805 and Ground Output.
  4. Connect the Adapter plug to the 5v Output and Ground Output Wires. The final product should look like Pic. 5 

Step 3: Preparing the Project Enclosure: Drilling Holes

Picture of Preparing the Project Enclosure: Drilling Holes
3D 100_0780.jpg
In this step you will drill the holes to mount the Arduino and the GSM Antenna to the project enclosure.
  1. Drill four holes at the bottom of the project enclosure to secure the Arduino Uno in it.
  2. Drill a hole on the left wall of the enclosure big enough for the USB cable to connect to the Arduino. 
  3. Drill a hole on the right wall for the GSM Module Antenna.
  4. Drill two holes on the right wall for the Power Input wires.

Step 4: Wiring the GPS Module

The GPS module must be connected in a detachable manner to the Arduino Uno. If wires are soldered to the module, then the module cannot be reused for some other application or project. Hence I have used header pins to create a detachable connection between the GPS module and the Arduino. The following are the steps to create a detachable connection:-
  1. Cut four pieces of wire and solder the male header pins to one end of the wire. Wrap the soldered ends of the wire in insulation tape(Refer to Pic. 3).
  2. If female header pins are available, then solder the other ends of the wire to the female header pins. (Top tip: If female header pins are not available, then briefly heat the ends of the wire over a candle to partially melt and loosen up the insulation on the wire. Then force each of the wires into the Vcc, Gnd , Tx and Rx pins of the GPS Module. Refer to the Pic. 4)
  3. After connecting the wires to the Vcc, Gnd , Tx and Rx pins, the GPS module should look like Pic. 6  

Step 5: Final Assembly

Now you can assemble all the parts of the Global Tracking System.
  1. Place the Arduino Uno in the project enclosure and fasten it with screws or zip tie(Refer to Pic. 1).
  2. Insert the Adapter plug into the Arduino and place the Voltage Regulator Circuit into the enclosure. Insert the Input Voltage wires through the two holes drilled in the enclosure(Refer to Pic. 3).
  3. Screw the GSM antenna in place(Refer to Pic. 5). Insert SIM card into the GSM module and place the module over the the Arduino Uno( Refer to Pic. 7).
  4. Place the GPS module in the project enclosure and connect it to the GSM shield in the following manner. Connect the Vcc pin from the GPS module to 5v on the GSM Shield. Connect the Gnd pin from the GPS module to Gnd pin on the GSM Shield. Connect the RXD pin from the GPS module to Pin 5 on the GSM Shield. Connect the TXD pin from the GPS module to Pin 4 on the GSM Shield. 

Step 6: Programming the Arduino:

Picture of Programming the Arduino:
Before you can program the Arduino Uno, you must first install the Tiny GPS library for the GPS Module.
These are the steps to install the library :-
  1. Download the Tiny GPS library for the Arduino. (link)
  2. Extract the zip file to the folder: " Libraries/Documents/Arduino/libraries "
  3. Now you would see the library under   " Sketch --> Import Library "  in the Arduino IDE.
  4. You can proceed with the Arduino Uno programming.

The following is the source code for the Arduino. Copy the code below and load it on the Arduino :-

//Program written for Global Car Tracking System by Jayvis Gonsalves
#include <SoftwareSerial.h>
#include <string.h> 
#include <TinyGPS.h>
SoftwareSerial Sim900Serial(2, 3);
byte buffer[64];                             // buffer array for data recieve over serial port
int count=0;                                 // counter for buffer array
SoftwareSerial GPS(4, 5);
TinyGPS gps;
unsigned long fix_age;
long lat, lon;
float LAT, LON;
void gpsdump(TinyGPS &gps);
bool feedgps();
void getGPS();
void setup()
{
  Sim900Serial.begin(19200);     // the SIM900 baud rate
  GPS.begin(9600);                   // GPS module baud rate  
  Serial.begin(9600);                  // the Serial port of Arduino baud rate.
  delay(500);
  Sim900_Inti();
}
 
void loop()
{
  Sim900Serial.listen();
  if (Sim900Serial.available())                     // If date is comming from from GSM shield)
  {
    while(Sim900Serial.available())              // reading data into char array 
    {
      buffer[count ]=Sim900Serial.read();  // writing data into array
      if(count == 64)break;
     }
    Serial.write(buffer,count);                     // if no data transmission ends, write buffer to hardware serial port
    Cmd_Read_Act();                               //Read the 'COMMAND' sent to SIM900 through SMS
    clearBufferArray();                               // call clearBufferArray function to clear the storaged data from the array
    count = 0;                                          // set counter of while loop to zero
 
 
  }
  if (Serial.available())                       // if data is available on hardwareserial port ==> data is comming from PC or notebook
    Sim900Serial.println(Serial.read());       // write it to the GPRS shield
}
void clearBufferArray()                             // function to clear buffer array
{
  for (int i=0; i<count;i )
    { buffer[i]=NULL;}                                // clear all index of array with command NULL
}
void Sim900_Inti(void)
{
  Sim900Serial.println("AT CMGF=1");    // Set GSM shield to sms mode
  Serial.println("AT CMGF=1");
  delay(500);
  Sim900Serial.println("AT CNMI=2,2");
  Serial.println("AT CMGF=1");
  delay(500);
}
void Cmd_Read_Act(void)                       //Function reads the SMS sent to SIM900 shield.

  char buffer2[64];
  for (int i=0; i<count;i )
  { buffer2[i]=char(buffer[i]);}  
    
  if (strstr(buffer2,"INSTRUCTABLES"))    //Comparing password entered with password stored in program  
  {
      Serial.println("Password Authenticated.");
      Serial.println("Sending reply SMS. ");
      SendTextMessage();            
  }
  
}
void SendTextMessage()
{
  
  
Sim900Serial.print("AT CMGF=1\r");    //Sending the SMS in text mode
delay(100);
Sim900Serial.println("AT CMGS = \"**********\"");//The predefined phone number
delay(100);
Sim900Serial.println("Please wait while Module calculates position");//the content of the message
delay(100);
Sim900Serial.println((char)26);//the ASCII code of the ctrl z is 26
delay(100);
Sim900Serial.println();
int counter=0;
GPS.listen();


for (;;)
{
   long lat, lon;
   unsigned long fix_age, time, date, speed, course;
   unsigned long chars;
   unsigned short sentences, failed_checksum;
   long Latitude, Longitude;
    
   // retrieves /- lat/long in 100000ths of a degree
   gps.get_position(&lat, &lon, &fix_age);
   getGPS();
   Serial.print("Latitude : ");
   Serial.print(LAT/1000000,7);
   Serial.print(" :: Longitude : ");
   Serial.println(LON/1000000,7);
   if (LAT == 0 && LON == 0)
  {
    continue;    
  } 
  counter ;
  if (counter<30)
  {
    continue;    
  }
  
  Sim900Serial.print("AT CMGF=1\r");    //Sending the SMS in text mode
  delay(100);
  Sim900Serial.println("AT CMGS = \"**********\"");//The predefined phone number
  delay(100);
  Sim900Serial.print("Latitude : ");
  Sim900Serial.print(LAT/1000000,7);
  Sim900Serial.print(" :: Longitude : ");
  Sim900Serial.println(LON/1000000,7);//the content of the message
  delay(100);
  Sim900Serial.println((char)26);//the ASCII code of the ctrl z is 26
  delay(100);
  Sim900Serial.println();
  counter=0;
  break;
 }      
}

void getGPS()
{
   bool newdata = false;
   unsigned long start = millis();
   while (millis() - start < 1000)
   {
      if (feedgps ())
      {
         newdata = true;
       }
     }
     if (newdata)
   {
      gpsdump(gps);
    }
}
bool feedgps()
{
   while (GPS.available())
 {
      if (gps.encode(GPS.read()))
        return true;
      }return 0;
}
void gpsdump(TinyGPS &gps)
{
   gps.get_position(&lat, &lon);
   LAT = lat;
   LON = lon;
   {
      feedgps(); 
    }
  }









 

Step 7: Testing

Picture of Testing
3D 100_0820.jpg
Now that you have built the 'Athena', it is time to install it in your vehicle. The device can be installed anywhere in the car: the hood, cabin or trunk. Remember that the device must be hidden from view and difficult to locate by a car thief. The device must directly be connected to the 12v Car battery as it must run even when the car is switched off.

Steps to track down your vehicle using 'Athena' :-
  1. When your car is stolen and you wish to track your car, simply send a text message containing the password to your car.
  2. Athena then verifies the password you entered with the password stored in its program. If the password matches, then Athena sends an acknowledgment SMS to the predefined phone/cell number stored in it.
  3. Athena then begins to calculate its GPS position and once a GPS lock is acheived, it sends the coordinates of its location to the number stored in its program.
  4. After you receive the Coordinates in your message, copy them to the search bar in google maps to reveal the position of your stolen car.   

And there you go...congratulations!!! You have built your very own Global Car Tracking System.

If you have any difficulties building this instructable, do feel free to ask.

GREAT!!!!! NOW GO AHEAD AND CONSTRUCT ONE YOURSELF!!!!! : )
 
dpatel38yesterday

I am using Arduino Mega for similar project. But when I tried to interpret the output of GPS on arduino's serial monitor it shows in the form symbols. How can i get it corrected?

Check your baud rate.

Hello again! so ive found that this instructable can be more expensive than buy a gprs that do the same
soo
its possible to made it with a $3 arduino and make a cheaper shield like this guy did with these projects of mini shields?

with a cheaper shield this project will bet herself awesomeness

builder4317 days ago
What is the default pass code? How is it changed?

You can see in the code the line where it reads:

if (strstr(buffer2,"INSTRUCTABLES")) //Comparing password entered with password stored in program

This is the line that checks the password, in the guide it is INSTRUCTABLES as an example

Can I use This ---- $3 arduino --- instead of a arduino and can u say more about how I gonna do this ... only answer me with few words if u dont want to waste u time... Please answer me?

hcarneiro1 month ago

I need the Arduino to send a signal to 12v relay, something like that.

This picture says it has to send a negative signal to activate the relay.

http://imagem.clubedovectra.com.br/images/2014/03/07/5572305708.png

For example, I send an SMS with the word "relay call," and it sends a negative signal to activate the relay.

I need such a system to cut power to the fuel pump on my car

Someone you help me?

gandyman1 month ago

Was having the same issues as Mashup and Albarra.

Got it working but without Read Command. Still trying to get that part working. I needed to add a few ++'s and things I added were software turn on commands for the GPRS and now the ams comes as a link to google maps that you can just click on and see the location. Code I used was :

#include <SoftwareSerial.h>

#include <string.h>

#include <TinyGPS.h>

SoftwareSerial GPRS(7, 8);

byte buffer[64]; // buffer array for data recieve over serial port

int count=0; // counter for buffer array

SoftwareSerial GPS(4, 5);

TinyGPS gps;

unsigned long fix_age;

long lat, lon;

float LAT, LON;

void gpsdump(TinyGPS &gps);

bool feedgps();

void getGPS();

void SIM900power() // software equivalent of pressing the GSM shield "power" button

{

digitalWrite(9, HIGH);

delay(1000);

Sim900_Inti();

}

void setup()

{

GPRS.begin(19200); // the SIM900 baud rate

SIM900power();

GPS.begin(4800); // GPS module baud rate

Serial.begin(19200); // the Serial port of Arduino baud rate.

delay(500);

}

void loop()

{

GPRS.listen();

if (GPRS.available()) // If date is comming from from GSM shield)

{

while(GPRS.available()) // reading data into char array

{

buffer[count++]=GPRS.read(); // writing data into array

if(count == 64)break;

}

Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port

SendTextMessage(); //Took out Read the 'COMMAND' sent to SIM900 through SMS

clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array

count=0; // set counter of while loop to zero

}

if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook

GPRS.write(Serial.read()); // write it to the GPRS shield

}

void clearBufferArray() // function to clear buffer array

{

for (int i=0; i<count;i++)

{ buffer[i]=NULL;} // clear all index of array with command NULL

}

void Sim900_Inti(void)

{

GPRS.println("AT+CMGF=1"); // Set GSM shield to sms mode

Serial.println("AT CMGF=1");

delay(500);

GPRS.println("AT+CNMI=2,2");

Serial.println("AT CMGF=1");

delay(500);

}

void SendTextMessage()

{

GPRS.print("AT+CMGF=1\r"); //Sending the SMS in text mode

delay(100);

GPRS.println("AT + CMGS = \"+19999999999\""); //The predefined phone number

delay(100);

GPRS.println("Please wait while Module calculates position"); //the content of the message

delay(100);

GPRS.println((char)26);//the ASCII code of the ctrl z is 26

delay(100);

GPRS.println();

delay(5000);

int counter=0;

GPS.listen();

for (;;)

{

long lat, lon;

unsigned long fix_age, time, date, speed, course;

unsigned long chars;

unsigned short sentences, failed_checksum;

long Latitude, Longitude;

// retrieves /- lat/long in 100000ths of a degree

gps.get_position(&lat, &lon, &fix_age);

getGPS();

Serial.print("Latitude : ");

Serial.print(LAT/1000000,7);

Serial.print(" :: Longitude : ");

Serial.println(LON/1000000,7);

GPRS.print("AT+CMGF=1\r"); //Sending the SMS in text mode

delay(100);

GPRS.println("AT + CMGS = \"+19999999999\""); //The predefined phone number

delay(100);

GPRS.print("maps.google.com/maps?q=");

GPRS.print(LAT/1000000,7);

GPRS.print("+");

GPRS.println(LON/1000000,7);//the content of the message

delay(100);

GPRS.println((char)26);//the ASCII code of the ctrl z is 26

delay(100);

GPRS.println();

delay(5000);

counter=0;

break;

}

}

void getGPS()

{

bool newdata = false;

unsigned long start = millis();

while (millis() - start < 1000)

{

if (feedgps ())

{

newdata = true;

}

}

if (newdata)

{

gpsdump(gps);

}

}

bool feedgps()

{

while (GPS.available())

{

if (gps.encode(GPS.read()))

return true;

}return 0;

}

void gpsdump(TinyGPS &gps)

{

gps.get_position(&lat, &lon);

LAT = lat;

LON = lon;

{

feedgps();

}

}

I am having the same issue as Albarra.

One thing I had to do to get text recieving to work on my shield was to go into SoftwareSerial.h and change the buffer from 64 to 128 to get all the text through. Would it make sense to change the byte buffer[64]; line to 128 as well then?

I also have tried to sketch fromhttp://www.instructables.com/id/Athena-The-Global-Car-Tracking-System/

But just the same, the results in the serial monitor shows only from :
Serial.println("AT CMGF=1");
Serial.println("AT CMGF=1");
just :

AT CMGF=1
AT CMGF=1

as if the another AT command not be executed by GSM Shield.

PS: Arduino Uno, ICOMSAT V1.1 - SIM900 GSM / GPRS (http://www.famosastudio.com/icomsat-gsm-gprs-shield-v1-1)

brenryan2 months ago

Sorry if somebody has mentioned it before.

But instead of making the *debatable* iffy voltage regulation circuit.

Wouldn't it be much better to take apart one of these Car Cigarette Lighter to USB things and let that do all the work. They are fused as well so that is a bonus.

http://www.miniinthebox.com/dual-usb-cigarette-charger-for-iphone-4-and-4s-2100ma-black_p270947.html?pos=ultimately_buy_2

Would surely take a lot of hassle out of the process...

ibtkgw1332384361913.jpg
Swagata12 months ago

while(Sim900Serial.available()) // reading data into char array

{
buffer[count ]=Sim900Serial.read(); // writing data into array
if(count == 64)break;
}
i had a doubt in that part of the code isn't there a need for count++

Swagata13 months ago

And also please please supply a link for all the components.Would be very helpful

Swagata13 months ago

hey I too am from India(Bangalore).Could you let me know to how much the total expenditure will come in INR.

Thanks in advance

rootxion3 months ago

Very nice and interesting project. I'm just getting started with this Arduino stuff and your project was my motivation. Specifically I'm using:

Arduino Uno r3, IComsat GSM/GPRS v1.1, Parallax PMB-688 GPS

I even got a 16x4 Samsung LCD to test displaying coordinates on the LCD.

So far I have tested the GPS, LCD separately successfully. I'm trying the IComsat to send simple text messages for testing but it's not working. I'm trying the examples on the supplied library (https://github.com/jgarland79/GSM_Shield) but I receive a SIM900 error (will post pics on next message). I can see the power, status and net LEDs on the board turned on and blinking. The SIM card I'm using is from AT&T.

As I can see on you code you don't use any special library to deal with the GSM other than the SoftwareSerial.h

Will try some other examples today and let you know if it works.

rootxion rootxion3 months ago

As Skipper (Madagascar Penguins) would say "proublema resueltou".

Used a library I found at: https://gsm-shield-arduino.googlecode.com/files/BE...

And also had to set the jumpers on the shield TX pin to #2 and RX pin to #3. Loaded one of the examples and it's now working fine. Now that everything is working I'll start putting it all together. Once I get everything working I'll post procedure, code, etc.

I may have missed it but is there a list with links to buy these materials, preferably on Amazon? Some of the materials I saw on the supplies list are very vague. Thanks a lot.

Can you specify for which items should I post the link

asalvatierra3 months ago
Hi, great tutorial! Congratulations! Could you please tell me if the IComSat v1.1 - SIM900 GSM/GPRS Shield, should be an alternative for this project? The wiring of the GPS to the pins it's the same? Thanks!!
Thank you asalvatierra,

The IComSat should work well as an alternative.

Hi! Thanks for your reply! What is the specification of the pins 4 and 5 that connect to GPS? IComSat have different pin order in the shield, so i very confused about the connections from GPS to GSM shield. Thanks!

Can you provide me the specification sheet of IComSat

mahesh943 months ago
iam planning to use sim300, the same program can be used for tat also?
Jayvis Vineet Gonsalves (author)  mahesh943 months ago
If SIM300 supports AT Commands (which I think it should), then the same program should run.
c1c2c33 months ago
Could you please give me the exact name of your GSM shield
Also, which sim did you use?
One more thing, do you think the adafruit gps will work for this project
Jayvis Vineet Gonsalves (author)  c1c2c33 months ago
I had ordered the GSM shield from Ebay USA. Here is a link to the product (link).

I am from Mumbai, India and have used a prepaid SIM from MTNL.

The adafruit gps shield should work for this project. But I suggest that you have a look at this GPS module on Ebay which is available for about half the price of the adafruit one. (link)
jiannisgreece3 months ago
thanks for the reply!!!
another question is, how can i  learn the commands in order the arduino to communicate with the gsm/gprs module, for future use? Did you use any e-book? do you have any suggestions?
I have some intermidiate knowledge in   c programming
thanks !
jiannis from greece
Hi Jiannis, The commands used for communicating with the GSM module are known as 'AT Commands'. If you google the word AT commands it will throw up a lot of info about it. Here is a link of some other AT commands that you could use (link).
oconnor773 months ago
So im not quite sure I understand what kind of service fee's this thing would require besides your normal cell phone fee that you are texting from. Where did the sim card come from?
You do not incur any service fees. You are only charged for the SMS sent from your mobile phone to the tracking system and from the tracking system to your mobile phone.
drin_pogi3 months ago
"+" is missing
Hi,
Congratulations for this circuit, this is clever, very inexpensive ... This is a good proof of concept.
But I work in automotive electronics and, in my opinion, the hardware implementation is not adapted to the use profile. Thus, in the actual state, the reliability and lifetime of this circuit will be extremely bad.
First, for me, the power supply circuit is not only awfull, but also totally not acceptable for automotive use.
In general, it is impossible to use linear regulators with quiescent currents above 100mA, even with body controllers (Tmax=85°C) because of the heating of the component. For information, I used a LM7805 in a design, for external sensor supply. With a D-PAK package we never manage to obtain more than 300mA without having thermal shutdown, at ambient temperature (~25°C).
In addition, the reliability of this solution is very bad.
- If the 4 ICs are not exactly matched, the current won't be equally distributed between them.
- If one of the 4 ICs breaks or goes in thermal shutdown, the others will have to withstand a bigger current, then they will heat more, and will be more likely to break or go in thermal shutdown -> avalanche, failure of one compromises the whole power supply.
- I'm not 100% sure about this one : there is a high risk of oscillation with such parallel circuitry.
- No additional output capacitor for the regulators ? -> High oscillation risk.
- No additional input capacitor for the regulators ? -> Noise rejection on the on-board battery network, in paticular with high-frequency / high-current MCU modules ! This is not strictly dangerous because the requirements on this point are mostly normative, but it is a risk for oher ECUs in the car - I think the radio is the weakest victim. On automotive ECUs, it is strongly advised to have an input PI filter.
- Regulators are packed close to each other -> bad heat dissipation. The regulators should be at least mounted on a metalic heat dissipator.
- No transient protection -> The 7805 IC can withstand the load-dump 35V voltage, but must be protected against transient voltage (100Vautomotive transients, ESDs ...). A TVS is the roxor solution, ceramic input capacitors can also do the job (2x X7R 22nF minimum, in serial, 90°C from each other in order to avoid aggraved short-circuit in case one of the two breaks because of mechanical flexion). Note : having a big electrolithic capacitor on the input isn't enough, because they can't absorb all the transients.
- Power consumption : Vbatt x Iquiescent : 24W nominal / 32W max ! (note : battery voltage can rise up to 16V DC) Is there a sleeping mode ? Or is it connected on the APC (switched battery voltage) ? It is quite high for a circuit that must be supplied permanently ... Car batteries have a good capacity, but if the car is left stopped a long time, there is a little risk of having the battery depleted.
- You say that the module consumes up to 2A, but is it DC ? If it is just a transient, it is more wise to design a proper L-C filter - or PI filter - in order to absorb this current peak, better than over-sizing the whole power supply. It would be more reliable, and safer since a short-circuit will drain less current, then avoid current leaking from the battery when the car is stopped, and limiting the risk of fire (wires or PCB tracks burning ...).

I think a power supply with linear regulators could be used, with proper protections and heat dissipation, if the circuit is supplied on a switched battery voltage, or if it has a sleeping mode. If it is connected to the permanent battery voltage, the circuit will be even more exposed to failure, because it will constantly heat. Reliability and lifetime of ICs lower when temperature raises ...
This is what I think about the power supply. About the rest, don't forget that the modules use consumer or industrial rated components. On the Arduinio UNO, the main components are rated for 85°C. It won't be a problem if the module is inside the car, but it will if it is hidden behind the hood, close to the motor (cooling system is regulated at 90°C, for instance) ... Even below the sheet metal of the car body the temperature can rise far higher than 70°C during summer ... In this environment, some components can go in thermal breakdown very easily. And I am not even talking about the GPS and GSM modules and the plastic case ...

For me, the power supply should be changed, using a DC/DC switching module. It should be connected on the switched battery voltage (not supplied when the car is stopped).
If it has to be checking the position of the car even with the motor off (which is not absurd : wrecker, pound ...) then it should have a sleeping mode, which cuts the main power supply most of the time, then activates it periodically for position checking. And it should be hidden in the cabin or in the trunk, where the temperature is reasonnable.

I admit that these are not small modifications, but in the actual state, I don't think that this circuit will last long in a real car ... Adapting a circuit for automotive environment is always difficult.
Thank you Mr. Kerrigan for taking the time to write such a comprehensive comment. I will definitely work on improving the power supply circuit once I complete all my applications to the US Universities. I will upload the updates to the circuit by the end of January.
jiannisgreece3 months ago
very nice project!! i am new in this field, but i definately would give it a try to make one myself!!!
Jayvis Vineet Gonsalves, is it so easy as you describe? i am planning to buy the modules from ebay.
Thank you.

Yes, this project is very easy to build.

I only need to improve on the power supply circuit and make it more robust. I will upload the updates to the circuit by the end of January.
nbeched4 months ago
I wouldn't connect any LM7805 units in parallel, this is very bad.

You can get very inexpensive switching regulators that require no external components.
We're talking about $10-$15 for a 5V @ 3A regulator that is connected much the same as a 7805, but is a lot more reliable.

Awesome instructable otherwise.
I second this. If you have one of the LRs fail due to a high current load, the other 3 will likely fail immediately after. It's much better to use a single regulator, then chain several together in parallel, for many reasons.

You should be able to get one for WAY less than $10. Without much optimizing, I found some for ~$4 on Digikey:
http://www.digikey.com/product-detail/en/LT323AT%23PBF/LT323AT%23PBF-ND/888959

If one hunted around, one could get them for even less. I've seen one to that spec for around $2 each, even without bulk discount.
you could just use an outboard transistor (aka current booster), using a darlington or 2n3055.
nbeched jproffer3 months ago
As I care too much about efficiency, I respectfully disagree :)

See using any linear regulator is wasteful of power. Adding an external transistor turns your existing linear regulator into a more powerful one (capable of more output current), but at the end of the day, it is still a linear regulator.

Linear regulator acts as a series "variable resistor" that makes sure the output voltage is regulated (to a certain extent). So if you have 5V x 2A =10W at the output (or a 10W load), you have a 12V x 2A =24W at the input. So you're wasting 14W, realistically car battery is at 14-ish volts, so you'd be wasting about 18W of power. In other words, you car "sees" the thing you connected to it as a 28W load while only 10W of that are being delivered to the actual load.

Switching regulators act as (AC-)transformers but for DC circuits.
So if you have the same 5V@2A load, the input current consumption will be 10W/14V=0.714A (or about 700mA).
That assumes 100% efficiency. Realistically over 90% efficiency is achievable, so if 10W is at the load, you'll have about 10W/0.9=11.1W on the input.
11.1W/14V=0.793A which is about 800mA.
So with a switching regulator, the higher the input voltage - the lower the input current at the same load conditions.

If you add a backup battery at the input, this will become very relevant on the battery life.
Of course, if you add one on the 5V side, you won't have to worry nearly as much about it, but... oh well, I probably said enough :)

Merry Christmas!
jjones1494 months ago
Second the idea for a backup battery addition. Great instructable, going to build this to track golf carts... You got my vote!
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!