DATA\WAX

Étiquette : Arduino

Utiliser l’Adafruit Ultimate GPS Logger Shield pour faire du suivi GPS sur QGIS

Il y a trois mois je vous expliquais comment j'avais créé un GPS Logger sur Arduino et comment je visualisais le résultat dans QGIS, mais depuis cet article j'ai exploité l'Adafruit Ultimate GPS Logger Shield différemment pour faire du suivi GPS avec QGIS :

IMG_3755

Adafruit Ultimate GPS Logger Shield

1. Ouvrir QGIS et sélectionner le menu Vue / Panneaux / Information GPS. Vous devriez ensuite voir une nouvelle fenêtre.

Information_GPS

2. Brancher en USB la carte Arduino avec l'extension GPS (mettre l'Adafruit Utlimate GPS logger shield en mode Direct pour recevoir les données NMEA issues directement de la puce GPS et attendre quelques secondes que la position du GPS se fixe)

3. Configurer la connexion du GPS : mActionOptions 

  • choisir le type connexion : par défaut j'ai laissé Autodétecter (Une fois connecté vous ne pourrez bien évidemment pas modifier le type de connexion sans vous déconnecter)
  • activer l'affichage du Curseur qui indiquera votre position à l'écran et choisir la taille de celui-ci
  • choisir le type de centrage de la carte par défaut en sélectionnant Toujours cela signifie que le curseur se trouvera toujours au centre de l'espace carte
  • si vous souhaitez enregistrer toutes vos positions GPS dans un Fichier journal au format NMEA vous pouvez renseigner le chemin qui vous convient

4. Lancer la connexion entre QGIS et le GPS (la connexion peut prendre quelques secondes) et vous devriez ensuite voir le curseur indiquant votre position dans l'espace carte

curseur

5. Aller ensuite dans l'onglet mActionToggleEditing et vous verrez en temps réel les informations GPS extraites de la trame NMEA qui sortent de la puce GPS (suivant le GPS utilisé vous verrez apparaitre plus ou moins d'informations)

Infos_TR

6. Pour aller plus loin, si vous souhaitez faire des relevés dans un fichier shape c'est possible :

  • Il vous faut créer une couche shapefile (points, lignes ou polygones) et la mettre à jour
  • Pour ajouter un point : faire simplement Ajouter un point dès que vous estimez que la position du GPS est satisfaisante
    Ajouter
  • Pour ajouter des lignes ou des polygones deux possibilités : 
    1- faire Ajouter un point de tracé pour chaque point GPS qui correspondra au tracé de votre ligne ou polygone (dès que deux points sont ajoutés le Tracé sera représenté) puis une fois que tous les points ont été créé faire Ajouter une ligne ou un polygone ce qui ajoutera l'entité à la couche en mise à jour et sélectionnée.
    2- cocher Ajouter automatiquement des points dans l'onglet Pister et ainsi vous verrez le tracé créé par le positionnement GPS  en temps réel que vous pourrez ensuite ajouter à la couche en mise à jour et sélectionnée en faisant Ajouter une ligne ou un polygone
    Ajouter_poly
  • Une fois que vous avez ajouté votre entité, le formulaire de la couche apparait ce qui vous permet de renseigner les informations que vous souhaitez

Nota :
> Si le Tracé ne vous convient pas, vous pouvez le supprimer en cliquant sur l'icône rafraichir à droite d'Ajouter un point de tracé
> Si vous souhaitez enregistrer automatiquement chaque nouvelle entité ajoutée dans une couche vous pouvez alors cocher dans le menu numérisation : Enregistrer automatiquement chaque entité ajoutée 
> N'oubliez pas de jeter un oeil à l'indicateur coloré du signal GPS :
 – vert : Bonne connexion 3D
 – jaune : Bonne connexion 2D
 – rouge : Correction mauvaise ou inexistante
 – gris : Pas de donnée

7. En fonction du GPS que vous utilisez, vous pouvez également visualiser la force du signal GPS de chaque satellite auquel vous êtes connecté : gpstrack_barchart ainsi que leur position grâce au graph polaire : gpstrack_polarchart mais avec l'Adafruit Ultimate GPS Logger Shield il n'est pas possible d'avoir ces informations…


PS : Le test a été réalisé avec QGIS 2.0.1-Dufour sur Mac OSX.

Créer facilement son GPS Logger avec Arduino et visualiser le résultat dans QGIS

Arduino c'est quoi ce machin là?

  • Une carte d’interface programmable capable de piloter des capteurs et des actionneurs afin de simuler ou créer des systèmes automatisés.
  • Un logiciel de programmation qui permet de programmer la carte en fonction du comportement désiré.
  • Le tout, logiciel comme matériel, est sous licence libre. Une grande communauté d’amateurs et de passionnés contribuent à développer des applications et à les partager.

