Hätte folgenden Ansatz ohne Gewähr:
Mit strncmp auf $GPGGA suchen, die Zeichenfolge anschließend mit strtoken zerlegen und über die aktuelle Position entscheiden um welchen Wert es sich handelt. Den Wert falls nötig umrechnen und anzeigen/ausgeben.
Hallo,
nach langer Zeit melde ich mich mal wieder
Ich hatte leider wenig Zeit für Projekte, aber jetzt möchte ich einen GPS Empfänger mit einem NE-552ETTL GPS und einem Arduino bauen. Eigentlich wollte ich das ganze mit der RN-Control bauen, aber mit dem Arduino geht es einfach schneller und das Ergebnis ist das gleiche.
Es gibt ja schon fertige Libs für das Arduino um GPS Daten auszuwerten, aber diese möchte ich nicht benutzen. Das GPS Modul gibt folgende Zeichensätze aus, mit einstellbarer Pause:
Ich benötige aber nur diese Zeile:Code:$GPRMC,191410,A,4735.5634,N,00739.3538,E,0.0,0.0,181102,0.4,E,A*19 $GPRMB,A,9.99,L,,Exit,4726.8323,N,00820.4822,E,29.212,107.2,,V,A*69 $GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45 $GPGSA,A,3,,,,15,17,18,23,,,,,,4.7,4.4,1.5*3F $GPGSV,2,1,08,02,59,282,00,03,42,287,00,06,16,094,00,15,80,090,48*79 $GPGLL,4735.5634,N,00739.3538,E,191410,A,A*4A $GPBOD,221.9,T,221.5,M,Exit,*6B $GPVTG,0.0,T,359.6,M,0.0,N,0.0,K*47 $PGRME,24.7,M,23.5,M,34.1,M*1D $PGRMZ,1012,f*36 $PGRMM,WGS 84*06 $HCHDG,170.4,,,0.4,E*03 $GPRTE,1,1,c,*37
In dieser Zeile befinden sich alle Daten, die ich für den Anfang benötige: Zeit (UTC), Koordinaten, Höhe und Satteliten.Code:$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45
Mein Problem ist es nun, dass ich mit dem Arduino nur die $GPGGA Zeile auslesen möchte. Am Anfang reicht es mir, wenn ich nur die Uhrzeit auf einem Display oder Seriell angezeigt bekomme.
Ich hoffe es kann mir jemand helfen.
Gruß
Felix
Hätte folgenden Ansatz ohne Gewähr:
Mit strncmp auf $GPGGA suchen, die Zeichenfolge anschließend mit strtoken zerlegen und über die aktuelle Position entscheiden um welchen Wert es sich handelt. Den Wert falls nötig umrechnen und anzeigen/ausgeben.
Grüße,
Daniel
Den Befehl strncmp gibt es meines Wissens nach nicht bei Arduino. Ich kann doch auch folgendes machen, oder?
GrußCode:strting = String("$GPGGA"); if (string == "$GPGGA")
strncmp ist meines Wissens nach in string.h definiert. Die kann man auch bei der Arduino-IDE inkluden.
Grüße,
Daniel
Hallo,
stimmt, der Befehl ist in der string.h. Leider habe ich keine Ahnung wie ich diesen Befehl nutzen soll. Gibt es irgendwo ein Beispiel?
Gruß
Hallo,
nur ein kurzer Zwischenruf (bin gleich wieder vom PC weg):
Du schreibst, "Das GPS Modul gibt folgende Zeichensätze aus, mit einstellbarer Pause". Also gehe ich mal davon aus, dass Du die zugehörige Setup-Software für's GPS-Modul verwenden kannst. Damit kannst Du dem Modul auch beibringen, dass es Dir nur Deine gewünschten $GPGGA-Daten liefert. Mein Modul habe ich vor Längerem so eingestellt, dass es nur 1x pro Sekunde die $GPRMC-Daten ausgibt. Schau mal in die Doku.
Gruß Gerd
Bzgl. strncmp und strtok ein klein wenig Lektüre mit Beispielen :
strncmp und für strtok
Eventuell hilft dir das ja weiter. Zum testen kann man das Ganze ja auch zuvor mit einer statischen Sequenz und einem kleinen C-Prog auf dem Rechner implementieren und Testen. Dann musst du nicht ständig flashen und das Debuggen ist auf dem PC oftmals leichter als auf dem AVR.
Grüße,
Daniel
Lesezeichen