CRIUS NEO-6 V3.0 GPS Modul

Hallo,

habe auf Ebay nach einem GPS Modul gesucht.
Habe dann folgendes gefunden: www.ebay.de/itm/251541478419

Kann nur nirgendwo eine Library oder einen Beispielcode finden.
Alles was ich brauche ist Lat und Lon.

Hat jemand Erfahrung?

Danke :slight_smile:

Frage den Händler. Das Modul kommuniziert nur über Serielle Schnittstelle. Somit sollte es auch ohne Libary einfach zu sein, entsprechende Codes an das Modul zu schicken, bzw. empfangen. Was du lediglich dazu brauchst, ist ggf. ein Handbuch etc.

JulHa:
Kann nur nirgendwo eine Library oder einen Beispielcode finden.
Alles was ich brauche ist Lat und Lon.

Hat jemand Erfahrung?

Technische Daten laut Anbieter:

Technische Daten:
- Standard-NMEA-Protokoll
- Baudrate: 9600

Falls Dir das nicht klar ist: Das Modul sendet seine Daten im (nahezu) Klartext über Serial mit 9600 Baud.

Du kannst die eintreffenden Daten entweder selbst decodieren (wenn Du kannst) oder eine beliebige GPS-Library für Arduino zu diesem Zweck verwenden.

Zum Entwickeln und Debuggen von Anwendungen während der Entwicklungsphase ist ein Arduino-Board mit mindestens zwei seriellen Schnittstellen vorteilhaft, um an einer zusätzlichen seriellen Schnittstelle das GPS-Modul zu betreiben und an Serial Debug-Ausgaben zum PC-Monitor senden zu können.

Auf Boards mit nur einer einzigen HardwareSerial kannst Du Dir z.B. mit der AltSoftSerial-Library eine zusätzliche per Software emulierte Serial-Schnittstelle für das GPS-Modul einrichten.

Danke für die Antworten. :slight_smile:

jurs:
Zum Entwickeln und Debuggen von Anwendungen während der Entwicklungsphase ist ein Arduino-Board mit mindestens zwei seriellen Schnittstellen vorteilhaft, um an einer zusätzlichen seriellen Schnittstelle das GPS-Modul zu betreiben und an Serial Debug-Ausgaben zum PC-Monitor senden zu können.

Auf Boards mit nur einer einzigen HardwareSerial kannst Du Dir z.B. mit der AltSoftSerial-Library eine zusätzliche per Software emulierte Serial-Schnittstelle für das GPS-Modul einrichten.

Sollte also so funktionieren?:

 #include <SoftwareSerial.h>

SoftwareSerial gpsSerial(10, 11); // RX, TX (TX not used)
const int sentenceSize = 80;

char sentence[sentenceSize];

void setup()
{
  Serial.begin(9600);
  gpsSerial.begin(9600);
}

void loop()
{
  static int i = 0;
  if (gpsSerial.available())
  {
    char ch = gpsSerial.read();
    if (ch != '\n' && i < sentenceSize)
    {
      sentence[i] = ch;
      i++;
    }
    else
    {
     sentence[i] = '\0';
     i = 0;
     displayGPS();
    }
  }
}

void displayGPS()
{
  char field[20];
  getField(field, 0);
  if (strcmp(field, "$GPRMC") == 0)
  {
    Serial.print("Lat: ");
    getField(field, 3);  // number
    Serial.print(field);
    getField(field, 4); // N/S
    Serial.print(field);
    
    Serial.print(" Long: ");
    getField(field, 5);  // number
    Serial.print(field);
    getField(field, 6);  // E/W
    Serial.println(field);
  }
}

void getField(char* buffer, int index)
{
  int sentencePos = 0;
  int fieldPos = 0;
  int commaCount = 0;
  while (sentencePos < sentenceSize)
  {
    if (sentence[sentencePos] == ',')
    {
      commaCount ++;
      sentencePos ++;
    }
    if (commaCount == index)
    {
      buffer[fieldPos] = sentence[sentencePos];
      fieldPos ++;
    }
    sentencePos ++;
  }
  buffer[fieldPos] = '\0';
}

Kann es noch nicht testen, da Modul noch nicht da...

JulHa:
Sollte also so funktionieren?:

 #include <SoftwareSerial.h>

SoftwareSerial gpsSerial(10, 11); // RX, TX (TX not used)
...

Serial.begin(9600);
 gpsSerial.begin(9600);

Das mit SoftwareSerial wird auf jeden Fall extrem holperig und geht mit verlorengegangenen Zeichen einher, weil SoftwareSerial zusammen mit HardwareSerial parallel schon bei 9600 Baud gleichzeitig nicht mehr korrekt funktioniert.

Ich würde auf jeden Fall die AltSoftSerial-Library anstelle von SoftwareSerial nehmen:
https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
(Nutzbare Pin-Nummern je nach Board beachten!)

Wenn Du bei der Übertragung sichergehen willst, müßtest Du außerdem auch die CRC-Prüfsumme überprüfen.

Und Lat und Long stehen im NMEA-Datensatz nicht "ganz", sondern nur "fast" im Klartext innerhalb der Daten, ein wenig Herumrechnen ist noch notwendig. So würden diese Angaben in Feld 3 und 4:
4916.46,N
bedeuten, dass die nördliche Breite 49° und 16.46 Bogenminuten beträgt.