Publié le 14 mars 2020 - par

Un GPS USB pour le Raspberry Pi

C’est un article de Frédéric (F4EED) qui m’a donné l’idée de tester si le modèle de GPS qu’il a utilisé sur PC avec Ubuntu  fonctionne également sur un Raspberry Pi avec Raspbian. Le test consiste à lire les données NMEA sous forme ASCII, puis de les envoyer vers plusieurs logiciels de cartographie GPS.

Un GPS USB pour le Raspberry Pi

Attention !
Les logiciels GPS mis en oeuvre dans ce tutoriel ne sont non garantis pour fournir un service professionnel. Vous engagez votre propre responsabilité en les utilisant et vous ne pouvez pas engager celle des auteurs des logiciels ou de framboise314.fr

Matériel et logiciels utilisés

Pour tester ce GPS j’ai utilisé

  • Un Raspberry Pi 4 4Go
  • Une carte microSD Sandisk 16Go classe 10 – A1
  • La version de Raspbian disponible au 11 mars 2020
  • Installation avec Raspberry Pi Imager + Mise à jour

Le GPS

Je n’ai pas cherché à changer de modèle de GPS, j’ai utilisé le même modèle que Frédéric trouvé chez AliExpress pour 11€ + 2,50€ de port (publicité gratuite). C’est un GN-803G qui reçoit plusieurs types de données GPS* d’après le fabricant (GPS, QZSS et GLONASS).
* GPS est le système US, QZSS est le système Japonais et GLONASS le système Russe.
Il est fabriqué par Stoton en Chine et est identifié comme U-Blox AG 8 dans la liste des périphériques USB. Le fabricant fournit également des programmes pour tester et configurer ses modules sous Windows, des drivers  ainsi que la documentation. Le récepteur reçoit 72 canaux (GPS & QZSS : 1575.42 MHz, GLONASS : 1598.0625 ~ 1605.375 MHz.
U-Blox Center gère tous les modèles de la marque, en USB et en RS232.

U-Blox Center sous Windows

Si vous voulez vous amuser un peu sous Windows, installez les drivers fournis par Stoton, configurez le port série (pour moi c’était COM9 sur USB) et lancez u-center :

Vous avez une console qui permet de vérifier le bon fonctionnement, qui affiche toutes les informations disponibles. Si vous ouvrez la console texte (View > Text Xonsole) vous lirez les trames NMEA.

En fonction de vos besoins vous pouvez afficher la trame au format hexadécimal ou sous forme de paquets.

Enfin pour information j’ai utilisé le GPS à l’intérieur, à environ 1 mètre d’une fenêtre. Le nombre de satellites reçus est conséquent et le positionnement devrait se faire même dans des cas difficiles.

Le GPS GN803-G sur le Raspberry Pi

Déballage

Le GPS est livré dans une boîte en carton pas très solide. Heureusement, il était très bien emballé et n’a pas souffert du transport. La livraison depuis la Chine a été rapide malgré le coronavirus en pleine activité (commandé le 25/02 reçu le 11/03)

Le dessous du GPS est équipé d’un aimant qui permet de le coller à une carrosserie. Une protection en silicone évite les rayures.

Le fabricant annonce une protection IPX6 (IPX7 sur le devant de la boîte). L’indice IPX6 signifie que le produit est résistant aux éclaboussures et à la pluie. Il ne doit pas être immergé. On peut donc sans doute l’utiliser à l’extérieur par tout temps (non testé)

L’acquisition se fait à partir de -148dBm et le suivi ne nécessite que -167dBm, ce qui explique sans doute les performances en intérieur.

La même boîte doit servir pour les différents modèles. Un coup de feutre pour identifier le modèle livré 😉 

J’ai un peu arraché la boîte en l’ouvrant… Elle était intacte à l’arrivée

Le dessus du GPS est en plastique résistant, une LED indique le bon fonctionnement. Elle clignote une fois par seconde.

Sous le GPS on voit les vis de montage (les petits curieux pourront jeter un coup d’oeil à l’intérieur). Un QRcode renvoie sur la page Stoton où on trouvera plus d’informations sur le module interne.

Branchement

Rien de sorcier ici, le GPS est pourvu d’un câble de 1,50m qu’il suffira de brancher sur une prise USB du Raspberry Pi (une USB 2 suffira sur le Pi4).

Vérification avec dmesg

Faites un dmesg en ligne de commande AVANT de connecter le GPS, regardez ce qui est affiché sur les dernières lignes. Maintenant connectez le GPS à une des prises USB et refaites dmesg. Vous verrez apparaître les lignes ci-dessus prouvant que le GPS a bien été détecté (u-blox GNSS receiver) et identifié.

Vérification avec lsusb

Avec lsusb vous verrez également le GPS sous l’appellation U-Blox AG. Maintenant que nous sommes certain(e)s de la présence du GPS, il reste à afficher les trames NMEA.

Choix d’un terminal série

Habituellement j’utilise minicom (voir par exemple cet article sur l’hexa ou celui-ci sur le port série du Pi3). Il faut avouer que quand on en a l’habitude ça va, mais qu’il est assez peu convivial… J’ai donc opté pour cutecom cette fois, c’est un terminal série graphique qui dépaysera moins les débutants. Pour les anciens c’est un peu comme passer de vi à nano 😀 

Installer cutecom

Il suffit de lancer l’installation avec sudo apt-get install cutecom et le reste se fait tout seul.

Lancez cutecom en tapant cutecom dans la console texte ou dans le menu principal allez sur  Outils système > Cutecom. La fenêtre du terminal s’ouvre, nous allons configurer l’émulateur. Cliquez sur Settings (réglages) en haut à droite de la fenêtre.

Dans la fenêtre réglez la vitesse à 9600 bits/s et choisisez le Device correspondant à la connexion de votre GPS. Pour moi c’était /dev/ttyACM0. Cliquez sur le bouton Open en bas à gauche.

Si vous voyez les données NMEA défiler dans la partie basse de la fenêtre c’est gagné, votre GPS envoie bien les données au Raspberry Pi.

Attention !
Si les données n’apparaissent pas, il est inutile d’aller plus loin, il faut comprendre ce qu’il se passe. La suite de cet article ne fonctionnera pas si cette étape ne fonctionne pas.

Installer gpsd

gpsd c’est quoi ?

gpsd est un démon (un daemon est un programme lancé automatiquement au démarrage du système et qui s’exécute en arrière plan). gpsd reçoit les données d’un ou plusieurs récepteurs GPS ou AIS connectés à un ordinateur hôte par des ports série ou USB, fournissant des informations sur la position, le parcours et la vitesse des récepteurs connectés. Il peut être interrogé sur le port TCP 2947 de l’ordinateur hôte.

Avec gpsd, plusieurs applications clientes  peuvent partager l’accès aux récepteurs GPS pris en charge sans conflit ni perte de données. De plus gpsd répond aux requêtes dans un format qui est nettement plus facile à analyser que le NMEA 0183 émis par la plupart des GPS. 

gpsd est utilisé dans de nombreux systèmes mobiles embarqués. Il est à la base du service de cartographie sur les téléphones Android. On le retrouve dans les drones, les sous-marins, les robots et les voitures sans conducteur. il est de plus en plus répandue dans les dernières générations d’avions commerciaux, les systèmes de navigation maritime et les véhicules militaires. (d’après https://gpsd.gitlab.io/gpsd/index.html)

Installation de gpsd

Pour installer gpsd, lancez l’installation comme ci-dessus. Il faut également installer gpsd-clients. Une fois le logiciel installé, on passe à la configuration. Vous pouvez faire une copie de sauvegarde du fichier avant de le modifier, par sécurité.

Petite explication du contenu :

  • START_DAEMON=”true” signifie que vous voulez que gpsd se lance au démarrage comme daemon (service du système)
  • USBAUTO=”true” permet de connecter automatiquement les récepteurs GPS à gpsd quand on les connecte sur un port
  • GPSD_OPTIONS=”-n” si vous souhaitez que le GPS recherche les satellites à la mise en route pour synchroniser l’heure
  • DEVICES=”/dev/ttyACM0″ dépend de votre système. C’est le même nom que celui que vous avez trouvé avec cutecom à l’étape précédente.

Sauvegardez les modifications CTRL X, puis rebootez Raspbian.

Tester le fonctionnement de gpsd

Avec les clients de gpsd nous avons installé gpsmon qui est un moniteur permettant de se connecter à gpsd et de vérifier que tout fonctionne bien, en mode texte. Tapez gpsmon dans une ligne de commande.

Si vous avez un écran comme celui-ci tout va bien, on va pouvoir continuer. Si l’écran est vide ou si vous avez des erreurs qui s’affichent il va falloir mettre tout ça d’applomb avant de continuer.

Les logiciels de GPS

FoxTrot GPS

Dans le navigateur du Raspberry Pi, ouvrez la page foxtrotgps.orgCliquez sur le lien de téléchargement, dans la page qui s’ouvre téléchargez la dernière version foxtrotgps-1.2.2.tar.xz au moment où j’écris ces lignes (13/3/2020). Ajouter les packets nécessaires à la compilation (2 minutes sur Pi4 4Go)

Ouvrez le dossier Downloads et décompactez le fichier archive

Cette opération décompresse le contenu de l’archive dans un dossier foxtrotgps-1.2.2

Vous pouvez maintenant démarrer  foxtrotgps en ligne  de commande en tapant foxtrotgps

Après redémarrage de Raspbian, vous trouverez également FoxtrotGPS dans le menu accessoires.

Position du récepteur GPS sur la carte. Vous pouvez zoomer sur l’image et FoxtrotGPS vous indique la position actuelle. En cliquant sur l’ampoule en haut à gauche (Affiche Info) vous aurez les valeurs chiffrées. Le logiciel dispose de nombreuses possibilités. Le but de cet article étant de montrer que l’utilisation du GPS est possible sur un Raspberry Pi, je m’arrêterai là.
Vous pourrez avoir plus d’infos [en Anglais] sur cette page, en particulier la gestion des POI (Points d’intérêt), les options de la ligne de commande, la géolocalisation de photos etc.

OpenCPN pour Raspberry Pi

OpenCPN c’est quoi ?

OpenCPN existe pour PC (Windows, Linux, Mac) et pour Androïd. C’est l’acronyme de “Open Source Chart Plotter Navigation Software“. C’est un logiciel libre dans les versions sous Windows, Linux et MAC. Il existe en Français dans toutes les versions et affiche des cartographies, les données des instruments du bord, des marées, des courants, météorologiques, l’AIS, etc … Il permet la définition de routes à suivre et l’enregistrement des données NMEA disponibles sur le bateau.
Il concourt à la sécurité de l’équipage et du bateau grâce à plusieurs outils de prévention, permettant de mettre en place des alarmes. Il est capable d’agir sur le pilote automatique pour que le bateau suive une route prédéfinie. (source shoreline.fr)

Installer OpenCPN 5.0.0

Les informations sur OpenCPN proviennent du site web de l’application. Le site donne les instructions pour installer le logiciel OpenCPN sur le Raspberry Pi dans les versions 2, 3 ou 4. Le site propose également des plugins pour compléter l’installation et ajouter de nouvelles fonctionnalités. A nouveau je rappelle que ceci n’est pas un tutoriel sur OpenCPN, mais un test de fonctionnement basique sur le Raspberry Pi.

Dans une fenêtre de terminal ouvrez le fichier sources.list avec nano.

Positionnez le curseur en bas du fichier et si vous êtes sous Raspbian Stretch ajoutez cette ligne :

Si vous utilisez la dernière version, Raspbian Buster, ajoutez cette ligne en fin du fichier sources.list.

Sauvegardez le fichier en sortant avec CTRL X et en validant la réponse. On va maintenant installer les certificats nécessaires à l’installation. Il est possible que la dernière version soit déjà présente sur Raspbian, dans ce cas le système vous en avertira.

Une fois vérifiée la disponibilité du gestionnaire de certificats, tapez :

La clé publique nécessaire à l’installation est récupérée. On va prendre en compte la ligne ajoutée à sources.list :

Les système met à jour la liste des paquets et nous pouvons lancer l’installation :

Et c’est tout, vous venez d’installer OpenCPN. Cette fois vous retrouvez l’icone dans la rubrique Éducation :

Cliquez sur l’icône pour ouvrir OpenCPN

Lisez attentivement la notice si vous devez utiliser OpenCPN dans la vraie vie et sur un bateau ! Si vous avez tout lu (je compte sur vous, hein ?) Cliquez sur Valider. Le logiciel s’ouvre avec une vue vers le Golfe de Guinée (Ouest de l’Afrique).

Utilisez la molette de la souris ou les icônes en forme de loupe (en bas à droite) pour changer la taille de la carte. Clic gauche pour déplacer la vue. Cliquez sur la deuxième icône à gauche (en partant du haut) en forme de roue dentée (Options). 

Dans la fenêtre Options qui s’ouvre, ouvrez l’onglet Connexions puis cliquez sur le bouton Ajouter une connexion (en bas à gauche de la fenêtre).

Configurez la connexion comme ci-dessus, indiquez l’adresse locale 127.0.0.1, laissez le port par défaut (2947). Cette adresse est l’adresse IP locale sur tous les ordinateurs. Le logiciel ira chercher les informations sur cette adresse, au port 2947.  Cliquez sur le bouton Appliquer (en bas à droite).

Si vous voulez vérifier que les données NMEA sont bien transmises à OpenCPN suite à votre configuration, cliquez sur la case “Ouvrir la fenêtre d’affichage des données NMEA“. Vérifiez dans la fenêtre Affichage des phases NMEA que les données s’affichent correctement. Si c’est le cas, tout va bien, on peut continuer… Cliquez sur OK (en bas à droite).

La position GPS est affichée, le logiciel OpenCPN fonctionne sur le Raspberry Pi. A vous de jouer maintenant pour aller plus loin avec OpenCPN.

<======== EDIT du 16/03/2020 =========>

Concernant OpenCPN, il y a une distribution complète pour la navigation qui existe, c’est Openplotter
http://sailoog.com/openplotter
Déjà essayé ça a l’air de la bonne caisse à outils pour les marins qui “s’égarent” sur ce site

MErci Denis pour cette info.

Navit pour le Raspberry Pi

Navit c’est quoi ?

Navit est un logiciel libre de navigation routière (ou de guidage routier) sous Linux ou autres systèmes d’exploitation qui est capable d’utiliser les données OSM (OpenStreetMap). Il est non seulement compatible Linux mais il est aussi utilisable sur un certain nombre d’appareils mobiles sous Android ou Windows. Ce projet utilise un fichier “.bin” généré à partir des données cartographiques d’OSM. Il peut ainsi effectuer un rendu de la carte en temps réel. En plus d’être capable d’effectuer des recherches par adresse, de vous guider en temps réel, de recalculer l’itinéraire en cas d’erreur, il peut aussi afficher la carte sous forme de perspective en 3 dimension vu en hauteur comme le verrait un oiseau. Consultez le site du projet pour plus d’informations. (d’après OpenStreetMap)

Installer Navit

Bon, là on ne va pas s’embêter, Navit est disponible dans le dépôt Raspbian

Répondez O pour accepter l’installation et…

Vous pouvez lancer Navit depuis la rubrique Accessoires du Menu Principal.

Bon… ce n’est pas terrible, on a une fenêtre monochrome avec une pastille qui doit indiquer la position du récepteur GPS. Par contre pas de carte ! Allez, je vous explique. Il va falloir télécharger la portion du monde qui vous intéresse, sous forme de carte. Attention, plus la zone est grande, plus le fichier est encombrant 😛  Ensuite on indiquera à Navit d’utiliser cette carte qu’on vient de télécharger. On y va ?

Télécharger la carte qui vous intéresse

Rendez vous sur le site de téléchargement de Navit.

Le bouton Navigate est coché, il va permettre de choisir la zone qui vous intéresse. Utilisez la molette de la souris (Zoom) et le clic gauche (déplacement) pour choisir une zone.
Si vous souhaitez récupérer une zone déjà sélectionnée, passez par le bouton Predifined Area.

Lorsque vous êtes satisfait(e) de la zone affichée, cliquez sur le bouton select pour “couper” la partie de la carte que vous voulez utiliser.

Avec la souris sélectionnez la zone à récupérer (clic gauche et tracer le rectangle). Quand la zone est définie, cliquez sur le bouton Get map!

Le fichier osm_bbox_3….bin est téléchargé (voir en bas à gauche de la fenêtre). Attendez la fin du téléchargement.

Le fichier est disponible dans le dossier Downloads. Pour la zone que j’ai sélectionnée, il représente 207Mo environ. Il reste à indiquer à Navit que c’est cette carte qu’il doit utiliser. Avant de continuer j’ai renommé la carte creusot.bin pour faciliter les choses.

Pour le centrage de la carte, placez la souris sur l’endroit que vous voulez voir apparaître au centre de la fenêtre GPS, et relevez les coordonnées en bas à droite.

Sauvegardez le fichier /etc/navit/navit.xml avant de le modifier

Dans navit.xml, reportez les coordonnées du centre de la carte dans cette ligne :

et indiquez la carte à utiliser

Il n’y a plus qu’à relancer Navit et il affichera la carte que vous avez choisie.

Comme prévu, la carte est centrée sur Le Creusot. Vous pouvez aussi changer d’autres paramètres, mais je vous laisse découvrir tout ça ainsi que l’utilisation de Navit avec OpenStreetMap.

Souvenir

Il y a quelques années j’avais réalisé un GPS avec Navit et ce GPS-mouse que j’ai ressorti d’un carton. Une fois connecté à la place de celui que j’ai présenté en début d’article, tout a fonctionné normalement.

Sous le GPS deux patins anti rayure et un aimant “costaud”

Qui permet de “coller” le récepteur GPS dans la voiture pour l’utiliser en réel.

Après, le montage n’a pas la même allure qu’un GPS de marque. Ici on a une boîte en carton, un pack batterie pour l’alimentation, le GPS et même un haut-parleur  puisque j’avais installé l’interface vocale pour le guidage 🙂

Ici sur l’écran (écran officiel Raspberry Pi) le récepteur est positionné dans un rond-point et la flèche indique l’église

Que je voyais simultanément par la fenêtre de la voiture.

Ici c’est un essai de navigation avec un itinéraire.

Comme vous le voyez il y a de quoi s’amuser et encore plein de choses à découvrir.

Conclusion

Encore merci à Frédéric F4EED qui m’a autoriser à utiliser son article pour réaliser celui-ci. Vous avez maintenant plusieurs possibilités pour installer un GPS sur votre Raspberry Pi. Ajoutez un écran tactile et vous ne serez pas loin d’avoir un système opérationnel !
Découvrez les fonctionnalités de ces différents logiciels, en sachant qu’il y aura un temps de découverte, de lecture de docs, de blogs, de visualisation de vidéos. Mais vous aurez VOTRE GPS et vous pourrez vous amuser avec cette installation.

N’oubliez pas également que le GPS est une source d’heure de haute précision, et que cette heure est tout à fait utilisable avec le Raspberry Pi si vous devez horodater des données. Pour une douzaine d’euros, ça remplace avantageusement une carte RTC !

Sources

FoxtrotGPS

OpenCPN

Navit

 

 

 

 

 

 

 

Share Button

À 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.

9 réflexions au sujet de « Un GPS USB pour le Raspberry Pi »

  1. bzh44

    Encore un article intéressant et bien complet. Pour ce qui est de la source horaire de haute précision j’apporterai justement une précision supplémentaire. Le temps GPS n’est pas le même que le temps retourné par un serveur NTP. Un serveur NTP retourne l’heure UTC qui varie de plusieurs secondes par rapport au TAI (Temps Atomique International). Le TAI ne varie pas alors que l’UTC évolue en fonction des variations dans la rotation de la terre. Quant au temps GPS il ne varie pas non plus mais il a été synchronisé sur le temps UTC à la date du 6 janvier 1980. On peut le constater par exemple sur ce site http://leapsecond.com/java/gpsclock.htm qui affiche les différentes horloges. Cette différence est rarement importante dans nos applications mais c’est bien d’en avoir conscience. Si vous constatez que votre PI synchronisé sur le GPS n’est pas à la même heure que votre ordinateur synchronisé sur un serveur NTP… pas de panique, c’est normal.

    Répondre
    1. François MOCQ Auteur de l’article

      Merci 🙂
      et merci pour les infos complémentaires
      je suis en train de tester ntp sur un pi et avec les locales réglées et le GPS en question, l’heure est jute, après quelques secondes d’attente au lancement du bureau 🙂

      Répondre
  2. Ping : L'heure GPS sur votre Raspberry Pi - Framboise 314, le Raspberry Pi à la sauce française....

    1. François MOCQ Auteur de l’article

      Bonjour
      un module qui reçoit Galilée envoie également des trames NMEA. A mon avis il s’intègre de la même façon.
      Si un spécialiste passe par là il pourra donner son avis 🙂
      cdt
      François

      Répondre
  3. Didier B

    Bonjour, Très bel article, avec une excellente couverture du sujet !
    Un grand merci pour la présentation de gpsmon, qui est la façon la plus simple de contrôler la bonne marche d’un GPS (je cherchais cela sous linux depuis un moment !

    U center, permet de configurer les recepteur GNSS Ublox, qui à partir de la version 8 permettent de recevoir le GNSS Glonas, ainsi que théoriquement Galileo et Beidou, mais je n’ai jamais pu apercevoir l’ombre d’un satellite Galileo ou Beidou …

    Enfin pour les voileux, et autres internautes flottants, OpenPlotter est un must à découvrir absolument !

    Répondre
  4. Fabien

    Bonjour, lorsque je souhaite modifier le fichier via sudo nano /etc/navit/navit.xml je modifie les lignes, enregistre et rien à faire la carte ne s’ouvre pas. Je ne suis pas contre un petit coup de pouce svp ! Je précise que je suis sur un rpi4. Merci d’avance

    Répondre

Laisser un commentaire

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

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

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