Header Ads

Un GPS pour Raspberry Pi - Exploitez les données de géolocalisation avec vos projets mobiles

Raspberry est une plateforme mobile par excellence. Abordable, assez économique en énergie et programmable en Python, elle connait un essor fulgurant chez les Maker.

Disposer d'une plateforme mobile c'est bien... mais pouvoir faire de la géolocalisation c'est mieux!
C'est ce nous vous proposons dans cet article... car MCHobby vient de publier un nouveau tutoriel permettant d'utiliser un GPS Ultime avec un Raspberry Pi.

Module GPS Ultime (Ultimate GPS) disponible chez MCHobby
Avec un tel module, vous pouvez localiser votre Pi, sa direction, sa vitesse et son altitude très facilement.

Comment connecter et utiliser un GPS
Deux choix s'offrent à vous pour la connexion matérielle:
  • Soit vous connecter directement le GPS sur la liaison série de votre Raspberry Pi accessible sur le GPIO, 
  • soit vous utilisez un convertisseur USB-Serie TLL (plus facile à mettre en oeuvre)
Ensuite, il faut utiliser un service (deamon en anglais) GPS pour capturer l'information en provenance du GPS. Cette opération est assez simple à réaliser.

Finalement, ne reste plus qu'a utiliser une code Python élémentaire pour exploiter l'information proposée par le Deamon GPS.

Tous cela est expliqué plus en détail dans notre Tutoriel.

Utiliser un convertisseur USB/Série
La manière la plus simple de commencer est d'utiliser un câble convertisseur convertisseur USB vers TTL série (outil abordable) avec votre module GPS.
Il est bien entendu possible d'utiliser directement l'UART Matériel de votre Pi, mais comme vous le constaterez sur ce tutoriel d'AdaFruit (Freeing UART on the Pi), c'est un peu plus compliqué d'autant qu'utiliser un adaptateur USB ne porte pas à conséquence.
Utiliser un convertisseur USB/Série
Utiliser le port Série Matériel du Pi
Il est possible d'utiliser directement l'UART du Raspberry Pi à la place de l'USB.
Si vous voullez utiliser l'UART matériel ("HW UART" en anglais) à la place du câble USB, c'est parfaitement possible... vous devez juste faire un peu plus d'opération pour libérer l'UART sur votre en Pi. En effet, par défaut, votre Raspberry réquisitionne cet UART pour y brancher attacher un terminal.
Pour commencer, raccordez le module GPS sur votre Pi comme indiqué ci-dessous. Faites des connexions croisées entre les pins TX et RX (le TX d'un périphérique vers le RX de l'autre et vice versa), et alimentez le GPS en 5V (sur sa broche VIN) depuis le Pi.

Utilisation du GPS Ultime avec un Pi-Cobler
Le GPS Ultime proposé chez MCHobby dispose d'un régulateur intégré. Donc, même s'il est alimenté en 5V, le niveau du signal sur les broches RX/TX sont toujours en 3.3V - et donc sécurisé pour votre Pi! 


Configurer le câble USB et installer GPSD
Une fois que vous avez branché le câble USB sur votre Pi, l'adaptateur devrait se présenter comme /dev/ttyUSB0 (cependant, le '0' pourait être différent si vous d'autres adaptateur ttyUSB sont présent).
Vous pouvez lister tous les périphériques ttyUSB en entrant la commande suivante dans la console/terminal

Notre Tutoriel reprend les quelques instructions nécessaires à cette tâche

Qu'est-ce qu'un Deamon ?

