GPS NEO 6M no funciona

Hola! estaba utilizando un gps neo 6m y un arduino uno. El problema es que el ejemplo del codigo de la libreria de arduino "TinyGPS.h" descargue la libreria TinyGPS-master y acabo de descargar la TinyGPSPLUS. Estoy haciendo las pruebas afuera no adentro del salon. Asismismo buscando aqui se supone que deberia de prender un foco en el modulo pero no se prende. Asimismo el mismo codigo de ejemplo me manda un mensaje en el serial plot de "Checa las conexiones no estan mandando los datos" o algo asi y ya verifique demasiadas veces mis conexiones asi como cheque la conectividad entre los jumpers con el multimetro para ver si no estan fallando, asimismo estaba checando con el multimetro los pines del modulo (porque lo soldé) y tambien todo bien, pero el codigo me dice que no lee nada, no se esta prendiendo el foco. Lo acabo de comprar no creo que me lo hayan vendido defectuoso, espero que me puedan ayudar.

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);

void setup()
{
  Serial.begin(115200);
  
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.println("Sats HDOP Latitude  Longitude  Fix  Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  Serial.println("          (deg)     (deg)      Age                      Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  Serial.println("-------------------------------------------------------------------------------------------------------------------------------------");

  ss.begin(4800);
}

void loop()
{
  float flat, flon;
  unsigned long age, date, time, chars = 0;
  unsigned short sentences = 0, failed = 0;
  static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
  
  print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
  print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
  gps.f_get_position(&flat, &flon, &age);
  print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
  print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  print_date(gps);
  print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
  print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
  print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
  print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);
  print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE : TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);

  gps.stats(&chars, &sentences, &failed);
  print_int(chars, 0xFFFFFFFF, 6);
  print_int(sentences, 0xFFFFFFFF, 10);
  print_int(failed, 0xFFFFFFFF, 9);
  Serial.println();
  
  smartdelay(1000);
}

static void smartdelay(unsigned long ms)
{
  unsigned long start = millis();
  do 
  {
    while (ss.available())
      gps.encode(ss.read());
  } while (millis() - start < ms);
}

