Publié le 24 mai 2022 - par

Un tracker GPS avec la carte Waveshare LoRa SX1262 pour Raspberry Pi Pico [1/2]

Les cartes LoRa sont disponibles chez plusieurs fabricants. J’ai déjà mis en œuvre plusieurs cartes, pour de la mesure climatique, de la surveillance de contact… Cette fois j’avais envie de créer un tracker GPS. Selon mon habitude, je décompose le projet en petites parties. Une fois qu’une partie fonctionne, on passe à la suivante ce qui facilite la mise au point finale. Je commencerai le projet par le récepteur GPS avec un Raspberry Pi Zero et la carte Pico Explorer de Pimoroni.

Comme pour la carte LoRa de Seeedstudio, j’ai mis le niveau sur avancé au vu des nombreuses connaissances engagées dans ce projet. On a de la réception GPS, de la gestion locale par un programme Python, de la liaison série filaire, de la liaison radio LoRa 868MHz avec la passerelle (gateway) LoRa, une gateway avec son programme Python, une liaison Internet avec The Things Network et une liaison avec Cayenne pour le DashBoard. Autant de raisons pour qu’il y ait quelque chose qui ne fonctionne pas. La  réalisation nécessite rigueur, vérification de toutes les étapes (plutôt 2 fois qu’une), recherches des problèmes, documentation, lecture et compréhension des docs… Si vous vous lance dans l’aventure il faudra être persévérant et vous débrouiller si quelque chose ne fonctionne pas 😉

Cliquez pour avoir de l’information sur les niveaux

Pour réaliser ce tutoriel, j’utiliserai un Raspberry Pi PICO flashé avec le Micropython de Pimoroni car j’utilise une carte PICO Explorer que je vous ai présentée il y a un an. Vous pouvez utiliser le MicroPython standard du PICO et ajouter la librairie de gestion d’un autre écran si vous le souhaitez.
Le Raspberry Pi PICO et la carte Pico Explorer proviennent de Kubii.

Un récepteur GPS avec la carte Pico Explorer pour Raspberry Pi Pico

Le Récepteur GPS Ublox Neo 6M

Je l’ai trouvé sur Amazon pour moins de 15€.

Les divers essais que j’ai pu lire sur ce NEO-6M semblaient intéressants.

Description

Le circuit mesure environ 37x27mm. Sur le dessus on trouve cette antenne GPS

Les entrées/sorties sont bien repérées. On pourra y souder des fils directement ou un connecteur au pas de 2,5mm (fourni) pour utiliser des fils Dupont lors du prototypage. de gauche à droite on trouve :

  • PPS : Pulse per Second qui envoie un top toutes les secondes avec une précision
  • TXD : L’émission de données en série
  • RXD : La réception de données en série
  • GND : La masse
  • VCC : Le 3,3 volts

Au cœur de ce module se trouve une puce GPS NEO-6M de u-blox. Cette puce est plus petite qu’un timbre-poste, mais elle renferme une quantité surprenante de fonctions… Elle peut suivre jusqu’à 22 satellites sur 50 canaux et figure parmi les plus sensibles avec -161 dBm, tout en ne consommant que 45 mA. Contrairement aux autres modules GPS, le module peut effectuer jusqu’à 5 mises à jour de localisation par seconde avec une précision de position horizontale de 2,5 mètres. Le moteur de positionnement u-blox 6 annonce un Time-To-First-Fix (TTFF) inférieur à 1 seconde.

L’une des meilleures caractéristiques de la puce est le mode d’économie d’énergie (PSM). Il permet de réduire la consommation d’énergie du système en allumant et en éteignant sélectivement certaines parties du récepteur. Cela réduit considérablement la consommation d’énergie du module à seulement 11mA, ce qui le rend approprié pour les applications sensibles à la consommation d’énergie comme les montres GPS ou les trackers GPS.

Les broches de données sont réparties sur des connecteurs au pas de 0,1″ (2,54mm). Le module supporte un débit de 4800b/s à 230400b/s avec un débit par défaut de 9600b/s.

Il y a une LED sur le module GPS NEO-6M qui indique l’état que la position est acquise de façon stable. Si elle est fixe, le GPS est en train de chercher des satellites. Si elle clignote toutes les secondes, la position est valide (le module voit suffisamment de satellites).
La prise UFL est prévue pour connecter une antenne GPS, mais comme le module a sa propre antenne intégrée, on ne l’utilisera pas.

Le module comporte une prise micro USB. Elle peut être utilisée pour l’alimenter en 5 volts et permet de récupérer les données via le port série sur USB.

