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
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
@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.
@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
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
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!
Hi Thomas (Gast), sag mal, hast Du ne E-Mail Adresse unter der man Dich erreichen kann ? Gruss Frank
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
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)
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
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.
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
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.
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 (?)
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''
Moin Thomas, kannst du mich mal kontaktieren? Gruss Wolfgang wwbusch@gmail.com
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 ?
Moin Ich denke das EEPROM ist extern... ein Mega 8 hat 512 Byte EEPROM (ohne "k") Gruß Markus
;) joa Danke Ohne "k" ;) war schon spät ^^ habs eben gesehen ist ein externes eeprom !! ;) DAnke nochmal
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.