Problème de baud GPS

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?

LeDahu:
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?

bonsoir
il faut distinguer plusieurs "choses"

  • la vitesse de transmission des sentences NMEA
  • la capacité de traitement de ces sentences par l’équipement récepteur (arduino ou autre)

une sentence/trame RMC est une ligne de texte de 80 caractères (un peu moins mais par confort je prend 80)
compte tenu des caractéristiques des transmissions asynchrones , (toujours par confort) il faut 800 bits pour transmettre l'info d'une trame.

soit pour du 10Hz ET en supposant que le GPS ne crache que de la RMC (ce qui est loin d'etre evident) 8000 bit/s + delai
à 9600 on est déjà (sinon plus) à quasi 100 % d'occupation de la ligne serial
à 115200 l'occupation de la ligne serial est divisé d'un facteur 12.

dans les 2 cas un arduino (lib gps) sera en limite de ses possibilité :
-soit pour acquerir du 115200 sans pertes et faire autre chose entre trames
-soit pour acquerir du 9600 en continu (quasi 100%) est faire autre chose.

si tu veux rester sur l'ensemble arduino+lib+gps , il faut faire des choix et quitte à me repeter : rares sont les applis necessitant du 10Hz et si c'est "vraiment" un imperatif, il faut passer à autre chose qu'un arduino pour traitement

Ha ok, merci c'est beaucoup plus clair pour moi!

si tu veux rester sur l'ensemble arduino+lib+gps , il faut faire des choix et quitte à me repeter : rares sont les applis necessitant du 10Hz et si c'est "vraiment" un imperatif, il faut passer à autre chose qu'un arduino pour traitement

Oui d'accord, ben le choix est vite fait, mon code est très long et ne se résume pas a récuperer un tram NMEA uniquement.

J'arrive enfin à me servir de la library TinyGPS.

Par contre du coup, si j'ai bien compris je me sert de la liaison software, étant donné que je déclare ça:

#include <SoftwareSerial.h>
SoftwareSerial ss(10, 11);

Et non plus de la liaison hardware qui se trouve sur les pin 0 et 1, 'est bien ça?

Mais ca change quoi pour la récupération du tram GPS? Une liaison est à privilégier par rapport à une autre dans mon cas?
J'ai du mal à saisir la différence entre les deux.

Dans la liaison hardware, la réception et l'émission sont réalisés par une UART matérielle ce qui nécessite peu de temps CPU. L'octet à envoyer est placé dans un registre et le matériel se débrouille pour supporter le protocole (start, stop, parité et vitesse) et assurer la sortie de la donnée.

Dans la liaison software, la réception et l'émission sont réalisés par une UART logicielle (c'est du code qui réalise la gestion du protocole et la sortie de l'octet de donnée bit à bit sur une sortie digitale) ce qui nécessite du temps CPU. De même pour la réception le software reçoit une interruption lorsqu'une transition se produit sur l'entrée et ensuite il va échantillonner après un certain délai (dépendant du baudrate) les bits suivants pour reconstruire l'octet de donnée.

L'UART matérielle te laisse plus de temps pour traiter tes données puisqu'il n'y a presque pas besoin de temps CPU pour réceptionner la sentence NMEA.

J'ai commandé ce GPS sur eBay, et une librairie est fournie avec :
http://code.google.com/p/i2c-gps-nav/downloads/detail?name=I2C_GPS_NAV-v2.1rc2.zip&can=2&q=
Je ne l'ai pas encore reçu, donc pas testé.
Édit :
Le site du constructeur annonce un baudrate parametrable à partir de 4800bps :
http://www.gtop-tech.com/en/product/MT3339_GPS_Module_03.html

Bon bah effectivement, la librairie fournie avec ne passe pas la terrible épreuve de la compilation, avec une bonne vingtaine d'erreur (des fonctions déclarées deux fois et d'autres manquantes...).

J'ai trouvé ça :

Command setting reset
Those command packet for module baud rate and update rate changed only temporary, when module power reset those update rate and baud rate must be back to original setting. If user want to
change baud rate and update rate of module to other value that need GTop re-edit new firmware and burning it to module.

Dans cette doc.

bonjour
ce sont 2 "problemes" tres diferents
le probleme de compil n'a rien à voir avec une vitesse fixée au power ON reset module GPS

pour la compil : quel version d'IDE et quelle version de lib utiisée ?
pour changer de vitess( config) au POR , il faut déjà que le soft "discute" à la vitesse "usine"

J'ai trouvé comment changer définitivement le baudrate :

Tuto tout beau tout neuf actualisé il y a 30 minutes !