Keine Daten vom GPS-Modul - erledigt!

Ich verzeifel bald! und bitte um Hilfe.
Der Sketch läuft, doch das Modul sendet oder ich empfange keine GPS-Daten!
Das Modul blinkt munter vor sich hin, also hat es doch Empfang?
Anzeige im serielle Monitor
** No characters received from GPS: check wiring **
CHARS=0 SENTENCES=0 CSUM ERR=0

die Verbindung 4/3 hab ich auch schon getauscht, doch ohne Erfolg.
Hardware:
Uno Nano V3.0
Ublox NEO-6M GPS Module
GPS-Modul an A4 rx /A3 tx und 3,3V, GND vom Arduino
folgender Sketch:
simply_test

#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 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

void setup()
{
  Serial.begin(9600);
  ss.begin(9600);
  
  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 < 2000;)
  {
    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);
  if (chars == 0)
    Serial.println("** No characters received from GPS: check wiring **");
}

plato:
Serial.begin(9600);
ss.begin(9600);

SoftwareSerial ist bereits bei 9600 Baud vollkommen unbrauchbar, wenn es gleichzeitig mit HardwareSerial betrieben werden soll.

Wenn Du Dir das Trauerspiel falsch empfangener Daten mal testweise auf einem Board mit nur einer einzigen Hardwareserial-Schnittstelle ansehen möchtest, verwende diese Loop-Funktion in Deinem Test-Sketch:

void loop()  
{
  while(ss.available())
    Serial.write(ss.read());
}

Und wenn Du genug gesehen hast, verwende lieber die AltSoftSerial-Library anstelle von SoftwareSerial!

So fit bin ich nicht!

wenn ich die Werte so ändere habe ich einen lesbaren Text im seriellen Monitor!
so ist das Original
Serial.begin(115200);
ss.begin(4800);
und das das Ergebnis:
C÷a|¹ôüõa|»tüäpý0ü×pý0uüdpý8uülCý0ü×aü0¸õq4#¹õq40»ða|»tüõpÿ¸äüõat¹ôd(50°l(50»ðaü?uüáa|¹ôðat¹ôõq40?ä 5!¸åp¹¬üáp41»äaݹ<ü÷Cý8wüd(51üdpß¹¤üd

Liegt der Fehler im Sketch oder kommen wirklich keine Daten?

plato:
ss.begin(4800);
...
Liegt der Fehler im Sketch oder kommen wirklich keine Daten?

Es kommen doch offenbar REICHLICH DATEN, oder was sonst hast Du gepostet:

C÷a|¹ôüõa|»tüäpý0ü×pý0uüdpý8uülCý0ü×aü0¸õq4#¹õq40»ða|»tüõpÿ¸äüõat¹ôd(50°l(50»ðaü?uüáa|¹ôðat¹ôõq40?ä 5!¸åp¹¬üáp41»äaݹ<ü÷Cý8wüd(51üdpß¹¤üd

Das SIND DATEN! Oder genauer gesagt: DATENMÜLL!

Bei einem Modul mit einer Baudrate von 9600 muss es im Sketch aber natürlich heißen:

 ss.begin(9600);

Dann solltest Du etwas weniger Datenmüll und dafür etwas mehr von den Daten sehen.

Das hatte ich schon geändert!

so ist das Original: (Beispielsketch)
Serial.begin(115200);
ss.begin(4800);
Ausgabe: C÷a|¹ôüõa|»tüäpý0ü×pý0uüdpý8uülCý0ü×aü0¸õq4#¹õq40»ða|»tüõpÿ¸äüõat¹ôd(50°l

so hab ich es geändert:
Serial.begin(9600);
ss.begin(9600);
Ausgabe:
** No characters received from GPS: check wiring **
CHARS=0 SENTENCES=0 CSUM ERR=0

ist da oben nun Datenmüll oder der Text wie unten!

plato:
so ist das Original: (Beispielsketch)
Serial.begin(115200);
ss.begin(4800);
Ausgabe: C÷a|¹ôüõa|»tüäpý0ü×pý0uüdpý8uülCý0ü×aü0¸õq4#¹õq40»ða|»tüõpÿ¸äüõat¹ôd(50°l

