www.mikrocontroller.net

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


Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prima gemachtes Projekt !!
Bitte auch die Hex- und Exe-Datei :-)

Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Frank W. (frankw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi  Thomas (Gast),

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

Gruss
Frank

Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

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

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Frank W. (frankw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht 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 (?)

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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''


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Thomas,

kannst du mich mal kontaktieren?

Gruss Wolfgang
wwbusch@gmail.com

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: MarkusW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

Ich denke das EEPROM ist extern...

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

Gruß
Markus

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;)


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


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

Autor: Daniel /n (daniel2010)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: GaulaOrgawl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
This is very entertaining!

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.