NodeMCU und NEO-6M GPS Modul

Hallo zusammen,

ich bin zurzeit mit der Übertragung von GPS-Daten per Wlan zu Gange. Dazu verwende ich das NEO-6M GPS Modul und den NodeMCU ESP8266. Allerdings habe ich das Problem, dass der serielle Monitor des NodeMCU nur Hieroglypchen ausgibt.

Was ich bisher versucht/geprüft habe:

  • Das Anpassen der Baudrate war leider erfolglos
  • Ich habe denselben Aufbau mit meinem Arduino Uno versucht. Da werden die Koordinaten wie gewünscht im seriellen Monitor wiedergegeben
  • Einen alten Sketch auf den NodeMCU geladen, um dessen Funktionalität sicherzustellen

Der funktionierende Aufbau für den Uno sieht so aus. Ich habe auch diesen Aufbau für das GPS-Modul und den NodeMCU gefunden, welcher leider ebenfalls zu keinem besseren Ergebnis führt.

Eine Idee war, dass die fehlerhafte Ausgabe an den gewählten Pins liegen könnte. Beim Uno habe ich die Pins 2,3 verwendet. Beim NodeMCU habe ich allerdings auch bereits dirverse Pins ausprobiert, aber leider auch nicht die gewünschten Resultate erzielt.

Könnt ihr mir da weiterhelfen?

Danke im Voraus.

Hier ist noch der Code, der bereits auf dem Uno funktioniert hat:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

static const int RXPin = 2, TXPin = 1;
static const uint32_t GPSBaud = 9600;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
//SoftwareSerial ss(RXPin, 0);

void setup(){
Serial.begin(9600);
ss.begin(GPSBaud);

}

void loop(){
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
//Serial.print(latitude);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
delay(5000);
}
}
}

Bist du sicher, die richtigen Pins für SoftwareSerial zu verwenden ?
Du definierts da die GPIO1 und GPIO2, da ist der GPIO1 schon durch die USB-UART belegt und macht dir Probleme.

Für SoftwareSerial hat sich bei mir GPIO12 und 13 bewährt.

Edit:
In deinem verlinkten Beispiel mit dem NodeMCU sind auch andere Pins verkabelt.

Hallo Dieter,

danke für die schnelle Antwort.

Ich habe sowohl GPIO 12,13 (Pins D6, D7) als auch GPIO 5,4 (Pins D1, D2) probiert. Leider wieder Hieroglypchen (siehe Anhang). Dabei habe ich D2 als RX bzw. D6 als RX gesetzt und auch dementsprechend im Code angepasst.

Die Info über GPIO und den Pins habe ich aus beigefügtem Pinout des NodeMCU.

Was könnte ich noch versuchen?

NodeMCU Pinout.PNG

Serieller Monitor GPIO 4 5.PNG

Serieller Monitor GPIO 12 13.PNG

Wichtig dabei ist, du musst die GPIO nur als Zahl eingeben, anders ist es, wenn du die Pinbezeichenung (D1....Dx) eingibst.

Die Anzeige sieht aber nach Fehler der Baud-Zahl im seriellen Monitor aus.

Die GPIO habe ich nur als Zahl eingegeben.

