Go Down

Topic: GPS - Shield richtig anschließen (Read 1 time) previous topic - next topic

Ballibum

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

mkl0815

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.

jurs


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.

Ballibum

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

Ballibum

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

Ballibum

#5
Jun 28, 2013, 04:43 pm Last Edit: Jun 28, 2013, 04:49 pm by Ballibum Reason: 1
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:
Code: [Select]

#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

mkl0815

#6
Jun 28, 2013, 04:51 pm Last Edit: Jun 28, 2013, 04:53 pm by mkl0815 Reason: 1
<GLASKUGEL MODE=ON>
Vermutlich muss im Sketch dann auch noch geändert werden auf welchen Pins das serielle Signal des GPS-Empfängers eintrudelt.
</GLASKUGEL>
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?

Code: [Select]

/* 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.

jurs


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.

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. 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

Serenifly

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.

mkl0815

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.

mkl0815

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.

jurs


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!

Ballibum

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

mkl0815

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.  :smiley-mr-green:

Go Up