After the success I had with rocket born GPS tracking I decided (with a little persuasion from a client) to start work on a vehicle based tracking system. The general idea behind this system is very similar to my GPS Tracker Rev 3, but less emphasis was put minimizing size and power consumption, and more effort was put into making a tracker that will work without any user intervention. Also, there was no need for the extra sensors, so they were removed from the board. The result was a tracker that could use most of the low-level code I had written for the rev 3 of my gps tracker, and was built using the same components, and just needed the main code rewritten to work in an autonomous mode.
With that in mind, I drew up a schematic and did a board layout:
note, there are some errors in these, for reference only
note, the SD card socket and SPI uart never were populated, their pads were included for possible future expansion
I then etched a PCB for it, and populated everything:
Transmitter and the underside of its circuit board (note extensive filtering added, I was having power supply issues so I added excessive filtering to get rid of them, the next design will be designed properly):
Receiver and a complete module:
The theory of operation of this tracker is actually quite simple. There is is a 'base station' transceiver that is connected a computer over usb (emulating a serial port), which connects to 1 or more 'tracker' transceivers that each have a GPS in them.
In each tracker there is the GPS receiver (a lassen IQ) which takes care of all of the GPS related functions, and keeps the current location stored in its internal memory. This is connected to a PIC18F2550 microprocessor, which is then connected to a XT09-SI 900MHz transceiver. The microprocessor listens for a query (specifically, QLxxx; where xxx is the address of the tracker), and upon hearing it over the wireless link it queries the GPS for its current location (and converts the output into UTM coordinates for this particular tracker), and then formats the output in a response, specifically [address](tab)[northing](tab)[easting](tab)[zone](tab)[gps status](line feed)(carriage return), which is sent back over the wireless link.
In the base station there is another XT09-SI transceiver module, and another PIC18F2550 microprocessor which runs a usb-serial emulator on it. The main routine has a timer that sends a query to each of the tracker nodes, and prints any responses back over the USB port to a terminal on the computer it is attached to.
You can download a zip of the tracker MPLAB project here, and the base station here. NOTE-the projects were built to use the MCHPUSB bootloader provided by Microchip in their USB framework, which needs to be modified slightly to work properly with the pic18f2550 I am using. You can get a zip of the project here, but keep in mind if you want to recompile the project you must have the full version of Microchips C18 compiler (or at least be withing the first 60 days of the trial period) or the code will be too large to fit in the allotted space. To open any of the projects you need MPLAB with the C18 compiler, both of which are available for free (the compiler is a 60 day trial, but even after the trial period expires the main code will compile just fine) from Microchip.
To program the device the first time you must use a hardware programmer (ex, an ICD2) to load the MCHPUSB bootloader .hex file. After this process is done you can use the usb programmer included in the USB framework to load the main code for the project over USB. There are complete instructions for this in the usb framework download from microchip.
Everything on this site (pictures, schematics, code, etc) is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License, which essentially states that you can do whatever you want with it, so long as you
If you need a different license, contact me.
questions? comments? Want to help? email me firstname.lastname@example.org