Ich habe mir erlaubt diesen Beitrag zu schreiben, da ich überzeugt bin, dass einige Benutzer ein solches Gerät gerne verwenden würden. Ich möchte also darum bitten, dass dieser Beitrag nicht als Prahlerei angesehen wird – das ist er nämlich bestimmt nicht, denn dafür ist die Ausführung schlicht zu einfach gestaltet. [Ich lehne im Übrigen, bei einem möglichen Nachbau, jede Gewährleistung oder Garantie auf Funktion ab.] Eine kleine Einführung: Ich fahre gerne mal mit dem Rad. Dabei hat es mich öfters gestört, dass ich nicht in der Lage bin, meine gefahrene Strecke in 4 Dimensionen grafisch betrachten zu können. Einfache Datenlogger, zeichnen i. d. R. die Uhrzeit und die Koordinaten auf – mich interessierte aber auch die Höhenangabe. Daher habe ich mich mit der Entwicklung eines kleinen GPS-Loggers beschäftigt, der möglichst kostengünstig für rund 30 Euro Teilekosten zu haben ist. Da das ganze Ding recht umfangreich ist, werde ich mich mit meinen Erklärungen auf das Nötigste beschränken. Bei Fragen einfach hier melden dann werde ich es ausführlich erklären. Die Ideenfindung: Ich entschloss mich als Komponenten einen Atmega32 zu verwenden. Da ich schnelle Erfolge sehen wollte, habe ich als Programmiersprache Bascom verwendet. Die Platine sollte mit einfachen Mitteln herstellbar sein – daher wurde auf die Entwicklung einer geätzten Platine verzichtet. Alles wurde auf eine Punktrasterplatine gesteckt und mit Litzen verbunden. Als GPS Maus sollte eine Royaltek RGM-2000 zum Einsatz kommen. Diese Maus zeichnet sich durch ein angemessenes Preis/Leistungsverhältnis aus. Die Maus kann man über gewisse Auktionshäuser günstig erwerben. Die Schnittstelle zur Außenwelt soll durch ein Display und eine serielle Schnittstelle sowie eine Status LED erfolgen. Um auch in dunklen Umgebungen die Position ermitteln zu können, hat das Display eine zuschaltbare Hintergrundbeleuchtung. Das Gesamt“system“ soll in einem Gehäuse Platz finden, wobei die Maus auf dem Gehäuse befestigt werden soll. Die Funktionsart, also ob das Gerät an einem PC angeschlossen ist, oder sich gerade im Einsatz befindet soll über einen Kippschalter einstellbar sein. Die Datenauswertung – sprich die grafische Auswertung - soll an einem PC mit einer kostenfreien Software, z. B. GNU Octave erfolgen. Die Energieversorgung soll durch 4 AA – Akkus (mit zusammen 5.3 Volt) gesichert werden. Die Komponenten: 1 x Atmega32 (mit 1 MHz internem Oszillator – so wie er ausgeliefert wird) 1 x IC-Socket für Atmega32 1 x GPS-Maus Royaltek RGM-2000 4 x Optokoppler 4N28 5 x 250 Ohm Widerstand 1 x Diode 1 x LED 1 x TTL-Pegelwandler 1 x Display (H77410) 1 x Kippschalter 1 x Tastschalter für die Displaybeleuchtung 1 x Batteriehalterung 1 x Cliphalterung für Batteriehalterung Etwa 2 Meter Litze und natürlich Lot. Zur Befestigung der Komponenten am Gehäuse guten Klebstoff oder ähnliches Material verwenden. Die Umsetzung: Die Punktrasterplatine so zuschneiden, dass diese zusammen mit der Batteriehalterung in das Gehäuse passt. Vergleiche hierzu das Bild. Anschließend auf der Punktrasterplatine die Komponenten so setzen, dass diese alle Platz finden. Und gemäß der unten stehenden Anschlussbelegung verbinden. In das Gehäuse eine Einsparung für das Display, den Pegelwandlerausgang (PC-Verbindung), den Betriebswahlschalter und für den Schalter für die Hintergrundbeleuchtung des Displays vorsehen. Anschlussbelegung (kann auch aus Quelltext ersehen werden, daher kurz gehalten): Display auf Atmega: ------------------------ DB4: PB0 DB5: PB1 DB6: PB2 DB7: PB3 Enable: PB4 Rsel: PB5 Betriebsartschalter: ----------------------- Geht auf PA0. Der Schalter ist so zu schalten, dass er entweder Masse oder VCC auf den Pina.0 gibt. Optokoppler (dienen als eine Art Multiplexer für die serielle Kommunikation): ---------------------- Optokoppler1: PD7 Optokoppler2: PD0 Optokoppler3: PC1 Optokoppler4: PA2 LED: Geht auf PB6. Bei den Optokopplern und der LED muss darauf geachtet werden, dass diese mit einem Widerstand von rund 250 Ohm geschützt werden. [Rs=250 Ohm ausreichend bei Imax=20mA und Us=4.5 (Spannungsabfall an Schutzdiode)]. Was ist die Aufgabe der Optokoppler? Die GPS-Maus sendet in regelmäßigen Abständen ihre Daten über ihre serielle Schnittstelle mit 3,3 Volt Pegel. Die Daten sollen die Serielle Schnittstelle des Mikrocontrollers erreichen. Die uP soll aber auch in der Lage sein, Daten über seine serielle Schnittstelle an einen PC zu schicken. Damit es dabei zu keinen Kollisionen kommt, werden die Daten von der uP in Abhängigkeit vom jeweiligen Betriebszustand „gelenkt“. Damit die GPS-Maus keinen Schaden nimmt, sollte ein Widerstand in ihren Empfangskanal gesetzt werden. Dieser muss so ausgelegt sein, dass er die Spannung von 5 Volt so teilt, dass 3.3 Volt bei der Maus ankommen. In der anderen Richtung – also von Maus zu uP – darf kein Widerstand gesetzt werden. Der Atmega erkennt übrigens das 3.3 Volt Signal der GPS-Maus. Vergleiche hierzu das Bild. Die Schalter sind hier stellvertretend für die Optokoppler. Der Atmega muss nun noch mit seinen Versorgungsanschlüssen verbunden werden. Also VCC, GND, AREF, AVCC. Das Display und den Pegelwandler ebenfalls an die Versorgung anbinden. Alles angeschlossen? Dann muss jetzt nur noch der Quellcode kompiliert werden und auf den Atmega überspielt werden. Atmega in den IC-Socket einsetzen und los geht’s. Was zeigt das Gerät? Vergleiche hierzu auch die Bilder. Fenster1: Es wird die aktuelle Uhrzeit (Sommer und Winterzeit über Quellcode einstellbar) und die Position inkl. Höhe ausgegeben. Fenster2: Es wird die zurückgelegte Strecke, die Anzahl der aufgenommen Punkte und die Fahrzeit angezeigt. Fenster3: Es wird der nächstgelegene Ort und die Entfernung dahin angezeigt. Wie groß ist der Stromverbrauch der Anordnung? Der Stromverbrauch liegt bei 150 mA bei 5.3 Volt. Mit einer 2500 mAh – Akkuzelle kann man davon ausgehen, dass nach rund 15 Stunden Schluss ist. Kann man den Stromverbrauch senken? Ja das geht - dazu muss man den Pegelwandler abklemmen und die GPS-Maus über das Programm Sirf Demo in einen Modus bringen, in dem sie nur alle 10 Sekunden die Position ausgibt. Wie konfiguriert man das Gerät? Dazu wird das Gerät an die Serielle Schnittstelle des PCs angeschlossen – das kann auch über einen USB-Serielladapter gemacht werden. Auf PC-Seite wird nun das Programm Hyperterminal (4800 Bps, 1, kF, kP) geöffnet und das Gerät über den Betriebswahlschalter in die Betriebsart PC gesetzt. Es erscheint ein Menü (vgl. Bild). Durch die Eingabe über die Tastatur des PC können nun in den Submenüs Einstellungen vorgenommen werden. Dabei kann auch die Schrittweite, mit der Datenpunkte aufgezeichnet werden, geändert werden. Wie gibt man die Daten aus? Dazu wird Menüpunkt 2 gewählt. Vorher im Hyperterminal auf Text aufzeichnen umstellen. Die Textdatei anschließend so formatieren (oben und unten wegschneiden), dass nur noch der Datensatz enthalten ist. Wie plottet man Daten? Dazu wird das Ablaufprogramm (vgl. Zip-File) geöffnet und anschließend laufen gelassen. Fertig. Noch ein paar Scrennshots machen und fertig ist die Tourzusammenstellung. Einige Anmerkungen: - Damit ich meine genaue Position nicht auf den Meter genau herausgebe, habe ich einige Datenpunkte im Quelltext geändert. - Es können rund 1000 Ortschaften im Speicher hinterlegt werden - Es sind 120 Wegpunkte abspeicherbar. - Bei Fragen bitte fragen!!!!!!!!!!!! - Das Gerät (Quelltext und Auswertung) darf gerne privat (und nicht gewerblich) nachgebaut und verwendet werden.
Niels Keller wrote:
> Anbei der Quelltext und ein File zum Testen.
Man benötigt zum Ausführen des m.Files entweder Matlab oder GNU Octave.
Das ganze wurde aber mit Octave geschrieben und wurde auch mit Matlab
getestet.
Octave muss man installieren und anschließend im Kommandofenster in das
entsprechende Verzeichnis wechseln (cd - wie im DOS), dann Dgps.m
ausführen (Eingabe von Dgps und Enter). Es kommt dann das Ergebnis.
Auf diesem Bild im Beitrag ist der Logger besser zu erkennen. Hatte ich schon vor einiger Zeit mal eingestellt. Dort ist auch beschrieben, wie die Maus an einen PC angeschlossen wird. Beitrag "GPS RGM-2000 richtig an den PC anschließen"
Die grafische Auswertung gefällt mir sehr gut - den Datenlogger an sich gibt es in diversen Formen ja bereits in der Code- & Artikelsammlung von diversen Autoren. Schade, dass man dafür Matlab benötigt, sonst würde ich das glatt mal mit meinem GPS Logger testen :-) Achso: Dieser Beitrag hier wäre in der Codesammlung besser aufgehoben...
> Schade, dass man dafür Matlab benötigt, sonst würde > ich das glatt mal mit meinem GPS Logger testen :-) Äh, nein, GNU Octave reicht und das ist kostenlos... ;-)
Wieviel Stunden kann das Gerät aufzeichnen und wo werden die Daten dazu abgespeichert?
Wolfgang-G wrote: > Wieviel Stunden kann das Gerät aufzeichnen und wo werden die Daten dazu > abgespeichert? Energietechnische Grenze: Das Gerät wird mit 4 x 2600 mAh AA-Ni-MH betrieben. Der durchschnittliche Verbrauch liegt bei rund 150 mA, das bedeutet, dass das Gerät rund 15 Stunden betrieben werden kann (unter guten Temperaturbedingungen auch noch 17 Stunden). Speichergrenze: Die Daten werden aktuell im SRAM gespeichert. Das bedeutet, dass nur rund 1.5kByte Speicher zur Verfügung stehen. Die Punkte werden in gleichmäßigen WEG-Abständen aufgenommen. Bewegt man sich also nicht, so werden auch keine Punkte aufgenommen (z. B. im Biergarten, natürlich Alk.frei ;-)). Insgesamt können im SRAM 120 Punkte gespeichert werden. Fährt man 60 km, so wird alle 500 m ein Punkt aufgenommen. Ausblick: Ich habe - das sieht man auch auf den Bildern - noch einen zusätzlichen IC geplant (eine I2C-Speichererweiterung). Damit kann dann ein Vielfaches an Punkten gespeichert werden. Es wird gegenwärtig auch an einer MMC-Speicherkarte entwickelt, die dann die Daten aufzeichnet (allerdings nur zur internen Speicherung, sprich ohne Dateisystem).
Ich wuerd die Optokoppler weglassen, die bringen nichts. Dann einen Mega324 mit zwei Schnittstellen, und von vorneweg einen Datenflash zB AT45DB041
JetztAber wrote: > Ich wuerd die Optokoppler weglassen, die bringen nichts. Dann einen > Mega324 mit zwei Schnittstellen, und von vorneweg einen Datenflash zB > AT45DB041 Das ist durchaus denkbar. Die Optokoppler haben aber einen großen Vorteil. Man kann Datenströme beliebig manipulieren. So kann die Maus z. B. direkt zum PC durchgeschalten werden (benötigt werden dann zwei zusätzliche OKs - zur Nutzung von kommerzieller PC-Software). Natürlich ist mir bewusst, dass 120 Punkte nicht viel sind. Daher werden, während das Gerät Datenpunkte verarbeitet, die Optokoppler kurz so geschaltet, dass ein (Pocket)PC, der möglicherweise an die Serielle Schnittstelle (hinter dem Pegelwandler) angeschlossen ist, Datenpunkte erhält und weiter verarbeiten kann. Momentan bin ich noch unschlüssig, ob es überhaupt Sinn macht eine Speichererweiterung in Form einer MMC-Karte zu integrieren. Irgendwie wird das Gerät dann zu aufwendig, zu teuer und auch zu energiehungrig.
Interessantes Projekt! Nur bin ich etwas über die Preise dieser GPS-Mäuse erschrocken. Gruß
Die Optokoppler saugen MilliAmpere fuer wenig. Nim einen Mega324. Vergiss MMC, schon der Stecker kostet ein Vermoegen. Ein AT45DB041 bietet 1Megabit, 128kbyte, und braucht extrem wenig Strom, 1-2 mA waehrend dem schreiben und wenige uA passiv.
JetztAber wrote: > Die Optokoppler saugen MilliAmpere fuer wenig. Nim einen Mega324. > Vergiss MMC, schon der Stecker kostet ein Vermoegen. Ein AT45DB041 > bietet 1Megabit, 128kbyte, und braucht extrem wenig Strom, 1-2 mA > waehrend dem schreiben und wenige uA passiv. Das kann ich bestätigen - die OK ziehen ganz ordentlich was weg. Ich werde aber bei einem Atmega32 bleiben - die Stunde Laufzeit hin oder her. Ich dachte an ein EEPROM 24CXX - das lässt sich leicht anschließen und kostet wenig. Die MMC - Karte würde ich direkt anlöten, also ohne Adapter.
neuer Gast wrote: > Nur bin ich etwas über die Preise dieser > GPS-Mäuse erschrocken. Die Maus Royaltek RGM2000 kostet durchschnittlich 6 Euro mit Porto. Finde ich ganz günstig. Aber sie hat eben auch nur einen SirfII-Chip. Das muss man bei dem Preis dann wohl in Kauf nehmen.
>Die Maus Royaltek RGM2000 kostet durchschnittlich 6 Euro > mit Porto. ich hab nur was zw. 79-99 € gefunden. Hast du da mal einen link?
neuer Gast wrote: >>Die Maus Royaltek RGM2000 kostet durchschnittlich 6 Euro >> mit Porto. > ich hab nur was zw. 79-99 € gefunden. Hast du da mal einen link? Bei ebay nach Artikelnummer 190283125089 bzw. 120396838522 oder RGM 2000 suchen. Das ist hier keine Werbung sondern nur ein Beispiel von vielen.
Warum nicht gleich eine SD-Karte für die Daten nehmen? Siehe z.B. http://www.ulrichradig.de/home/index.php/avr/mmc-sd Alle 500m ein Punkt wäre mir viel zu wenig. Jede Sekunde einer wäre schon eher nach meinem Geschmack. Dann kann man damit auch Photos den Punkten zuordnen (genau gestellte Zeit in beiden Geräten vorausgesetzt) oder es auch gut für OpenStreetMap benutzen.
>schon der Stecker kostet ein Vermoegen.
jeder hat andere Vorstellungen von Vermögen. Ein Steckverbinder für eine
micro-SD karte kostet bei CSD 1,95€
Hi und ein RGM 3800 kostet in der Bucht 59,00€, speichert ~500k Punkte in einstellbaren Abständen von 1 - 60 Sekunden, läuft mit zwei AAA Akkus über 8 Stunden und liefert dann per USB *.nmea Dateien ab. Aber hier gehts ja ums Basteln an sich. Dem RGM fehlt zur Perfektion eigentlich nur noch ein µSD Slot. Matthias
>Es hat noch keiner grundlos gemotzt ... Respekt !
keine Zeit- die Ostereier werden noch gesucht
der peterle wrote: >> Schade, dass man dafür Matlab benötigt, sonst würde >> ich das glatt mal mit meinem GPS Logger testen :-) > Äh, nein, GNU Octave reicht und das ist kostenlos... ;-) Habe eben mal ausprobiert, wie man die 3D-Darstellung verbessern kann. Sollte einer Matlab verwenden, so kann er die Punkte sogar kubisch interpolieren lassen - das führt dazu, dass die 3-D-Welt noch runder aussieht. Anbei ein kleiner Vergleich. Im m.-File muss dann anstatt 'linear' 'cubic' eingetragen werden.
1 | ZI = griddata(osten,norden,hoehe,XI,YI,'cubic');" |
Leider geht diese Darstellung nur für Nutzer von Matlab.
Habe eine neue Darstellung ausprobiert. Diesmal mit der Matlab-Oberfläche "guide" erstellt. Es gibt einen neuen Diagrammtyp und eine verbesserte Darstellungsform in Form eines Höhenprofils über der zurückgelegten Strecke. Demnächst werden die Daten direkt vom Logger an Matlab übergeben. Dafür wird aber noch etwas Zeit benötigt.
EEPROM-Erweiterung!!! --------------------- Habe das Gerät mit einem EEPROM erweitert. Anstatt 120 Punkte können nun 5333 Punkte abgespeichert werden. Der EEPROM ist ein 24C512 (I2C). Anbei ein Vergleich zwischen alter und neuer Genauigkeit. Gerade das Thema Auflösung ist interessant. Die RGM-2000 scheint geradezu von der Bewegung zu leben - also die Genauigkeit ist bei Bewegung deutlich höher. Werde, wenn ich mal mehr Zeit habe, darüber berichten.
Anbei der Quelltext der überarbeiteten Datenauswertung mit Matlab. Die neu hinzu gekommenen Funktionen sind: - Berechnung der Geschwindigkeit, - Darstellung der Geschwindigkeit über dem Weg, - Darstellung der Geschwindigkeit als Profil in der örtlichen Lage, - Darstellung der Geschwindigkeit in Abhängigkeit zur Höhe. Da die Messpunkte beim Logger nicht in zeitgleichen Abständen aufgenommen werden, folgt für die Geschwindigkeit, dass diese für einen gemeinsamen Zeitwert (Logger zeichnet nur Minuten und keine Sekunden auf) gleich groß sind. Die Geschwindigkeit ist also ein gemittelter Wert, der auf den ersten Datenpunkt bezogen ist. Daher ist am Anfang die Geschwindigkeit gleich 0 (obwohl eine Bewegung vollzogen wurde).
Hier der Bascom-Quelltext des Loggers. Dieser Quelltext enthält alle bisher beschriebenen Änderungen. Dies sind: - Speicherung im EEPROM - Verbesserte Selbstdiagnose - EEPROM Testroutine (allg. Funktion + Speicherung von Integer und Single) - Datenwiederherstellung - Optimierte Berechnung der Streckenparameter Im Quelltext sollte ein möglicher Nutzer die letzten Zeilen mit seinen eigenen Ortschaften auffüllen. Dazu empfiehlt es sich die Koordinaten z. B. von folgender Seite zu holen. http://www.gorissen.info/Pierre/maps/googleMapLocationv3.php Die Koordinaten dann in Verbindung mit dem entsprechenden Ortsnamen in einer Tabelle zusammenstellen. Anschließend in der bestehenden Formatierung ergänzen. Insgesamt können so noch rund 1000 Ortschaften fest gespeichert werden.
Ich wurde jetzt bereits mehrfach gefragt, ob es auch möglich ist, diesen Logger mit einer anderen GPS-Maus zu "bauen". Das kann ich eigentlich ganz einfach zu beantworten: Gibt die GPS-Maus ihre Daten im NMEA-Format aus, und man möchte keine Änderungen am Quelltext vornehmen, dann sollte der NMEA-String den folgenden (Positions-)Aufbau haben:
1 | '1=Uhrzeit |
2 | '2=Norden |
3 | '3=N |
4 | '4=Osten |
5 | '5=E |
6 | '6=Position Fix Indicator (0=not available|1-3=valid) |
7 | '7=Satelittenanzahl |
8 | '8=Genauigkeit |
9 | '9=Höhe |
Die Datenrate der Maus sollte auf 4800Bps eingestellt sein - hat sie eine andere Datenrate, ist man in der Lage die Baudrate im Quelltext
1 | $baud = 4800 'hier neue Baudrate eintragen |
zu ändern.
Hi >...NMEA-String den folgenden (Positions-)Aufbau haben: >'1=Uhrzeit >'2=Norden >'3=N >'4=Osten >'5=E >'6=Position Fix Indicator (0=not available|1-3=valid) >'7=Satelittenanzahl >'8=Genauigkeit >'9=Höhe Das ist kein NMEA-String. Sag doch einfach (wahrscheinlich) GGA und fertig. Da weiss jeder was gemeint ist. MfG Spss
Hi, ja klar ist das kein NMEA-String: Das soll nur die Reihenfolge in diesem String verdeutlichen (diese kann von Einstellung zu Einstellung varieren ...) - der String, der für den Loggger von Interesse ist, sieht dann wie folgt aus:
1 | $GPGGA,072730.438,4809.0000,N,00836.0000,E,1,04,2.8,550.3,M,48.0,M, [usw.] |
Der GPRMC Satz wäre besser, den sollte jeder Empfänger haben... siehe auch:http://www.kowoma.de/gps/zusatzerklaerungen/NMEA.htm
... ... schrieb:
> Der GPRMC Satz wäre besser, den sollte jeder Empfänger haben...
Ganz klar enthält dieser GPRMC Satz mehr Informationen, nur für den
Nachbau dieses speziellen Loggers ist er überflüssig, da der Logger nur
den minimalistischen Standart GPGGA-Datensatz auswertet.
eine günstige Variante für einen SD-Kartenadapter ist sich eine mini oder Mikro-sd-Karte zu kaufen. Den Adapter löet man dann auf das board und die micro-karte ist austauschbar.
vlad schrieb: > eine günstige Variante für einen SD-Kartenadapter ist sich eine mini > oder Mikro-sd-Karte zu kaufen. Habe ich auch schon probiert und das geht mit den großen SD-Karten auch ganz gut. Aber hier verwende ich kein SPI, da ich mich für einen EEPROM als Speicherstätte entschieden habe. Der EEPROM sitzt dann auf einem Socket. Habe hier mal ein Bild von einem neuen kleineren Loggermodell. Da sieht man auch ganz schön die Größe mit den ganzen Änderungen, die bisher vollzogen wurden.
Es ist soweit - in der Codeammlung gibt es eine vollständige Montageanleitung: Beitrag "GPS Datenlogger Eigenbau Montageanleitung"
Hallo, Nils Gratulation...tolles Projekt werde ich mir mal näher anschauen. Gibt es neben der tollen bebilderten Montageanleitung auch einen Schaltplan ? Quck-and-dirty tut´s dann brauche ich mir nicht alles aus dem Bilderbuch zusammenstückeln. Schaltungen entwickle ich selbst. Gruß Sascha
Sascha Spitzmüller schrieb: > Gibt es neben der tollen bebilderten Montageanleitung auch einen > Schaltplan ? Hallo Sascha, da das hier ein recht betagtes Testprojekt war, hatte ich mir nicht die Mühe gemacht einen Schaltplan in sauberer Form (Schematikeditor) zu erstellen. Das handschriftliche Gekrakel von damals habe ich nicht mehr zur Hand. Ist aber nicht sehr aufwendig. Solltest Du einen erstellt haben, sei doch so gut und stelle ihn hier ein - es werden Dir sicherlich einige dafür danken... Grüße Niels
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.