dimanche 8 août 2021

Module GPS NEO 6MV2 et Raspberry Pi Pico

Dans cet article, nous déterminons notre position (latitude et longitude) au moyen d'un module GPS NEO 6MV2 branché à un Raspberry Pi Pico programmé en MicroPython.


Tel que mentionné lors de notre première exploration du module GPS NEO 6MV2, le module GPS est presque autonome: il s'agit de l'alimenter au moyen d'une tension de 3,3 V pour qu'il se mette à capter des signaux en provenances des satellites GPS et communique les résultats par UART. Une LED bleue intégrée au module GPS clignote pour indiquer que le GPS dispose de données fiables (suite au démarrage du module, plusieurs dizaines de secondes sont parfois nécessaires avant que la LED ne se mette à clignoter).


Le circuit

Puisque le rôle du Raspberry Pi Pico se limite à recevoir les données qui lui seront communiquées par le module GPS, j'ai branché le module GPS au Raspberry Pi Pico de la façon suivante:

  • Broche VCC du module GPS: sortie 3,3 V du Raspberry Pi Pico.
  • Broche RX du module GPS: broche GP4 du Raspberry Pi Pico*
  • Broche TX du module GPS: broche GP5 du Raspberry Pi Pico
  • Broche GND du module GPS: broche GND du Raspberry Pi Pico

* Notez qu'il n'est pas nécessaire de brancher la broche RX du module GPS (car le Raspberry Pi Pico n'enverra aucune information vers le GPS).

Premier script: affichage des données brutes

Dans un premier temps, nous nous contenterons d'afficher dans la console les données brutes émis par le module GPS. Sans surprise, le script est très court, puisqu'il se résume à démarrer le bus UART 1 (associé aux broches GP 4 et GP 5) avec une vitesse de transmission de 9600 bauds, et d'afficher tout ce qui est reçu.

-

-

Si votre module GPS capte des signaux en provenance des satellites (donc si sa LED clignote), vous devriez voir s'afficher des messages débutant par $GPRMC, $GPVTG, etc.

Voici ce que j'ai obtenu dans la console de Thonny:


Installation de la bibliothèque microGPS

Si le coeur vous en dit,  vous pouvez vous documenter sur la norme NMEA 0183 afin d'extraire vous-même les informations qui vous intéressent (latitude, longitude, etc).

Je vous propose plutôt d'installer la bibliothèque micropyGPS de Calvin McCoy.

Prenez soin d'enregistrer le fichier micropyGPS.py dans le Raspberry Pi Pico afin de pouvoir utiliser le deuxième script que je vous propose ci-dessous.


Deuxième script: affichage des données pertinentes

La bibliothèque microGPS met à notre disposition plusieurs méthodes permettant d'extraire la latitude, la longitude, l'altitude, etc. à partir des données brutes fournies par le module GPS:

  • latitude retourne la latitude sous la forme d'un tuple:  [degrés, minutes, Nord ou Sud]
  • longitude retourne la longitude sous la forme d'un tuple:   [degrés, minutes, Est ou Ouest]
Ces tuples sont particulièrement pratiques pour le stockage de données ou pour effectuer des calculs. Pour afficher la latitude et la latitude (sur un écran, par exemple), vous préférerez peut-être utiliser latitude_string() et longitude_string(), qui offrent la même information sous la forme d'une chaîne de caractères.

Ce court script affiche la latitude, la longitude, l'altitude, la vitesse et la date.

-
-

Voici ce que j'ai obtenu dans la console de Thonny:

Il ne vous reste plus qu'à modifier le script pour qu'il réponde à vos besoins (affichage sur un écran, etc.).

À lire également


Yves Pelletier (Facebook)

2 commentaires:

  1. super tuto, je suis en train de modifier pour afficher sur un 1602A, mais je bute , quelles données dois-je prendre pour afficher ? merci

    RépondreSupprimer
    Réponses
    1. rebonjour, c'est bon j'ai trouvé comment faire. a+

      Supprimer