Décodage données issues d'un gps

Bonjour,

depuis plusieurs jours j’essaie de récupérer les données issues d’un module gps basé sur une puce ublox (neo6m) connecté à un Pi zero.
J’ai testé divers scripts python, sans succès.

Le module et bien connecté au RPI, il recoit des données, ca fonctionne, je peux voir la position avec la commande cgps.

Jusqu’a ce matin je ne pouvais afficher des données en bytes avec certains scripts, mais impossible de décoder ces data que ce soit avec .decode (uft-8, 16, 32, iso-8859-1…) , struct, j’ai tout essayé, enfin je pense!

Sauf que ce matin je reteste avec un des scripts depuis mon téléphone avec Terminal et là surprise j’ai des données NMEA qui s’affichent correctement! Je refais un test en me déconnectant et reconnectant, ca marche, je file donc sur mon pc pour tester avec Putty et BitVise et là plus rien ne marche. Je reteste avec Terminal depuis ton téléphone et ca ne marche plus!
j’obtiens l’erreur ‹ utf-8 › can’t decode byte …

Bref je ne comprend pas d’où viens le problème, un coup ça marche et 1 minute plus tard ça marche plus!

Si vous avez des pistes, je suis preneur!

Merci

Ha ha ha … toi aussi tu as trouver le module uBlox étrange …

Moi j’ai un module uBlox en USB, je pensait aussi que c’était un PnP, mais c’est plus complexe que ça.

Dans mon cas, il à fallu une série de config, avec leur programme Windows, pour obtenir des résultats.

C’est qu’en fait, le module est de très mauvaise qualité et le positionnement difficile à obtenir.

Pour comprendre ton problème, il faut comprendre comment marche les puces de uBlox.

Quand tu connecte le module, il va commencer par attendre des réponses de satellite. Selon la config, il va tenter de l’obtenir par divers satellite, pas juste des GPS, mais aussi d’autres, qui peuvent donner des réponses de positionnement. Il doit avoir un sync parfait entre minimum 3 satellites, la position est triangulé, et le timecode de réponse doit être identique. Le problème est que le uBlox n’a pas une antenne performante, alors la réception est désastreuse et les données sont considéré non valide par le module. Il retournera que des valeurs non valide.

La position dans le logement, et le temps extérieur va grandement influencer ta capacité de décoder. La tolérance a l’erreur est gérable depuis la config sous Windows, mais aucune explication n’est disponible pour la configuration, alors c’est un peu du essai erreur. J’ai du réinitialiser les config plusieurs fois tellement que je souhaitait des résultats précis, que je n’ai jamais vraiment eu.

Le positionnement « 2D » est possible, mais en « 3D » c’est très dur d’avoir le résultat. Plus il y a de satellite qui répondent, plus la position sera précise. Alors faire des tests en extérieur et par beau temps, serais l’idéal pour programmer ce que tu as à faire, car tu obtiendra la position 2D assurément, et par chance, le positionnement 3D.

2D est le positionnement en longitude et latitude, en 3D, il y a aussi l’altitude (hauteur).


Dans mes tests, j’ai sur la version Linux, comme sous Windows, laissé tourné longtemps le module GPS. Je pouvait durant des heures n’avoir aucun signal valide (aucune position) et par moment un link parfait, mon record et de 23 satellites en réponse parfaite, mais ce cas idéal n’a duré que quelques instants. J’ai jamais testé en extérieur, mais l’ordinateur est au second étage, près d’une grande porte de patio. J’ai une image monté avec 2 programme de GPS en linux, l’un qui sort les données en vrac en ligne de commande, et le second pour un affichage GUI pour un système de navigation.

Toujours dans mes tests, j’ai remarqué que j’ai une position seulement si le module valide l’heure, soit l’heure local avec le temps du GPS, alors la date n’est pas de 1969 (default linux time), mais celui de la journée. Tant et aussi longtemps que l’heure est de 1969, il ne peut pas retourner de position.

C’est logique, car les GPS ce base sur le temps de réponse pour trianguler la position, si l’heure n’est pas valide sur ton système, ou l’un des satellite, le résultat de position ne peut pas avoir lieux.

Voici le module uBlox que j’utilise, le uBlox 7.

Merci pour te retour.

Je me doutais bien que ce n’étais pas du Pnp, faut pas trop en demander non plus!
Et c’est bien pour ca que j’ai regardé et vérifié les réglages de la puce via le locigiel U-center de ublox.

Je n’ai pas de soucis de positionnement. Mais effectivement lors de la première mise en route il faut impérativement être dans un espace dégagé pour capter les signaux et que la puce puisse récupérer les données pour calculer sa position.
Mais depuis dès que je mets en route le pi la position est fixe en 2 puis en 3D assez rapidement (depuis mon balcon au 2eme étage entre deux bâtiments)

Je connais assez bien le principe du GPS, je l’utilise tous les jours a mon taf, et ce n’est pas un module qui coute 10€, mais plutôt 25k€ avec connexion gsm avec une base pour un calcul de la position en temps réel pour une précision centimétrique, et je peux te dire que même avec ce matériel professionnel c’est parfois compliqué d’avoir une position correcte et immédiate. Il faut bien avoir en tête qu’une position GNSS c’est une mesure statistique… en gros le résultat c’est que tu as 80% de chance d’être dans le vrai.

Je pense que mon problème est au niveau du décodage des données, la puce transmet des données, mais je n’arrive pas comprendre comment les décoder!