Problème de baud GPS

Bonjour à tous!
Je suis débutant en electronique et surtout dans le domaine des GPS... Je viens d’acquérir un gps (le MT3339 PA6C GPS ) que j'utilise et j'en suis très satisfait.
Néanmoins j'ai un problème pour la mémorisation de mes paramètres, il est réglé pour 115200 bauds mais je n'arrive pas à le faire fonctionner avec les librairies des GPS d'adafruit qui de base sont à 9600 bauds...

Voici la configuration avec laquelle ça fonctionne:

Mais comme la mémoire est volatile, je n'arrive pas à garder cette config... et je préfèrerais éviter de mettre une pile.

Le code que j'utilise, bien sûr j'ai modifié GPS.begin par 115200...

void setup()
{
Serial.begin(115200);
Serial.println("Adafruit GPS library basic test!");
GPS.begin(115200);

GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
GPS.sendCommand(PGCMD_ANTENNA);

useInterrupt(true);

delay(1000);
mySerial.println(PMTK_Q_RELEASE);
}

Comment faire?

Merci d'avance,
Pierre

stein:
Bonjour à tous!
Je suis débutant en electronique et surtout dans le domaine des GPS... Je viens d’acquérir un gps (le MT3339 PA6C GPS ) que j'utilise et j'en suis très satisfait.
Néanmoins j'ai un problème pour la mémorisation de mes paramètres, il est réglé pour 115200 bauds mais je n'arrive pas à le faire fonctionner avec les librairies des GPS d'adafruit qui de base sont à 9600 bauds...

bonjour
ton GPS sort "nativement" selon un taux de transfert
certains modules peuvent etre "programmés" pour sortir à d'autres taux (c'est d'ailleurs valable pour d'autres equipement serie qu'un GPS )
mais pour ça , il faut déjà communiquer avec eux au taux "natif' , modifier la nouvelle valeur, et ensuite relancer la comm au nouveau taux.

apres il faut verifier si cette "manip" doit etre faite une fois (valeur maintenue) , ou à chaque ON/OFF du GPS
Ce genre d'info se deduit de la lecture des datasheet

Salut! merci de ta réponse rapide
J'ai bien compris ça, néanmoins la mémoire est volatile et comme je n'ai pas de pile, je suis obligé de le reconfigurer à chaque fois.
Mon problème est que après mon gps doit tenir un moment avec cette config, avant d'enclencher ma arduino (le but final est de faire une geobox arduino).
Je préfère éviter d'utiliser une pile, l'idéal serait de faire fonctionner le code à 115200...

La libraire GPS d'Adafruit utilise elle même la librairie software serial. Je ne suis pas certain que cette librairie supporte le 115200.
Sur le site de Mikal Hart le développeur de cette librairie il est dit:

digitalread/write scrapped in favor of direct port I/O. Revised routines now get perfect RX up to 57.6K on 16MHz processors and 31.25K on 8MHz processors.

Donc en réception il ne garantie pas un fonctionnement à 115200 bauds

Plus loin il marque:

Thanks to Garret Mace, who contributed the delay tables for 20MHz processors and claims that he can send and receive at 115K baud. Cool!

Donc, là c'est dit clairement pour faire du 115200, il faudrait plutôt booster l'Arduino à 20MHz

Erf je comprend mieux...
Je préfère éviter de modifier ma Arduino, je suppose que je n'ai pas d'autre choix que de mettre une pile alors?