Un daemon ou démon désigne un type de programme informatique, un processus ou un ensemble de processus qui s'exécute en arrière-plan plutôt que sous le contrôle direct d'un utilisateur. Le terme daemon semble être introduit en 1963 par les concepteurs de CTSS du MIT, en réponse au « dragon », terme employé par les concepteurs d'ITS. Le rétro-acronyme Disk And Execution MONitor (moniteur de disque et d'exécution) a été inventé pour justifier le terme daemon après qu'il fut devenu populaire.
Les démons sont souvent démarrés lors du chargement du système d'exploitation, et servent en général à répondre à des requêtes du réseau, à l'activité du matériel ou à d'autres programmes en exécutant certaines tâches. Sous Microsoft Windows, ces fonctions sont exécutées par des programmes appelés « services », même si le terme « démon » semble de plus en plus utilisé.
Source: Deamon(informatique) sur fr.wikipedia.org

Installer le Deamon GPS (gpsd)
Le prochaine étape consiste à installer quelques logiciels sur votre Raspbérry Pi,logiciel capable de comprendre les données séries reçues sur /dev/ttyUSB et envoyées par le module GPS. Heureusement, d'autres volontaires ont déjà réaliser tout les programmes interprétant et décortiquant les données brutes envoyées par le GPS. Il est possible d'utiliser cette fonctionnalité (et bien d'autres) grâce à un package (paquet) nommé 'gpsd', qui agit essentiellement comme une couche logicielle située entre vos application et le matériel GPS. Capable de gérer les erreurs, il fournit une interface bien définie et commune à tous les modules GPS..

Pour installer gpsd, exécutez les commandes reprises dans notre Tutoriel.

Une fois GPSD installé, il est très facile de tester le tout à l'aide de la commande

cgps -s

Ce qui produit un résultat similaire :
Résultat de cgps
Du code Python
Maintenant que avez un GPS et état de marche et gpsd fonctionnant avec lui, il est temps de faire quelque-chose avec ces données!
Le plus facile pour démarrer est d'utiliser WebIDE (tuto en cours de réalisation) et un peu de code Python pour accéder à gpsd.
Créez un nouveau fichier dans WebIDE, ajoutez et exécutez ensuite le code suivant:
import gps
     
# Ecouter sur le port 2947 (gpsd) de localhost
session = gps.gps("localhost", "2947")
session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE)
     
while True:
    try:
         report = session.next()
         # Attendre après un rapport d'information 'TPV' et afficher l'heure
         # Pour voir toutes les données, dé-commentez la ligne ci-dessous
         # print report
         if report['class'] == 'TPV':
             if hasattr(report, 'time'):
                 print report.time
    except KeyError:
       pass
    except KeyboardInterrupt:
       quit()
    except StopIteration:
       session = None
       print "GPSD est arrete (has terminated)"


Ce qui devrait produit le résultat ci-dessous
Information affichée à partir d'un code Python sur un Raspberry Pi

Vous êtes plus intéressé par les données de localisation? Ce que vous aurez à faire, pour l'essentiel, est de parser les informations du rapport en suivant l'exemple du code ci-dessus.
Vous pouvez dé-commenter la logne 'print report' pour voir quelles sont les informations disponibles et ensuite regarder les différentes valeurs et nom de classe qui défilent. Ne vous restera plus, ensuite, qu'a sélectionner l'information qui vous intéresse.
Par exemple, vous pouvez utiliser le code suivant pour extraire la vitesse de la classe TPV:

        if report['class'] == 'TPV':
            if hasattr(report, 'speed'):
                print report.speed * gps.MPS_TO_KPH


Vous noterez au passage que la vitesse est fournie en Miles Per Hour (Mile par Heure) et qu'il faut la convertir en Kilomètre par heure en multipliant la vitesse avec la constante MPS_TO_KPH. Voila! Ce n'est vraiment pas compliqué... vous pouvez maintenant imaginer ce que vous pouvez réaliser à l'aide de la latitude, longitude, date et heure, vitesse, altitude, etc.!
Tutoriel
MCHobby investi du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Notre tutoriel reprend de nombreuses autres informations... n'hésitez pas à le consulter.
Où acheter
Tous les produits utilisé dans cet article et notre Tutoriel est disponible chez MCHobby