Pour mon GPS ne fonctionnr pas

Bonjour, Je me bas comme un fou a comprendre pourquoi un code d'exemple fourni ne fonctionne pas, alors qu'il devrait,

J'ai une carte Arduino UNO une GPS https://www.sparkfun.com/products/465 et un carte pour "porter" le GPS https://www.sparkfun.com/products/10710?

J'ai aussi récupéré ce code fourni depuis la page du dernier lien que je vous ai mis

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/gps_arduino_1_0.ino

J'ai conc compilé sans erreur et je l'ai envoyé dans mon Arduino.

Voilà, rien ce passe!!!! La condition

if(gps.encode(c))

retourne false et le Serial.println(c) retourn ceci

?_ GPS Shield QuickStart Example Sketch v12 ...waiting for lock...

1 0 0 0 255 192 248 248 1 0 112 0 0 0 7 0 252

Voci lextrait du code

{
      int c = uart_gps.read();    // load the data into a variable...
      Serial.println(c);
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }
  }

Mais pourquoi???? Qu'es-ce que je peux corrigé pour que gps.encode déchiffre mes positions???

Mille mercis

bonjour, ne serait ce pas tout simplement que ton gps ne recoit aucun satellite?

Ca ressemble plutot a un baudrate non correct Essaye d'autres valeurs : 9600, 19200, 38400 ou 2400

Hello, Non je ne crois pas. J'étais en train aujourd'hui et il n'a pas marché une seul fois. Alors je ne pense pas que sur mes 4 heures trains, il n'y avait pas un satélitte de dispo, d'autant plus qu'il faisait beau. Alors peut etre que mon GPS est cassé.

J'ai essayé tous les baudrate proposés en modifiant la valauer de GPSBAUD, mais ca n'a pas changé :~

void setup()
{
  // This is the serial rate for your terminal program. It must be this 
  // fast because we need to print everything before a new sentence 
  // comes in. If you slow it down, the messages might not be valid and 
  // you will likely get checksum errors.
  Serial.begin(9600);
  //Sets baud rate of your GPS
  uart_gps.begin(GPSBAUD);
  
  Serial.println("");
  Serial.println("GPS Shield QuickStart Example Sketch v12");
  Serial.println("       ...waiting for lock...           ");
  Serial.println("");
}

a t'il déjà fonctionné?

sinon, les pins et soudures sont bonnes?

Ben non, J'avais travaillé dessus et il me retourbait des valeurs dès 22h. C'était super bizard! Alors j'ai plus tendence a dire qu'il n'a jamais fonctionné.

Les pin sont bon, les soudures? Je vais les refaire demain, car j'ai aussi pensé à ca. Peut etre que je n'ai pas assez mis de soudure sur certaine pin, mais chaque pin est bien recouvert de soudure. Il y a en effet une soudire qui est super mauvaise, mais c'est du GND et il y a deux GND....

Bonjour,

Les codes d'exemple de sparkfun sont testé et re-testé ;) À mon avis ta shield est mal soudée, envois nous une photo de l'avant / arrière pour qu'on vérifie.

bonjour,

