Connecter un GPS au Raspberry Pi


Achtung : Dieser Artikel wurde automatisch von Bing Translate übersetzt


Advertencia : Este artículo ha sido traducido automáticamente por Bing Translate

Aujourd’hui ca n’est pas vraiment un tutoriel mais plus des astuces pour connecter un module GPS à votre Raspberry Pi. En effet, la configuration est extrêmement simple grâce au module gpsd.

Raspberry Pi Home Server - Connecter un GPS

Toujours pour mon projet de Raspberry mobile, j’ai besoin de connaitre la position régulièrement. Donc quoi de mieux qu’un GPS.

Ajouter un GPS à votre Raspberry peut se faire de trois manières (ou plus si vous avez d’autres idées !) :

  • Réaliser un contrôleur GPS soit même à base de différents composants. Avantage : coût réduit, je pense moins de 20€. Seulement il faut, je pense, soit si connaitre soit oser se lancer.
  • Certains comme Adafruit, propose des cartes prêtes à l’emploi (comme ici). C’était assez tentant car on branche ça sur les GPIO et on contrôle tout. Seulement pour moi le prix était un frein : la carte, une antenne, un adaptateur pour l’antenne (c’est un peu abuser de vendre ça !) et éventuellement un connecteur pour le port USB.
    La facture monte donc à 57$ hors frais de port.
  • Le module GPS clé en main. En cherchant un peu j’ai trouvé que les BU-353 peuvent se connecter sur le Raspberry. Tout ça pour moins de 40$ en incluant les frais de port ! Assez tentant donc.

Partant donc du principe que je n’arriverais peut être pas à assembler mon GPS DIY, j’ai fait un petit tour sur un site de revente chinois et la commande a été rapidement passée. Le modèle est un module externe BU-353 qui se connecte en USB, avec un bel aimant en dessous pour le fixer ou une ventouse qui s’attache au câble. 37,80$ frais de port compris. Réception 10 jours plus tard :

Raspberry Pi Home Server - Connecter un GPS

Reste à le faire reconnaitre par le Raspberry Pi. Et pour ça rien de plus simple :

  1. Mettre à jour le système
    apt-get update && apt-get upgrade -y
  2. Installer les outils de gestion du GPS : gpsd
    apt-get install -y gpsd gpsd-clients python-gps

Voilà, c’est tout ! Vous avez même ce qu’il faut pour y accéder avec un script Python.

Pour contrôler le bon fonctionnement vous avez la commande cgps :

cgps -s

Raspberry Pi Home Server - Connecter un GPS - gspd - cgps

Et pour lire les données en Python, voici un exemple trouvé sur le site de Dan Mandle :

#! /usr/bin/python
# Written by Dan Mandle http://dan.mandle.me September 2012
# License: GPL 2.0
import os
from gps import *
from time import *
import time
import threading
gpsd = None #seting the global variable
os.system('clear') #clear the terminal (optional)
class GpsPoller(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
    global gpsd #bring it in scope
    gpsd = gps(mode=WATCH_ENABLE) #starting the stream of info
    self.current_value = None
    self.running = True #setting the thread running to true
  def run(self):
    global gpsd
    while gpsp.running:
      gpsd.next() #this will continue to loop and grab EACH set of gpsd info to clear the buffer
if __name__ == '__main__':
  gpsp = GpsPoller() # create the thread
  try:
    gpsp.start() # start it up
    while True:
      #It may take a second or two to get good data
      #print gpsd.fix.latitude,', ',gpsd.fix.longitude,'  Time: ',gpsd.utc
      os.system('clear')
      print
      print ' GPS reading'
      print '----------------------------------------'
      print 'latitude    ' , gpsd.fix.latitude
      print 'longitude   ' , gpsd.fix.longitude
      print 'time utc    ' , gpsd.utc,' + ', gpsd.fix.time
      print 'altitude (m)' , gpsd.fix.altitude
      print 'eps         ' , gpsd.fix.eps
      print 'epx         ' , gpsd.fix.epx
      print 'epv         ' , gpsd.fix.epv
      print 'ept         ' , gpsd.fix.ept
      print 'speed (m/s) ' , gpsd.fix.speed
      print 'climb       ' , gpsd.fix.climb
      print 'track       ' , gpsd.fix.track
      print 'mode        ' , gpsd.fix.mode
      print
      print 'sats        ' , gpsd.satellites
      time.sleep(5) #set to whatever
  except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
    print "\nKilling Thread..."
    gpsp.running = False
    gpsp.join() # wait for the thread to finish what it's doing
  print "Done.\nExiting."

En cas de soucis à lire les informations du GPS, le problème peut venir des droits sur le fichier utilisé dans /dev (souvent /dev/ttyUSB0). Pour y remédier, il faut modifier le fichier /lib/udev/gpsd.hotplug en ajoutant la ligne

chmod a+rw $DEVNAME

avant la ligne

gpsdctl $ACTION $DEVNAME

(source de l’astuce : ici)

Voici votre Raspberry mobile, autonome (grâce à l’alimentation avec 6 piles expliquée dans cet article) avec GPS connecté :

Raspberry Pi GPS

Vous remarquerez la petite lumière rouge sur le GPS qui indique la bonne alimentation. Elle reste fixe tant que le signal n’est pas fixé. Quand la position peut être reçue, la lumière se met à clignoter.

En espérant vous avoir un peu aidé pour vos projets 🙂

Vous aimerez aussi...

  • ronin

    Très intéressant pour le côté technique. Pour le côté pratique si on commence à rajouter des batteries, un GPS (et peu être un récepteur 3G plus tard ?) alors mieux vaux recondittionner un vieux téléphone android pour ça. Après tout c’est linux derrière également. Le seul intérêt que je verrais au raspberry dans ce cas est la possibilité de rajouter des interfaces dont le téléphone ne dispose pas et encore on peut imaginer de passer par l’USB en mode hôte pour les tels qui le supporte.

    • C’est surtout le coté interface effectivement. On peut maitriser totalement la partie hardware avec de l’électronique si besoin …

  • maximran

    J'ai une question, Je veux utiliser python pour mon projet, et j'ai déjà installer le gpsd et déjà copier vos codes. Cependant, Lorsque j'essaie d'exécuter sur idle3, il dit il n'y a pas nom de module gps. (erreur à la ligne 5). Que dois-je faire?
    et dans votre projet, vous utilisez ralenti ou idle3?

    • Hello,

      Did you install the python-gps package (from step 2) ?
      I use NetBeans for my developments

  • Glidux

    Salut, ton article est très intéressant, merci. Y a t-il une solution pour sauvegarder et exploiter les données via xml de Google Earth?

    • Salut,
      Une fois les donnees captées, il suffit de les sauvegarder au format kml. Google explique comment structurer. En python,c’est relativement facile

      • Glidux

        Ok, tout simplement 🙂
        Merci Chris

  • Damien

    Bonsoir, j’ai suivi le tuto mais je n’obtient pas de fix alors que la led clignotte, que dois je faire ?

    • Bonjour. Que donne les outils avec gpsd ? De mon coté le fix n’est pas tres stable car il peut prendre 5 à 10 minutes sur un demarrage à froid et pas forcement avec succes. Ca doit depebndre du modele de GPS je suppose

  • Pingback: Setup USB GPS - Headstation()

Handpicked links

Mise en cache objet de 2064/2287 objets utilisant disk Mise en cache utilisant disk: enhanced Mise en cache de base de données 12/75 requêtes dans 0.047 secondes utilisant disk Served from: pihomeserver.fr @ 2017-08-21 04:13:03 by W3 Total Cache -->