Hallo, Ich bin neu hier in diesem tollen Forum und habe gleich ein paar Fragen =) Zur Zeit arbeite ich an einem Projekt, bei dem ich mit einem Arduino Mega 2560 einen Datalogger aufbauen möchte. Verschiedene Sensoren und das GPS-Signal von einem GPS/GPRS/GSM - Shield sollen aufgezeichnet werden. Zusätzlich habe ich eine Ausgabe über ein Display vorgesehen. Das Ganze soll dann in mein Motorrad eingebaut werden. Die Verwendung des Shields und die Speicherung der Daten auf einer SD-Karte funktionieren bereits. Ich konnte damit auch schon die ersten Routen mit dem Auto tracken und via Googlemaps / GoogleEarth am PC ausgeben :) Hier das GPS/GPRS/GSM Shield: http://www.mikrocontroller.net/articles/Antrax_GPS/GSM/GPRS_Shield#GPS_Teil Leider dauert die Abarbeitung der Funktion gps.getGPS() ca. 1 sec. Für eine Aktualisierung des Lcds und der Datalogging für mich leider zu langsam. Hier im Forum gibt es bereits ein Artikel über das Shield (http://www.mikrocontroller.net/articles/Antrax_GPS/GSM/GPRS_Shield#GPS_Teil) aus dem ich entnehmen kann,dass das Modul auch mit 10Hz betrieben werden kann. Aus einer Emailantwort von Antrax habe ich das Datenblatt bekommen und mir wurde auf das Kapitel 2.14 hingewiesen wo dies anscheinend umgesetzt werden kann. Leider verstehe ich den Beispiel-Befehl nicht: (Seite 20) $PMTK314,1,1,1,1,1,5,1,1,1,1,1,1,0,1,1,1,1,1,1*2C<CR><LF> Keine Ahnung für was die ganzen Einsen usw stehen sollen. Eigentlich möchte ich nur die GPGGA Daten empfangen, wobei die Daten aus GPRMC auch sehr interessant für mich wären. (Geschwindigkeit, Datum,Zeit) Nun habe ich meinen Beispielcode diesbezüglich geändert. Zusätzlich habe ich aus Kapitel 2.11.2 (Setting 10Hz navigation) den Code hinzugefügt. Ob dies dafür notwendig ist, weiß ich nicht. Da ich bei einer Baudrate von 115200 keine Serielle Antwort über den Monitor bekommen kann, lasse ich in der Bearbeitunszeit der gps.getGPS()-Funktion eine LED aufleuchten. Ist zwar nicht schön, muss aber reichen. Das Verrückte daran ist, dass die LED am Anfang auch nur ca 100ms aufleuchtet. Nach unbestimmter Zeit ( zwischen 2 Sec - 2 Minuten) fängt die LED leider wieder an eine Sekunde aufzuleuchten. Nun habe ich in der Libary von dem Shield nachgeschaut und folgendes gefunden: In der GSM_GPS_Mega_Shield_Mega.cpp Datei wird in der initializeGPS()- Funktion folgendes geschrieben: Serial.begin(_baud); WriteByte_SPI_CHIP(LCR,0x80); // set Bit 7 so configure baudrate WriteByte_SPI_CHIP(DLL,0x18); // 0x18 = 9600 with Xtal = 3.6864MHz WriteByte_SPI_CHIP(DLM,0x00); // 0x00 = 9600 with Xtal = 3.6864MHz Meiner Meinung nach sollte hier auch noch was geändert werden, weiß aber nicht in was ich die Hex-Zahl ändert sollte. Das Datenblatt und die Libary für das Shield habe ich angehängt. Zum guten Schluss hier noch mein Code: #if defined(ARDUINO) && ARDUINO >= 100 // Choose Arduino.h for IDE 1.0 #include "Arduino.h" #else // Choose WProgram.h if IDE is older than 1.0 #include "WProgram.h" #endif #include <GSM_GPS_Shield_Mega.h> #include <SPI.h> GSM gsm(7,115200); // (power_pin, baudrate) GPS gps(115200); // (baudrate) void setup() { Serial.begin(115200); if(gps.initializeGPS()) Serial.println("Initialization completed"); else Serial.println("Initialization can't completed"); delay(500); Serial.print("$PMTK251,115200*1F\r\n"); delay(500); Serial.print("$PMTK300,100,0,0,0,0*2C\r\n"); delay(500); Serial.println("$PMTK314,1,1,1,1,1,5,1,1,1,1,1,1,0,1,1,1,1,1,1*2C\r\n"); delay(500); } void loop() { gps.setLED(1); gps.getGPS(); Serial.println(gps.coordinates); gps.setLED(0); delay(3000); } Vielleicht wisst ihr, woran es hakt. Vielen Dank schon mal =) Gruß Markus
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.