je reponds à ce topic car j'ai un souci moi aussi de GPS et je cherche quelques conseils avisés... j'ai un arduino UNO ainsi que la carte GPS suivante (munie d'une antenne externe):

http://www.cooking-hacks.com/index.php/gps-module-for-arduino.html

j'ai utilisé le code fournit un peu plus haut dans le topic mais le système est incapable de fixer un satellite...j'ai beau etre dehors loin de tout et attendre un quart d'heure....il ne se passe rien juste:

GPS Shield QuickStart Example Sketch v12 ...waiting for lock...

des idées? merci d'avance

atomicbomb:
bonjour,

je reponds à ce topic car j’ai un souci moi aussi de GPS et je cherche quelques conseils avisés…
j’ai un arduino UNO ainsi que la carte GPS suivante (munie d’une antenne externe):

http://www.cooking-hacks.com/index.php/gps-module-for-arduino.html

j’ai utilisé le code fournit un peu plus haut dans le topic mais le système est incapable de fixer un satellite…j’ai beau etre dehors loin de tout et attendre un quart d’heure…il ne se passe rien juste:

GPS Shield QuickStart Example Sketch v12
…waiting for lock…

des idées?
merci d’avance

Bonjour
avant toute chose , et surtout avant d’utiliser un parser
faire un log des sentences brutes NMEA pour voir où ça coince
soit utiliser un cable serial TTL<---->USB
soit un petit sketch avec serial et newsoftserial qui ne fait que de la recopie à vitesses différentes
GPS (4800 ou autre valeur) ---->RX0 —> recopie-----> TX1 115200---->log

salut Artouste,

Merci de me répondre parce que je suis un peu coincé.... Par contre j'ai pas tout compris ce que tu m'as dis...je suis novice en la matière !!

soit un petit sketch avec serial et newsoftserial qui ne fait que de la recopie à vitesses différentes GPS (4800 ou autre valeur) ---->RX0 ---> recopie-----> TX1 115200---->log

tu aurais un code à me proposer pour faire ça ?

atomicbomb:
salut Artouste,

Merci de me répondre parce que je suis un peu coincé…
Par contre j’ai pas tout compris ce que tu m’as dis…je suis novice en la matière !!

soit un petit sketch avec serial et newsoftserial qui ne fait que de la recopie à vitesses différentes
GPS (4800 ou autre valeur) ---->RX0 —> recopie-----> TX1 115200---->log

tu aurais un code à me proposer pour faire ça ?

bonsoir
au temps pour moi
depuis la V 1.00 c’est software serial integré à l’IDE
voir cet exemple dans la librarie

/*
  Software serial multple serial test
 
 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.
 
 The circuit: 
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)
 
 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts, 
 so only the following can be used for RX: 
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
 
 Not all pins on the Leonardo support change interrupts, 
 so only the following can be used for RX: 
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
 
 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example
 
 This example code is in the public domain.
 
 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

salut

alors j'ai mis le programme dans l'arduino avec les bons pins de ma puce GPS dans softwareSerial mySerial serial.begin(115200) et mySerial.begin(4800)....mais j'obtiens dans le terminal n'importe quoi....je fais quelque chose de pas bien? :cold_sweat:

atomicbomb: salut

alors j'ai mis le programme dans l'arduino avec les bons pins de ma puce GPS dans softwareSerial mySerial serial.begin(115200) et mySerial.begin(4800)....mais j'obtiens dans le terminal n'importe quoi....je fais quelque chose de pas bien? :cold_sweat:

et dans le terminal arduino, il est bien mis à 115200 normalement au reset tu devrais lire l'invite Goodnight moon!

apres à voir pour la vitesse du GPS , pour le NMEA c'est en standard 4800 , mais la plupart des modules crachent en natif sur 9600

c'est bon sa marche! j'ai good night au reset...

et donc comment j'obtiens les vitesses GPS?

atomicbomb: c'est bon sa marche! j'ai good night au reset...

et donc comment j'obtiens les vitesses GPS?

essaye déjà 9600 tu saura que tu es OK lorsque tu lira des chaines de caracteres commençant par $G

Je test sa et je te tiens au courant merci beaucoup de ton aide!!!!

salut,

alors j'ai fais un test avec serial.begin(9600) myserial.begin(4800) et 4800 dans le moniteur et voila ce que j'obtiens :

GoïíVÂïíVÂ,000351.062,V,,,,,,,010209,,,N íVÂ010209,,,N*44 ïíVÂïíVÂ$GPGGA,000423.073,,,,,0,00,,,M,0.0,M,,0000*57 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,000423.073,V,,,,,,,010209,,,N*46 ïíVÂ&?ÆÆÆæSFfÖ ÆÖcƦVVÖ $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,000433.061,V,,,,,,,010209,,,N*44 $GPGGA,000435¾íVÂYÆÆÆÆÆÆÆÆÆÆÆÆÆÆƦVk $GPGSV,1ïíVÂ$GþïíVÂ3æF?Æf&?ÆÆÆæSF&Ö $GPGGA,000450.054,,,,,0,00,,,M,0.0,M,,0000*56 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPGSV,1,1,01,31,,,37*7E $GPRMC,000450.054,V,,,,,,,010209,,,N*47 ïíVÂ$GPGGA,214224.900,,,,,0,00,,,M,0.ïíVÂ$GPGGA,214227.900,,,,,0,00,,,M,0.0,M,,0000*5F $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPGSV,3,1,12,31,90,179,36,12,53,056,,29,ïíVÂ

je suis pas loin non? les données données incomplètes sont du à des problèmes de réception ?

atomicbomb: alors j'ai fais un test avec serial.begin(9600) myserial.begin(4800) et 4800 dans le moniteur et voila ce que j'obtiens :

je suis pas loin non? les données données incomplètes sont du à des problèmes de réception ?

bon ça avance mais il y a un truc qui m'echappe ton gps est connecté sur quels pins de l'arduino ? remets le code tel que tu l'a modifié normalement serialbegin c'est pour la liason arduino/pc c'est la liaison uart hard ( pin 0 et 1 noté RX TX ) et myserialbegin la liaison vers le module GPS (pin 2 et 3 arduino)

si tu utilise le moniteur intégré de l'IDE (par la connection uart/usb) tu devrais etre à 9600 et pas 4800 ?

la redirection des trames est quelquefois "bouffée" c'est normal si ton gps "cause" plus vite que tu ne parle au serial hard l'ideal mini c'est d'ecrire vers le pc à aux moins 2 fois la vitesse de lecture (si GPS 9600 --->PC 19200)

premier constat ton module GPS est bien connecté et alimenté il "discute" correctement mais on voit déjà que ton GPS ne reçoit rien

$GPGSA,A,1,,,,,,,,,,,,,,,*1E la sentence $GPGSA indique qu'aucun satellite n'est vu une sentence $GPGSA correcte ressemblerait à ça $GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39

la derniere sentence meme bouffée etait plus intéressante $GPGSV,3,1,12,31,90,179,36,12,53,056,,29,ïíVÂ

il faut faire un log sur 5 bonnes minutes pour voir si "on" attrape quelque chose même sporadiquement

salut,

ta raison j’avais mal monté le truc…j’ai mis la puce GPS sur pin 9/8 avec le code suivant:

/*
  Software serial multple serial test
 
 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.
 
 The circuit: 
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)
 
 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts, 
 so only the following can be used for RX: 
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
 
 Not all pins on the Leonardo support change interrupts, 
 so only the following can be used for RX: 
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
 
 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example
 
 This example code is in the public domain.
 
 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(9, 8); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

bon le programme tourne bien mieux et voila ce que j’obtiens à long terme (10min) après quelques déplacements de l’antenne :

$GPGSV,3,1,12,32,63,191,,14,40,064,33,17,39,244,,20,33,238,*73
$GPGSV,3,2,12,11,32,175,,31,24,096,,05,22,003,,02,10,298,*74
$GPGSV,3,3,12,24,09,355,,30,06,041,,04,05,299,,09,02,346,*7F
$GPRMC,185535.623,V,,,,,,,190313,,,N*4C
$GPGGA,185536.623,,,,,0,00,,,M,0.0,M,,0000*5D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,185536.623,V,,,,,,,190313,,,N*4F
$GPGGA,185537.623,,,,,0,00,,,M,0.0,M,,0000*5C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,185537.623,V,,,,,,,190313,,,N*4E
$GPGGA,185538.623,,,,,0,00,,,M,0.0,M,,0000*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,185538.623,V,,,,,,,190313,,,N*41
$GPGGA,185539.623,,,,,0,00,,,M,0.0,M,,0000*52
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,185539.623,V,,,,,,,190313,,,N*40
$GPGGA,185540.623,,,,,0,00,,,M,0.0,M,,0000*5C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,32,63,191,,14,40,064,32,17,39,244,,20,33,238,*72
$GPGSV,3,2,12,11,32,175,,31,24,096,,05,22,003,,02,10,298,*74
$GPGSV,3,3,12,24,09,355,,30,06,041,,04,05,299,,09,02,346,*7F

mais bon j’ai fait le test prés d’une fenêtre et je pense qu’il faut que je le refasse dehors …t’en penses quoi?

atomicbomb: ...

mais bon j'ai fait le test prés d'une fenêtre et je pense qu'il faut que je le refasse dehors ....t'en penses quoi?

ok c'est bien mieux si tu es en environnement "canyoning" tu es peut etre hors vue. l'ideal est de faire un test en exterieur relativement bien degagé pendant 10 minutes

l'acquisition sera réalisée lorsque tu verra passer (exemple) pour $GPGSA $GPGSA,A,2 ou 3 (au lieu de 1)

pour $GPRMC

$GPRMC,185537.623,A,,,,,,,190313,,,N*4E (au lieu de V)