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 aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...