Module GPS micro USB NEO-6M - rien ne s'affiche sur le moniteur série

Bonjour,

J'ai acheté ce Module GPS micro USB NEO-6M sur AliExpress.

Rien ne s'affiche sur le moniteur série.

J'ai un Elegoo Mega 2560 R3.
Le moniteur série est paramétré à 115200 bauds.
D'après AliExpress, le module GPS est à 9600 bauds par défaut.
Ce module a une antenne intégré et un connecteur pour une autre antenne.

J'ai branché comme ceci :

  • VCC du module sur +5V de l'Arduino
  • GND sur GND
  • TXD sur le pin digital 4
  • RXD sur le pin digital 3

J'ai utilisé plusieurs codes dont celui-ci qui doit être le code le plus simple qui affichera tout ce qui sort du GPS même si il retourne une erreur d'après ce que j'ai lu ici :

/*
 * Rui Santos 
 * Complete Project Details https://randomnerdtutorials.com
 */
 
#include <SoftwareSerial.h>

// The serial connection to the GPS module
SoftwareSerial ss(4, 3);

void setup(){
  Serial.begin(115200);
  ss.begin(9600);
}

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

Je n'ai rien qui s'affiche dans le moniteur série.

La LED du GPS claire rouge en continu. Elle doit clignoter dans quel cas ?
Les LED TX/RX de l'Arduino ne clairent pas.

Je suis à l'intérieur dans une maison ossature bois, près de la fenêtre. J'ai testé en mettant le module sur le rebord de la fenêtre dehors. Il est censé fonctionner à l'intérieur ?

Quel est le temps d’acquisition approximatif à l'intérieur, à l'extérieur ?
Est-ce que ça doit afficher quelque chose dans le moniteur série quand le module n'a encore pas acquis les données ?

Auriez-vous une idée svp ?

Il y a une doc pour ça

Tu as une Mega2560 avec 4 liaisons série matérielles. Pourquoi alors utiliser SoftwareSerial?

Parce que je suis débutant et que je ne le savais pas. Je ne sais pas comment faire.

J'ai déjà vu cette doc mais je ne comprends pas tout et je ne crois pas que ça réponde à ma question pourquoi rien ne s'affiche, si ?

Chapitre 7 la liste des messages qui sont envoyés tant que le FIX n'a pas été réalisé.

Utiliser Serial1, Serial2 ou Serial3 à la place de ss et se connecter sur les broches correspondantes de la carte Mega2560.
Remplacer dans le code toutes les occurrences de ss par le nom du Serial que tu utilises.

Merci beaucoup, c'est un peu plus clair pour moi.

Voici le résultat :

/*
 * Rui Santos 
 * Complete Project Details https://randomnerdtutorials.com
 */

/*
L'Arduino MEGA 2560 est équipé en plus de 3 ports série matériels.
Désactiver SoftwareSerial.
Dans la suite du programme, ramplacer ss par Serial1, 2 ou 3
correspondant aux ports série matériels 14 à 19 du MEGA 2560.
Faire correspondre RXD du module à TX1 18 de l'Arduino MEGA 2560.
faire correspondre TXD du module à RX1 19 de l'Arduino MEGA 2560.
*/

// #include <SoftwareSerial.h>

// The serial connection to the GPS module
// SoftwareSerial ss(4, 3);

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

void loop(){
  while (Serial1.available() > 0){
    // get the byte data from the GPS
    byte gpsData = Serial1.read();
    Serial.write(gpsData);
  }
}
10:32:37.849 -> $GPRMC,083252.00,V,,,,,,,020424,,,N*73
10:32:37.882 -> $GPVTG,,,,,,,,,N*30
10:32:37.915 -> $GPGGA,083252.00,,,,,0,00,99.99,,,,,,*68
10:32:37.948 -> $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
10:32:38.013 -> $GPGSV,3,1,10,03,00,347,,06,21,048,,11,28,088,,12,64,061,*7C
10:32:38.079 -> $GPGSV,3,2,10,24,27,142,,25,75,305,18,28,30,308,,29,37,202,*7A
10:32:38.144 -> $GPGSV,3,3,10,31,03,309,,32,38,264,26*7D
10:32:38.177 -> $GPGLL,,,,,083252.00,V,N*44
10:32:38.873 -> $GPRMC,083253.00,V,,,,,,,020424,,,N*72
10:32:38.906 -> $GPVTG,,,,,,,,,N*30
10:32:38.906 -> $GPGGA,083253.00,,,,,0,00,99.99,,,,,,*69
10:32:38.971 -> $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
10:32:39.004 -> $GPGSV,3,1,10,03,00,347,,06,21,048,,11,28,088,,12,64,061,*7C

TX clignote sur l'Arduino.
Je ne crois pas que mes coordonnées GPS apparaissent.

