Forum: Projekte & Code GPS-Logger mit gpx-Export


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
hier mal ein (weiteres) GPS-Projekt das ich mir letzten Sommer gebastelt 
habe:
Ein AVR Atmega 8 zeichnet die Positionsdaten einer seriellen GPS-Maus in 
einem 64k EEPROM auf.
Dies reicht für 3200 Datenpunkte. Aufzeichnungszyklus ist einstellbar.
Bedient wird das Gerät über 2 Tasten, als Statusanzeige dient eine
zweifarbige LED.
Die aufgezeichneten Daten werden dann über eine serielle Schnittstelle 
zum PC geschickt.
Auf diesem ist ein Windows-Programm (Konsolenanwendung) vorhanden, das 
die Daten entgegennimmt und sie im GPX-Datenformat
abspeichert. Dies ist ein standardisiertes XML-Datenformat, das u.a. 
auch Google Earth gelesen werden kann.
So kann man sich die aufgezeichnete Route nachher z.B. in Google Earth 
ansehen und nachfliegen, oder den Wegpunkten Fotos einer
Digitalkamera zuordnen.
Auf der ToDo-Liste stehen noch einige Punkte, vielleicht hat ja jemand 
anderes noch eine Anregung (z.B. MMC-Karte anstatt
RS232 und EEPROM).

Ich habe das Gerät bei einigen Motorradfahrten dabei gehabt und es hat 
soweit immer gut funktioniert. Die Laufzeit ist
dabei leider eher aufgrund der geringen Akku-Kapazität begrenzt. Wenn 
man ein etwas größeres Gehäuse wählt könnte man durch
verwenden von Mignon-Akkus diese aber erweitern.


Im Archiv enthalten:
- C-Programm für den AVR (AVR-GCC)
- Windows Konsolen-Programm in C (mit DevCpp)
- Kurzdokumentation (index.html) mit ein paar Bildchen
- Beispielroute, kann testweise in Google-Earth geladen werden)
- Schaltplan (als Bild und Eagle-Schematic/Layout)

Gruß
Thomas

von Gast (Gast)


Lesenswert?

Prima gemachtes Projekt !!
Bitte auch die Hex- und Exe-Datei :-)

von Christoph B. (cborowski)


Lesenswert?

Hallo Thomas,

ich habe den Sourcecode eben überflogen. Für mich als Anfänger sehr 
informativ und lehrreich (Nutzung von Timern, Interrupts, RS232 etc.). 
Vor allem deshalb, weil ich selbst gerade dabei bin mir ein einfaches 
GPS-System (serielle GPS-Maus + ATmega8 + Display) zur Anzeige der 
relevanten GPS-Daten zu bauen.
Aber ein paar Frage habe ich jetzt auch schon... laut dem Schema ist die 
GPS-Maus direkt an PD0 (RXD) angeschlossen und nicht über einen MAX232 
o. ä. Pegelwandler. Stimmen da die Pegel? Was für eine GPS-Maus ist das?
Der ATmega8 wird mit 3.69MHz getaktet und die GPS-Maus Daten kommen mit 
4800 Baud rein. Unter der Annahme, dass Du jede Sekunde (sehe ich das 
richtig?) loggst... wieviel Zeit bleibt am Ende aller Tätigkeiten übrig 
bis der nächste  NMEA-Datensatz reinkommt? Oder ist das eher irrelevant, 
weil (so wie ich das verstanden habe) Empfang der NMEA-Datensätze und 
Auswertung/Logging asynchron laufen mit dem Buffer als NMEA-Daten 
Zwischenspeicher?

Gruss
Christoph

von Thomas (Gast)


Lesenswert?

@Christpoh
Meine GPS-Maus (LC-N-102 von landolt.de) besitzt einen Zwischenstecker 
(PS/2 wie Tastatur) auf dem RxD und TxD einmal im TTL und im RS232-Pegel 
vorliegen. Um den Strom für den MAX232 zu sparen, habe ich von der 
GPS-Maus die TTL Signale genommen.
Die meisten seriellen Mäuse besitzen ja auch diesen PS/2-Stecker (für 
PDAs), ich weiß jedoch nicht ob meine Belegung Standard ist. Das müsste 
dann bei der verwendeten Maus nochmals überprüft werden.
Universeller wäre die Schaltung mit RS232 sicherlich.