Sinon je ne peux pas directement agir sur tx et rx? (j'ai du mal à comprendre l’intérêt de cette librairie en faite)

bonjour,
la lib newsoftserial le fait NewSoftSerial | Arduiniana

Thanks to Garret Mace, who contributed the delay tables for 20MHz processors and claims that he can send and receive at 115K baud. Cool!

On a pas dit que ça ne le faisait pas, mais stein dit qu'il ne veut pas modifier sa carte.
En même temps du 115200 bauds par soft faut pas rêver même avec un quartz à 20MHz cela ne doit pas laisser beaucoup de ressource pour faire autre chose.

(j'ai du mal à comprendre l’intérêt de cette librairie en faite)

Pourquoi l'avoir choisie alors?
As-tu cherché pour voir s'il en existait d'autres?

Bonjour,

Pour du 115200 bauds il faut utiliser le port série hardware.
Le maximum de quasiment toute les librairie de software serial c'est 57K :
http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html

Hey bonsoir!

Merci pour les liens, pour les autres librairies, j'ai regardé. J'avais trouvé "tinyGPS" mais elle utilise également SoftwareSerial.h...
Je regarde ça pour AltSoftSerial, il faut que je modifie dans mon code et directement dans la librairie d'adafruit si j'ai bien compris?

Au pire modifier la lib d'adafruit pour utiliser le port série hardware c'est pas compliqué :wink:

Tu vires la déclaration de l'objet SoftwareSerial, tu fait un gros ctrl+F / remplacer et tu colles des Serial à la place partout.

Si j'ai bien compris, je remplace cette ligne là
#include "SoftwareSerial.h"

par ça:
#include "AltSoftSerial.h"

et les SoftwareSerial par HardwareSerial le tout dans ma librairie Adafruit?
Je fais pareil du coté code arduino également?

j'essaye tout ça, encore merci ! :slight_smile:

stein:
Si j'ai bien compris, je remplace cette ligne là
#include "SoftwareSerial.h"

par ça:
#include "AltSoftSerial.h"

et les SoftwareSerial par HardwareSerial le tout dans ma librairie Adafruit?
Je fais pareil du coté code arduino également?

Oula ... t'as pas compris.

Le maximum de AltSoftSerial comme pour tout les librairies de software serial c'est 57K, donc tu n'arriveras jamais à 115200 bauds !
Pour ça il faut utiliser le port série hardware.

Donc dans la librairie :
SoftwareSerial.h -> HardwareSerial.h
Et tu enlèves la variable de type SoftwareSerial pour la remplacer par Serial.

stein:
Si j'ai bien compris, je remplace cette ligne là
#include "SoftwareSerial.h"

par ça:
#include "AltSoftSerial.h"

et les SoftwareSerial par HardwareSerial le tout dans ma librairie Adafruit?
Je fais pareil du coté code arduino également?

j'essaye tout ça, encore merci ! :slight_smile:

bonsoir
pourquoi veux tu absolument utiliser ton gps avec une sortie en 115200 ?
meme avec un refresh en 10Hz (et encore sous condition ) du NMEA RMC (ou autre) n'a pas besoin de ça
Ton projet c'est de faire quoi exactement avec ce module ?

Bonjour!

J'ai le même problème: j'ai acheté le même GPS et je souhaiterais juste pouvoir récupérer ses informations mais je n'arrive à rien.

J'ai essayer les bibliothèques adafruit et TinyGPS mais apparemment aucune des 2 ne fonctionne en 115200 baud
Donc déjà, existe-il une librairie GPS simple qui fonctionne en 115200?

Je précise que j'utilise pour le moment une Arduino mega (pour les testes) mais que à terme j'utiliserais une Arduino mini 3.3v

Si j'ai bien compris, ca risque d'être complique de rester en 115200... le truc c'est que comme Stein, j'aimerais éviter d'ajouter une pile de backup et le passage en 9600 est apparemment impossible sans cette pile.
Si je dois me resigner à en utiliser une, combien de temps je peux tenir avec une pile de ce type: CR1220 12mm Diameter - 3V Lithium Coin Cell Battery [CR1220] : ID 380 : $0.95 : Adafruit Industries, Unique & fun DIY electronics and kits
Si ca se compte en année, dans ce cas ok, mais si il faut la changer tous les mois...

Autre chose que j'aimerais comprendre: les bauds définissent la vitesse de communication entre le GPS et L'arduino c'est bien ça? Dans ce cas, est-ce que une liaison 115200 provoquerais une consommation plus grande qu'une 9600?

LeDahu:
Bonjour!

J'ai le même problème: j'ai acheté le même GPS et je souhaiterais juste pouvoir récupérer ses informations mais je n'arrive à rien.

J'ai essayer les bibliothèques adafruit et TinyGPS mais apparemment aucune des 2 ne fonctionne en 115200 baud
Donc déjà, existe-il une librairie GPS simple qui fonctionne en 115200?
...
Autre chose que j'aimerais comprendre: les bauds définissent la vitesse de communication entre le GPS et L'arduino c'est bien ça? Dans ce cas, est-ce que une liaison 115200 provoquerais une consommation plus grande qu'une 9600?

Bonsoir
le probleme de libraries c'est qu'elles font de la presentation "cosmetique" de sentences NMEA
c'est a dire pour faire rapide qu'une fois les trames acquises/recupérées, elles (les libraries) font de l’interprétation/parsing/etc des data, il faut laisser du temps temps à l'arduino pour pouvoir le faire.

La norme NMEA "basique" prevoit du 4800, beaucoup de modules sortent en 9600 et il y a quelques exotiques 57600,115200 ou autre .

là vu de l'arduino une comm à 115200 est plus consommatrice en temps (de calcul) qu'à 9600, ce genre de modules ayant une propension à cracher des sentences en permanence à occupation baud max

Mais 9600 ça reste assez rapide?
J'ai essayé de comprendre mais je suis pas sur de moi: 9600 correspond au 1hz annoncé et 115200 au 10hz
Et cette fréquence est la fréquence de rafraichissement du gps?
Du coup à 9600 ça ferait un rafraîchissement par seconde, vous pensez que c'est assez rapide pour connaitre sa vitesse à vélo?

Mais est-ce qu'un GPS peut fonctionner en 10hz et en 9600bauds? Ou est-ce que ces deux valeurs sont liées?

Et dernière chose: est-ce qu'une arduino mini 3.3v 8MHz peut fonctionner avec un GPS en 115200? et en 9600?

Merci

LeDahu:
Mais 9600 ça reste assez rapide?
J'ai essayé de comprendre mais je suis pas sur de moi: 9600 correspond au 1hz annoncé et 115200 au 10hz
Et cette fréquence est la fréquence de rafraichissement du gps?
Du coup à 9600 ça ferait un rafraîchissement par seconde, vous pensez que c'est assez rapide pour connaitre sa vitesse à vélo?

Mais est-ce qu'un GPS peut fonctionner en 10hz et en 9600bauds? Ou est-ce que ces deux valeurs sont liées?

Et dernière chose: est-ce qu'une arduino mini 3.3v 8MHz peut fonctionner avec un GPS en 115200? et en 9600?

Merci

bonsoir
la norme NMEA c'est une sentence RMC par seconde
les taux superieurs de "refresh" >1 Hz (en segment civil) ne sont utiles que dans des cas bien particuliers et compte tenu de la dilution
due à la constellation un taux de 1Hz est le plus souvent tres suffisant.

Ok, Merci :slight_smile:

Et donc en 9600, je ne rencontrerais aucun problème avec une arduino cadencée a 8Mhz?

LeDahu:
Ok, Merci :slight_smile:

Et donc en 9600, je ne rencontrerais aucun problème avec une arduino cadencée a 8Mhz?

en 9600 avec tynigps ça ne pose aucun probleme

Rhaa, je pensait avoir compris mais je bloque encore =(

La fréquence de rafraichissement et la vitesse de transfert en baud sont deux chose différentes non?

Par exemple sur cette page: Breakout Arduino Wiring | Adafruit Ultimate GPS | Adafruit Learning System

Si j'ai bien compris le GPS est en 9600bauds et la librairie Adafruit laisse le choix de la fréquence de rafraichissement (1,5 ou 10hz), c'est bien ça?

Du coup, quel est l'intérêt d'un GPS 115k par rapport à un 9600 si on peut obtenir les même fréquences de rafraichissement dans les deux cas?