Puce GPS et arduino

Salut à tous,
Je cré un nouveau post, mais je pense que mon probleme est similaire à celui de stein ici => Problème de baud GPS - Français - Arduino Forum

J'explique : j'ai la même puce GPS MT3339 et quand je charge mon arduino avec un setup et loop vide, dans le moniteur série, j'ai les données envoyées par la puce à 115200baud (en la branchant sur les pins 0 et 1) donc elle fonctionne.
Mais avec toutes les librairies que j'ai testé, impossible de parser les données (bien sur je n'utilise plus 0 et 1 comme pin).
Le soucis vient-il de l'incapacité de l'arduino à lire à une telle vitesse?
Merci d'avance.

Dans le lien que tu cites on a déjà expliqué la différence entre une UART logicielle et une UART matérielle.
Si tu satures le processeur avec des données qui arrivent à toute vitesse il ne peut pas en même temps les interpréter.
Donc:

  • si la liaison est rapide préférer l'UART matérielle et utiliser l'UART logicielle pour le debug
  • est-il réellement nécessaire de transmettre à 115200 bauds? L'arduino n'est pas un foudre de guerre et si la réception se fait à 115200 bds en continu (quelle est la longueur des trames reçues?) il a le plus grand mal à traiter les données au fur et à mesure de leur arrivée et il risque fort de perdre des caractères de temps en temps par débordement du buffer de réception.
  • quand on veut aller vite, il faut soigner sont code afin d'optimiser le temps d'exécution.

Merci pour cette réponse.
Le soucis, c'est que je souhaite utiliser l'UART logiciel vu que sur le projet finit, je dois me passer de l'ordi.
Je comprends que l'atmega ne fournisse pas, c'est effectivement je pense la source du problème. Je vais déjà tenter de le faire fonctionner à 1hz au lieu de 10hz, et réduire le baudrate. Je vous tiens au courant.

Bonjour,

Rovhell:
Le soucis, c'est que je souhaite utiliser l'UART logiciel vu que sur le projet finit, je dois me passer de l'ordi.

UART logiciel = sur deux broches autres que D0/D1
UART matériel = Serial = sur broches D0/D1
L'ordinateur n'as rien à venir faire la dedans (il est relié à D0/D1 mais rien de plus).

Tu veux dire que si je communique avec l’atmega par les broches 0 et 1, il pourrait recevoir les infos à 115200baud?

Rovhell:
Tu veux dire que si je communique avec l'atmega par les broches 0 et 1, il pourrait recevoir les infos à 115200baud?

Ben disons que c'est un peu le but d'un port série matériel ... :roll_eyes:
Mais il ne faut pas utiliser SoftSerial ou autre, il faut utiliser directement Serial.

Ok donc comment faire pour utiliser aussi le moniteur série pour voir si ça marche?
Sinon je suis obligé de mettre un LCD pour le debug?

Rovhell:
Ok donc comment faire pour utiliser aussi le moniteur série pour voir si ça marche?
Sinon je suis obligé de mettre un LCD pour le debug?

Ton gps envoi des données à l'arduino (données entrantes).
Ton code (de debug) envoi des données vers l'ordi (données sortantes).
Tant que tu envois rien via le terminal série de l'ordi les deux peuvent donc cohabiter sans problème.
(un port série matériel peut emmètre et recevoir en même temps, c'est beau la technologie hein ;))

Et si j'utilise un serial.print, pour parser les données du GPS, il va les recevoir aussi, comme le moniteur série, je suppose. C'est pas grave? Je pense que le GPS va ignorer les lignes qu'il ne comprend pas, mais j'aimerais confirmation.

Rovhell:
Et si j'utilise un serial.print, pour parser les données du GPS, il va les recevoir aussi, comme le moniteur série, je suppose. C'est pas grave? Je pense que le GPS va ignorer les lignes qu'il ne comprend pas, mais j'aimerais confirmation.

Tu n'utilises pas Serial.print pour parser des données ... ça n'as pas de sens ...
Le GPS ne fait normalement qu'émettre tu n'as rien à lui envoyer en temps normal.
Sinon dans tout les cas si il reçoit une commande inconnu il ignore.

Rovhell:
Et si j'utilise un serial.print, pour parser les données du GPS, il va les recevoir aussi, comme le moniteur série, je suppose. C'est pas grave? Je pense que le GPS va ignorer les lignes qu'il ne comprend pas, mais j'aimerais confirmation.

bonsoir
pour faire simple
Arduino de "base"/serial en 115200/parsing NMEA = ça coincera toujours :grin:

si arduino imperatif = il faut reduire et/ou accepter de la degradation
si traitement de toutes le sentences à 115200 imperatif = il faut passer sur du MCU "plus véloce" 8)

Effectivement, après moult essais, même avec les pins 0 et 1, l’arduino ne peut pas lire a cette vitesse.

J’execute dans le setup, avec le GPS branché :

	for(int i=0; i<=200; i++)
	{
	character = Serial.read();
	content.concat(character);
	}

Puis je déconnecte le GPS pour pouvoir lire dans le moniteur serie sans parasite avec un simple Serial.println(content); et j’obtiens :

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Etc…

Je me suis fait avoir avec cette MT3339 qui ne lit aucune commande… Le RX ne veux rien savoir, et je ne peut ni changer momentanément le baudrate, ni flasher le firmware…