Der Loggin-Zyklus ist in dieser:
> uint16_t eeStoreCycle EEPROM = 10;
Zeile auf 10s eingestellt.
Eine Sekunde wäre auch gar nicht sinnvoll, da bei meiner GPS-Maus nur 
ca. alle 2 Sekunden ein neues Telegramm eintrudelt.
Der Datenempfang auf der seriellen Schnittstelle wird wie du schon 
geschrieben hast nur im SIG_UART_RECV-Interrupt behandelt, in dem die 
Daten dann in den Puffer geschrieben werden. Wichtig ist nur, dass 
dieser Puffer die ausreichende Größe für maximal eine Zeile ($ bis \r\n) 
plus Reservepuffer für die Dauer der Verarbeitung eines Datensatzes 
besitzt.
Während des Schreibens der Daten ins Eeprom ist der Interrupt 
deaktiviert, darum lösche ich danach auch den UART-Puffer da es in 
diesem Fall sein kann, dass Zeichen verloren gegangen sind.

btw: Viele Codefragmente stammen aus der AVR-Lib oder auch aus 
Codebeispielen hier aus dem Forum, man muss ja nicht alles neu erfinden 
;-)

@Gast
exe-Dateien aus unbekannten Quellen öffne ich selber nicht gerne, darum 
habe ich diese entfernt. Gleiches gilt
für die Hex-Datei. Man muss zusätzlich auch noch die eep-Datei ins 
Eeprom schieben.

von Christoph B. (cborowski)


Lesenswert?

@Thomas
Danke für die Erläuterungen. Jetzt werde ich sehen, wie gut ich mit 
meinem Projekt vorankomme. Wenn es fertig ist, dann stelle ich das auch 
hier rein.

Gruss
Christph

von Nik B. (nikbamert)


Lesenswert?

Hallo Thomas,

Cooles Projekt!
Dies hat mich gleich auf die Idee gebracht sowas in der Art auch zu 
bauen, ich habe mir daher auf ric*rdo eine gebrauchte GPS maus gekauft. 
Ich weiss noch nicht wann ich sie hier haben werde, allerdings ist daran 
auch so ein PS/2 Stecker verbaut. Hast du die Steckerbelegung einfach 
durch ausprobieren herausgefunden oder hast du gaanz zufälligerweise 
eine Grafik die das ganze näher erläutert? Ich werde zwar auch noch 
einen Adapter auf RS232 mitgeliefert bekommen, aber da du ja sagst auf 
dem PS/2 Stecker würden auch Signale mit TTL Pegel anliegen, dann wäre 
das ja für die direkte Verbindung mit einem AVR geradezu super geeignet 
und der Kabalsalat mit dem Adapter würde entfallen... ;-)

Nik

von Thomas (Gast)


Lesenswert?

Bei meiner Maus war ein kleines Handbuch bei, wo auch die 
Steckerbelegung angegeben ist.
Bei diesem ist:
1 - Rx (TTL)
2 - Rx (RS232)
3 - GND
4 - Tx (RS232)
5 - Tx (TTL)
6 - +5V

Pin-Nummern nach Grafik auf
http://de.wikipedia.org/wiki/Bild:PS2.png

Ich denke aber mal dass diese Belegung nur für die Maus meines 
Herstellers gilt. Also auf jeden Fall die Doku der eigenen Maus prüfen!

von Frank W. (Firma: DB1FW) (frankw) Benutzerseite


Lesenswert?

Hi  Thomas (Gast),

sag mal, hast Du ne E-Mail Adresse unter der man Dich erreichen kann ?

Gruss
Frank

von Christoph B. (cborowski)


Lesenswert?

Hallo,

ich kann Thomas nur zustimmen, was die Belegung am PS/2 Stecker angeht. 
Die ist von Hersteller zu Hersteller unterschiedlich. Also auf jeden 
Fall die Hersteller-Angaben besorgen.

Gruss
Christoph

von Thomas (Gast)


Lesenswert?

Steht die Email nicht im Quellcode?
Ansonsten: saula ät gmx punkt de

von Nik B. (nikbamert)


Lesenswert?

Hallo,

