Bonsoir leg2027
Voilà une version qui ne garde que les $GPGGA
if (gpsDonnees.startsWith("$GPGGA"))
S'il te manque des données dis moi dans quelle sentence NMEA elles se trouvent.
/*
Name: ARDFR_leg2027_GPSsd.ino
Created: 29.09.2021
Author: jpbbricole
GPS - NMEA sentence information http://aprs.gids.nl/nmea/
Protocol specification
https://www.u-blox.com/sites/default/files/products/documents/u-blox6_ReceiverDescrProtSpec_%28GPS.G6-SW-10018%29_Public.pdf
https://www.gpsworld.com/what-exactly-is-gps-nmea-data/
Except $GPGSA et $GPGSV
*/
//#define programmeur
#include <SoftwareSerial.h>
SoftwareSerial gpsSerial(4, 3); // Connexion vers le module GPS
//===================================== Carte SD
#include <SPI.h> // Interface pour carte SD
#include <SD.h>
#ifdef programmeur
const int sdCardCsPin = 9; // Chip Select du lecteur de carte SD
#else
const int sdCardCsPin = 7; // Chip Select du lecteur de carte SD config leg2027
#endif
const char* gpsDataFileName = "GPSDAT00.TXT";
//===================================== Reception des données GPS
String gpsDonnees; // Données recues
boolean gpsNouvellesDonnees = false; // Si nouvelles données
void setup()
{
Serial.begin(9600);
gpsSerial.begin(9600);
delay(500);
Serial.flush();
gpsSerial.flush();
//------------------------------------- Demarrage carte SD
Serial.println("Initialisation carte SD...");
if (!SD.begin(sdCardCsPin)) // Si la carte SD ne repond pas
{
Serial.println(F("Carte SD out ou absente"));
return;
}
Serial.println("Carte SD OK");
delay(1000);
}
void loop()
{
/*----------------------------------------------------------------------------------------------------------------------
Ecoute du port serie du GPS
----------------------------------------------------------------------------------------------------------------------
*/
gpsSerialEvent(); // Lecture du port du GPS
if (gpsNouvellesDonnees) // Si recu de nouvelles données
{
if (gpsDonnees.startsWith("$GPGGA"))
{
logFileAddLine(gpsDonnees);
}
gpsDonnees = "";
gpsNouvellesDonnees = false;
}
}
//------------------------------------- Ecriture des données sur carte SD
void logFileAddLine(String dataLine)
{
noInterrupts();
File dataFile = SD.open(gpsDataFileName, FILE_WRITE);
if (dataFile)
{
dataFile.println(dataLine);
dataFile.close();
Serial.println("SD > " + dataLine);
}
else
{
Serial.println("error opening " + (String)gpsDataFileName);
dataFile.clearWriteError();
dataFile.close();
}
interrupts();
}
//===================================== Ecoute du port serie du GPS
void gpsSerialEvent()
{
while (gpsSerial.available())
{
char gpsChar = (char)gpsSerial.read(); // Char received from IDE monitor
if (gpsChar == '\n') // If new line char received = end of command line
{
gpsNouvellesDonnees = true;
}
else
{
if (gpsChar >= ' ') {gpsDonnees += gpsChar;} // >= ' ' to avoid not wanted ctrl char.
}
}
}
A+
Bonne soirée
jpbbricole