Source : http://blog.crdp-versailles.fr/technogalois 

Que des bons points pour Arduino alors je me suis dit pourquoi je ne me lancerai pas en commençant par «The Arduino Starter Kit» (Le kit coute entre 80 et 100€ suivant les sites).

IMG_3648

Pour commencer, j’ai suivi quelques un des exemples proposés dans le kit et très vite j’ai réalisé que cette petite carte pouvait être d’un grand intérêt car très «flexible». En effet, il est possible d'y rajouter des extensions (shield) ou des composants directement. Par exemple, rajouter un clavier, un écran LCD, un lecteur de carte SD, une diode, un moteur… suivant le besoin que l’on a et ce qu'on souhaite développer. Pour faire simple y a une brique principale obligatoire (Arduino) qui peut contrôler des briques secondaires (shield ou composants) que l’on souhaite rajouter. C’est un peu comme des Lego avec la programmation en plus!

Les premiers tests réalisés, j’ai rapidement eu envie de passer à l’étape supérieure afin de créer mon propre GPS data logger à l’aide d’un shield GPS. Je me suis renseigné sur Internet et le shield qui me paraissait le plus complet car :

  • disposant d’un GPS
  • d’un emplacement pour carte SD
  • adapté à ma carte Arduino Uno (livré avec le kit)

était le shield créé par la société Adafruit (fabriquant et créateur de nombreux shield pour Arduino) : Adafruit Ultimate GPS Logger Shield.

IMG_3755

Une fois reçu, j'ai suivi les instructions du Wiki d'Adafruit qui explique comment brancher le shield et les bases de développement qui vont avec (Je vais pas ré-expliquer toutes les étapes ici car le Wiki est vraiment très bien fait). 

Ensuite après avoir suivi les éléments indiqués, j'ai alors obtenu des données NMEA (National Marine Electronics Association) dans un fichier TXT sur la carte micro SD. Ces données NMEA étant très brutes :

$GPGGA,093024.000,4337.9276,N,00350.7873,E,1,5,1.40,-10.4,M,49.7,M,,*46
$GPRMC,093024.000,A,4337.9276,N,00350.7873,E,0.37,197.15,131013,,,A*68

J'ai cherché à rendre le fichier en sortie plus lisible (en ayant pour idée de charger le fichier TXT comme un fichier texte délimité dans QGIS) mais pour cela ill a fallu déchiffrer les trames NMEA disponibles (GGA et RMC).

Puis en creusant sur internet, j'ai décidé de ne garder que la trame GGA qui m'a paru plus complète pour mon utilisation et voilà comment ça se traduit :

$GPGGA  : Type de trame
064036.289 : Trame envoyée à 06h40m36,289s (heure UTC)
4836.5375,N : Latitude 48,608958° Nord = 48°36'32.25" Nord
00740.9373,E : Longitude 7,682288° Est = 7°40'56.238" Est
1  : Type de positionnement 

  • 0 = invalid
  • 1 = GPS fix (SPS)
  • 2 = DGPS fix
  • 3 = PPS fix
  • 4 = Real Time Kinematic
  • 5 = Float RTK
  • 6 = estimated (dead reckoning) (2.3 feature)
  • 7 = Manual input mode
  • 8 = Simulation mode

04  : Nombre de satellites utilisés pour calculer les coordonnées
3.2  : Précision horizontale ou HDOP (Horizontal dilution of precision)
200.2,M  : Altitude 200,2, en mètres

 46.9,M  : Height of geoid (mean sea level) above WGS84 ellipsoid

,,,,,0000  : D'autres informations peuvent être inscrites dans ces champs
*0E  : Somme de contrôle de parité, un simple XOR sur les caractères précédents

 

Après avoir déchiffré cette trame GGA, j'ai adapté le code que vous trouverez ici pour obtenir :  DATE; HEURE; LATITUDE; LONGITUDE; ALTITUDE; NOMBRE DE SATELITTES; HDOP (Le code se charge sur la carte Arduino via l'application dédiée : http://arduino.cc/en/main/software)

log


Une fois le fichier TXT créé et structuré, il suffit d'ouvrir QGIS pour visualiser les points relevés en important le fichier comme une couche de texte délimité :

  • choisir le point-virgule comme délimiteur
  • sélectionner le champ X et Y (longitude/latitude)

Import_log

Faire ok et voilà le résultat :

logger_qgis

Le tracé va du jaune au rouge.

Bilan : J'ai créé un GPS Data logger que je peux adapter à mes besoins et d'une précision de 10m en XY pour environ 90€ 

image

  • Arduino Uno : 20€
  • Shield GPS Adafruit : 60€
  • Pile 9 volt : 5€
  • Carte SD 4Go : 5€

 

Copyright © 2020 DATA\WAX

Thème par Anders NorenHaut ↑