static void print_float(float val, float invalid, int len, int prec)
{
  if (val == invalid)
  {
    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 print_int(unsigned long val, unsigned long invalid, int len)
{
  char sz[32];
  if (val == invalid)
    strcpy(sz, "*******");
  else
    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 print_date(TinyGPS &gps)
{
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned long age;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  if (age == TinyGPS::GPS_INVALID_AGE)
    Serial.print("********** ******** ");
  else
  {
    char sz[32];
    sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",
        month, day, year, hour, minute, second);
    Serial.print(sz);
  }
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  smartdelay(0);
}

static void print_str(const char *str, int len)
{
  int slen = strlen(str);
  for (int i=0; i<len; ++i)
    Serial.print(i<slen ? str[i] : ' ');
  smartdelay(0);
}

Verifique estos pines.

Estos son los pines pero los acabo de cambiar solamente los rote y ya me imprime pero me imprime
"**** **** ********* ********** **** ********** ******** **** ****** ****** ***** *** ******* ****** *** 6805 0 5
**** **** ********* ********** **** ********** ******** **** ****** ****** ***** *** ******* ****** *** 6911 0 6
**** **** ********* ********** **** ********** ******** **** ****** ****** ***** *** ******* ****** *** 7017 0 6
**** **** ********* ********** **** ********** ******** **** ****** ****** ***** *** ******* ****** *** 7127 0 6 "
si me imprime algo pero ahora me imprime una diferencia de 100?? no entiendo muy bien

Good evening, it is in 3.3v that we must power the GPS NEO .
Personally I’m in test and it works very well and I use an esp32.
My test code .

#include <TinyGPS++.h>

// Define RX et TX gpio pour port Serial 2
#define RXD2 16
#define TXD2 17

#define GPS_BAUD 9600

// The TinyGPS++ object
TinyGPSPlus gps;

// Create an instance of the HardwareSerial class for Serial 2
HardwareSerial gpsSerial(2);

#define TIMEZONE_OFFSET 1  // Ajustez en fonction de votre fuseau horaire (UTC+1 pour la France en hiver)

unsigned long previousMillis = 0;  // Temps écoulé depuis le dernier appel
const long interval = 2000;  // Intervalle de 1 secondes

// Fonction pour calculer le jour de la semaine (0 = samedi, 1 = dimanche, etc.)
int calculateDayOfWeek(int day, int month, int year) {
  if (month < 3) {
    month += 12;
    year--;
  }

  int K = year % 100;
  int J = year / 100;

  int h = (day + (13 * (month + 1)) / 5 + K + K / 4 + J / 4 + 5 * J) % 7;

  return h;  // Retourne un nombre entre 0 (samedi) et 6 (vendredi)
}

// Fonction pour obtenir le mois en texte
String getMonthName(int month) {
  const String months[] = {"", "janvier", "février", "mars", "avril", "mai", "juin", 
                            "juillet", "août", "septembre", "octobre", "novembre", "décembre"};
  return months[month];
}

// Fonction pour obtenir le jour de la semaine en texte
String getDayOfWeekName(int dayOfWeek) {
  switch (dayOfWeek) {
    case 0: return "Samedi"; break;
    case 1: return "Dimanche"; break;
    case 2: return "Lundi"; break;
    case 3: return "Mardi"; break;
    case 4: return "Mercredi"; break;
    case 5: return "Jeudi"; break;
    case 6: return "Vendredi"; break;
    default: return ""; 
  }
}

void setup() {
  // Serial Monitor
  Serial.begin(115200);
  
  // Start Serial 2 with the defined RX and TX pins and a baud rate of 9600
  gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2);
  Serial.println("Serial 2 started at 9600 baud rate");
}

void loop() {
  unsigned long currentMillis = millis();  // Mesure du temps écoulé
  
  // Si 5 secondes se sont écoulées depuis le dernier appel
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;  // Mettez à jour le temps précédent

    while (gpsSerial.available() > 0) {
      gps.encode(gpsSerial.read());
    }
    if (gps.location.isUpdated()) {
      Serial.print("LATITUDE: ");
      Serial.println(gps.location.lat(), 6);
      Serial.print("LONGITUDE: "); 
      Serial.println(gps.location.lng(), 6);
      Serial.print("Vitesse (km/h) = "); 
      Serial.println(gps.speed.kmph()); 
      Serial.print("ALTITUDE (min)= "); 
      Serial.println(gps.altitude.meters());
      Serial.print("Précision du signal = "); 
      Serial.println(gps.hdop.value() / 100.0); 
      Serial.print("Nombre de Satellites visible = "); 
      Serial.println(gps.satellites.value()); 
      
      // Ajuster l'heure pour le fuseau horaire local
      int localHour = gps.time.hour() + TIMEZONE_OFFSET;
      if (localHour >= 24) {
        localHour -= 24; // Si l'heure dépasse 23, revenir à 0
      }

      // Calculer le jour de la semaine
      int dayOfWeek = calculateDayOfWeek(gps.date.day(), gps.date.month(), gps.date.year());

      // Afficher l'heure en UTC et l'heure locale
      Serial.print("Time in UTC: ");
      Serial.println(String(gps.date.year()) + "/" + String(gps.date.month()) + "/" + String(gps.date.day()) + "," + 
                     String(gps.time.hour()) + ":" + String(gps.time.minute()) + ":" + String(gps.time.second()));
                     
      Serial.print("Heure locale: ");
      Serial.println(String(gps.date.year()) + "/" + String(gps.date.month()) + "/" + String(gps.date.day()) + "," + 
                     String(localHour) + ":" + String(gps.time.minute()) + ":" + String(gps.time.second()));
      
      // Afficher le jour de la semaine + date complète en format "Vendredi 15 novembre 2024"
      String dayName = getDayOfWeekName(dayOfWeek);
      String monthName = getMonthName(gps.date.month());
      
      Serial.print("Date aujourd'hui: ");
      Serial.println(dayName + " " + String(gps.date.day()) + " " + monthName + " " + String(gps.date.year()));
      
      Serial.println("");
    }
  }
}

and in the serial monitor:

20:32:50.922 -> LATITUDE: 48.866667
20:32:50.922 -> LONGITUDE: 2.333333
20:32:50.922 -> Vitesse (km/h) = 0.02
20:32:50.922 -> ALTITUDE (min)= 266.10
20:32:50.922 -> Précision du signal = 1.49
20:32:50.922 -> Nombre de Satellites visible = 6
20:32:50.922 -> Time in UTC: 2024/11/15,19:32:49
20:32:50.922 -> Heure locale: 2024/11/15,20:32:49
20:32:50.922 -> Date aujourd'hui: Vendredi 15 novembre 2024

if it can be useful

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @angiepik24 .

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

ss.begin(4800);

Por defecto el Neo 6M viene seteado a 9600 bps.
A menos que le hayas cambiado la velocidad, ese es el problema.

La alimentación es de entre 2.7V y 5V. Obviamente hay que alimentarlo con la misma tensión que el micro para no tener que adaptar niveles lógicos.

Agrego:

Te recomiendo que descargues U-center (no U-center2) de la página de U-blox y con un adaptador USB-TTL podés setear la velocidad que quieras y muchos parámetros más.