GPS Shield Duinopeak: von Arduino Uno nach Mega2560: Probleme

Hi,

ich habe da mal wieder eine Frage:

Ich habe einen Arduino Uno mit dem GPS Shield Duinopeak. Dazu habe ich ein kleines Programm, das mir die NMEA-Daten anzeigt. Dieses funktioniert, d.h. ich erhalte im Monitor-Pgm jede Menge an Daten.

Nun wechsle ich auf den Arduino Mega2560, dazu stecke ich einfach den Shield um. Mein Programm lasse ich neu kompilieren, wird hochgeladen und gestartet, aber im Monitor-Pgm sehe ich nichts.

Was habe ich da nicht beachtet? Was muß ich tun, damit das (wieder) läuft?

Schönen Gruß
AugustQ

gerade noch mal ausprobiert:
Wechsel des Shields von Mega2560 auf Uno: geht.

Hier ist der Output:

$GPVTG,322.09,T,,M,1.47,N,2.73,K,A*33
$GPZDA,135506.000,16,07,2019,00,00*58
$GPTXT,01,01,01,ANTENNA OK*35
$GPGGA,135507.000,5003.4710,N,00818.3066,E,1,05,1.2,272.4,M,0.0,M,,*6A
$GPGLL,5003.4710,N,00818.3066,E,135507.000,A,A*5A
$GPGSA,A,3,16,27,20,11,18,,,,,,,,2.4,1.2,2.0*3C
$GPGSV,4,1,13,01,22,266,,08,72,284,,10,55,068,,11,31,284,24*7B
$GPGSV,4,2,13,14,09,141,,16,11,186,24,18,46,272,26,20,29,055,24*7C
$GPGSV,4,3,13,21,06,084,,22,10,216,,27,62,144,22,28,08,331,*72
$GPGSV,4,4,13,32,21,125,*4F

Und das ist mein Programm:

// Include the SoftwareSerial library
#include "SoftwareSerial.h"

 // Constants
#define txPin 3    //tx pin in GPS connection
#define rxPin 2    //rx pin in GPS connection
// Set up the GPS serial port
SoftwareSerial gps = SoftwareSerial(rxPin, txPin);

void setup()
{
    Serial.begin(9600);
    Serial.flush();
    //setup for GPS Serial Port  
    pinMode(rxPin, INPUT);
    pinMode(txPin, OUTPUT);
    gps.begin(9600);
    gps.flush();
    Serial.println("finished setup.");
}
void loop()
{
//    while(Serial.available())
//    {
//        gps.write(Serial.read());
//    }
    while(gps.available())
    {
        Serial.write(gps.read());
    }
}

Auf dem Uno läuft es, auf dem Mega2560 läuft es nicht.

Woran kann dies liegen?

Schönen Gruß
AugustQ

Deine serielle Verbindung ist nicht eindeutig.
Wenn du RX mit RX verbindest, kann es nicht funktionieren.

Und du brauchst die Pins nicht im Setup als Input bzw. Output zu definieren. das passiert schon in der SoftwareSerial-Library.

Wenn Du einen Mega verwendest, wäre es ja sinnvoller Serial1 als Hardwareschnittstelle zu verwenden und auf Softwareserial zu verzichten.

Gruß Tommy

Tommy56:
Wenn Du einen Mega verwendest, wäre es ja sinnvoller Serial1 als Hardwareschnittstelle zu verwenden und auf Softwareserial zu verzichten.

Gruß Tommy

Ohne Frage, das wäre die beste Lösung, also optimal.
Aber es muss auch so gehen.

Hi,

und Danke für die Antworten. Mittlerweile habe ich selbst eine Lösung gefunden.

Wie von Tommy56 vorgeschlagen habe ich auf dem Shield die Pin2 und 3 als TX bzw. RX definiert. Dann habe ich Serial1 mit 2 und 3 verbunden (und dabei beachtet, daß RX <-> TX) und schon läuft es.

Nochmals Danke für die Hinweise.

AugustQ

PS: ich komme halt nicht von der Hardware-Seite.

in mein Programm habe ich folgenden Kommentar eingefügt:

/* GPS:
 * fuer Arduino Mega2560:
 *     Shield: Stecker/Brücken auf 2 (TX) und 3 (RX)
 *     Serial1 mit 2 und 3 verbunden (beachte: RX <-> TX)
 *     also:
 *         Arduino: Pin 18 (=Serial1 TX) -->  Shield: Pin 3 (gejumpert auf RX)
 *         Arduino: Pin 19 (=Serial1 RX) -->  Shield: Pin 2 (gejumpert auf TX)
 */

damit ich das nicht vergesse.

Sonst ist das mit Pin 2 und 3 auch ziemlich irreführend.
Wierd die Shieldverbindung durch das Umjumpern von 2 und 3 des Arduino abgeklemmt? Ich kenne das Shield nicht.
Wenn nicht wäre das eine Gefahrenquelle für den MEGA.

Gruß Tommy

Mir ist auch nicht klar, wie es auf dem Uno funktioniert haben kann, wenn du RX mit RX und TX mit TX verbunden hast.
Das kann so nicht funktioniert haben.

AugustQ:
in mein Programm habe ich folgenden Kommentar eingefügt: 192-168-1-1ip

/* GPS:
  • fuer Arduino Mega2560:
  • Shield: Stecker/Brücken auf 2 (TX) und 3 (RX)
  • Serial1 mit 2 und 3 verbunden (beachte: RX <-> TX)
  • also:
  • Arduino: Pin 18 (=Serial1 TX) -->  Shield: Pin 3 (gejumpert auf RX)
  • Arduino: Pin 19 (=Serial1 RX) -->  Shield: Pin 2 (gejumpert auf TX)
    */



damit ich das nicht vergesse.

You're right, Master