Tracking a Bike Ride & PIC16F88 GPS Logger DR1r7

My original intention for my PIC16F88 Delorme Tripmate GPS Logger and GPS Logger with Time and Speed was to log my runs around Lafayette and West Lafayette. However, I’ve found that the weight of the GPS makes it a real pain to lug it around. Running around with a weight bouncing around in my backpack is no fun. Now that it has gotten warmer and the sun is shining ’til 9 PM (really more like 9:30 PM), I’ve been biking quite a bit. The lower impact nature of bike riding makes it much easier to carry the Tripmate GPS receiver. So I took went out this afternoon for a ride to see how it performs:

2007-06-15 Bike Ride Path Thumbnail

And the ride did not turn out too bad! (Click the image above to see a better view of the route, outlined in yellow.) There are some problems with the logging, but this can be attributed to the quality of the fix (most likely 2-D for most of the ride) and the tendency for the GPS to loose its fix when the sky was occluded. See the upper right of the path where I went biking through the woods and you can see that it lost the fix from the time I entered the woods to the time I left them. Continue to the post for more information and the updated firmware.

A few weeks ago, I talked with an individual about modifying the firmware for use with PC GPS software. One major problem is the current size of the firmware. There are so many function calls at this point that is difficult to add much more. However, I was able to manipulate the output format to make it compatible with some software that reads NMEA sentences.

What are the functional changes in the firmware?

The updated firmware, which can be found at the bottom of the post, uses the same circuit as my PIC16F88 Delorme Tripmate GPS Logger and GPS Logger with Time and Speed. The output format is modified:

This sentence contains the following information:

  • 123456 UTC Time of fix 12:34:56
  • A Navigation receiver warning (A = Valid, V = Invalid)
  • 4234.4594,N Latitude 42 degrees, 34.4594 minutes North
  • 11233.2892,W Longitude 112 degrees, 33.2892 minutes West
  • 78910 EEPROM end address of the sentence (for determination of where the sentence was stored)

In addition, the serial baud rate has been increased to 38400 baud. This was done to decrease the read time; however, it may be a good idea to revert to 4800 baud if you plan on directly reading the data with a dedicated GPS program (like Microsoft Streets & Trips or Delorme Street Atlas USA) Therefore to read data, you must:

  1. Use a normal serial cable to connect computer and circuit
  2. Open serial terminal application with settings: 38400, 8, N, 1 and enable recording data
  3. Power circuit with mode switch depressed to read back GPS data stored on EEPROM
  4. Disconnect circuit power to stop reading data

Once the data has been captured, you can directly open the file with a NMEA processing program such as Nmea2kmz. If you use Nmea2kmz, make sure to use the following settings:

2007-06-15 Bike Ride Nmea2kmz settings

After the KML file is created, you can open it directly in Google Earth. If you are interested in more information about the route, look on the left-hand side and you can get information about the total trip time and the total distance followed. For example, today I biked 28.839 km (17.920 miles) in 1 hour, 23 minutes, and 53 seconds:

2007-06-15 Bike Ride Path Time and Distance Thumbnail

Here are the raw data file from this GPS logger firmware (DR1r7), the KML file created by Nmea2kml, and a KMZ file created by Google Earth for my bike ride this afternoon:

Source Code
As with the original PIC16F88 Delorme Tripmate GPS Logger and GPS Logger with Time and Speed, the PIC16F88 must be initially programmed with the ‘tinybld16F88_i8MHz _19200.HEX’ hex file to program the GPS logger firmware onto the PIC. If you have already programmed the bootloader onto the PIC then all you need is to load the newest firmware below.

6 thoughts to “Tracking a Bike Ride & PIC16F88 GPS Logger DR1r7”

  1. Could you correct published C file, please ?
    it has not CR/LF, all code displayed just a row.

    Thanks a billion!


  2. Hi,
    My name is Maliganis Nikolaos and Iam electroic engineering in Medical School of Thessaloniki (Macedonia Greece).
    Your file “16f88-24lc1025-gps-compress-dr1r7.c (HEX)” have a problem.
    Could you upload correctly or send me in above email address?
    Thanks at all,

  3. $GPRMC,185532,A,04025.7366,N,08653.9941,W,556.000,18

    Having the above single output from GPS Receiver, Is there a easy way to display the location on google earth (or any other free application).

    For example, in the above GPRMC string
    latitude = 04025.7366,N
    longitude = 08653.9941,W

    Is there a way to give this two values (latitude & longitude) and get the location on google earth.

  4. hi i am doing my M.Tech Final year project “vehicle Tracking system”so first i collect the Raw data through GPS transceiver so plz tell me how to stored in C# programming

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.