Caractéristiques

  • Interface micro USB (alimentation + data)
  • Équipé d’une batterie de sauvegarde de données XH414. Avec interface Micro USB.
  • L’antenne céramique passive et le circuit amplificateur d’antenne passive sont plus efficaces lorsqu’ils sont utilisés seuls.
  • Amplificateur de signal MAX2659, gain 20.5dB très faible bruit 0.8dB
  • Avec l’interface IPX, vous pouvez vous connecter directement à l’antenne active IPX.
  • EEPROM enregistre les données des paramètres de configuration lorsque l’alimentation est coupée.

La présence (flèche blanche) d’un circuit amplificateur LNA GPS/GNSS MAX2659 (Low Noise Amplifier) amène un gain important et permet de recevoir les satellites dans de très bonnes conditions (même à l’intérieur)

Spécifications :

  • Alimentation : 3,3 V-5,5 V
  • Courant nominal : 50 mA / 11 mA en veille
  • Courant en mode économie d’énergie : 30 mA
  • Température de fonctionnement : -40°C ~ +85°C
  • Température de stockage : -55°C ~ +100°C
  • Taille : 3,7*2,6*0,1 cm

Test du récepteur GPS Neo 6M

Le test est très simple, vous pouvez le faire avec un PC ou un Raspberry Pi. Pour moi ces sera un Raspberry Pi 400. Je pars d’une carte fraichement créée avec Raspberry Pi OS 32 bits full Desktop + mise à jour.
Connectez le module à un port USB du Raspberry Pi avec un cordon USB. Le module n’est pas protégé, prenez toutes les précautions pour qu’il ne touche pas d’objets métalliques (boitiers, stylos, trombones… ) qui trainent sur l’établi. Cela pourrait être destructif !

Après vous ouvrez un émulateur de terminal : sur PC ça peut être Tera-Term ou putty, sur Raspberry Pi putty ou minicom. Connectez le terminal au port série USB en 9600 N81 et vous devriez voir défiler les trames GPS.

Sur PC Windows

Vous pouvez cliquer sur les images pour les agrandir.

Sur PC le GPS est vu dans les capteurs. J’ai installé des drivers uBlox pour un autre GPS, celui-ci est vu en COM6 et COM7… Si j’ouvre COM6 je vois bien mes trames défiler.

Sur Raspberry Pi 400

Sur le Pi400 le port série /dev/ttyACM0 est réglé avec putty sur 9600 N81 et on voit aussi les trames GPS défiler. Le GPS est opérationnel. Normalement la LED doit clignoter au rythme d’une fois par seconde quand le GPS reçoit suffisamment de satellites :

On sait maintenant que le GPS fonctionne et qu’il envoie des trames sur le port USB. Tout à l’heure on le connectera au pour série du Raspberry Pi PICO et on vérifiera qu’on récupère aussi les données via le port série TXD.

Montage du connecteur

Je fais au plus simple, je pique le connecteur dans une breadboard et je place le module dessus. Je soude un premier contact et je maintiens le GPS horizontal le temps du refroidissement. Vous pouvez mettre une cale dessous si besoin. Après ça ne bouge plus, vous pouvez souder les autres broches. Si vous débutez en soudure, j’ai fait un guide pour le débutant (gratuit, voyez la page des ebooks).

Connexion du GPS Ublox Neo 6M au Raspberry Pi PICO

Comme toujours on va avancer pas à pas dans la réalisation du projet. Je le répète pratiquement à chaque fois, mais LA bonne méthode c’est de réaliser chaque étape scrupuleusement et de ne passer à l’étape suivante que si l’étape précédente est validée. Cela limite les risques de mauvais fonctionnement. Même avec un tutoriel de qualité (eh ! je n’ai pas dit que celui-ci en fait partie !), si vous connectez la totalité du matériel, installez le logiciel et que ça ne fonctionne pas c’est très compliqué de comprendre ce qui ne fonctionne pas. En général ça se traduit par un message ou un commentaire : « J’ai suivi le tuto, mais ça ne marche pas… Aidez-moi !« . c’est bien pour ça que j’ai indiqué en début d’article qu’il est fait pour les utilisateurs avancés, capables de reprendre les étapes une à une et de comprendre ce qui fonctionne et ce qui ne fonctionne pas…

Vérification de la carte Pico Explorer

Rappel : Le Raspberry Pi PICO a reçu un firmware Pimoroni Pico Explorer « propre ». Voir cette page pour installer le MicroPython de Pimoroni sur le Raspberry Pi PICO. J’ai utilisé la dernière version disponible au 23/05/2022 : https://github.com/pimoroni/pimoroni-pico/releases/download/v1.18.8/pimoroni-pico-v1.18.8-micropython-v1.18-blinka-7.3.0-platformdetect-3.22.1.uf2

On va donc commencer par connecter le GPS au Raspberry Pi PICO. Ici j’ai « piqué » le GPS dans la breadboard de la carte Pico Explorer et câblé les liaisons avec des câbles Dupont.

Le programme install_pico_01.py teste le bon fonctionnement de MicroPython et l’affichage sur l’écran. Il affiche « Hello World » sur l’écran.