Si j'utilise le code de TinyGPS++, j’obtiens ça, ça semble fonctionner mais rien n'apparait dans le moniteur série, sais-tu pourquoi ?

TX ne clignote pas sur l'Arduino.

/*
 * Rui Santos 
 * Complete Project Details https://randomnerdtutorials.com
 *
 * Based on the example TinyGPS++ from arduiniana.org
 *
 */
 
#include <TinyGPS++.h>
// #include <SoftwareSerial.h>

//static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;

// The TinyGPS++ object
TinyGPSPlus gps;

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

void setup(){
  Serial.begin(9600);
  Serial1.begin(GPSBaud);
}

void loop(){
  // This sketch displays information every time a new sentence is correctly encoded.
  while (Serial1.available() > 0){
    gps.encode(Serial1.read());
    if (gps.location.isUpdated()){
      // Latitude in degrees (double)
      Serial.print("Latitude= "); 
      Serial.print(gps.location.lat(), 6);      
      // Longitude in degrees (double)
      Serial.print(" Longitude= "); 
      Serial.println(gps.location.lng(), 6); 
       
      // Raw latitude in whole degrees
      Serial.print("Raw latitude = "); 
      Serial.print(gps.location.rawLat().negative ? "-" : "+");
      Serial.println(gps.location.rawLat().deg); 
      // ... and billionths (u16/u32)
      Serial.println(gps.location.rawLat().billionths);
      
      // Raw longitude in whole degrees
      Serial.print("Raw longitude = "); 
      Serial.print(gps.location.rawLng().negative ? "-" : "+");
      Serial.println(gps.location.rawLng().deg); 
      // ... and billionths (u16/u32)
      Serial.println(gps.location.rawLng().billionths);

      // Raw date in DDMMYY format (u32)
      Serial.print("Raw date DDMMYY = ");
      Serial.println(gps.date.value()); 

      // Year (2000+) (u16)
      Serial.print("Year = "); 
      Serial.println(gps.date.year()); 
      // Month (1-12) (u8)
      Serial.print("Month = "); 
      Serial.println(gps.date.month()); 
      // Day (1-31) (u8)
      Serial.print("Day = "); 
      Serial.println(gps.date.day()); 

      // Raw time in HHMMSSCC format (u32)
      Serial.print("Raw time in HHMMSSCC = "); 
      Serial.println(gps.time.value()); 

      // Hour (0-23) (u8)
      Serial.print("Hour = "); 
      Serial.println(gps.time.hour()); 
      // Minute (0-59) (u8)
      Serial.print("Minute = "); 
      Serial.println(gps.time.minute()); 
      // Second (0-59) (u8)
      Serial.print("Second = "); 
      Serial.println(gps.time.second()); 
      // 100ths of a second (0-99) (u8)
      Serial.print("Centisecond = "); 
      Serial.println(gps.time.centisecond()); 

      // Raw speed in 100ths of a knot (i32)
      Serial.print("Raw speed in 100ths/knot = ");
      Serial.println(gps.speed.value()); 
      // Speed in knots (double)
      Serial.print("Speed in knots/h = ");
      Serial.println(gps.speed.knots()); 
      // Speed in miles per hour (double)
      Serial.print("Speed in miles/h = ");
      Serial.println(gps.speed.mph()); 
      // Speed in meters per second (double)
      Serial.print("Speed in m/s = ");
      Serial.println(gps.speed.mps()); 
      // Speed in kilometers per hour (double)
      Serial.print("Speed in km/h = "); 
      Serial.println(gps.speed.kmph()); 

      // Raw course in 100ths of a degree (i32)
      Serial.print("Raw course in degrees = "); 
      Serial.println(gps.course.value()); 
      // Course in degrees (double)
      Serial.print("Course in degrees = "); 
      Serial.println(gps.course.deg()); 

      // Raw altitude in centimeters (i32)
      Serial.print("Raw altitude in centimeters = "); 
      Serial.println(gps.altitude.value()); 
      // Altitude in meters (double)
      Serial.print("Altitude in meters = "); 
      Serial.println(gps.altitude.meters()); 
      // Altitude in miles (double)
      Serial.print("Altitude in miles = "); 
      Serial.println(gps.altitude.miles()); 
      // Altitude in kilometers (double)
      Serial.print("Altitude in kilometers = "); 
      Serial.println(gps.altitude.kilometers()); 
      // Altitude in feet (double)
      Serial.print("Altitude in feet = "); 
      Serial.println(gps.altitude.feet()); 

      // Number of satellites in use (u32)
      Serial.print("Number os satellites in use = "); 
      Serial.println(gps.satellites.value()); 

      // Horizontal Dim. of Precision (100ths-i32)
      Serial.print("HDOP = "); 
      Serial.println(gps.hdop.value()); 
    }
  }
}

Le chapitre des messages d'erreur n'est pas clair pour moi.