Shop OBEX P1 Docs P2 Docs Learn Events
Earthmate GPS — Parallax Forums

Earthmate GPS

ArchiverArchiver Posts: 46,084
edited 2002-03-13 02:36 in General Discussion
I just recieved my Nuts and Volts today and was wondering if anyone
has communicated with the Earthmate GPS by DeLorme. I have one laying
around and have never done much with it. I believe it uses Rockwell
Protocol in its data stream. Would love to get it to work with my
stamps. Might make a good addition to my bicycle super computer I
have been inventing in my mind.

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2002-03-12 02:43
    --- In basicstamps@y..., "longbow42" <coondog45@h...> wrote:
    > I just recieved my Nuts and Volts today and was wondering if anyone
    > has communicated with the Earthmate GPS by DeLorme. I have one
    laying
    > around and have never done much with it. I believe it uses Rockwell
    > Protocol in its data stream. Would love to get it to work with my
    > stamps. Might make a good addition to my bicycle super computer I
    > have been inventing in my mind.

    I did it with a GPSTripmate... Not sure how similar the data format
    is, but I used mine to display the time, lat., and long. on a 4x20
    LCD. If you would like me to post the code, please say so!

    -special [noparse][[/noparse]k]
  • ArchiverArchiver Posts: 46,084
    edited 2002-03-12 02:53
    --- In basicstamps@y..., "special_4k4" <special_4k4@y...> wrote:
    > --- In basicstamps@y..., "longbow42" <coondog45@h...> wrote:
    > > I just recieved my Nuts and Volts today and was wondering if
    anyone
    > > has communicated with the Earthmate GPS by DeLorme. I have one
    > laying
    > > around and have never done much with it. I believe it uses
    Rockwell
    > > Protocol in its data stream. Would love to get it to work with my
    > > stamps. Might make a good addition to my bicycle super computer I
    > > have been inventing in my mind.
    >
    > I did it with a GPSTripmate... Not sure how similar the data format
    > is, but I used mine to display the time, lat., and long. on a 4x20
    > LCD. If you would like me to post the code, please say so!
    >
    > -special [noparse][[/noparse]k]

    I would appreciate that very much. I think they are basicly the same
    model. If not it might give me some insite into using the earthmate.
    Thanks for the help.
  • ArchiverArchiver Posts: 46,084
    edited 2002-03-13 02:36
    > I would appreciate that very much. I think they are basicly the
    same
    > model. If not it might give me some insite into using the
    earthmate.
    > Thanks for the help.

    This is not very clean, so be prepared to be confused (if you aren't
    already :-p)

    -special [noparse][[/noparse]k]

    'LCD GPS by Steven Cholewiak
    '
    'STAMP TRIPMATE
    ' 1
    2
    ' |
    '
    3
    ' 2
    4
    'Gnd
    5

    '$GPRMC,HHMMSS,A,DDMM.MM,N,DDDMM.MM ,W,XXX.X,XXX.X,DDMMYY,XXX.X,E*XX
    'Decoded 1 2 3 4 5 6 7 8 9 10 11 12
    '1. Time (UTC) : of fix
    '2. Position valid (A=valid, V=invalid) :
    '3. Latitude at UTC time (degrees and minutes)
    '4. Latitude direction (N=north, S=south)
    '5. Longitude at UTC time (degrees and minutes)
    '6. Longitude direction (E=east, W=west)
    '7. Speed over ground (knots)
    '8. Course over ground or track (degrees, true)
    '9. Date (day, month, year) : Date of fix
    '10. Magnetic variation (degrees)
    '11. Magnetic variation direction (E=east, W=west)
    '12. Checksum

    E CON 0 ' LCD Enable pin (1 = enabled)
    RS CON 3 ' Register Select (1 = char)
    LCDout VAR OutB ' 4-bit LCD data
    ClrLCD CON $01 ' clear the LCD
    CrsrHm CON $02 ' move cursor to home position
    CrsrLf CON $10 ' move cursor left
    CrsrRt CON $14 ' move cursor right
    DispLf CON $18 ' shift displayed chars left
    DispRt CON $1C ' shift displayed chars right
    DDRam CON $80 ' Display Data RAM control
    CGRam CON $40 ' Custom character RAM
    Line1 CON $80
    Line2 CON $C0
    Line3 CON $94
    Line4 CON $D4
    char VAR Byte ' character sent to LCD
    timeOfFix VAR Byte(6)
    Validity VAR Byte
    latDeg VAR Byte(2)
    latMin VAR Byte(5)
    dirLat VAR Byte
    lngDeg VAR Byte(2)
    lngMin VAR Byte(5)
    dirLng VAR Byte
    theX VAR Byte
    Msg1 DATA " -LCD GPS- "

    Initialize:
    DirL = %11111101 ' setup pins for LCD
    GOSUB LCDinit ' initialize LCD for 4-bit mode
    low 2
    pause 500
    high 2
    FOR theX = 0 TO 19
    READ (Msg1 + theX),char
    GOSUB LCDwrite
    NEXT
    char = Line2
    GOSUB LCDcommand

    Main:
    serin 1,188+$4000,20000,nodata,[noparse][[/noparse]wait ("$GPRMC"),SKIP 1,STR
    timeOfFix\6,SKIP 1,STR Validity\1,SKIP 1,STR latDeg\2,STR
    latMin\5,SKIP 3,STR dirLat\1,SKIP 2,STR lngDeg\2,STR lngMin\5,SKIP
    3,STR dirLng\1]
    'serin 1,188+$4000,20000,noData,[noparse][[/noparse]wait (",A,"),STR
    latDeg\2,STR latMin\7,skip 1,STR dirLat\1,skip 2,STR lngDeg\2,STR
    lngMin\7,skip 1,STR dirLng\1]
    'debug str timeOfFix\6, ",", STR Validity\1,cr
    'debug str dirLat\1," ",STR latDeg\2,"* ,"
    'debug str dirLng\1," ",str lngDeg\2,"*",cr,cr
    GOSUB WriteInfoToLCD
    GOTO MAIN

    noData:
    char = Line2
    GOSUB LCDcommand
    FOR theX=0 to 19
    char = " "
    GOSUB LCDwrite
    NEXT
    char = Line2+7
    GOSUB LCDcommand
    char = "E"
    GOSUB LCDwrite
    char = "r"
    GOSUB LCDwrite
    char = "r"
    GOSUB LCDwrite
    char = "o"
    GOSUB LCDwrite
    char = "r"
    GOSUB LCDwrite
    GOTO Main

    WriteInfoToLCD:
    '
    char = Line2+1
    GOSUB LCDcommand
    FOR theX = 0 TO 1
    char=timeOfFix(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = ":"
    GOSUB LCDwrite
    FOR theX = 2 TO 3
    char=timeOfFix(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = ":"
    GOSUB LCDwrite
    FOR theX = 4 TO 5
    char=timeOfFix(theX)
    GOSUB LCDwrite ' write it
    NEXT
    '
    char = Line3+1
    GOSUB LCDcommand
    char = "L"
    GOSUB LCDwrite
    char = "a"
    GOSUB LCDwrite
    char = "t"
    GOSUB LCDwrite
    char = ":"
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite
    FOR theX = 0 TO 1
    char=latDeg(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = $DF
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite
    FOR theX = 0 TO 4
    char=latMin(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = "'"
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite
    char = dirLat
    GOSUB LCDwrite
    '
    char = Line4+1
    GOSUB LCDcommand
    char = "L"
    GOSUB LCDwrite
    char = "n"
    GOSUB LCDwrite
    char = "g"
    GOSUB LCDwrite
    char = ":"
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite
    FOR theX = 0 TO 1
    char=lngDeg(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = $DF
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite
    FOR theX = 0 TO 4
    char=lngMin(theX)
    GOSUB LCDwrite ' write it
    NEXT
    char = "'"
    GOSUB LCDwrite
    char = " "
    GOSUB LCDwrite

    char = dirLng
    GOSUB LCDwrite
    Return

    LCDinit:
    PAUSE 500 ' let the LCD settle

    LCDout = %0011 ' 8-bit mode
    PULSOUT E,1
    PAUSE 5
    PULSOUT E,1
    PULSOUT E,1
    LCDout = %0010 ' 4-bit mode
    PULSOUT E,1
    char = %00101000 ' multi-line mode
    GOSUB LCDcommand
    char = %00001100 ' disp on, crsr off, blink off
    GOSUB LCDcommand
    char = %00000110 ' inc crsr, no disp shift
    GOSUB LCDcommand
    char = ClrLCD ' clear the LCD
    GOSUB LCDcommand
    RETURN

    LCDcommand:
    LOW RS ' enter command mode

    LCDwrite:
    LCDout = char.HighNib ' output high nibble
    PULSOUT E,1 ' strobe the Enable line
    LCDout = char.LowNib ' output low nibble
    PULSOUT E,1
    HIGH RS ' return to character mode
    RETURN
Sign In or Register to comment.