Das ist eigentlich Schrott, weil Dein GPS-Modul (so kenne ich die Ublox NEO-6M Module) standardmäßig mit 9600 und nicht mit 4800 sendet. Andererseits scheinen ja bei Dir mit 4800 Baud auch Daten anzukommen. Merkwürdig. Steht vielleicht der Serial Monitor an Serial nicht auf 115200?

plato:
so hab ich es geändert:
Serial.begin(9600);
ss.begin(9600);
Ausgabe:
** No characters received from GPS: check wiring **
CHARS=0 SENTENCES=0 CSUM ERR=0

Und das ist eigentlich auch Schrott, weil Du versuchst mit der "SoftwareSerial" Library Deine GPS-Library zu füttern.
Die GPS-Library ist (so la la) OK, aber SoftwareSerial ist eine Schrott-Library, die zu kaum etwas nützlich ist. Andererseits sollte wenigstens bei "CHARS" irgendeine Zahl größer als Null stehen, wenn überhaupt etwas empfangen wird. Das scheint bei Dir aber auch nicht der Fall zu sein. Merkwürdig.

Was gerade noch mit SoftwareSerial und 9600 Baud gehen müßte, ist eine laufende Demo der empfangenen Daten.

Beispiel-Sketch dafür:

#include <SoftwareSerial.h>
SoftwareSerial ss(4, -1); // Connect GPS TX to Arduino D4

void setup()
{
  Serial.begin(9600); // Serial monitor baudrate 9600
  ss.begin(9600);     // GPS module baudrate 9600
  Serial.println();
  Serial.println("Waiting for GPS data...");
}

void loop()  
{
  while(ss.available())
    Serial.write(ss.read());
}

Damit sollten "die meisten" Zeichen im Datenstrom korrekt rüberkommen, aber SoftwareSerial produziert trotzdem zwischendrin immer reichlich Datenfehler.

Welche Ausgabe bekommst Du mit diesem Sketch?

Wenn außer der Begrüßungsmeldung "Waiting for GPS data..." gar nichts kommt, was kommt nach einer Änderung der Modul-Baudrate von 9600 auf 4800:

  ss.begin(4800);     // GPS module baudrate 4800

Wenn Dein GPS-Modul sogar anfängt zu blinken, dann hat das Modul sogar einen GPS Fix mit Koordinaten, die laufend gesendet werden.

jurs:
Was gerade noch mit SoftwareSerial und 9600 Baud gehen müßte, ist eine laufende Demo der empfangenen Daten.

Nur das will ich im Moment

Beispiel-Sketch dafür:

#include <SoftwareSerial.h>
SoftwareSerial ss(4, -1); // Connect GPS TX to Arduino D4
void setup()
{
  Serial.begin(9600); // Serial monitor baudrate 9600
  ss.begin(9600);     // GPS module baudrate 9600
  Serial.println();
  Serial.println("Waiting for GPS data...");
}

void loop()  
{
  while(ss.available())
    Serial.write(ss.read());
}

Welche Ausgabe bekommst Du mit diesem Sketch?
KEINE Daten!
Wenn außer der Begrüßungsmeldung "Waiting for GPS data..." gar nichts kommt, was kommt nach einer Änderung der Modul-Baudrate von 9600 auf 4800:

  ss.begin(4800);     // GPS module baudrate 4800

Auch KEINE Daten!

Wenn Dein GPS-Modul sogar anfängt zu blinken, dann hat das Modul sogar einen GPS Fix mit Koordinaten, die laufend gesendet werden.

Blinkt leider nur wenn an D1/TX Pin1 und D0/RX Pin2 am Nanoboard

Probier mal AltSoftSerial:
https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html

Beachte die Liste mit den Pins. Die sind festgelegt.

Danke für die Hilfe!

Man sollte im Halbdunkel keine Drähte mit ähnlichen Farben (rot / orange) benutzen und diese nicht auseinander halten können.
Nachdem ich jetzt bei Tageslicht meinen Fehler entdeckt habe läuft auch der Test mit dem GPS-Modul.
Nochmals danke für die Geduld und das Kopfzerbrechen.