Ce petit module est accompagné d'une antenne amovible (vous pourriez, au besoin, la remplacer par une antenne plus performante). Vous devrez probablement souder vous-même les quatre connecteurs (VCC, GND, RX et TX).
Puisqu'il comporte un régulateur de tension, on peut l'alimenter aussi bien avec 5 V qu'avec 3,3 V. Cependant, il est conçu pour fonctionner à un niveau logique de 3,3 V (soumettre sa broche RX à un signal de 5 V n'est pas recommandé).
J'ai été surpris de l'autonomie de ce dispositif: dès qu'il est alimenté, il se met à capter les signaux émis par les satellites GPS et émet des informations par communication série (UART) sans même qu'on ait à le lui demander.
Une LED bleue se met à clignoter une fois la position déterminée avec certitude (ce qui peut parfois nécessiter environ une minute, lorsque le module GPS vient tout juste d'être branché).
Test avec un convertisseur USB/TTL
Cette autonomie fait en sorte qu'on peut tester son fonctionnement du module GPS sans le moindre microcontrôleur, en le branchant directement à un simple convertisseur USB/TTL fonctionnant à un niveau logique de 3,3 V.
Les connexions sont les suivantes:
- VCC du module GPS - broche 3V3 de du convertisseur USB/TTL
- RX du module GPS - broche TXD du convertisseur USB/TTL
- TX du module GPS - broche RXD du convertisseur USB/TTL
- GND du module GPS - broche GND du convertisseur USB/TTL
Il s'agit ensuite d'utiliser un logiciel de communication série (comme, par exemple, le moniteur série de l'IDE Arduino) et d'ajuster sa vitesse de transmission à 9600 bauds (qui est généralement la vitesse par défaut du module GPS lors de l'achat).
Si tout va bien, de nombreuses lignes de données, commençant toutes par le symbole "$" devraient s'afficher à l'écran. Cette information respecte la norme NMEA 0183 de la National Marine Electronics Association.
Installation de la bibliothèque TinyGPS++
Là où un microcontrôleur devient utile, c'est pour le traitement et l'affichage de ces données, de préférence sous une forme plus facile à interpréter par le commun des mortels. Il existe un certain nombre de bibliothèques Arduino spécialement conçues pour cette tâche. J'ai choisi d'installer une des plus connues: TinyGPS++ par Mikal Hart. Comme vous le constaterez dans la suite de cet article, je l'ai testée sans problèmes avec tous mes microcontrôleurs préférés: Arduino Uno, STM32F103C8 "Blue Pill" , ESP8266 et ESP32.
Tests avec un Arduino Uno
L'inconvénient de l'Arduino Uno, c'est que son niveau logique de 5 V n'est pas idéal pour le module GPS, qui est conçu pour communiquer à un niveau de 3,3 V.
Pour éviter de réduire la durée de vie de votre module GPS, il est conseillé d'abaisser à 3,3 V le signal que vous acheminez à son entrée "RX". Puisque la communication n'est pas très rapide, un simple diviseur de tension devrait faire l'affaire.
Personnellement, je ne me suis même pas donné cette peine: pour une utilisation de base, il n'est aucunement utile d'envoyer des informations vers le GPS. Je me suis simplement abstenu de brancher sa broche "RX" à l'Arduino.
Les connexions sont donc:
- VCC du module GPS - sortie 5 V de l'Arduino
- RX du module GPS - pas branché
- TX du module GPS - broche 4 de l'Arduino
- GND du module GPS - broche GND de l'Arduino
Le sketch ci-dessous permet d'afficher dans le moniteur série les données brutes émises par le GPS (il faut cette fois régler la vitesse de transmission du moniteur série à 115200).
-
-
Pour obtenir des données un peu plus facilement interprétables, vous pouvez exécuter l'exemple "DeviceExample" fourni avec la bibliothèque TinyGPS++. La seule modification que vous aurez à faire, c'est régler la constante "GPSBaud" à 9600.
Cette fois, la longitude, la latitude et le temps universel sont clairement affichés. Vous pouvez vérifier que les coordonnées sont correctes en utilisant, par exemple, Google Maps.
Tests avec ESP8266
Tout comme l'Arduino Uno, l'ESP8266 n'a qu'un seul canal de communication UART, déjà utilisé pour la communication avec l'ordinateur. Toutefois, son niveau logique de 3,3 V étant parfaitement adapté à celui du module GPS, j'ai branché sans craintes la broche RX.
J'ai branché le module GPS à l'ESP8266 de cette façon:
- VCC du module GPS - broche 3V3 de l'ESP8266
- RX du module GPS - broche GPIO 5 de l'ESP8266
- TX du module GPS - broche GPIO 4 de l'ESP8266
- GND du module GPS - broche GND de l'ESP8266
Tests du module GPS avec un ESP32
Avec l'ESP32, c'est possible d'utiliser un deuxième canal de communication UART. Nul besoin, donc, de la bibliothèque "software serial".
- VCC du module GPS - broche 3V3 de l'ESP32
- RX du module GPS - broche TX2 de l'ESP32
- TX du module GPS - broche RX2 de l'ESP32
- GND du module GPS - broche GND de l'ESP32
-
-
Tests de module GPS avec un STM32F103C8 (blue pill)
J'ai finalement fait l'esssai du module GPS avec un module STM32 Blue Pill programmé au moyen d'un convertisseur USB/TTL. Tout comme pour l'ESP32, j'ai pu profiter de la présence d'un deuxième canal UART distinct.
J'ai utilisé ces connexions:
- GND du convertisseur USB/TTL - G de la Blue Pill
- RXD du convertisseur USB/TTL - broche A9 de la Blue Pill
- TXD du convertisseur USB/TTL - broche A10 de la Blue Pill
- 3V3 du convertisseur USB/TTL - broche 3.3 de la Blue Pil
- VCC du module GPS - broche 3.3 du la Blue Pill
- RX du module GPS - broche A2 de la Blue Pill
- TX du module GPS - broche A3 de la Blue Pill
- GND du module GPS - broche G de la Blue Pill
Voici le sketch que j'ai utilisé pour reproduire dans le moniteur série les données brutes générées par le module GPS. De la même façon, on peut facilement faire fonctionner la bibliothèque TinyGPS++ avec une carte STM32.
-
-
Lire aussi
Enregistreur GPS basé sur ce module: les paramètres enregistrés sur une carte SD peuvent ensuite être chargés dans Google Maps.
encore merci pour cette publication
RépondreSupprimerpour passer de 5 volts vers 3.3 volts la solution est :
Resistive divider 560 Ohm with 1000 Ohm to ground
560 ohm en serie et 1K a la masse
merci et on attend la suite (mais faut penser a dormir un peu !)