Probleme mit GPS Shield und Arduino MKR WAN 1310

Hallo zusammen,

ich bin neu hier und möchte zunächst sagen, dass ich noch nicht viel Erfahrung in Sachen Mikrocontroller und Arduino habe.

Ich habe mir die beiden oben genannten Boards gekauft und stehe vor dem ersten Problem.
Laut Getting Startet kann man den GPS-Sensor entweder per 5-poligem Kabel im I2C-Modus verwenden oder diesen direkt auf den Arduino stecken (als Shield).

Nun zum Problem:
Im I2C-Modus funktioniert alles wunderbar. Möchte ich den Sensor aber als Shield verwenden, erkennt er diesen nicht und das Beispielprogramm gibt auch keinen Fehler aus, wenn der Sensor gar nicht erst aufgesteckt ist. Ich habe den Code entsprechend dem Code abgeändert:

#include <Arduino_MKRGPS.h>

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  
  // If you are using the MKR GPS as shield, change the next line to pass
  // the GPS_MODE_SHIELD parameter to the GPS.begin(...)
  if (!GPS.begin(GPS_MODE_SHIELD)) {
    Serial.println("Failed to initialize GPS!");
    while (GPS.begin(GPS_MODE_SHIELD)==0);
  }
}

Habe ich das falsch verstanden oder ist die Header-Datei fehlerhaft. Schließlich kommt keine Fehlermeldung, wenn der ganze Sensor nicht aufgesteckt ist. Das kann ja nicht sein.

Im I2C-Modus funktioniert das mit der Fehlermeldung wunderbar.

Viele Grüße

Stefan

Es ist eine unsinnige Idee Text als Bild einzustellen (Du bist damit aber nicht allein - tröste Dich).

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). So ist er auch auf portablen Geräten lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Hallo Tommy,

danke für den Hinweis. Werde ich in Zukunft immer so machen :slight_smile:

Wenn Du uns dann noch einen Link zu Deinem GPS-Shield gibst (es gibt davon viele verschiedene) könnte sich jemand Gedanken machen.

Gruß Tommy

Achso ja. Es ist folgendes verwendet:

Arduino: Arduino

GPS-Shield: GPS-Shield

Code von hier: Code

Beim GPS-Shield kommt 404 not found.

Gruß Tommy

Tommy56:
Beim GPS-Shield kommt 404 not found.

Gruß Tommy

Bei mir klappts. Hier nochmal normal: Arduino MKR GPS Shield — Arduino Official Store
Das ist der originale Sensor.

Sorry, da war der Shop irgendwie auf USA umgestellt.

Da der GPS_MODE_SHIELD = GPS_MODE_UART ist, fehlt mir in dem Sketch der Aufruf des Konstruktors mit der Übergabe der Seriellen Schnittstelle.
Er soll an Serial1 hängen, aber Daten zu den Parametern habe ich nicht gefunden.

Ich habe die Hardware nicht, kann da also keine weitere Erfahrung beitragen.

Für GPS_MODE_UART gibt begin immer 1 zurück.

int GPSClass::begin(int mode)
{
  _mode = mode;

  pinMode(_extintPin, OUTPUT);
  digitalWrite(_extintPin, HIGH);
  delay(100); // delay for GPS to wakeup

  if (_mode == GPS_MODE_UART) {
    _serial->begin(_baudrate);
    _stream = _serial;
  } else {
    if (!_serialDDC->begin(_clockRate)) {
      end();

      return 0;
    }

    _stream = _serialDDC;
  }

  _available = 0;
  _index = 0;

  return 1;
}

Gruß Tommy

Danke für deine Antwort. So weit war ich heute auch schon. Da ich aber nur sehr eingeschränkt fähig bin, was das Programmieren angeht, kann ich diesen Fehler auch nicht selbständig beheben.

Viele Grüße

Stefan

Wenn Du da auch schon warst, wäre es sinnvoll gewesen, darauf hin zu weisen. Da hätte ich mir die Zeit sparen können.

Gruß Tommy

Ich meinte ich war in dieser Datei. Den Fehler den du genannt hast, habe ich nicht gefunden. Ich wäre da nie drauf gekommen, dass dort etwas fehlt.
Habe mich wohl falsch ausgedrückt :slight_smile:

Da Serial.begin keinen Returncode hat, könnte man es so probieren:

if (_mode == GPS_MODE_UART) {
    _serial->begin(_baudrate);
    if (!baudrate || !_serial) {
      end();
      return 0;
    }

    _stream = _serial;
  } else {

Völlig ungetestet. Es behebt auch nicht das Problem mit dem fehlenden Constructor, dafür fehlen mir aber die Infos vom Hersteller.

Gruß Tommy

Hallo Tommy,

funktioniert leider nicht. Es kommt

Mehrere Bibliotheken wurden für "MKRWAN.h" gefunden
 Benutzt: D:\Stefan\Documents\Arduino\libraries\MKRWAN
Mehrere Bibliotheken wurden für "Arduino_MKRGPS.h" gefunden
 Benutzt: D:\Stefan\Documents\Arduino\libraries\Arduino_MKRGPS
Mehrere Bibliotheken wurden für "Wire.h" gefunden
 Benutzt: C:\Users\Stefan\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.4\libraries\Wire
exit status 1
Fehler beim Kompilieren für das Board Arduino MKR WAN 1310.

Viele Grüße Stefan

Dann kann ich auch nichts weiter dazu sagen.
Das Lib-Chaos macht es nicht besser.

Gruß Tommy