Project GPS Tracker

May, 2017

Finally found some time to bring this project to a working prototype stage. It's been on my mind for months.

The basic idea was to build a Car GPS tracking device which I could control with text messages (SMS), could give its current GPS location or provide GPS "Fencing" feature.

"Fencing" would work as a toggle - when turned on, it would periodically check if the current location has changed from the set one. Finally, should the location change, it would alarm the user.

I had these device traits in mind:

  • standalone rechargeable battery
  • a small, palm sized design
  • SIM card support (send/receive SMS messages)
  • A-GPS support

After some research, I stumbled across the Seeed Studio's Rephone Geo Kit, which contains a Lithium Cell battery, Xadow GPS module and a Xadow GSM module (antenna included). There is also a micro-USB connector, that can be used for battery charging.


The price might not have been the best ($50 at time of purchase), but it allowed fast prototyping, using Arduino IDE and numerous programming languages. Amazingly enough, no soldering was required either, since the modules connect with provided flexible flat cables.

Observe the flexible flat cables connecting modules

I was worried about the battery consumption, we are talking about GPS here after all. A colleague gave me a brilliant idea, to make things simpler, and use accelerometer for Fencing instead. Enter Xadow Basic sensors.


Instead of checking for periodic GPS location checks, I could periodically check for accelerometer movement. Should someone crash into, or even attempt to steal my parked car, that person certainly cannot do this without moving it. And I could check for location after getting the alarm notification anyway.

So I came up with a rough functional specification:

  1. the device must have a dedicated SIM card, and will be able to read received text messages (SMS)
  2. the device must respond only to a predefined (hardcoded) phone number, else the text message is ignored
  3. the device must respond to a set of predefined commands:
    • status (check for battery %)
    • location (check for current location)
    • fence (toggle fencing functionality)
  4. status command must return current battery %
  5. location command must return a google maps compatible location link
  6. fence command must acknowledge back the current state (1 / 0) and if enabled must:
    • periodically check if device is moving (accelerometer x,y,z axis)
    • alarm the hardcoded master number, should movement occur

All in all, it was a fun project!

Project specifics can be found here:

Code is available here: