Earthmate GPS
Archiver
Posts: 46,084
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.
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
> 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]
> --- 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.
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