Problème module GPS

Bonjour à tous,

Je travaille actuellement sur un projet alliant un module gps A2035-h (http://www.farnell.com/datasheets/1794015.pdf)et un arduino mini.

J'ai réalisé les branchements (config minimum de la doc) et le module gps me renvoie effectivement des données. Ces données sont censées être des trames NMEA mais j'ai pas l'impression que ça soit le cas.

Voici mon code

#include <SoftwareSerial.h>

SoftwareSerial softSerial(10,9); //receive on pin 10 and transmit on pin 9

byte c;

void setup() {

  Serial.begin(115200);
  softSerial.begin(4800);

  pinMode(11,OUTPUT); //GPS ON/OFF Pin
  pinMode(8,OUTPUT); //Reset
  digitalWrite(11,LOW);

  digitalWrite(8, LOW);
  delay(400);
  digitalWrite(8, HIGH);
  delay(400);
  
  Serial.println("Reveil du GPS");

  while (!GPSisAwake()) {

    digitalWrite(11, HIGH);
    delay(200);
    digitalWrite(11, LOW);
  }

  Serial.println("Gps debout");
}

void loop() {

  while (softSerial.available()) {

    c = softSerial.read();
    Serial.println(c);
  }
    
 
}

boolean GPSisAwake()
{
 
  while(softSerial.available()) softSerial.read();
  delay(1200);
  if(softSerial.available()) return true;
  return false;
}

Globalement, je fais un reset du module et je fais on/off tant que je ne reçois pas de données (comme stipulé dans la doc). Une fois que je reçois des données, je les envoie dans la liaison série.

Voici la sortie que j'obtiens (elle varie peu entre chaque reset).

Reveil du GPS
Gps debout
116
185
54
165
213
173
181
162
188
178
178
162
162
89
178
...

Comme je suis censé recevoir des trames NMEA, pour moi le premier octet devrait être le caractère '$' soit 36. Or ce n'est pas le cas. Mon raisonnement est le bon ou je suis à côté de la plaque ?
Par ailleurs, je demande que serial soit à 115200 bauds/s et le terminal ne m'affiche des choses cohérentes qu'à 57600. Ca viendrait d'un bug du moniteur série ?

bonjour
avant d'utiliser un code evolué , il faut déjà t'assurer que ton module gps "crache" bien de la sentence NMEA.

Si la norme NMEA "de base" expose que la transmission doit etre en 4800 , aujourd'hui les modules sont configurés "sortie usine" à des vitesses souvent différentes.

test avec ce programme simple (monitor serial à 115200)
en modifiant la valeur du software serial avec les valeurs les plus courantes (4800,9600,19200,,38400,57600) tant que tu ne récupère pas des sentences débutant par les caractères $G.

#include <SoftwareSerial.h>
//
SoftwareSerial BTSerial(2, 3); // RX | TX
// RX arduino <--- TX cible
// TX arduino ---> RX cible


void setup()

{
  Serial.begin(115200); // vitesse serial monitor

  BTSerial.begin(9600);  // vitesse software serial cible
}

void loop()
{


  if (BTSerial.available()) Serial.write(BTSerial.read());


  if (Serial.available()) BTSerial.write(Serial.read());
}

bonjour,
tu as oublié un truc dans ton code Artouste.
après lecture, il faut allumer le gps avec un high delay(200) low sur la pin on off du module.

infobarquee:
bonjour,
tu as oublié un truc dans ton code Artouste.
après lecture, il faut allumer le gps avec un high delay(200) low sur la pin on off du module.

:grin:
Salut IB
il y a plein de choses qui se font (peuvent se faire) encore à la main

Evidemment ne pas oublier de faire le test a l'extérieur.

Par ailleurs, je demande que serial soit à 115200 bauds/s et le terminal ne m'affiche des choses cohérentes qu'à 57600. Ca viendrait d'un bug du moniteur série ?

Non c'est pas un bug, le module GPS doit avoir cette vitesse dans sa mémoire, il est tout même possible de la modifier.

Merci pour vos réponses :wink:

Alors, j'ai fait quelques tests ce matin avec un autre module GPS (qui fonctionnait) puis je suis revenu sur celui-ci et miracle, ça fonctionne sans avoir modifié quoi que ce soit. Néanmoins, le "bug" que j'avais cité pour la moniteur série n'apparait plus. Les affichages se font correctement à 115200 bauds cette fois. Du coup j'imagine que le problème venait de là mais c'est quand même bizarre.

Je pense que si cet étrange comportement réapparait, j’essaierai ta solution Artouste qui me semble être la bonne chose à faire.

-Standby:
Non c'est pas un bug, le module GPS doit avoir cette vitesse dans sa mémoire, il est tout même possible de la modifier.

En fait non je ne pense pas, parce que le "bug" apparaissait pour un simple serial.print sans que j’interagisse avec le GPS. Bizarre tout de même.