8.0 KiB
Lire les données GPS - Matériel IoT Virtuel
Dans cette partie de la leçon, vous allez ajouter un capteur GPS à votre appareil IoT virtuel et lire les valeurs qu'il fournit.
Matériel Virtuel
L'appareil IoT virtuel utilisera un capteur GPS simulé accessible via UART par un port série.
Un capteur GPS physique possède une antenne pour capter les ondes radio des satellites GPS et convertir les signaux GPS en données GPS. La version virtuelle simule cela en vous permettant soit de définir une latitude et une longitude, d'envoyer des phrases NMEA brutes, soit de télécharger un fichier GPX contenant plusieurs emplacements qui peuvent être retournés séquentiellement.
🎓 Les phrases NMEA seront abordées plus tard dans cette leçon.
Ajouter le capteur à CounterFit
Pour utiliser un capteur GPS virtuel, vous devez en ajouter un à l'application CounterFit.
Tâche - ajouter le capteur à CounterFit
Ajoutez le capteur GPS à l'application CounterFit.
-
Créez une nouvelle application Python sur votre ordinateur dans un dossier nommé
gps-sensor
avec un fichier unique appeléapp.py
, ainsi qu'un environnement virtuel Python, et ajoutez les packages pip de CounterFit.⚠️ Vous pouvez vous référer aux instructions pour créer et configurer un projet Python CounterFit dans la leçon 1 si nécessaire.
-
Installez un package Pip supplémentaire pour installer un shim CounterFit qui peut communiquer avec des capteurs basés sur UART via une connexion série. Assurez-vous de l'installer depuis un terminal avec l'environnement virtuel activé.
pip install counterfit-shims-serial
-
Assurez-vous que l'application web CounterFit est en cours d'exécution.
-
Créez un capteur GPS :
-
Dans la boîte Create sensor du volet Sensors, déroulez la boîte Sensor type et sélectionnez UART GPS.
-
Laissez le Port défini sur /dev/ttyAMA0.
-
Sélectionnez le bouton Add pour créer le capteur GPS sur le port
/dev/ttyAMA0
.
Le capteur GPS sera créé et apparaîtra dans la liste des capteurs.
-
Programmer le capteur GPS
L'appareil IoT virtuel peut maintenant être programmé pour utiliser le capteur GPS virtuel.
Tâche - programmer le capteur GPS
Programmez l'application du capteur GPS.
-
Assurez-vous que l'application
gps-sensor
est ouverte dans VS Code. -
Ouvrez le fichier
app.py
. -
Ajoutez le code suivant en haut de
app.py
pour connecter l'application à CounterFit :from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Ajoutez le code suivant en dessous pour importer des bibliothèques nécessaires, y compris la bibliothèque pour le port série CounterFit :
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Ce code importe le module
serial
du package Pipcounterfit_shims_serial
. Il se connecte ensuite au port série/dev/ttyAMA0
- c'est l'adresse du port série utilisé par le capteur GPS virtuel pour son port UART. -
Ajoutez le code suivant en dessous pour lire depuis le port série et afficher les valeurs dans la console :
def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1)
Une fonction appelée
print_gps_data
est définie pour afficher la ligne passée en paramètre dans la console.Ensuite, le code boucle indéfiniment, lisant autant de lignes de texte que possible depuis le port série à chaque itération. Il appelle la fonction
print_gps_data
pour chaque ligne.Une fois toutes les données lues, la boucle attend 1 seconde avant de recommencer.
-
Exécutez ce code, en vous assurant d'utiliser un terminal différent de celui où l'application CounterFit est en cours d'exécution, afin que l'application CounterFit reste active.
-
Depuis l'application CounterFit, modifiez la valeur du capteur GPS. Vous pouvez le faire de l'une des manières suivantes :
-
Définissez la Source sur
Lat/Lon
, et spécifiez une latitude, une longitude et un nombre de satellites utilisés pour obtenir la position GPS. Cette valeur sera envoyée une seule fois, alors cochez la case Repeat pour que les données se répètent toutes les secondes. -
Définissez la Source sur
NMEA
et ajoutez des phrases NMEA dans la boîte de texte. Toutes ces valeurs seront envoyées, avec un délai d'une seconde avant chaque nouvelle phrase GGA (fixation de position).Vous pouvez utiliser un outil comme nmeagen.org pour générer ces phrases en dessinant sur une carte. Ces valeurs seront envoyées une seule fois, alors cochez la case Repeat pour que les données se répètent une seconde après leur envoi complet.
-
Définissez la Source sur fichier GPX, et téléchargez un fichier GPX contenant des emplacements de piste. Vous pouvez télécharger des fichiers GPX depuis plusieurs sites populaires de cartographie et de randonnée, tels que AllTrails. Ces fichiers contiennent plusieurs emplacements GPS sous forme de parcours, et le capteur GPS renverra chaque nouvel emplacement à des intervalles d'une seconde.
Ces valeurs seront envoyées une seule fois, alors cochez la case Repeat pour que les données se répètent une seconde après leur envoi complet.
Une fois que vous avez configuré les paramètres GPS, sélectionnez le bouton Set pour valider ces valeurs dans le capteur.
-
-
Vous verrez la sortie brute du capteur GPS, quelque chose comme ceci :
$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
💁 Vous pouvez trouver ce code dans le dossier code-gps/virtual-device.
😀 Votre programme de capteur GPS a été un succès !
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.