GPS - Shield richtig anschließen

Hallo Forum, ich habe Probleme bei der Verwendung eines GPS-Shields, dieses Stecke ich einfach auf mein Arduino drauf. Das Problem besteht darin das ich anschließend ein Synchronisationsfehler (avrdude...) erhalte und keine Daten mehr auf mein Board uploaden kann. Bei dem Shield handelt es sich um folgendes: http://www.ebay.de/itm/261191623683?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

vielleicht fällt euch ein Hinweis ein.

mit freundlichem Gruß Balli

Das Shield wird vermutlich auch die Pins 0 und 1 (serielle Schnittstelle) verwenden, um mit dem Arduino zu reden. Zieh das Shield ab, spiele den Sketch drauf und stekce das Shield wieder drauf. Das sollte helfen. Was siehst Du denn im serial Monitor, wenn das Shield drauf steckt? Werden da die Zeilen des GPS-Recievers angezeigt?

Mario.

Ballibum: ich habe Probleme bei der Verwendung eines GPS-Shields, dieses Stecke ich einfach auf mein Arduino drauf. Das Problem besteht darin das ich anschließend ein Synchronisationsfehler (avrdude...) erhalte und keine Daten mehr auf mein Board uploaden kann.

Zeig mal ein Datenblatt zum Shield mit einer Beschreibung der Pinbelegung und Jumperpositionen!

Der Sync-Fehler deutet darauf hin, dass das Shield auf dieselbe Hardware-Serial an Pin-0/1 zugreifen möchte, über die Du den Sketch hochladen möchtest.

Reine Spekulation: Vielleicht kann man über die ON/OFF Jumperpositionen etwas deaktivieren, so dass der Upload über Bootloader möglich ist, wenn die Verwendung der Hardware-Serial über das Stecken eines Jumpers zeitweise deaktiviert ist.

Ansonsten: Shield zum Uploaden abstöpseln. Oder einen Programmer anschaffen und über Programmer hochladen.

Das probiere ich gleich mal aus, ich kann bei den Pins 0-7 noch Jumper setzen eventuell kann ich damit ja steuern,welche Pins zur Kommunikation verwendet werden sollen. Ich melde mich ob und was geklappt hat.

Es wurde gar nichts angezeigt, aber ich hatte auch noch nichts upgeloaden.

mfg Balli

Hi, vielen Dank daran scheint schon einmal das Uploadproblem gelegen haben, ich habe die Jumper von Pin 0 und 1 auf 5 und 6 gelegt und nun funktioniert das Hochladen wieder. Vielen Dank

So, also anscheinend funktioniert es wenn ich die Jumper umstecke(habe Sie auf 5 und 6 umgesteckt). Wobei ich bei der Verwendung der TinyGPS Bibliothek keine Koordinaten ausgegeben bekomme. Und zwar verwende ich das einfache Beispiel:

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
*/

TinyGPS gps;
SoftwareSerial ss(0, 1);