heute ist nun endlich meine GPS maus angekommen. Nun habe ich allerdings 
eine Frage - kann es sein dass die Positionsbestimmung mit 3 Satelitten 
SEHR ungenau ist? Ich schau mir direkt die Ausgaben am Terminal an, un 
das Teil gibt mir Koordinaten von einem Ort der 20 kilometer von hier 
entfernt ist aus ? Sowohl die Daten im GPRMC als auch die des GPGGA 
Strings sind so ungenau :-( Das kann doch nicht normal sein?


Nik

EDIT: ausser GoogleEarth würde die Koordinaten an einem falschen Ort 
anzeigen, gibts sonst noch was womit ich das überprüfen könnte? (habe 
gerade keine "altmodische" Landkarte zur Hand)

von Frank W. (Firma: DB1FW) (frankw) Benutzerseite


Lesenswert?

nur so ne Idee,

Du könntest mal nachschauen auf welches Kartendatum Dein GPS z.Z. 
eingestellt ist. Google Earth benutzt meines Wissens WGS84. Wenn Deine 
Maus aus was anderes eingestellt ist, dann kann das schon Abweichungen 
erklären.

Gruss
Frank

von Thomas (Gast)


Lesenswert?

Eigentlich sollten sogar 2 Satelliten ausreichen, um wenigstens eine 
2D-Positionsbestimmung zu machen. 20km Abweichung sind aber sehr viel.

War die GPS-Maus lange ausgeschaltet, oder wurde ausgeschaltet an eine 
weit entfernte Position gebracht, so dauert es auch eine Weile bis sich 
die GPS-Maus die ganzen Daten der Satelliten zusammengesammelt hat.

Um sich die NMEA-Daten etwas zusammengefasster und grafisch darstellen 
zu lassen ist auch Visualgps
http://www.visualgps.net/
ganz gut zu gebrauchen.

von Nik B. (nikbamert)


Lesenswert?

Danke für eure schnellen Antworten :-)

>War die GPS-Maus lange ausgeschaltet, oder wurde ausgeschaltet an eine
>weit entfernte Position gebracht, so dauert es auch eine Weile bis sich
>die GPS-Maus die ganzen Daten der Satelliten zusammengesammelt hat.

Ich habe die Maus über Ric*rdo gekauft und interessantwerweise : Der 
Verkäufer wohnt ebenfalls ungefähr 20km von hier weg...die Maus wurde 
also diese 20 km im ausgeschalteten Zustand per Post verschickt.
Ich habe die Maus nun mal 30 minuten laufen lassen, leider kommen immer 
noch dieselben Koordinaten raus.

>Du könntest mal nachschauen auf welches Kartendatum Dein GPS z.Z.
>eingestellt ist. Google Earth benutzt meines Wissens WGS84.

Wie könnte ich feststellen welches Kartendatum meine GPS maus verwendet?
Ich werde mir nun mal VisualGPS herunterladen und ein wenig testen...und 
hoffen dass das Ding nicht irgendwie kaputt ist.

Grüsse,
Nik

von Thomas (Gast)


Lesenswert?

Hast du die NMEA-Koordinaten denn auch umgerechnet?

Im NMEA-Format wird der Breiten und Längengrad nämlich in Grad und 
Minute mit Nachkomma angegeben.
In Google-Earth hast du Grad + Minuten + Sekunde mit Nachkomma, das 
musst du dann dementsprechend umrechnen.

von Nik B. (nikbamert)


Lesenswert?

Jaa ganz genau (oder eben auch nicht :D). Ich bin auch gerade darauf 
gekommen, dass ich das nicht gemacht habe... Ganz schön fände ich 
einfach Grad als Dezimalzahl mit x Nachkommastellen, so könnte man das 
dann nämlich direkt in ein kml File auf eine SD karte speichern...
Dann verstehe ich auch endlich weshalb direkt aus der GPS Maus immer so 
merkwürdige Koordinaten rauskommen wie xxyy.yyyyyyy, dann ist es 
warscheinlich so das x die Grad sind und yy die Minuten (?)

von Thomas (Gast)


Lesenswert?

Ich zitiere mal aus Kowoma:

In NMEA:

 00739.3538, E

entspricht 007° 39.3538' östliche Länge

Du hast also 7°.
Dann 39,3538 Minuten * 60 Sekunden/Minute = 2361.228 Sekunden

 2361.228 / 60 = 39 Minuten

 2361.228 mod 60 = 21.228 Sekunden

Also 7°39'21.228''


von Wolfgang (Gast)


Lesenswert?

Moin Thomas,

kannst du mich mal kontaktieren?

Gruss Wolfgang
wwbusch@gmail.com

von Alexander (Gast)


Lesenswert?

Ich weis der Beitrag ist schon etwas älter, aber ich frage mich
wie beim EEPROM auf 64k kommst ...

haben die ATMEGA8 nicht nur 512k EEPROM ?

von MarkusW (Gast)


Lesenswert?

Moin

Ich denke das EEPROM ist extern...

ein Mega 8 hat 512 Byte EEPROM (ohne "k")

Gruß
Markus

von Alexander (Gast)


Lesenswert?

;)


joa Danke  Ohne "k" ;)  war schon spät ^^


habs eben gesehen ist ein externes eeprom !! ;) DAnke nochmal

von Daniel /. (daniel2010)


Lesenswert?

Hallo,
wirklich sehr schönes Projekt. Könnte einer von euch die exe für Windows 
hochladen oder erzählen wo man WinAPI downloaden kann?

Danke

von GaulaOrgawl (Gast)


Lesenswert?

This is very entertaining!

http://www.spy-phone.us/?p=1 - spy phone

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.