mercredi 17 juin 2020

Fabrication d'un enregistreur GPS (GPS Logger)

J'ai fabriqué un enregistreur GPS: lorsque je l'apporte avec moi pour marcher, courir ou pédaler, il enregistre les coordonnées de mon itinéraire sur une carte SD en plus de les afficher sur un écran OLED. Lors de mon retour, je peux charger les données dans google maps pour visualiser mon parcours sur une carte géographique.


Comme vous pouvez le constater sur la photo ci-dessus, le dispositif est constitué de 5 éléments:
  • Un module STM32 Blue Pill, qui a pour avantages de fonctionner à un niveau logique de 3,3 V, de prendre peu de place et de se programmer avec l'IDE Arduino. 
  • Un  module GPS Neo 6MV2 (communication UART)
  • Un lecteur de carte SD (communication SPI)
  • Un écran OLED SH1106 (communication I2C). Il n'est pas obligatoire, mais il est utile pour s'assurer que le dispositif fonctionne correctement.
  • Un chargeur USB portable ("power bank") qui fournit 3,3 V à tout le système par l'entremise du programmateur ST-Link que j'ai utilisé pour programmer la Blue Pill.
Connexions

Le module GPS est branché à la Blue Pill de cette façon:
  • VCC du module GPS: 3,3 V *
  • RX du module GPS: broche A2 du module STM32 Blue Pill
  • TX du module GPS: broche A3 du module STM32 Blue Pill
  • GND du module GPS: G du module STM32 Blue Pill
Le lecteur de carte SD est branché à la Blue Pill de cette façon:
  • GND du module carte SD: G du module STM32 Blue Pill
  • +3.3 du module carte SD: 3,3 V *
  • +5 du module carte SD: pas branché
  • CS du module carte SD: broche A4 du module STM32 Blue Pill
  • MOSI du module carte SD: broche A7 du module STM32 Blue Pill
  • SCK du module carte SD: broche A5 du module STM32 Blue Pill
  • MISO du module carte SD: broche A6 du module STM32 Blue Pill
L'écran OLED est branché à la Blue Pill de cette façon:
  • GND de l'écran OLED :  G du module STM32 Blue Pill
  • VCC de l'écran OLED :3,3 V *
  • SCL de l'écran OLED : B6  du module STM32 Blue Pill
  • SDA de l'écran OLED : B7  du module STM32 Blue Pill
* Au début, j'avais branché tous les périphériques aux sorties 3,3 V de la Blue Pill, mais le comportement du GPS était erratique: ça fonctionne beaucoup mieux si vous les branchez directement à la source d'alimentation (sortie 3,3 V du ST-Link, dans mon cas).



Installation des bibliothèques dans l'IDE Arduino

J'ai utilisé les bibliothèque TinyGPS++ (pour le GPS) et u8g2 (pour l'écran OLED). Les bibliothèques nécessaire au bon fonctionnement du module de carte SD sont déjà incluses dans l'IDE Arduino. Les fichiers nécessaires à la programmation des cartes STM32 ("STM32 core") doivent avoir été installés dans l'IDE Arduino.


Sketch

Chaque fois que la Blue Pill reçoit des nouvelles données de la part du module GPS, elle met à jour les informations affichées sur l'écran OLED (latitude, longitude, date et heure). De plus, les données sont enregistrées dans un fichier CSV ("comma separated values"). Pour éviter d'accumuler une quantité de données inutilement grande, l'enregistrement sur carte SD s'accomplit une fois à toutes les 20 mises à jour en provenance du module GPS.

-
-

Chargement du fichier .CSV dans Google Maps

Après ma petite promenade, la carte SD contient un fichier intitulé "TRAJET.CSV". qui contient, sur chaque ligne, la latitude, la longitude et le temps.


Ces données brutes ne sont pas particulièrement agréables à contempler, mais il est facile de les visualiser dans Google Maps. On se dirige d'abord vers "My maps", et on créé une nouvelle carte.



Ensuite, on clique sur "Importer", et on sélectionne notre fichier "TRAJET.CSV".


On indique que la première colonne contient la latitude...


...alors que la deuxième est la longitude...


J'utilise la 3e colonne comme titre pour les repères...


...et mon trajet s'affiche à l'écran!




Lire aussi

Le module GPS NEO 6MV2 utilisé dans ce projet a été fourni gratuitement par DigitSpace.

Yves Pelletier (TwitterFacebook)


Aucun commentaire:

Publier un commentaire