- Composants requis:
- Module GPS et son fonctionnement:
- Préparation du Raspberry Pi pour communiquer avec le GPS:
- Connexions pour l'interfaçage du module GPS Raspberry Pi:
- Test avant le script Python:
L'une des plates-formes embarquées les plus cool comme l'Arduino a donné aux fabricants et aux bricoleurs la possibilité d'obtenir facilement des données de localisation à l'aide du module GPS et ainsi de construire des choses qui dépendent de la localisation. Avec la quantité d'énergie fournie par le Raspberry Pi, il sera certainement assez génial de créer des projets basés sur GPS avec les mêmes modules GPS bon marché et c'est l'objet de cet article. Aujourd'hui, dans ce projet, nous allons interfacer le module GPS avec Raspberry Pi 3.
Le but de ce projet est de collecter des données de localisation (longitude et latitude) via UART à partir d'un module GPS et de les afficher sur un écran LCD 16x2, donc si vous n'êtes pas familier avec le fonctionnement de l'écran LCD 16x2 avec le Raspberry Pi, c'est un autre belle opportunité d'apprendre.
Composants requis:
- Raspberry Pi 3
- Module GPS Neo 6m v2
- Écran LCD 16 x 2
- Source d'alimentation pour le Raspberry Pi
- Câble LAN pour connecter le pi à votre PC en mode sans tête
- Câbles Breadboard et Jumper
- Résistance / potentiomètre à l'écran LCD
- Carte mémoire 8 ou 16 Go exécutant Raspbian Jessie
En dehors de cela, nous devons installer la bibliothèque GPS Daemon (GPSD), la bibliothèque LCD Adafruit 16x2, que nous installerons plus tard dans ce tutoriel.
Ici, nous utilisons Raspberry Pi 3 avec Raspbian Jessie OS. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi.
Module GPS et son fonctionnement:
GPS signifie Global Positioning System et est utilisé pour détecter la latitude et la longitude de n'importe quel endroit sur la Terre, avec l'heure UTC exacte (temps universel coordonné). Le module GPS est le composant principal de notre projet de système de suivi de véhicule. Cet appareil reçoit les coordonnées du satellite pour chaque seconde, avec heure et date.
Le module GPS envoie les données liées à la position de suivi en temps réel, et il envoie autant de données au format NMEA (voir la capture d'écran ci-dessous). Le format NMEA se compose de plusieurs phrases, dans lesquelles nous n'avons besoin que d'une seule phrase. Cette phrase commence à partir de $ GPGGA et contient les coordonnées, l'heure et d'autres informations utiles. Ce GPGGA est appelé Global Positioning System Fix Data. En savoir plus sur la lecture des données GPS et de ses chaînes ici.
Nous pouvons extraire les coordonnées de la chaîne $ GPGGA en comptant les virgules dans la chaîne. Supposons que vous trouviez la chaîne $ GPGGA et que vous la stockiez dans un tableau, alors Latitude se trouve après deux virgules et Longitude après quatre virgules. Maintenant, ces latitude et longitude peuvent être placées dans d'autres tableaux.
Vous trouverez ci-dessous la chaîne $ GPGGA, accompagnée de sa description:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510,4, M, 43,9, M`` * 47
$ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, hauteur, M, données de somme de contrôle
Identifiant |
La description |
$ GPGGA |
Données de correction du système de positionnement global |
HHMMSS.SSS |
Heure au format heure minute seconde et millisecondes. |
Latitude |
Latitude (coordonnée) |
N |
Direction N = Nord, S = Sud |
Longitude |
Longitude (coordonnée) |
E |
Direction E = Est, W = Ouest |
FQ |
Corriger les données de qualité |
NOS |
Nombre de satellites utilisés |
HPD |
Dilution horizontale de précision |
Altitude |
Altitude par rapport au niveau de la mer |
M |
Mètre |
la taille |
la taille |
Somme de contrôle |
Données de contrôle |
Vous pouvez consulter nos autres projets GPS:
- Tracker de véhicule basé sur Arduino utilisant GPS et GSM
- Système d'alerte d'accident de véhicule basé sur Arduino utilisant le GPS, le GSM et l'accéléromètre
- Comment utiliser le GPS avec Arduino
- Suivre un véhicule sur Google Maps en utilisant Arduino, ESP8266 et GPS
Préparation du Raspberry Pi pour communiquer avec le GPS:
D'accord, alors sautez, donc cela ne devient pas ennuyeux, je suppose que vous en savez déjà beaucoup sur le Raspberry Pi, assez pour installer votre système d'exploitation, obtenir l'adresse IP, vous connecter à un logiciel de terminal comme putty et d'autres choses sur le PI. Si vous rencontrez un problème pour faire l'une des choses mentionnées ci-dessus, contactez-moi dans la section des commentaires et je serai heureux de vous aider.
La première chose que nous devons faire pour lancer ce projet est de préparer notre Raspberry Pi 3 pour pouvoir communiquer avec le module GPS via UART, croyez-moi, c'est assez délicat et il a fallu pas mal d'essayer pour bien faire les choses mais si vous suivez mon guide attentivement vous l'obtiendrez d'un coup, c'est assez la partie la plus difficile du projet. Ici, nous avons utilisé le module GPS Neo 6m v2.
Pour plonger, voici une petite explication du fonctionnement du Raspberry Pi 3 UART.
Le Raspberry Pi dispose de deux UART intégrés, un PL011 et un mini UART. Ils sont implémentés à l'aide de différents blocs matériels et présentent donc des caractéristiques légèrement différentes. Sur le Raspberry Pi 3 cependant, le module sans fil / bluetooth est connecté au PLO11 UART, tandis que le mini UART est utilisé pour la sortie de la console Linux. En fonction de la façon dont vous le voyez, je définirai le PLO11 comme le meilleur des deux UART en raison de son niveau de mise en œuvre. Donc, pour ce projet, nous allons désactiver le module Bluetooth de l'UART PLO11 en utilisant une superposition disponible dans la version actuelle mise à jour de Raspbian Jessie.
Étape 1: mise à jour du Raspberry Pi:
La première chose que j'aime faire avant de commencer chaque projet est de mettre à jour le raspberry pi. Alors faisons les choses habituelles et exécutons les commandes ci-dessous;
sudo apt-get mise à jour sudo apt-get mise à jour
puis redémarrez le système avec;
redémarrage sudo
Étape 2: Configuration de l'UART dans Raspberry Pi:
La première chose que nous allons faire est d'éditer le fichier /boot/config.txt . Pour ce faire, exécutez les commandes ci-dessous:
sudo nano /boot/config.txt
au bas du fichier config.txt, ajoutez les lignes suivantes
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x pour quitter et appuyez sur y et entrez pour enregistrer.
Assurez-vous qu'il n'y a pas de fautes de frappe ou d'erreurs en revérifiant car une erreur pourrait empêcher votre pi de démarrer.
Quelles sont les raisons de ces commandes, force_turbo permet à UART d'utiliser la fréquence centrale maximale que nous fixons dans ce cas à 250. La raison en est d'assurer la cohérence et l'intégrité des données série reçues. Il est important de noter à ce stade que l'utilisation de force_turbo = 1 annulera la garantie de votre raspberry pi, mais à part cela, c'est assez sûr.
Le dtoverlay = pi3-disable-bt déconnecte le bluetooth du ttyAMA0 , c'est pour nous permettre d'accéder à toute la puissance UART disponible via ttyAMAO au lieu du mini UART ttyS0.
La deuxième étape de cette section de configuration UART consiste à modifier le fichier boot / cmdline.txt
Je vais vous suggérer de faire une copie de cmdline.txt et de l'enregistrer avant de le modifier afin que vous puissiez y revenir plus tard si nécessaire. Cela peut être fait en utilisant;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Remplacez le contenu par;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 ascenseur = date limite fsck.repair = oui rootwait silencieux splash plymouth.ignore-serial-consoles
Sauvegarder et quitter.
Une fois cela fait, nous devrons redémarrer le système pour effectuer des modifications ( redémarrage sudo ).
Étape 3: Désactivation du service Getty série Raspberry Pi
L'étape suivante consiste à désactiver le service série du Pi getty , la commande l'empêchera de redémarrer au redémarrage:
sudo systemctl stop [email protected] sudo systemctl désactiver [email protected]
Les commandes suivantes peuvent être utilisées pour l'activer à nouveau si nécessaire
sudo systemctl enable [email protected] sudo systemctl start [email protected]
Redémarrez le système.
Étape 4: Activation de ttyAMAO:
Nous avons désactivé le ttyS0, la prochaine chose est pour nous d'activer le ttyAMAO .
sudo systemctl enable [email protected]
Étape 5: Installez Minicom et pynmea2:
Nous serons minicom pour nous connecter au module GPS et donner un sens aux données. C'est également l'un des outils que nous utiliserons pour tester si notre module GPS fonctionne correctement. Une alternative à minicom est le logiciel démon GPSD.
sudo apt-get install minicom
Pour analyser facilement les données reçues, nous utiliserons la bibliothèque pynmea2 . Il peut être installé en utilisant;
sudo pip installer pynmea2
La documentation de la bibliothèque peut être trouvée ici
Étape 6: Installation de la bibliothèque LCD:
Pour ce tutoriel, nous utiliserons la bibliothèque AdaFruit. La bibliothèque a été conçue pour les écrans AdaFruit mais fonctionne également pour les panneaux d'affichage utilisant HD44780. Si votre affichage est basé sur cela, il devrait fonctionner sans problème.
Je pense qu'il vaut mieux cloner la bibliothèque et simplement l'installer directement. Pour cloner, exécutez;
git clone
allez dans le répertoire cloné et installez-le
cd./Adafruit_Python_CharLCD sudo python setup.py installer
À ce stade, je proposerai un autre redémarrage afin que nous soyons prêts à continuer à connecter les composants.
Connexions pour l'interfaçage du module GPS Raspberry Pi:
Connectez le module GPS et l'écran LCD au Raspberry Pi comme indiqué dans le schéma de circuit ci-dessous.
Test avant le script Python:
Je pense qu'il est important de tester la connexion du module GPS avant de passer au script python, nous utiliserons minicom pour cela. Exécutez la commande:
sudo minicom -D / dev / ttyAMA0 -b9600
où 9600 représente la vitesse de transmission à laquelle le module GPS communique. Cela peut être utilisé pour une fois que nous sommes sûrs de la communication de données entre le GPS et le RPI, il est temps d'écrire notre script python.
Le test peut également être fait avec cat
sudo cat / dev / ttyAMA0
Dans Window, vous pouvez voir les phrases NMEA dont nous avons discuté précédemment.
Le script Python pour ce tutoriel GPS Raspberry Pi est donné ci-dessous dans la section Code.
Avec tout dit et fait, il est temps de tester l'ensemble du système. Il est important que vous vous assuriez que votre GPS obtient une bonne correction, en le retirant, la plupart des GPS ont besoin de trois à 4 satellites pour obtenir une correction, bien que le mien fonctionne à l'intérieur.
Fonctionne bien? Oui…
Vous avez des questions ou des commentaires? Déposez-les dans la section des commentaires.
Une vidéo de démonstration est donnée ci-dessous, où nous avons montré l'emplacement en latitude et longitude sur l'écran LCD à l'aide du GPS et du Raspberry Pi.