Si ça fonctionne, on peut passer à la suite et câbler le GPS.

Connexion physique

Le schéma est relativement simple, la carte Pico Explorer a des bornes pour connecter ces fils mais on peut relier directement les différents éléments.

Raspberry Pi Pico GPS NEO-6M
3.3V – Pin 36 VCC
GP5 (UART1 RX) – Pin 7 TX
GND – Pin 18 GND

Il reste à vérifier si on reçoit les trames NMEA via le port série… C’est le rôle du programme install_pico_02.py qui affiche les trames NMEA brutes, telles que reçues par le GPS. Il dérive d’un programme d’Electronique en amateur :

Dans ma configuration la LED PPS est sous la carte et j’aimerais savoir quand elle clignote. J’ai relié la sortie PPS à GP0 pour que le programme attende que la LED clignote pour indiquer que les données sont fiables.

J’ai donc relié la sortie PPS du module GPS au GP0 du Raspberry Pio PICO et programmé une interruption sur le front montant de PPS, ce qui provoque le clignotement de la LED embarquée du PICO. J’ai donc l’information de validité des données GPS sans avoir à me tordre le cou 😀  (n’oubliez jamais qu’un « bon » informaticien est avant tout un « bon » fainéant…). C’est le programme install_pico_03.py qui réalise cette fonction. Vous voyez la LED clignoter au rythme d’une fois par seconde, et les trames NMEA défilent.

La librairie GPS

Pour « décortiquer » les trames reçues, on va faire appel à une librairie spécialisée dans le traitement des données GPS pour MicroPython. Elle s’appelle micropyGPS.py et vous la trouverez sur Github. Pour l’installe copier le texte librairie (en mode raw), créez un nouveau programme dans Thonny et sauvegardez la librairie (avec son nom, majuscules et minuscules respectées) SUR LE RASPBERRY PI PICO. Comme ceci quand vous ferez un import de la librairie, le programme la trouvera.

Pour le test j’ai utilisé un programme de Electronique en Amateur : test_micropyGPS.py. Merci Yves pour ce programme et pour tout ton blog !

Le programme affiche bien la position du GPS, y compris l’altitude. Reste à afficher cela sur l’écran.

Afficher les données sur l’écran

Pendant qu’on y est je vous propose d’afficher les données sur l’écran, comme ça vous pourrez même faire un tracker avec un affichage… Attention à la consommation, quand même !
C’est le même programme que ci-dessus, j’ai simplement rajouté l’affichage sur l’écran de la Pico Explorer. Il s’appelle install_pico_04.py

Les données GPS apparaissent bien sur l’écran ainsi que sur la console MicroPython. Cette partie étant acquise, on va pouvoir passer à la carte LoRa. Le principe reste le même : on va travailler sur le carte LoRa SEULE et quand on sera sûr(e) qu’elle est fonctionnelle et transmets bien des données à TTN et Cayenne, on ajoutera les infos GPS. Dans ce genre de projet quand on prend son temps… On gagne du temps !

Nota : Il y a encore un petit souci avec le dernier programme qui fonctionne pendant très longtemps (variable) et plante sur une erreur de lecture de la chaîne de texte du GPS. Non résolu pour le moment. Peut être un souci dans la réception des trames NMEA ?

Conclusion

Vous pouvez télécharger les programmes de cet article en cliquant sur ce lien. Ils sont disponibles sur Github également.

Avec cet article vous avez un récepteur GPS opérationnel qui affiche les infos sur un écran.Vous pouvez décider d’arrêter là ou de poursuivre l’aventure en couplant le GPS avec une carte LoRa. C’est la prochaine étape.

 

Sources

Page Waveshare : https://www.waveshare.com/pico-lora-sx1262-868m.htm

Wiki : https://www.waveshare.com/wiki/Pico-LoRa-SX1262

Précision PPS du GPS : https://content.u-blox.com/sites/default/files/products/documents/Timing_AppNote_%28GPS.G6-X-11007%29.pdf

NEO-6M et Arduino : https://lastminuteengineers.com/neo6m-gps-arduino-tutorial/

GPS et Raspberry Pi PICO : https://microcontrollerslab.com/neo-6m-gps-module-raspberry-pi-pico-micropython/

http://electroniqueamateur.blogspot.com/2021/08/module-gps-neo-6mv2-et-raspberry-pi-pico.html

Pimoroni MicroPython 1.18.8 : https://github.com/pimoroni/pimoroni-pico/releases/tag/v1.18.8

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

2 réflexions au sujet de « Un tracker GPS avec la carte Waveshare LoRa SX1262 pour Raspberry Pi Pico [1/2] »

  1. Ping : Un tracker GPS avec la carte Waveshare LoRa SX1262 pour Raspberry Pi Pico [1/2] – Jhc Info

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.