Chapeau GPS Raspberry Pi et Python

Chapeau GPS Raspberry Pi et Python.pngv1561727022
Chapeau GPS Raspberry Pi et Python.pngv1561727022

Ce tutoriel suppose que vous utilisez une installation Raspbian à jour, avez accès à LXTerminal ou SSH et disposez d’une connexion Internet!

Nous allons passer par les étapes sur la façon d’utiliser un module GPS avec votre Raspberry Pi! Dans ce tutoriel, nous allons utiliser le HAB GPS HAT!

Par défaut, la connexion à la console du port série du Raspberry Pi est activée. Nous devons désactiver cela avant de pouvoir utiliser le port série pour nous-mêmes.

Pour ce faire, chargez simplement l’outil de configuration de Raspberry Pi:

sudo raspi-config

Passez ensuite à l’option 8 – Options avancées

Chapeau GPS Raspberry Pi et Python

Passez ensuite à l’option A8 – Série

1592296206 54 Chapeau GPS Raspberry Pi et Python

Passons à «non»

1592296207 42 Chapeau GPS Raspberry Pi et Python

Et enfin «ok»

1592296207 567 Chapeau GPS Raspberry Pi et Python

Allez maintenant dans «Terminer».

Si vous utilisez un Raspberry Pi 3, il existe des étapes supplémentaires pour libérer la série. Si vous n’utilisez pas de RPi3, passez à la section « Éteindre votre Pi avec: ».

Nous devons d’abord modifier le fichier de configuration de démarrage

sudo nano /boot/config.txt

et changez de ligne:

enable_uart = 0

à:

enable_uart = 1

Ensuite, nous devons ajouter les lignes suivantes:

dtoverlay = pi3-miniuart-bt
force_turbo = 1

Ensuite, nous devons modifier le fichier txt cmdline

sudo nano /boot/cmdline.txt

et supprimez toutes les références « console = », par exemple, si votre fichier txt cmdline ressemble à ceci:

dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p7 rootfstype = ext4 ascenseur = date limite fsck.repair = oui rootwait

changez-le en ceci:

dwc_otg.lpm_enable = 0 root = / dev / mmcblk0p7 rootfstype = ext4 ascenseur = date limite fsck.repair = oui rootwait

Enfin, nous devons modifier le fichier de service hciuart:

sudo nano /lib/systemd/system/hciuart.service

Modifiez cette ligne:

After = dev-serial1.device

pour ça:

After = dev-ttys0.device

Et puis changez cette ligne:

ExecStart = / usr / bin / hciattach / dev / serial1 bcm43xx 921600 noflow –

pour ça:

ExecStart = / usr / lib / hciattach / dev / ttys0 bcm43xx 460800 noflow –

Éteignez votre Pi avec:

arrêt sudo -h maintenant

Avec le Raspberry Pi éteint, nous pouvons maintenant brancher notre GPS HAT et attacher une antenne.

1592296207 948 Chapeau GPS Raspberry Pi et Python

Une fois que tout est branché, nous pouvons mettre le Pi sous tension.

Avant d’aller plus loin, nous devons nous assurer que notre GPS HAT a un «verrou». Pour le savoir, vous devrez vous reporter au manuel de votre GPS HAT, ou si vous utilisez le HAB Supplies GPS HAT, recherchez un voyant vert clignotant, étiqueté «timepulse». Gardez à l’esprit que le HAT peut mettre longtemps à se verrouiller, alors soyez patient. Si vous avez du mal à obtenir un verrou après 30 minutes, essayez de déplacer votre antenne. Pour de meilleurs résultats, assurez-vous que l’antenne est à l’extérieur et a une ligne de vue directe vers le ciel.

1592296207 539 Chapeau GPS Raspberry Pi et Python

Une fois que nous avons un verrou GPS, nous pouvons faire un test rapide pour nous assurer que notre Pi est capable de lire les données fournies par le HAT.

Alors, connectez-vous à votre Pi. Vous pouvez le faire via SSH ou via la méthode normale! Notez s’il vous plaît. Nous utilisons Raspian à partir de Terminal et avons une connexion Internet!

Commencez par configurer le port série:

stty -F / dev / ttyAMA0 brut 9600 cs8 clocal -cstopb

1592296208 951 Chapeau GPS Raspberry Pi et Python

Maintenant, lancez simplement:

cat / dev / ttyAMA0

Vous devriez voir quelque chose comme ceci:

1592296208 356 Chapeau GPS Raspberry Pi et Python

Ce que vous voyez ici est la sortie brute de la «phrase NMEA» GPS du module GPS. Les lignes qui nous intéressent sont celles commençant par $ GNGGA (encore une fois, cela peut différer en fonction de votre GPS HAT que vous avez, mais recherchez la ligne qui a « GGA » au début.)

Si vos lignes $ GNGGA semblent un peu vides et contiennent beaucoup de virgules «  », sans rien entre elles, alors vous n’avez pas de verrou GPS.

Il est maintenant temps d’accéder à ces informations dans un script python!

Nous allons utiliser 2 bibliothèques dans notre script:

  1. en série
  2. pynmea2

La première, série, nous n’avons pas besoin d’installer quoi que ce soit, il s’agit d’une bibliothèque par défaut et sera préinstallée avec Raspbian.

Le second, pynmea2, nous devons installer. Alors faisons ça! (pynmea2 est une bibliothèque facile à utiliser pour analyser les phrases NMEA. Nous pourrions écrire notre propre analyseur, mais pourquoi réinventer la roue!)

Si vous n’avez pas déjà installé «pip», commencez par l’installer:

sudo apt-get install python-pip

Une fois pip installé, nous pouvons continuer et installer pynmea2 en utilisant pip:

sudo pip install pynmea2

Nous allons maintenant commencer à enregistrer nos données GPS à l’aide d’un script Python. Il s’agit d’un script de base qui lit le port série, transmet chaque ligne à notre analyseur pynmea2 et imprime simplement une chaîne formatée contenant des informations.

Nous devons maintenant télécharger le script python sur notre Raspberry Pi, vous pouvez le voir ici – https://github.com/modmypi/GPS/blob/master/gps.py. Pour ce faire, nous devons utiliser la commande GitHub Clone suivante. Cette commande télécharge le référentiel Git dans votre répertoire actuel, dans ce cas le répertoire de base du Raspberry Pi. Vous pouvez changer cela ou créer un nouveau dossier si vous le souhaitez.

git clone git: //github.com/modmypi/GPS

Nous devons maintenant rechercher le référentiel que nous venons de télécharger. Modifiez donc le répertoire dans le dossier GPS:

cd GPS

Nous pouvons maintenant exécuter notre script Python! Pour commencer, tapez simplement:

sudo python gps.py

Vous devriez voir des résultats comme ceux-ci:

1592296208 145 Chapeau GPS Raspberry Pi et Python

C’est ça! Vous suivez maintenant vos données GPS!

CODE

import serial
import pynmea2

def parseGPS(str):
    if str.find('GGA') > 0:
        msg = pynmea2.parse(str)
        print "Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude: %s %s" % (msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,msg.altitude_units)

serialPort = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.5)

while True:
    str = serialPort.readline()
    parseGPS(str)