Lire deux GPS arduino sur une meme carte arduino

Bonjour,

J'ai une carte arduino et deux GPS neo6m, je veux lire leur sur la même carte pour commencer mais ca bloque déjà a ce niveau. Le montage ne contient que la carte arduino uno et les deux GPS. Le premier sur les broches 2,3 et le deuxième sur les broches 4,5. Lorsque le montage est fait, ils fonctionnent très bien tous les deux si je les teste individuellement. Mais lorsque je veux lire les deux en meme temps il n'y en a qu'un seul qui s'affiche, le deuxième. D’ailleurs pourquoi le deuxième ? Voici le code

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin1 = 2, TXPin1 = 3;
static const int RXPin2 = 4, TXPin2 = 5;
static const uint32_t GPSBaud = 9600;
double lat1,lon1,lat2,lon2;
TinyGPSPlus gps1;
TinyGPSPlus gps2;
SoftwareSerial Gps1(RXPin1, TXPin1);
SoftwareSerial Gps2(RXPin2, TXPin2);
void setup()
{
  Serial.begin(9600);
 // Gps1.begin(9600);
  Gps2.begin(9600);
}

void loop()
{
  while (Gps1.available() > 0)
    if (gps1.encode(Gps1.read()))
      displayInfo1();
  while (Gps2.available() > 0)
    if (gps2.encode(Gps2.read()))
      displayInfo1();
 
}  

void displayInfo1()
{
//  Serial.print(F("Location: ")); 
  if (gps1.location.isValid())
  {
    lat1 = gps1.location.lat()  ;
    lon1 = gps1.location.lng() ;
    Serial.print("GPS1:(");
    Serial.print(lat1,8);
    Serial.print(F(","));
    Serial.print(lon1,8);
    Serial.print(")");
    Serial.print(",");
    delay(100);
  }
  else if (gps2.location.isValid())
  {
    lat2 = gps2.location.lat()  ;
    lon2 = gps2.location.lng() ;
    Serial.print("GPS2:(");
    Serial.print(lat2,8);
    Serial.print(F(","));
    Serial.print(lon2,8);
    Serial.print(")");
    Serial.print(",");
    delay(100);
  }
  else
  {
    Serial.print(F("INVALID"));
  }  
delay(1000);
}


Il fonctionne lorsque l'une des deux déclarations Gps1,2.begin(9600) est commente mais pas les deux en meme temps. Le problème semble donc venir de la. J'ai essaye avec des Baudrate différents, 9600 et 19200, ca ne fonctionne pas non plus.

Auriez vous une idée ?
Merci

Votre erreur n'est quand même pas d'avoir oublié de dé-commenter cette ligne :

 // Gps1.begin(9600);

Cordialement.

Pierre.

Bonjour,

Avec SoftwareSerial on ne peut recevoir que d'une seule liaison à la fois.
Pour changer la liaison qui reçoit utiliser la méthode listen(), mais pendant ce temps la réception de l'autre liaison sera perdue.

Bonsoir @Matthieudeb

Par simple curiosité, quel est l’intérêt dans votre projet d’utiliser les deux GPS simultanément ?

Bonne soirée

Non Pierre l'erreur ne vient pas de la, j'ai juste copie colle le code du dernier essaye sans faire attention.

Merci Kamill, je vais essayer cette fonction mais je ne la connais pas encore.

Bonsoir Phillipe, c'est pour faire un GPS RTK.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.