Aller au contenu
DroneBuilds

Messages recommandés

Posté(e) (modifié)

Comprendre et parler à son GPS NEO-M8

Résultat de recherche d'images pour "bn220"

Introduction

Cet article vous aidera (ou pas, car il reste un peu technique) à comprendre ce qu'est cette puce GPS que vous avez acquise et comment réussir à lui parler afin de recevoir ce qu'elle est censée faire. De trop nombreuses questions reviennent en boucle et trop de tuto contiennent des tâtonnements qui induisent souvent à l'erreur.

Il traite uniquement des puces ublox M8 équipant les BN-220, BN-880 (et d'autres encore). N'achetant que les chinoiseries ci-dessous, je vous joins le lien pour vous faire une idée:  

 

Table des matières

  1. Le matériel (hardware)
  2. Connectique et communication
  3. Interconnexion
  4. Installation du logiciel
  5. Connexion au GPS
  6. Sauvegarde de la config / Backup
  7. Configuration du GPS et navigation dans la config
  8. Restauration d'une config
  9. Réinitialisation usine du GPS
  10. Vitesse et Optimisation de l'UART
  11. Les constellations de satellites
  12. Définition du modèle dynamique
  13. Fréquence de rafraichissement (rate)
  14. Les protocoles NMEA, UBX, RTCM et filtrage
  15. Les messages NMEA et UBX
  16. Checklist configuration GPS
  17. Configuration Betaflight/Emuflight
  18. Commandes CLI serialpassthrough et gpspassthrough 
  19. Conclusion

 

1 - Le matériel (hardware)

Ces modules GPS contient principalement:
⦁    une puce u-blox M8030-CT : C'est un microcontrôleur intégrant un system de réception satellite. Un microcontrolleur, cela veut dire qu'il embarque de la mémoire flash pour stocker son programme, un microprocesseur, la mémoire vive (RAM), et des ports d'entrée/sortie pour communiquer avec l'extérieur. J'ai lu le datasheet pour vous. Si cela vous intéresse, vous pouvez le consulter à cette adresse : https://www.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf

image.png.2e69138ea28837bddec8b98caee31213.png

⦁    Une antenne GPS : C'est cette antenne qui va capter les signaux des GPS et les acheminer vers le microcontrôleur. Il est important que cette antenne pointe vers le ciel, ne soit pas recouverte (même de plastique, scotch, ...) et soit éloignée de toute source de perturbation/parasite afin de capter quelque chose (ESC, moteur, Antenne VTX, métaux, ...). Elle est sensible aux ondes.

image.png.348b1db705a0e7d29be9184f1b77ee47.png

  • (optionel - BN220/BN880) une pile pour la sauvegarde des paramètres (BBR - Battery Backed RAM). Si votre GPS perd sa config, c'est qu'il n'a pas de batterie (BN-180) ou que celle-ci est morte...
  • (optionel - BN880) Boussole électronique

Sur le BN-220, il y a deux LEDs:

  • 1 bleue clignotante : Elle indique l'utilisation de l'UART. Si elle est éteinte, c'est que le GPS n'envoie pas de données sur l'UART, cela peut être un comportement normal. Si elle clignote vite, c'est que le GPS envoie plein de messages
  • 1 rouge clignotante : Elle indique que le GPS a un fix 2D ou 3D et que votre drone est prêt à voler

 
2 - Connectique et communication
 
Pour commencer, ce module nécessite une alimentation en 5V (ne pas mettre plus, il grille facilement). Donc vous retrouverez logiquement un + (VCC) et un - (GND).
Ensuite, une interface de communication série. J'entends au loin : C'est quoi une interface  série ? C'est une manière de communiquer (ancestrale, date des années 1970) qui permet d'envoyer les messages caractère après caractère, bit après bit sur un et un seul fil (cela peut être long et lent). C'est une communication unidirectionnelle (dans un seul sens), si les deux parties veulent se parler, il faudra prévoir 2 fils, un pour chacun : un fil sur lequel il écoute (RX) et un fil sur lequel il parle (TX), toujours un caractère après l'autre ...
On définit les caractéristiques d'un port série par plusieurs paramètres (ex 9600,8,N,1):
⦁    la vitesse en Baud (bits par secondes). Par exemple : 9600, 57600, 115200...
⦁    le nombre de bits pour former un caractère : en général 8 bits (un octet) pour former un caractère ASCII
⦁    la parité (vérification de l'intégrité): Aucune dans notre cas (N)
⦁    le nombre de bits stop (indique la fin du mot): 1 dans notre cas
L'interface (le port) du microcontrôleur gérant un port série s'appelle une UART (tient, ça vous dit quelque chose ?).
Donc une UART parle à une autre UART à une certaine vitesse. Si vous n'avez pas la même configuration de chaque côté, vous ne comprendrez pas le message, comme si vous parlez deux langues différentes...

 

3 - Interconnexion

Bon maintenant qu'on a fait le tour du propriétaire, passons aux choses sérieuses.
Pour la configuration initiale, je recommande l'utilisation d'un adaptateur USB vers série. Il en existe de nombreuses versions, mais je recommande les FTDI qui ne sont pas chers et très efficaces. Le principal intérêt est l'auto-détection de la vitesse du port. Pour les bidouilleurs, vous le réutiliserez à de très nombreuses occasions (jailbreak, Hack, ...)

Voici le mien : https://www.banggood.com/custlink/vmvE8aK3Yc

Vous pouvez utiliser un arduino, perso, je vois pas l'utilité car vous vous complexifiez grave la tache. Je dis ça, mais je configurais mes ESC BLHeli avec l'arduino au début...

Pour la suite, vous pourrez directement utiliser le contrôleur de vol de votre drone, mais pour simplifier la configuration initiale, l'utilisation d'un adaptateur est recommandée.
Donc, une UART possède un TX (fil pour la transmission) et un RX (fil pour la réception). Évidemment, pour que deux UART se comprennent, il faut qu'un TX soit connecté à un RX et vice-versa. On parle avec la bouche -TX - à une oreille -RX-.

Cela fait un branchement tel que celui-ci :

image.thumb.png.571f8864457e1c058cf5a65c2b188597.png

Le câble du GPS est fourni en règle générale avec le connecteur pour l'adaptateur série, pas de soudure à prévoir, propre et simple. Ne pas oublier de positionner le jumper sur 5V (en jaune), bien qu'en regardant le datasheet, il se peut que cela fonctionne en 3,3V ...

 

4 - Installation du logiciel

Rendez-vous à cette adresse pour télécharger u-center pour windows : https://www.u-blox.com/en/product/u-center

Pour l'installation, à vous de jouer ...

 

5 - Connexion au GPS

Après démarrage, on arrive sur une fenêtre assez austère sur laquelle, on va commencer à sélectionner le port COM (l'UART) du PC et sa configuration actuelle: 
Dans "receiver"on commence par sélectionner l'option "Autobauding" qui va nous éviter de tester les valeurs de vitesse et faire la recherche pour nous (attention, cela n'est garanti que dans le cas de l'utilisation de l'interface FTDI ).

 image.png.2f7d9fc7797645fb3a6d0d6b0b2b66b1.png

Puis on sélectionne le port (COM5 dans mon cas), ce qui va connecter automatiquement le PC au GPS.

 image.png.8fdcfec974bfc1765ac23d84c65d28e5.png
Si vous ne vous êtes pas trompé sur le port, le logiciel va automatiquement chercher la vitesse du port et se connecter. Vous pouvez visualiser cela en bas, dans la barre d'état avec la référence de la puce GPS, le port série et sa vitesse, le protocole NMEA ou UBX :

image.png.9b00a2848c7406a40dcf8777627e64fe.png


 
6 - Sauvegarde de la config / Backup

Maintenant que l'on a établi la connexion, on va commencer par faire une sauvegarde de la configuration actuelle, puis réinitialiser la config, ce qui va nous permettre de vérifier qu'on a un GPS fonctionnel à l'autre bout :

 image.png.f045bbe7eeb33989e0925bc91417104a.png

Puis, on sélectionne un dossier et un nom de fichier pour votre fichier de sauvegarde (1), puis on lance la sauvegarde en appuyant sur le bouton "Transfer" (2)

image.png.8ff19d29673efb7d5bd44da5aea0249b.png
 
Une fenêtre va s'ouvrir avec la progression du dump de la mémoire du GPS :

 image.png.1a74f0d4e8d4c4c45acf3da7445d4be2.png

Oubliez les erreurs (message rejected), le soft est fait pour un tas de puces GPS bien plus sophistiquées que le M8 et le dump ne fait pas dans la dentelle...

 

7 - Configuration du GPS et navigation dans la config

Après la sauvegarde, nous allons commencer par remettre en configuration usine le GPS. Accédons à la configuration: View - > Configuration View qui va ouvrir la fenêtre de configuration.

Mais avant, apprenons à naviguer dans la fenêtre de configuration :

 image.thumb.png.d00c3539138da941a3a20a096850f4e2.png
 
La zone à gauche (1) permet de sélectionner la famille de paramètres. La zone à droite (2) les différents paramètres et leur valeurs (que vous pouvez visualiser ou modifier). Le bouton "send" (3) permet de sauvegarder.

Attention : le bouton "send"applique les valeurs, les rend fonctionnelles sans les enregistrer de manière permanente dans la mémoire non volatile (NVRAM). Si vous redémarrez votre GPS, toutes les valeurs modifiées seront effacées. Cela vous permet de tester une modification sans risquer de briquer votre GPS. Vous revenez aux valeurs précédentes par redémarrage du GPS.

Exception : dans la Zone 1, entrée "CFG (Configuration)", l'entrée sur la gauche "Save current configuraion" suivi d'une validation par "Send" rendra définitves toutes les modifications apportées à la config.

image.png.329211fe46c455ceed956c211cb1c602.png

Il est important de comprendre cette notion de "running config"(configuration en cours d'exécution sur le GPS) et de "startup config" (NVRAM - configuration appliquée à chaque redémarrage). Et aussi de ne pas oublier de copier la running-config dans la startup-config si l'on est satisfait du résultat, sinon tout est perdu au prochain démarrage ...

À propos : en bas de toutes les fenêtres se trouve un cadenas. Ce cadenas vous indique si la page est protégée ou pas. Si le cadenas est fermé, la visualisation va s'arrêter de défiler ou l'appui sur un bouton n'aura aucune action. Pour ouvrir le cadenas, il suffit soit de cliquer sur le cadenas, soit d'appuyer sur un bouton - "Send" par exemple - pour libérer la page. 

image.png.786b290c3ba094f8cf5701904b030775.png

 

 

8 - Restauration d'une config

Ok, je vous ai montré comment sauvegarder votre config initiale, au cas où... mais à tout moment, lorsque vous êtes satisfait de votre config, vous pouvez la sauvegarder, l'archiver sur votre PC, la dupliquer sur vos autres GPS, la partager avec vos copains... ce que vous voulez. Fini les fastidieuses reconfigurations de GPS, il suffit de réinjecter un fichier de config, on sauvegarde et fini !

Demandez à vos copains une config fonctionnelle et optimisée, injectez dans le vôtre et partez voler direct sans même avoir à comprendre le pourquoi du comment... personne ne vous l'avait dit celle-là ?

Un fichier de config de GPS est de la sorte :
MON-VER - 0A 04 A0 00 52 4F 4D 20 43 4F 52 45 20 33 2E 30 31 20 28 31 30 37 38 38 38 29 00 00 00 00 00 00 00 00 30 30 30 38 30 30 30 30 00 00 46 57 56 45 52 3D 53 50 47 20 33 2E 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 52 4F 54 56 45 52 3D 31 38 2E 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 53 3B 47 4C 4F 3B 47 41 4C 3B 42 44 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 42 41 53 3B 49 4D 45 53 3B 51 5A 53 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CFG-ANT - 06 13 04 00 1B 00 F0 B9
CFG-DAT - 06 06 02 00 00 00
CFG-GNSS - 06 3E 3C 00 00 20 20 07 00 08 10 00 01 00 01 01 01 01 03 00 01 00 01 01 02 04 08 00 01 00 01 01 03 08 10 00 00 00 01 01 04 00 08 00 00 00 01 03 05 00 03 00 00 00 01 05 06 08 0E 00 01 00 01 01
CFG-INF - 06 02 0A 00 00 00 00 00 07 07 00 07 07 00
CFG-INF - 06 02 0A 00 01 00 00 00 07 07 00 07 07 00
CFG-ITFM - 06 39 08 00 F3 AC 62 2D 1E 03 00 00
CFG-LOGFILTER - 06 47 0C 00 01 00 00 00 00 00 00 00 00 00 00 00
CFG-MSG - 06 01 08 00 0B 30 00 00 00 00 00 00
CFG-MSG - 06 01 08 00 0B 33 00 00 00 00 00 00
CFG-MSG - 06 01 08 00 0B 31 00 00 00 00 00 00
CFG-MSG - 06 01 08 00 0B 01 00 00 00 00 00 00
CFG-MSG - 06 01 08 00 21 08 00 00 00 00 00 00

Au début de la ligne, on a la section suivit des valeurs. On ne va pas aller plus loin, mais si comme moi, vous apprenez à lire directement, vous identifiez très vite les problèmes.

Ce fichier peut être réinjecté d'un coup, vous évitant de parcourir toutes les sections pour modifier les valeurs.
Comme pour le backup, on retourne dans "tools / Receiver configuration". On sélectionne le fichier que l'on veut réinjecter (1).  Et on appuie sur "Transfer file -> GNSS" (2).

 image.png.41598248bbaec0018c1a3617cba2c11c.png

Remarques :

  • malgré le fait qu'il soit proposé (à gauche de la flèche 2) de sauvegarder tout en NVRAM (paramètres appliqués à chaque redémarrage). J'ai eu de nombreux cas ou cela ne marchait pas. Il est conseillé de doubler la sauvegarde permanente avec un enregistrement manuel dans la section configuration UBX-CFG comme cité un peu plus haut.
  • il se peut pour que vous ayez à charger la configuration deux fois dans le cas ou la vitesse de communication du port série est modifiée durant le transfert. En effet, quand la vitesse est changée, le logiciel va rechercher automatiquement (autobauding) la nouvelle vitesse, et pendant ce temps-là quelques lignes de commandes seront oubliées et en erreur (timeout). Dans ce cas, il vous faut à nouveau recharger la config qui se terminera sans erreur cette fois-ci car il n'y aura pas de perte de transmission. Si vous ne voulez pas vous embettez, vous chargez deux fois la config tout le temps, il y aura 100% de réussite.

 

9 - Réinitialisation usine du GPS

Les GPS reçut de chine où d'ailleurs sont parfois (voire souvent) déja configuré pour un usage qui n'est pas forcément le nôtre. Au lieu de galérer pendant des heures pour comprendre ce qui ne va pas, il est plus simple de repartir de 0. Alors, voici la manière de faire un retour à la config usine.

D'abord, on retourne dans la configuration du GPS. "View" -> "Configuration View".
On sélectionne la section "CFG" (1), puis "Revert to default configuration" et on valide avec "Send".

 image.png.9d070edb14e9d73bb0dcb36979d5bc1e.png

Tous les paramètres usine seront restaurés, en incluant la vitesse du port (mais si vous êtes en Autobauding, le système va automatiquement basculer la vitesse, sinon le faire manuellement vers 9600 - visible en bas à droite dans la barre de status).

Voilà, votre GPS est en configuration usine, seuls les messages NMEA sont envoyés vers la FC. Maintenant on va pouvoir optimiser ...

 

10 - Vitesse et Optimisation de l'UART

Ok, la vitesse du port série définit la vitesse à laquelle transitent les informations échangées entre la FC et le GPS. Plus cette vitesse est élevée, plus le GPS va pouvoir envoyer de volume d'information.

Pourquoi a-t-on besoin de changer la valeur par défaut ?

Le GPS communique à la FC des messages sur le port série. Ces messages sont par exemple, la vélocité, l'altitude, l'heure, la position géographique, la précision, les infos sur les satellites...
Ces messages sont répétés à une fréquence de rafraichissement. Par défaut, c'est 5Hz soit 5 fois par seconde.

Un peu de maths : Typiquement, un GPS "tuné"envoie 200 caractères 5 fois par secondes plus les infos satellite (400 caractères toutes les secondes). soit un total de 1400 caractères toutes les secondes. Le port série consomme 10 bits pour chaque caractère (8 pour le caractère + 1 bit start + 1 bit stop). Les données à communiquer sont donc de 1400 caractères x 10 bits = 14000 bits toutes les secondes. Une interface série configurée a 9600 bauds (défaut) ne peut faire transiter (au maximum dans les meilleures conditions) 9600 bits en une seconde... ça passe clairement pas.

Exemple reproduit pour vous: Je configure en 9600 (3), UART1 est à 100% d'utilisation (2), et 5509 octets restent sur le carreau (3). La théorie aurait voulu plutôt 4400 que 5500, mais il y a toujours des différences entre la théorie et la pratique... d'où l'utilité de booster encore plus. 

 image.png.acd529c7694172290ca3712acbdee002.png

On passe à 115200 et voila le résultat. La première barre représente l'utilisation instantanée et celle du dessous le maximum.  On a de la marge.

image.png.b46faf34e963ec9accd34a2e4c7a8482.png
 
Attention, il est important que les deux UART qui communiquent entre elles aient les mêmes capacités. La FC de nos drones supporte jusqu'à 115200 bauds. Il ne sert à rien de booster notre GPS au-dessus, il ne pourra pas communiquer avec la FC. 115200 ou 57600 sont de bonnes valeurs.

image.thumb.png.544325b5685cf0c99bcf0f859865e65e.png

Avec une valeur comme 115200, on n'est pas prêt de perdre des messages...

Pour configurer la vitesse de l'UART du GPS, sélectionner "PRT (Ports)" dans la fenêtre de configuration et sélectionner le "Baurate" souhaité pour la target "1 - UART1". Valider avec "Send". Ci-dessous, la config recommandée dans les tutos. 

image.png.67c9833df8ec37c74724a4df5f4b9d86.png

Comme d'habitude, n'oubliez pas de sauvegarder dans la NVRAM si besoin (voir chap 7).

 

11 - Les constellations de satellites

Il existe plusieurs constellations de satellites. La puce M8 est capable de recevoir les grandes familles suivantes :

  • GPS: Constellation de 32 satellites du département de la défense Americaine
  • GLONASS: Constellation de 24 satellites du département de la defense Russe
  • GALILEO: Constellation Europeene de 30 satellites
  • BEIDOU: Constellation Chinoise de 37 satellites

Parmi ces systèmes, nous ne pouvons en sélectionner que 3 simultanément. J'ai mis en vert ceux qu'il faut activer (par défaut nous avons GPS,GLONASS,QZSS).

Pour configurer, sélectionner GNSS dans la fenêtre de configuration et cocher les checkboxs "Enable" pour les constellations que vous souhaitez (rajoutez Galileo - retirer BeiDou). Valider avec "Send".

image.png.8f45b56f16c1fe5e6ea66ce8c796650c.png

Ci-dessus, la config optimisée. Comme d'habitude, n'oubliez pas de sauvegarder dans la NVRAM (voir chap 7).

Pour vérifier la config, c'est "View"dans le menu, puis "Messages View". Dans la fenêtre, sélectionner dans la partie gauche UBX->MON->GNSS

image.png.e2365ce634a7d1799521a203fbf5f860.png

On peut voir dans la ligne "Current enabled system" ceux activés avec un petit rappel que l'on peut en avoir que 3 ...

 

12 - Définition du modèle dynamique

C'est quoi le modèle dynamique ? Le GPS possède plusieurs algorithmes de calcul de la position optimisés en fonction du comportement sélectionné (stationnaire, piéton, vélo, automobile, avion ...). Le calcul est plus rapide et plus précis s'il correspond au mode.

Il existe 10 modes. D'après ce que j'ai lu dans le datasheet, celui qui correspond le mieux à l'utilisation de nos drones est le mode "0-Portable". Mais les dev de Betaflight considèrent d'autres valeurs ansi que les divers tutos sur le net. Je vous laisse libre de tester. Pour info, voici la liste des modes :

image.png.3a7355759aba2c0c9db9389dafc29fe1.png

Pedestrian est un peu léger (108km/h à l'horizontal et 72km/h en vertical). Airbone, la précision est moins bonne. Portable semble effectivement un bon compromis ...

Pour configurer, dans la fenêtre de configuration, on se déplace à la section "NAV5" et on sélectionne ce que vous souhaitez. Valider avec "Send".

image.png.cda18d9808cca04d2d814946399039ef.png

Comme d'habitude, n'oubliez pas de sauvegarder dans la NVRAM si besoin (voir chap 7).

 

13 - Fréquence de rafraichissement (rate)

On peut modifier la fréquence à laquelle le GPS récupère les données des satellites et calcule ses mesures. Chaque calcul génèrera en retour des messages transmis à la FC au travers de l'UART. Chaque calcul solicitera le CPU et ses ressources. Plus la fréquence est élevée, plus le GPS consomme électriquement et génèrera un grand volume de messages. Dans le datasheet, il est préconisé 1Hz/1000ms (un calcul par seconde - le paramètre par défaut). C'est, d'après eux, suffisant pour tous les usages.

La plupart des tuto sur le net recommandent 5Hz, Betaflight initialise aussi à cette valeur ... pourquoi pas ?

Etre trop gourmand va résulter en un calcul de la position impossible ou trop de données envoyées sur l'UART.

Pour configurer les "rates" du GPS, sélectionner "RATE (Rates)" dans la fenêtre de configuration et modifier "Mesurement Period" avec la valeur souhaitée... Valider avec "Send".

image.png.407663c6c4322b190067ffa1d6d76dc9.png

Ci-dessus, la config optimisée avec la recommendation. Comme d'habitude, n'oubliez pas de sauvegarder dans la NVRAM (voir chap 7).

Pour vérifier, ouvrir la console affichant les trames de packets envoyé et reçus :

image.png.c3f02c62fdd535d0bded893518c29f0f.png

image.thumb.png.b503706bc732e8f7026a3b17d875ebe1.png

On retrouve bien 5 blos de messages dans la même seconde.

 

14 - Les protocoles NMEA, UBX, RTCM et filtrage

NMEA qui veut dire "National Marine Electronics Association", édité par l'association du même nom, elle a pour but de définir un standard d'interface pour l'industrie électronique.

Le standard NMEA autorise l'addition de messages propriétaires spécifiques. La seule obligation est que ces messages doivent être tous préfixés par une mnémonique identifiant le constructeur. Et devinez quoi ? u-blox, le fabriquant de la puce NEO-M8N, a choisi le préfix UBX. Puisque le standard l'autorise, son protocole peut se substituer totalement à NMEA.

C'est pour cela que vous avez le choix dans Betaflight/Emuflight/INav entre le protocole NMEA ou UBX. À non ... les développeurs ont confondu le nom de la société et le nom du protocole... vous trouverez UBLOX dans le choix du protocole à la place de UBX ... personne ne peut être parfait. Faudrait peut-être que j'ouvre un ticket ...

Pour être complet, il y a aussi un autre protocole, RTCM (Radio Technical Commission for Maritime Services), utilisé pour améliorer la précision du GPS en lui fournissant des informations de correction de position... dans tous les tutos, on nous demande d'ajouter ce protocole en entrée, perso, il n'y aucune référence à un message RTCM dans le code de Betaflight. Comme moi, vous pouvez le retirer, cela ne changera rien, et mettez "0+1 - UBX+NMEA" en "Protocol in".

Alors, maintenant que les présentations sont faites, il va falloir indiquer au GPS les protocoles que l'on va supporter dans les échanges GPS vers FC et vice-versa. Pour cela on retourne dans "PRT (Ports)" dans la fenêtre de configuration et sélectionner le "Protocol in" et "Protocol out". Valider avec "Send".

image.png.38b87d488b7b34f9628e2380c7997db2.png

  • "Protocol in" :  C'est ce que la FC va envoyer au GPS. Donc messages de configuration du GPS.
  • "Protocol out" : C'est ce que le GPS va envoyer à la FC. Ci-dessus, je laisse les 2 protocoles, comme ça, le choix vous appartient de sélectionner l'un ou l'autre dans votre FC ... mais moi, le choisis "0 - UBX" car je n'utilise par NMEA.

Il est à bien noter que cette configuration n'active pas les protocoles. C'est un filtre que l'on met sur l'UART dans le sens TX (Protocol out)  et RX (protocol in). Si vous n'autorisez pas les protocoles, les messages correspondants seront automatiquement mis à la poubelle, d'où l'importance de définir correctement ces champs.

Comme d'habitude, n'oubliez pas de sauvegarder dans la NVRAM si besoin (voir chap 7).

 

15 - Les messages NMEA et UBX

Là, on rentre dans le vif du sujet. Comment on configure le GPS, comment la FC reçoit le fix, les coordonnées géographiques, la vitesse, la distance ?

Tout échange de données entre la FC et le GPS est basé sur une notion de message.

Exemple :

Pour effectuer un reset de la position Home, la FC envoie au GPS un message CFG-RST avec le protocole UBX (UBX->CFG-RST)

image.png.79a055e3bd42169127a8504935a2fb7b.png

En fait, chaque fois que, dans l'interface, vous sélectionnez une section, et appuyez un "Send", vous envoyez un message au protocole UBX sur l'UART...

Même chose pour le sens retour, le GPS vous envoie des messages.

Exemple : un message UBX - NAV - POSLH envoyé à la FC avec la position géographique, la hauteur et l'estimation de la précision.

image.png.ca0530fb795b373a2b509dbc6f14a4b3.png

Les protocoles UBX et NMEA définissent des centaines de messages différents. Activer tous les messages saturerait sans aucun problème le lien entre les UARTs résultant en la perte de beaucoup d'information. Par contre, ne pas transmettre les messages attendus par Betaflight résulterait en un lock impossible, pas d'info sur la vitesse ou la position géographique.

L'optimisation va nous permettre de définir seulement les messages que Betaflight/Emuflight et Inav attendent et filtrer les autres, donc optimiser le CPU, l'utilisation des UARTs et garantir 100% des fonctionnalités.

Pour cela il faut d'abord lister dans le code de Betaflight les messages utilisés pour la navigation. Le fichier  qui contient le code est celui-ci : https://github.com/betaflight/betaflight/blob/master/src/main/io/gps.c

Nous allons retrouver 3 définitions de messages de navigation pour NMEA et 5 pour UBX :

#define FRAME_GGA  1     /* Global Positioning System Fix Data */ 
#define FRAME_RMC  2    /* Recommended Minimium Data */
#define FRAME_GSV  3     /* GNSS Sattelites in View   */

enum {
    PREAMBLE1 = 0xb5,
    PREAMBLE2 = 0x62,
    CLASS_NAV = 0x01,
    CLASS_ACK = 0x05,
    CLASS_CFG = 0x06,
    MSG_ACK_NACK = 0x00,
    MSG_ACK_ACK = 0x01,
    MSG_POSLLH = 0x2,       /* Geodetic position solution */
    MSG_STATUS = 0x3,       /* Receiver navigation status */ 
    MSG_SOL = 0x6,              /* Navigation solution information */
    MSG_VELNED = 0x12,     /* Velocity solution in NED frame */
    MSG_SVINFO = 0x30,     /* Space vehicle information */
    MSG_CFG_PRT = 0x00,
    MSG_CFG_RATE = 0x08,
    MSG_CFG_SET_RATE = 0x01,
    MSG_CFG_NAV_SETTINGS = 0x24
} ubx_protocol_bytes;

Si vous voulez connaitre le contenu de chacun des messages, vous trouverez la définition dans le datasheet fourni au début de l'article.

Nous allons donc restreindre l'envoi de messages dans le GPS à ces messages seuls. Il est à noter que si, dans le futur, les développeurs de Betaflight rajoutent des fonctionnalités basées sur d'autre messages, il faudra venir les rajouter ... de plus je laisse les messages NMEA dans l'étude, mais, perso, je les retire car je n'utilise que UBX comme protocole. 

Pour cela on retourne dans Configure - > MSG (Messages). Vous allez devoir sélectionner en premier le message souhaité, puis sélectionner l'interface sur lequel le message sera envoyé (nous c'est l'UART1). Il est inutile de sélectionner les autres interfaces, les laisser consommerait des ressources inutiles. A côté se trouve le coefficient diviseur : si vous laissez 1, cela veut dire que le message sera envoyé à tous les cycles du rate (paragraphe 13) que vous avez défini. Si vous mettez 2, c'est une fois tous les deux cycles et ainsi de suite. Cela vous permet de limiter la fréquence de certains messages. Nous allons l'utiliser pour limiter l'envoi des données sur les satellites qui a une importance relative comparée aux coordonnées géographiques ou la vélocité ...

image.png.2c47b0256620fabc62827c69c09d8d20.png

Voici ce que je recommande:

  1. Commencer par retirer la totalité des messages envoyés. Comme ça, c'est clair. Si vous réussissez, la diode bleue s'arrête totalement de clignoter, plus aucun message n'est envoyé.
  2. Puis ajouter ces messages :
  • 01-06 NAV-SOL,          Interface UART1,   Diviseur 1 
  • 01-03 NAV-STATUS,    Interface UART1,   Diviseur 1 
  • 01-30 NAV SVINFO,     Interface UART1,   Diviseur 5
  • 01-12 NAV-VELNED,     Interface UART1,   Diviseur 1 
  • 01-02 NAV-POSLLH,    Interface UART1,   Diviseur 1 
  • F0-00 NMEA GxGGA,  Interface UART1,   Diviseur 1   (optionel)
  • F0-03 NMEA GxGSV,   Interface UART1,   Diviseur 1   (optionel)
  • F0-04 NMEA GxRMC,  Interface UART1,   Diviseur 1   (optionel)

Terminer par "Send". La diode bleue doit recommencer à clignoter signifiant l'envoi de données par le GPS. 

 

14 - Checklist configuration GPS

Une petite pause pour rappeler les étapes de la configuration du GPS.

  1. On fait un backup de la config
  2. On effectue une remise a zéro de la configuration du GPS (UBX-CFG-CFG)
  3. On configure le port UART (UBX-CFG-PRT) : vitesse (115200 bauds) et le filtrage des messages non NMEA/UBX sur le TX et le RX
  4. On configure les rates à 200ms (5Hz) dans UBX-CFG-RATE
  5. On rajoute Galileo et on retire BeiDou dans UBX-CFG-GNSS
  6. On configure le profile de navigation Portable dans UBX-CFG-NAV5
  7. On retire tout les messages sur toutes les interfaces UBX-CFG-MSG
  8. On rajoute la liste de messages NMEA/UBX du paragraphe 15 dans UBX-CFG-MSG
  9. On sauvegarde la config en mémoire non volatile dans UBX-CFG-CFG
  10. On refait un backup de la config dans un nouveau fichier texte sur le PC que l'on archive bien

On est prêt à configurer le drone maintenant.

 

15 - Configuration Betaflight/Emuflight

Connexion physique sur la FC : On sélectionne une UART libre sur la FC composé d'un TX et un RX. On relie un TX à un RX et vice-versa.

On commence par l'onglet "Ports" : Pour l'UART choisie, aller dans la colonne capteur et selectionner "GPS" puis sélectionner la vitesse. Là vous aurez deux choix. Soit vous laissez la FC chercher la vitesse et vous mettez sur AUTO (*). Soit vous fixez directement la vitesse (choix préféré). 

(*) Dans le code source de Betaflight, la FC teste les vitesses suivantes: 9600, 19200, 38400, 57600, 115200. Si dans le GPS vous définissez une vitesse non supportée, le mode AUTO ne fonctionnera pas. 

GPS1.thumb.png.1bd442f21bc8379bdfa637a6bbb76983.png

On passe à l'onglet "Configuration" Dans le cadre "GPS", on commence activer le GPS, on choisit le protocole, de préférence UBLOX - UBX en vrai). Ensuite, vous pouvez activer la recherche automatique de la vitesse de l'UART  "Baud Auto" ou pas. Même chose que dans l'onglet "Ports".

Vous pouvez sélectionner "Config Auto" ou pas. Un petit paragraphe est nécessaire pour ce paramètre. En premier, il n'a d'effet que si vous avez sélectionné le protocole UBX (pardon UBLOX dans le configurateur). Donc, si vous êtes en UBX et que "Config auto" est selectionné, à la mise sous tension du drone, Betaflight va envoyer la liste de messages de configuration suivants aux GPS (encore un peu de reverse-engineering dans le code source): 

  • Reset factory sans sauvegarde en NVRAM (startup config)
  • Passage de la vitesse de l'UART à 19200
  • Passage en mode piéton ou airbone
  • Retrait des messages NMEA VGS, GSV, GLL, GGA, GSA, RMC
  • Activation les messages UBX POSLLH, STATUS, SOL, SVINFO (tous les 5 cycles), VELNED
  • Configuration des rates à 5Hz - 200ms 
  • Configuration du service d'augmentation de la précision (SBAS) en fonction de ce que vous choisissez dans le champ "Type d'assistance au sol"...

A noter :

  • A la mise sous tension du drone, Betafligh exécute en premier un reset usine du GPS, c'est à dire que toutes les modifications que vous avez apportées par vous même dans le GPS ne sont plus prises en compte !!!
  • Betaflight ne sauvegarde pas dans la NVRAM à la fin. Donc, à la fin de la Lipo, après extinction du drone, les modifs Betaflight seront perdues.

Donc, pour résumer, si vous sélectionnez "Config auto", oubliez toute la config du GPS, Betaflight retirera tout à chaque démarrage du drone et appliquera ses paramêtres qui sont globalement les mêmes que dans tous les tutos (même la constellation "Galileo"). 

Si vous souhaitez utiliser votre configuration de GPS, mettez "Config auto" a OFF.

GPS2.thumb.png.3a69aad0f82ffdbe8de4886720d88c51.png

Onglet "CLI" : des commandes ne sont pas disponibles dans l'interface graphique, mais seulement en CLI. 

  • Celle de la prise en compte de la constellation Galileo set gps_ublox_use_galileo = on (ou off)
  • Celle de la modification du mode dynamique : set gps_ublox_mode = AIRBORNE (ou PEDESTRIAN)

Utilisées seulement dans le cas de "Config Auto" sélectionné, sinon, cette commande n'a aucun effet.

GPS4.thumb.png.83989be890e3c711337f8859ccb36bbd.png

Vérification du bon fonctionnement du GPS dans l'onglet "GPS". exemple ci-dessous. Ça parle tout seul.

GPS3.thumb.png.0008fd5a811b5667bdf551024461b506.png

 

18 - Commandes CLI serialpassthrough et gpspassthrough

L'utilisation d'un adaptateur USB/série (FTDI par exemple), n'est pas obligatoire (conseillé quand même). Une fois que tout fonctionne, il n'est plus simple d'utiliser le drone monté et configuré pour piloter le GPS sans aucune modification matérielle.

Vous pouvez utiliser u-center au travers du contrôlleur de vol. Pour cela, il faudra veiller à connaitre votre configuration sur le PC (port série utilisé, celui utilisé pour connecter Betaflight)

Exemple (COM1 ici) image.png.df38e7447bb81d4fb094684ba36f9e42.png 

Avec nos FC, avec une version récente de Beta/Emu/Inav on peut trouver deux fonctions intéressantes en CLI (Command Line Interface) : serialpassthrough et gpspasstrough. Ces commandes permettent de transformer temporairement une FC en adaptateur USB/série. Veuillez toutefois posséder une version de Beta/Emu/Inav pas trop vieille.

1) La commande "serialpassthrough" permet de transférer toute la communication du port USB vers l'UART de la FC. Il faut fournir en paramètres l'index interne du port UART (égal au numéro d'UART -1 ) ainsi que la vitesse du port UART.

Syntaxe : serialpassthrough <num UART -1> <vitesse>

Ex: serialpassthrough 5 115200  --->   (UART 6, 115200 bauds)

A partir du moment la commande est soumise, l'intégralité du port USB est redirigé: On perd la communication avec la FC (MSP) jusqu'au prochain reboot.

2) La commande "gpspassthrough" récupère directement dans la configuration beta/emu/inav les paramètres de port configurés pour le GPS (UART et vitesse) et invoque serialpassthrough en passant les valeurs. Elle ne nécessite aucun argument.

Syntaxe : gpspassthrough 

Comme pour l'autre commande, à partir du moment la commande est soumise, l'intégralité du port USB est redirigé: On perd la communication avec la FC (MSP) jusqu'au prochain reboot.

La procédure est plus compliquée, mais ne nécessite rien de plus que votre câble USB connecté au PC et à votre drone. Attention toutefois, le GPS doit être sous tension : Ce qui implique dans la plupart des cas le branchement de la LiPo.

La procédure:

  • Connecter la FC au PC
  • Connecter une LiPo pour alimenter le GPS 
  • Ouvrir Beta/Emu/Inav Configurator
  • Connecter le configurateur au drone
  • Aller dans l'onglet CLI (le dernier en bas à gauche)
  • passer la commande "serialpassthrough" ou "gpspassthrough"
  • Fermer le configurateur avec la croix en haut à droite pour libérer le port COM du PC (sinon u-center n'arrivera pas a connecter le port)
  • Demarrer u-center
  • Connecter dans u-center le port COM associé. 

Pour que la FC revienne en mode de fonctionnement normal, n'oubliez pas de déconnecter la LiPo ainsi que le port USB.

 

Conclusion

Je pense avoir couvert la plupart des sujets. Faites-moi vos remarques, je modifierai ou compléterai l'article sur demande. Désolé s'il y a des erreurs, personne n'est infaillible, tout est basé sur mon expérience personnelle, la lecture des datasheets d'UBLOX et du reverse engineering dans le code des developpeurs...

Maintenant, à vous de jouer, de tester, de reporter vos trouvailles et de partager vos fichiers de configuration.

Voici le mien.

 

 

BN220-CC06.txt

Modifié (le) par CC06
  • J'aime 3
  • Merci ! 11
Youtube WE are FPV
Posté(e)
il y a 45 minutes, Attafr a dit :

Tu devrais modifier ton titre part1 & part2 ou @Motard Geek peut peut-être faire le join...

Je suis d'accord avec toi... je me suis posé la question au début de la partie 2. A la fin, je me suis dit que si je réussi à aller jusqu'au bout, je regrouperai le tout en un seul article...

Et je me suis aussi dit que si je continuai en editant la premiere partie, les utilisateurs du forum ne veront pas les nouveaux ajouts... je sais pas trop, si vous avez des conseils...

Posté(e)

@CC06 j'avais vu un début de tuto ou le gars faisait en gros la même chose que toi sans utiliser un module ftdi, mais en passant avec la fonction passthrough de la FC. Je retrouve plus la video

Tu confirme? Et si oui comment on fait

 

PS: rien dans la boîte aux lettres ? 😁

Posté(e)
Il y a 14 heures, CC06 a dit :

Et je me suis aussi dit que si je continuai en editant la premiere partie, les utilisateurs du forum ne veront pas les nouveaux ajouts... je sais pas trop, si vous avez des conseils...

Tu peux poster un message quand tu fais un ajout pour avertir ceux qui suivent le topic 🙂 

Posté(e)
Il y a 14 heures, CC06 a dit :

si vous avez des conseils...

Deja merci et félicitation pour ces explications.🙏👏

Si tu peux fusionner les deux parties se sera beaucoup plus lisible...😉

Posté(e) (modifié)
Il y a 13 heures, Joelamoule a dit :

@CC06 j'avais vu un début de tuto ou le gars faisait en gros la même chose que toi sans utiliser un module ftdi, mais en passant avec la fonction passthrough de la FC. Je retrouve plus la video

Tu confirme? Et si oui comment on fait

 

PS: rien dans la boîte aux lettres ? 😁

Avec nos FC, avec une version récente de Beta/Emu/Inav on peut trouver deux fonctions interressantes en CLI : serialpassthrough et gpspasstrough.

Cela permet de transformer temporairement une FC en adaptateur USB/Série. Quand les dev de Betaflight ont introduit la feature, on a remisé nos arduinos pour la config des ESC, le flashage des TX/RX Frsky...

Donc oui, il est tout à fait possible d'utiliser ta FC pour controller directement le GPS. L'inconvenient, c'est que la configuration du port série est statique, c'est à dire que tu lui donne la valeur de vitesse, et après, tu fais avec jusqu'au prochain reboot de la FC. Pas du tout pratique quand tu veux configurer la vitesse du port du GPS. L'adaptateur FTDI est dynamique, tu changes la vitesse, y'a rien à faire d'autre, l'interface FTDI s'adapte automatiquement.

  • La commande "serialpassthrough" te permet de transferer toute la communication du port USB vers l'UART de la FC que tu lui demande à la vitesse que tu lui précise:

serialpassthrough <num UART -1> <vitesse>

Ex: serialpassthrough 5 115200      (UART 6, 115200 bauds)

A partir du moment ou tu as validé la commande en CLI, le port USB est redirigé, tu perds la communication avec la FC (MSP) jusqu'au prochain reboot.

  • La commande "gpspassthrough" recupère directement dans la configuration beta/emu/inav les parametres de port que tu as configuré pour ton GPS (UART et vitesse) et invoque serialpassthrough en passant les valeurs. Elle ne nécessite aucun argument.

gpspassthrough 

Comme pour l'autre commande, à partir du moment ou tu as validé la commande en CLI, le port USB est redirigé, tu perds la communication avec la FC (MSP) jusqu'au prochain reboot.

Pour résumer, avec le FTDI:

  • Connecter le GPS au FTDI
  • Connecter le FTDI au PC (le GPS est alimenté par le FTDI et le FTDI par le PC)
  • Demarrer u-center

Rien à prévoir en cas de changement de vitesse de l'UART.

Avec ta FC c'est cette procédure:

  • Connecter la FC au PC
  • Connecter une LiPo pour alimenter le GPS 
  • Ouvrir Beta/Emu/Inav Configurator
  • Connecter
  • Aller dans le CLI
  • passer la commande "serialpassthrough"
  • Fermer le configurateur sans déconnecter pour libérer le port COM sur le PC
  • Demarrer U-Center

Recommencer toute l'opération en cas de changement de vitesse de l'UART.

Voila, moi, je connais par coeur la commande serialpassthrough, c'est ce que j'utilise chaque fois qu'il y quelque chose à changer. Cela m'évite d'avoir à toucher un cable sur le drone une fois monté. C'est super pratique, y'a pas photo...

Maintenant, je réserve la manip aux experts. Pour le commun des mortels, c'est se tirer une balle dans le pied... plus le VTX qui chauffe, les ESC qui bippent au bout de 5 minutes...

Modifié (le) par CC06
  • J'aime 2
Posté(e)

@CC06 Grand MERCI et BRAVO pour cet excellent travail !!

Il ne te reste plus qu'à éditer le titre et supprimer "Partie 1" 😉

Et trop top précieux le chapitre :Réinitialisation usine du GPS   

Bon vol. 

  • CC06 changed the title to Etude technique du GPS - Comprendre et configurer votre GPS (Work In Progress...)
Posté(e)

J'ai continué l'article en ajoutant le chapitre sur les constellations de satellites et la config... bonne lecture

  • J'aime 1
  • Merci ! 2
Posté(e) (modifié)

Petit edit de la journée.

Au sommaire:

- Rajouté dans le paragraphe hardware la batterie, la boussole, les diodes bleue et rouge et leur signification.

- Dans le paragraphe vitesse et optimisation de l'UART, j'avais oublié de dire comment changer la vitesse sur le GPS avec u-center.

- Rajouté un paragraphe sur les rates du GPS (fréquence de rafraichissement).

Modifié (le) par CC06
  • Merci ! 1
  • CC06 changed the title to Etude technique du GPS - Comprendre et configurer votre GPS
Posté(e)

Voilà, j'ai fini par boucler l'article... j'y croyais plus !

N'hésitez pas à partager vos backups de config de GPS, à formuler vos remarques, à corriger si j'ai faux quelque part...

Bonne lecture. 

  • Merci ! 4
  • 2 weeks later...
Posté(e)
il y a 7 minutes, Binary White -FPV- a dit :

Top !! Gg pour le topic, j'ai essayé de vulgariser au mieux pr le tuto mais ça fais du bien de voir une complément technique ultra complet ! 

Merci, le but était d'aller un peu plus loin que le tuto, qui est d'ailleurs très bien et abordable pour les personnes qui ne souhaitent pas comprendre mais simplement utiliser...

Là, c'est surtout pour garder une trace de tout le reverse engineering que j'ai fait sur ce GPS, car dans 6 mois, je ne me souviendrai pas du 1/4 de ce que j'ai vu. Et si en plus, cela peut interresser d'autres personnes, alors tant mieux. 

J'ai quelques idées d'études à publier, mais il faut que je trouve la motivation pour les écrire... c'est beaucoup de boulot... enfin tu connais ça... 

  • J'aime 1
  • Merci ! 1
  • 3 weeks later...
Posté(e)

Bonjour, ayant déjà bien bricolé avec le BN-220, je me suis aperçu que 2 firmware circulent. Le 2.01 et 3.01. Le premier ne semble pas gérer Galileo, qui me confirme cela?

Et hélas un mise à jour n'est pas possible. Les revendeurs semblent écouler leur stock sans aucun garantie de recevoir le dernier Firmware.

Posté(e)
il y a 32 minutes, DiogeneYves a dit :

Bonjour, ayant déjà bien bricolé avec le BN-220, je me suis aperçu que 2 firmware circulent. Le 2.01 et 3.01. Le premier ne semble pas gérer Galileo, qui me confirme cela?

Et hélas un mise à jour n'est pas possible. Les revendeurs semblent écouler leur stock sans aucun garantie de recevoir le dernier Firmware.

https://www.schurich.com/2018/02/ublox-flash-upgrade/

https://www.handheldgroup.com/knowledge-base/u-blox-gps-firmware-installation-updating/

http://www.rei-labs.net/how-to-update-neo-m8n-firmware/

https://discuss.cubepilot.org/t/here-rtk-firmware-update-ok-but-doesnt-work/3064/2


 

Posté(e)
Le 16/03/2021 at 18:36, Attafr a dit :

Merci bien, mais il n'est pas raisonnable de changer un composant sur un produit de 7euros. Je me suis donc assuré auprès du fabriquant de la dernière version, qui livre également.

  • 4 weeks later...
Posté(e)

Salut

Un grand merci pour ce sujet GPS

C'est top ! 

Jeff

  • 2 months later...
Posté(e) (modifié)

Salut

Alors je viens d'effectuer scrupuleusement le tuto et je reviens vers toi car je n'arrive pas à activer les satellites Galileo et surtout quand je vais dans le monitor GNSS il m'indique 2 GNSS supportés simultanément !!

Je ne comprends pas !!

C'est un GPS BN-180

Modifié (le) par JeffFPV

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...