Module gps BZ-181 sur esp32 S3 zero

Bonjour je suis en train de fabriquer une speedometer avec le module gps BZ-181 et un esp32 S3 zero. Mais je suis bloqué car je n'arrive pas recevoir des données du module gps. Pourtant il est bien alimenté en 5V et les tension sur le module me semble normal.

Je me demande si ça ne viens pas du code que j'utilise (c'est du chat gpt avec des petite modifications(.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPSPlus.h>

// --- CONFIG PINS ---
#define GPS_RX_PIN 43   // RX ESP32 ← TX GPS
#define GPS_TX_PIN 44   // TX ESP32 → RX GPS
#define OLED_SDA_PIN 10
#define OLED_SCL_PIN 11

// --- OBJETS ---
TinyGPSPlus gps;
HardwareSerial GPSSerial(1); // UART1
Adafruit_SSD1306 display(128, 64, &Wire, -1);

// --- SETUP ---
void setup() {
  Serial.begin(115200);
  delay(200);

  // GPS UART (vérifie baudrate : souvent 9600 ou 115200 selon module)
  GPSSerial.begin(115200, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);

  // I2C OLED
  Wire.begin(OLED_SDA_PIN, OLED_SCL_PIN);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Erreur OLED !");
    while (true);
  }
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);
  display.setCursor(0,0);
  display.println("Test GPS...");
  display.display();
}

// --- LOOP ---
void loop() {
  // Lecture GPS
  while (GPSSerial.available()) {
    char c = GPSSerial.read();
    gps.encode(c);
  }

  display.clearDisplay();

  // Nb satellites
  display.setCursor(0, 0);
  display.print("Sats: ");
  if (gps.satellites.isValid()) display.print(gps.satellites.value());
  else display.print("NA");

  // Latitude
  display.setCursor(0, 16);
  display.print("Lat: ");
  if (gps.location.isValid()) display.print(gps.location.lat(), 6);
  else display.print("NA");

  // Longitude
  display.setCursor(0, 28);
  display.print("Lon: ");
  if (gps.location.isValid()) display.print(gps.location.lng(), 6);
  else display.print("NA");

  // Vitesse
  display.setCursor(0, 44);
  display.print("V: ");
  if (gps.speed.isValid()) display.print(gps.speed.kmph());
  else display.print("NA");
  display.print(" km/h");

  display.display();

  delay(300);
}

:slight_smile: Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Ce serait bien de faire afficher dans le moniteur série les trames brutes que tu reçois du GPS.

J'ai essayer avec le code ci-dessous mais toujours aucune valeur de retour

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPSPlus.h>

#define GPS_RX_PIN 43
#define GPS_TX_PIN 44

HardwareSerial GPSSerial(1);

void setup() {
  Serial.begin(115200);
  delay(200);
  GPSSerial.begin(9600, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN); 
  Serial.println("Test GPS brut :");
}

void loop() {
  while (GPSSerial.available()) {
    char c = GPSSerial.read();
    Serial.write(c); 
  }
}

Bonjour,

Pourquoi fixer à 9600 bauds la vitesse de communication avec le module GPS BZ-181 qui est, sauf erreur de ma part, par défaut à 115200 bauds ?!..

À suivre...