Go Down

Topic: Problème de baud GPS (Read 3452 times) previous topic - next topic

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...


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...
Quote


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

Artouste


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

stein

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...

fdufnews

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:
Quote
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:
Quote
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

stein

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)

infobarquee

bonjour,
la lib newsoftserial le fait http://arduiniana.org/libraries/newsoftserial/
Quote
Thanks to Garret Mace, who contributed the delay tables for 20MHz processors and claims that he can send and receive at 115K baud.  Cool!

fdufnews

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.

Quote
(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?

skywodd

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
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

stein

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?

skywodd

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

Tu vires la déclaration de l'objet SoftwareSerial, tu fait un gros ctrl+F / remplacer et tu colles des Serial à la place partout.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

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 ! :)

skywodd


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.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Artouste


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 ! :)

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 ?

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?

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: http://www.adafruit.com/products/380
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?

Artouste


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

Go Up