@fra222 Thanks a lot again. It is working perfectly now with the 38 400 baudrate. The precision is impressing !
Latest posts made by FRA222
-
RE: Unable to read data from GNSS Module with Core 2
-
RE: Unable to read data from GNSS Module with Core 2
@ajb2k3 Thank you very much for your help. I did the tests with the external antenna, outside, on the roof close to a window.
-
RE: Unable to read data from GNSS Module with Core 2
@robski Thank you very much for your answer. I tried 115200, 57600 and 9600 without any success. I will try tomorrow the other one you gave in your message and will tell you.
-
Unable to read data from GNSS Module with Core 2
Hi,
My configuration is a Core2 stacked to a M5Stack GNSS Module, newly bought on M5Stack Store.
I don't manage to receive valid data from the GPS Module. The Serial stream and the source code are copied below.
Thank you in advance for your support,
Regards,
Philippe``
--- Settings: /dev/cu.usbserial-57130480381 115200,8,N,1
--- RTS: active DTR: active BREAK: inactive
--- CTS: inactive DSR: inactive RI: inactive CD: inactive
--- software flow control: inactive
--- hardware flow control: inactive
--- serial input encoding: UTF-8
--- serial output encoding: UTF-8
--- EOL: CRLF
--- filters: default
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 9960 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 11392 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 12828 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 14268 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 15710 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 17152 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 18599 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 20048 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 21519 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 22972 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 24435 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 25906 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 27544 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 29184 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 30819 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 32460 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 34108 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 35775 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 37424 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 39081 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 40724 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 42372 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 44017 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 45657 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 47299 0 0
**** ***** 0.000000 *********** **** ********** ******** **** ****** ****** ***** *** ******** ****** *** 48941 0 0The Code is below :
#include <M5Core2.h> #include "M5Module_GNSS.h" #include <TinyGPSPlus.h> #include <Adafruit_BMP280.h> #include <WiFiManager.h> // https://github.com/tzapu/WiFiManager #include <SPI.h> #include <WiFi.h> #include <MQTT.h> static void smartDelay(unsigned long ms); static void printFloat(float val, bool valid, int len, int prec); static void printInt(unsigned long val, bool valid, int len); static void printDateTime(TinyGPSDate &d, TinyGPSTime &t); static void printStr(const char *str, int len); TinyGPSPlus gps; static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002; //Fonction pour MQTT unsigned long lastMillis = 0; void setup() { //M5.begin(true, true, true, false, kMBusModeInput); //M5.begin(); M5.begin(); Serial.begin(115200); while (!Serial) ; //Connexion du GPS Serial2.begin(115200, SERIAL_8N1, 13, 14); M5.Lcd.println(); M5.Lcd.println(F( "Sats HDOP Latitude Longitude Fix Date Time Date Alt " " Course Speed Card Distance Course Card Chars Sentences Checksum")); M5.Lcd.println( F(" (deg) (deg) Age Age (m) " " --- from GPS ---- ---- to London ---- RX RX Fail")); M5.Lcd.println(F( "----------------------------------------------------------------------" "------------------------------------------------------------------")); } void loop() { printInt(gps.satellites.value(), gps.satellites.isValid(), 5); printFloat(gps.hdop.hdop(), gps.hdop.isValid(), 6, 1); //printFloat(gps.location.lat(), gps.location.isValid(), 11, 6); printFloat(gps.location.lat(), true, 11, 6); printFloat(gps.location.lng(), gps.location.isValid(), 12, 6); printInt(gps.location.age(), gps.location.isValid(), 5); printDateTime(gps.date, gps.time); printFloat(gps.altitude.meters(), gps.altitude.isValid(), 7, 2); printFloat(gps.course.deg(), gps.course.isValid(), 7, 2); printFloat(gps.speed.kmph(), gps.speed.isValid(), 6, 2); printStr( gps.course.isValid() ? TinyGPSPlus::cardinal(gps.course.deg()) : "*** ", 6); unsigned long distanceKmToLondon = (unsigned long)TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), LONDON_LAT, LONDON_LON) / 1000; printInt(distanceKmToLondon, gps.location.isValid(), 9); double courseToLondon = TinyGPSPlus::courseTo( gps.location.lat(), gps.location.lng(), LONDON_LAT, LONDON_LON); printFloat(courseToLondon, gps.location.isValid(), 7, 2); const char *cardinalToLondon = TinyGPSPlus::cardinal(courseToLondon); printStr(gps.location.isValid() ? cardinalToLondon : "*** ", 6); printInt(gps.charsProcessed(), true, 6); printInt(gps.sentencesWithFix(), true, 10); printInt(gps.failedChecksum(), true, 9); Serial.println(); smartDelay(1000); if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); } // This custom version of delay() ensures that the gps object // is being "fed". static void smartDelay(unsigned long ms) { unsigned long start = millis(); do { while (Serial2.available()) gps.encode(Serial2.read()); } while (millis() - start < ms); } static void printFloat(float val, bool valid, int len, int prec) { if (!valid) { while (len-- > 1) Serial.print('*'); Serial.print(' '); } else { Serial.print(val, prec); int vi = abs((int)val); int flen = prec + (val < 0.0 ? 2 : 1); // . and - flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1; for (int i = flen; i < len; ++i) Serial.print(' '); } smartDelay(0); } static void printInt(unsigned long val, bool valid, int len) { char sz[32] = "*****************"; if (valid) sprintf(sz, "%ld", val); sz[len] = 0; for (int i = strlen(sz); i < len; ++i) sz[i] = ' '; if (len > 0) sz[len - 1] = ' '; Serial.print(sz); smartDelay(0); } static void printDateTime(TinyGPSDate &d, TinyGPSTime &t) { if (!d.isValid()) { Serial.print(F("********** ")); } else { char sz[32]; sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year()); Serial.print(sz); } if (!t.isValid()) { Serial.print(F("******** ")); } else { char sz[32]; sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second()); Serial.print(sz); } printInt(d.age(), d.isValid(), 5); smartDelay(0); } static void printStr(const char *str, int len) { int slen = strlen(str); for (int i = 0; i < len; ++i) Serial.print(i < slen ? str[i] : ' '); smartDelay(0); }