Ich habe auch bereits verschiedene Baudraten versucht. Laut Hersteller des GPS-Moduls wird eine Rate von 9600 vorgeschlagen. Bei dem UNO funktioniert das wunderbar. Bei dem NodeMCU habe ich bereits mehrere gängie Baudraten ausprobiert (4800, 9600, 57600 , 115200). Dabei habe ich es sowohl im seriellen Monitor geändert, als auch in dieser Zeile:
void setup(){
Serial.begin(9600);

Edit:
An der Baudrate kann es eigentlich auch nicht liegen, oder? Ich habe ein altes Projekt auf dem NodeMCU nachgebaut und ebenfalls die Baudrate auf 9600 gesetzt. Funktioniert einwandfrei...

Dann kann es nur noch ein Problem mit der Spannung sein.
Das bitte mal überprüfen. 3,3 V. sind evtl. zu gering.

Serial.begin(9600); betrifft die serielle Hardwareschnittstelle, an der der serielle Monitor hängt.
Hast Du daran zusätzlich das GPS angeschlossen?

Gruß Tommy

@HotSystems
Ich habe das GPS-Modul nun mit der 5V Spannung des Arduino UNO versorgt. Den GND Pin vom GPS-Modul habe ich sowohl zum Uno als auch zum NodeMCU verbunden. Auch hier habe ich die beiden GPIO Kombinationen ausprobiert (12,13 & 4,5) und die Baudraten variiert. Leider immer verschiedene Hieroglyphen.

@Tommy
Ich weiß leider nicht genau was du meinst. Der NodeMCU ist nur noch an die RX/TX Pins des GPS-Moduls verbunden (und an meinen PC). Ich lese den seriellen Monitor des NodeMCU. Damit ist das GPS-Modul an der seriellen Hardwareschnittstelle angebunden, richtig?

Ok, dann mal von vorn.

Nimm mal einen einfachen blinksketch und füge eine Serielle Ausgabe hinzu.

Wenn das dann auch nicht funktioniert, gibt es ein Problem mit dem NodeMCU.

azibik1234:
Hallo zusammen,

#include <SoftwareSerial.h>

static const int RXPin = 2, TXPin = 1;
static const uint32_t GPSBaud = 9600;

SoftwareSerial ss(RXPin, TXPin);

void setup(){
 ss.begin(GPSBaud);

Bist Du Dir sicher, das der INIT für SoftwareSerial so stimmt?
https://www.arduino.cc/en/Reference/SoftwareSerialBegin sieht gänzlich anders aus.

@HotSystems
Ich habe ein altes Projekt erneut ausprobiert und es wird korrekt im seriellen Monitor abgebildet. Allerdings habe ich gesehen, dass dort in der ersten Zeile Hieroglypchen ausgegeben werden (siehe Anhang). Da die GPS-Positionierung eine Weile braucht, versuche ich mal dem ganzen etwas Zeit zu geben.

@myxy
Probiere ich auch mal aus...

Serieller Monitor Beispielprojekt.PNG

azibik1234:
Allerdings habe ich gesehen, dass dort in der ersten Zeile Hieroglypchen ausgegeben werden (siehe Anhang).

Versuche mal 74880 Baud im seriellen Monitor.

https://forum.arduino.cc/index.php?topic=700576.msg4708180#msg4708180

Gruß Fips

azibik1234:
@HotSystems
Ich habe ein altes Projekt erneut ausprobiert und es wird korrekt im seriellen Monitor abgebildet. Allerdings habe ich gesehen, dass dort in der ersten Zeile Hieroglypchen ausgegeben werden (siehe Anhang). Da die GPS-Positionierung eine Weile braucht, versuche ich mal dem ganzen etwas Zeit zu geben.

Alles klar und die Lösung wurde dir schon präsentiert.
Das hat erstmal nix mit der SoftwareSerial-Übertragung zu tun.

Derfips:
Wemos D1 Mini Experten gesuch - #9 by Derfips - Deutsch - Arduino Forum

Gruß Fips

Ah, danke für den Tipp.

Es lag scheinbar daran, dass das GPS-Modul übermäßig lange zum Herstellen der Verbindung braucht. Seltsamerweise klappt das in Verbindung mit dem UNO innerhalb einer Minute, während es über den NodeMCU >10min dauert.

Auch die 5V Spannung kann der Grund gewesen sein.

Nichtsdestotrotz ist das Problem gelöst.

Danke an alle.

azibik1234:
Ah, danke für den Tipp.

Es lag scheinbar daran, dass das GPS-Modul übermäßig lange zum Herstellen der Verbindung braucht. Seltsamerweise klappt das in Verbindung mit dem UNO innerhalb einer Minute, während es über den NodeMCU >10min dauert.

Auch die 5V Spannung kann der Grund gewesen sein.

Nichtsdestotrotz ist das Problem gelöst.

Danke an alle.

Das der Unterschied so groß ist, ist nicht zu erklären.
Dürfte nicht sein. Das muss noch einen anderen Grund haben.

Aber danke für die Rückmeldung.