void setup()
{
  Serial.begin(115200);
  ss.begin(4800);
  
  Serial.print("Simple TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
}

void loop()
{
  bool newData = false;
  unsigned long chars;
  unsigned short sentences, failed;

  // For one second we parse GPS data and report some key values
  for (unsigned long start = millis(); millis() - start < 1000;)
  {
    while (ss.available())
    {
      char c = ss.read();
      // Serial.write(c); // uncomment this line if you want to see the GPS data flowing
      if (gps.encode(c)) // Did a new valid sentence come in?
        newData = true;
    }
  }

  if (newData)
  {
    float flat, flon;
    unsigned long age;
    gps.f_get_position(&flat, &flon, &age);
    Serial.print("LAT=");
    Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
    Serial.print(" LON=");
    Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
    Serial.print(" SAT=");
    Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
    Serial.print(" PREC=");
    Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
  }
  
  gps.stats(&chars, &sentences, &failed);
  Serial.print(" CHARS=");
  Serial.print(chars);
  Serial.print(" SENTENCES=");
  Serial.print(sentences);
  Serial.print(" CSUM ERR=");
  Serial.println(failed);
}

Als Ausgabe erhalte ich leider nur:
Simple TinyGPS library v. 12
by Mikal Hart

CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0
CHARS=0 SENTENCES=0 CSUM ERR=0

und keine Koordinaten, muss ich da noch irgendetwas beachten?
mit freundlichen Grüßen
Balli

Vermutlich muss im Sketch dann auch noch geändert werden auf welchen Pins das serielle Signal des GPS-Empfängers eintrudelt. Wenn Du uns keine spezifikation des Boards lieferst, können wir auch nur raten. Außer Dir hat hier vermutlich keiner so ein Board, also woher sollen wir bitte wissen wie es an den Arduino angeschlossen ist?

Mario.

P.S. Hast Du den Sketch angepasst?

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
*/

TinyGPS gps;
SoftwareSerial ss(0, 1);

Im Kommentar steht, das Pin 3 und 4 verwendet werden für das GPS-device, du setzt aber Pin 1 und 0 für das SoftSerial ein??
Das sind aber die Hardware-UART Pins.

Ballibum: und keine Koordinaten, muss ich da noch irgendetwas beachten?

SoftwareSerial ss(0, 1);

Pins 0 und 1 sind üblicherweise die Hardware-Serial. Und an der Hardware-Serial, die Du auf 115200 Baud betreibst, soll gleichzeitig eine SoftwareSerial mit 4800 Baud laufen???

Dunkel war's, der Mond schien helle, Schnee lag auf der grünen Flur, als die Daten blitzesschnelle, langsam um die Ecke fuhr'n.

Mein Board hat ja nur auf 0 und 1 RX und TX, daher habe ich diese Werte im Sketch verwendet. Die Jumper die sich auf diesen Pins befinden stecken jetzt so auf 5 und 6. Ich finde das Board leider nur bei ebay-sprich der obige link, dass ist das Board um welches es sich dreht. Ich bin ehrlich bemüht den Glaskugel-Mod zu verlassen. mfg Balli

Du kannst Serial in Hardware machen oder es mit Software emulieren (und auch andere Protokolle wie I²C). Software Serial geht auf allen Pins und nicht nur auf 0 und 1. Da muss man immer beachten was genau gemacht wird.

Dann stell doch mal die SoftSerial Pins auf 5 und 6, so wie Du das auf dem Board gejumpert hast. Evtl. auch mal mit verschiedenen Baudraten versuchen. Mario.

Hmm, ich hab 2 Minuten gebraucht, um das Board zu finden: http://imall.iteadstudio.com/im120417017.html Da gibt es eine Spezifikation zu den verwendeten Pins, Demo-Code, ein Datenblatt und was man sonst noch braucht.

Ballibum: Mein Board hat ja nur auf 0 und 1 RX und TX, daher habe ich diese Werte im Sketch verwendet. Die Jumper die sich auf diesen Pins befinden stecken jetzt so auf 5 und 6.

Eine Software-Serial kannst Du an ALLEN Pins definieren, AUSSER an den Pins, die für irgendwas anderes benutzt werden.

Wenn Du die Hardware-Serial an 0 und 1 für den seriellen Monotor benutzt, und das GPS-Shield auf 5 und 6 kommuniziert, dann mußt Du die Software-Serial natürlich an 5 und 6 definieren!

Darf ich fragen welche Suchbegriffe du verwendet hast?Ich such schon seid gestern nach einer eigenen Seite.
mit freundlichem Gruß
Balli

Das was hinter auf dem Board steht: "DT studio gps shield". Das führt zu einem Arduino-Forum Link (wer hätte das gedacht :) ), indem es um das GPS Shield von ITEADSTUDIO geht. Wenn man sich das Baodlayout anschaut, ist Dein Board ein Klone davon. Wie gesagt, 2 Minuten. :grin:

Mh, dann war ich wohl nicht gründlich genug. Dennoch bekomme ich das Problem nicht gebacken, obwohl ich von Nataly alle Einstellungen übernommen habe (http://forum.arduino.cc/index.php?topic=113603.msg1018040#msg1018040). Auch die Jumper habe ich auf 2 und 3 gesetzt und den Code angepasst. Das einzige was jetzt passiert ist, dass ich jetzt folgende Ausgabe bekomme:

CHARS=21235 SENTENCES=0 CSUM ERR=229 CHARS=21809 SENTENCES=0 CSUM ERR=233 CHARS=22167 SENTENCES=0 CSUM ERR=236 CHARS=22670 SENTENCES=0 CSUM ERR=241 CHARS=23244 SENTENCES=0 CSUM ERR=247 CHARS=23818 SENTENCES=0 CSUM ERR=255 CHARS=24392 SENTENCES=0 CSUM ERR=262 CHARS=24856 SENTENCES=0 CSUM ERR=268 CHARS=25253 SENTENCES=0 CSUM ERR=273 CHARS=25827 SENTENCES=0 CSUM ERR=281 CHARS=26401 SENTENCES=0 CSUM ERR=291 CHARS=26975 SENTENCES=0 CSUM ERR=305 CHARS=27549 SENTENCES=0 CSUM ERR=317 CHARS=27998 SENTENCES=0 CSUM ERR=324 CHARS=28416 SENTENCES=0 CSUM ERR=328 CHARS=28983 SENTENCES=0 CSUM ERR=334 CHARS=29555 SENTENCES=0 CSUM ERR=346 CHARS=30127 SENTENCES=0 CSUM ERR=353 CHARS=30699 SENTENCES=0 CSUM ERR=359 CHARS=31145 SENTENCES=0 CSUM ERR=365 CHARS=31557 SENTENCES=0 CSUM ERR=368 CHARS=32129 SENTENCES=0 CSUM ERR=378 CHARS=32701 SENTENCES=0 CSUM ERR=387 CHARS=33273 SENTENCES=0 CSUM ERR=393 CHARS=33845 SENTENCES=0 CSUM ERR=399 CHARS=34192 SENTENCES=0 CSUM ERR=402

auch nach mehreren Minuten am Fenster erhalte ich keine Koordinaten. Langsam verzweifle ich.

Ballibum: Das einzige was jetzt passiert ist, dass ich jetzt folgende Ausgabe bekomme:

Offenbar empfängst Du haufenweise Zeichen (CHARS), aber diese können nicht ausgewertet werden. Dehalb lässt Du Dir die Zeichen am besten mal direkt mit ausgeben.

Hast Du diese Zeile im Code gesehen: // Serial.write(c); // uncomment this line if you want to see the GPS data flowing

Von der entfernst Du die Kommentarstriche am Anfang der Zeile: Serial.write(c); // uncomment this line if you want to see the GPS data flowing

Und dann schaust Du Dir mal an, was vom Modul eigentlich rüberkommt. Wenn nur "Datenmatsch rüberkommt, dann könnte es z.B. sein, dass Du eine falsche Baudrate eingestellt hast.

HI, es tut mir leid, dass ich diesen Thread wieder raus kramme, aber auf Grund meines Umzuges bin ich zu nichts gekommen. Leider klappt aktuell nicht einmal die Fehlerausgabe und das Auskommentieren bewirkt rein gar nichts. Ich glaube ich stehe immer noch auf dem Schlauch, wenn es um diese Jumper geht. Eventuell hat sich auch einigs geändert, dadurch das ich jetzt ein Mega benutze und nicht mehr mein Uno. Hier ein mal ein Bild vom Anschluss: vielen Dank für eure Hilfe

Mh, also auf dem UNO habe ich es jetzt zum Laufen bekommen, jedenfalls zeigt er mir konstant die richtige Koordinate an. Aber was mache ich mit dem Mega, sicherlich wird da ein Rx oder so anders zu belegen sein(siehe Bild)? mfg balli