An open source tracking device based on the Arduino platform.
Open Source Tracking Device
My project is an Open Source tracking device based on the Arduino platform.
A few years ago we had a bad ice storm here in Massachusetts and we lost power for several days. Well during the power outage my brother-in-law's house was robbed and one of the items stolen was my nephews' PS3. As is usually the case, none of the items were ever recovered.
I talked to a couple of law enforcement personnel and found out that gaming consoles were one of the most common things stolen from homes. That's when I came up with the idea to build a tracking device and place it inside a gaming console. Unfortunately there wasn't enough room inside an actual gaming console so I purchased an empty case off of Ebay and so was born the first prototype of my tracking device. You can read the full story here.
The idea was that if your house got robbed, there's a good chance your fake video game console would be among the list of stolen items. The article I wrote generated a lot of buzz and there were several requests asking me to write up a tutorial. That request turned out to be more difficult than what I had anticipated. Another thing I noticed, after browsing many forums, was that there were a lot of people looking to make tracking devices and place them in various other items.
That's when I decided to condense the project down into a single board.
So What's On The Board?
The board contains everything you'd need or want in a tracking device.
- GPS - An ultra sensitive -165dBm receiver with on board passive antenna that can be configured to a 10Hz update rate.
- GSM - SIM900 Quad band GSM module to connect to the GSM cellular network. Unlocked SIM card necessary (not included).
- USB Battery charger - charge rate set to 500mA by way of mini USB connector. Can be charged directly from most computers.
- Lipo Fuel Gauge - MAX17043 single cell lithium polymer fuel gauge.
- Accelerometer - BMA250 Triple axis +/-2 to +/-16g 10 bit accelerometer.
- Microcontroller - ATMega328p running at 3.3v 8MHz with the Arduino bootloader installed
- Power,GND,I2C,SPI,4 Analog/Digital and 1 digital IO pin headers
- Optional underside coin cell battery (CR1225) backup holder to retain GPS memory if main battery is disconnected
So How Does it Work?
Step 1: Text or email your 4 digit custom security code followed by your command code (ie 1234.0. ) using periods as a delimiting character to the tracking device.
Step 2: The tracking device verifies the security code and executes the given command code. In our example we used command code 0 which sends the coordinates back to whatever device sent the request (smart phone, Yahoo account, Google account, etc...).
Step 3: Wait about 5 - 7 seconds to receive the SMS back.
Step 4: Click the Google Maps link (example) to see the device's location.
Now if the tracking device were mounted in your car, and moving, the return link would also contain the speed and direction it was traveling.
What Else Can It Do?
Some of the other functions currently programmed are:
Speed Limit Alert: Let's say you have the device mounted inside your car, and maybe you're letting a "new driver" in the family take the car for the afternoon. You want to make sure they're driving safely and not going over the speed limit. You would then send an SMS to the device with an upper limit speed threshold, and if they exceed the limit an alert message would be sent to your phone/email.
Geo-fence: A Geo-fence gives the user an option to set a radius around your current location and if the device leaves the defined circle an alert message would be sent to your phone/email.
Motion Detection Alert: Since the device runs off a battery there's going to be times when the normal two day charge on a standard battery won't be long enough. For instance, you want to embed the tracking device inside an "object" in a remote location and if someone picks it up the device will wake up from a deep sleep mode and send out an alert message. This would give you the ability to stretch out a single charge from a couple of days to a few months.
Is That It?
That's the beauty of open source, all the schematics and code will be published, so with a little bit of programming knowledge, you can make the device do what you want it to do. There are header pins on the board for power (3.3v which can source another 450mA for external devices), I2C, SPI, analog and digital IO so you have the ability to connect external devices that can be controlled via SMS also.
Here's an example of something that could be programmed using the available hardware on the board and that is a crash monitoring system. Air bag sensors use accelerometers to measure when there is an impact to the vehicle. The board could be programmed to do this because it has an on-board accelerometer to monitor any instances of high acceleration (actually deceleration) and an alert could be sent out indicating a possible crash.
I think you'll find some fun and exciting rewards available. I thought I'd offer some of the main components of the tracking device on individual breakout boards so people could include them in their other projects.
You'll also find three different levels of pre-orders available.
- bare-bones level - includes just the tracking device board fully populated with components. This level is good for the person that already has an antenna (U.fl connection), a single cell Lipo battery and an optional programming cable.
- basic level - includes the tracking device, antenna and Lipo battery. This level is good for the individual that wants a tracking device and doesn't need/or want the advanced options available to customize the firmware. The basic user definable options such as phone number, email address, speed limit, etc can still be programmed by sending an SMS message to the device.
- advanced level - this includes everything in the basic level and additionally a programming cable for uploading customized firmware to the device.
Every dollar counts so if you like what you see please contribute and help me get this project off the ground.
Thanks for your support!
Since the Lipo battery is recharged using 5 volts from the mini USB connector, the easiest option would be to use a standard car charger that comes with most cell phones that have a mini USB connector on the end.
They also sell cheap adapters that plug into a cigarette lighter and give you the option to connect a USB cable to power any USB device.
The easiest way to update the firmware through the Arduino software would be to use a 3.3v IO FTDI cable/board similar to the ones sold here https://www.adafruit.com/products/70 or here https://www.adafruit.com/products/284 .
For the more experienced programmer who doesn't need the bootloader, there is an ISP connector on the board as well.