Forum: Mikrocontroller und Digitale Elektronik GPS - Shield von Antrax mit 10hz betreiben [Arduino Mega]


von Markus W. (Gast)



Lesenswert?

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
Noch kein Account? Hier anmelden.