Table des matières:
- Fournitures
- Étape 1: État initial
- Étape 2: BerryGPS-GSM & Raspberry Pi Zero
- Étape 3: Tableau de bord de l'emplacement et de la vitesse
Vidéo: Suivi GPS en temps réel : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Par elizabethnaSuivez plus par l'auteur:
Dans ce tutoriel, nous allons vous montrer comment effectuer un suivi de localisation en temps réel à l'aide d'un BerryGPS-GSM, d'un Raspberry Pi Zero et d'un état initial. Nous enverrons la longitude, la latitude et la vitesse via 3G avec le BerryGPS-GSM à l'état initial.
Fournitures
- Raspberry Pi Zéro
- BerryGPS-GSM
- Etat initial
Étape 1: État initial
Nous voulons diffuser toutes nos données de longitude, latitude et vitesse vers un service cloud et faire en sorte que ce service transforme nos données en un joli tableau de bord auquel nous pouvons accéder depuis notre ordinateur portable ou appareil mobile. Nous utiliserons l'état initial.
Étape 1: Inscrivez-vous pour le compte d'État initial
Accédez à https://iot.app.initialstate.com et créez un nouveau compte. Vous bénéficiez d'un essai gratuit de 14 jours et toute personne disposant d'une adresse e-mail edu peut s'inscrire à un plan étudiant gratuit.
Étape 2: Installez l'ISStreamer
Installez le module Python Initial State sur votre Raspberry Pi. Dans l'invite de commande, exécutez la commande suivante:
$ cd /home/pi/
$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash
Étape 3: Faites de l'Automagic
Après l'étape 2, vous verrez quelque chose de similaire à la sortie suivante à l'écran:
pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Début de l'installation facile d'ISStreamer Python ! Cela peut prendre quelques minutes à installer, prenez un café:) Mais n'oubliez pas de revenir, j'aurai des questions plus tard ! Trouvé easy_install: setuptools 1.1.6 Pip trouvé: pip 1.5.6 de /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) version majeure de pip: 1 version mineure de pip: 5 ISStreamer trouvé, mise à jour… Exigence déjà à jour: ISStreamer dans Library/Python/2.7/site-packages Nettoyage… Voulez-vous obtenir automatiquement un exemple de script ? [o/N] Où voulez-vous enregistrer l'exemple ? [par défaut:./is_example.py] Veuillez sélectionner l'application Initial State que vous utilisez: 1. app.initialstate.com 2. [NOUVEAU !] iot.app.initialstate.com Entrez le choix 1 ou 2: Entrez iot.app Nom d'utilisateur.initialstate.com: Entrez le mot de passe iot.app.initialstate.com:
Lorsqu'on vous demande si vous souhaitez obtenir automatiquement un exemple de script, mettez "y" pour oui et appuyez sur Entrée pour enregistrer votre script dans l'emplacement par défaut. Pour la question sur l'application que vous utilisez, sélectionnez 2 (sauf si vous vous êtes inscrit avant novembre 2018) et entrez votre nom d'utilisateur et votre mot de passe.
Étape 4: Exécutez l'exemple de script
Exécutez le script de test pour vous assurer que nous pouvons créer un flux de données sur votre compte Initial State. Écrivez la commande suivante:
$ python is_example.py
Étape 5: Exemple de données
Revenez à votre compte Initial State dans votre navigateur Web. Un nouveau compartiment de données appelé "Python Stream Example" aurait dû s'afficher à gauche dans votre étagère de journaux (vous devrez peut-être actualiser la page). Cliquez sur ce bucket pour afficher vos données.
Étape 2: BerryGPS-GSM & Raspberry Pi Zero
Si vous utilisez un BerryGPS-GSM, vous pouvez suivre ce guide pour faire fonctionner le GPS et faire en sorte que votre Pi se connecte via 3G à l'aide de PPP.
Le guide lié montre également comment faire en sorte que votre Pi se connecte automatiquement au réseau de l'opérateur lors du démarrage. Vous en aurez besoin si vous prévoyez d'effectuer un suivi à distance.
Installer des bibliothèques
Vous devrez installer les bibliothèques suivantes:
$ sudo apt-get install python-pip
$ sudo pip installer pynmea2 $ sudo pip installer ISStreamer
Script Python principal
Ici, nous allons créer le script principal qui diffusera les données GPS vers l'état initial. Le code ci-dessous crée un thread séparé qui est utilisé pour surveiller le port série. Ceci est nécessaire car nous avons une pause dans la boucle principale. La pause est là pour limiter la quantité de données que nous téléchargeons sur la 3G.
Si nous faisions tout dans le même thread pendant la pause, le tampon série se remplirait (c'est FIFO) et lorsque nous obtiendrons la prochaine valeur du tampon, il sera vieux de quelques secondes. Cela se produit à chaque boucle et, éventuellement, les données seront en retard de minutes ou d'heures.
Pour créer le script python et ouvrir l'éditeur de texte, entrez la commande suivante:
$ nano GPStracker.py
Copiez et collez le code suivant dans l'éditeur de texte. Vous devrez entrer votre clé d'accès à l'état initial à la ligne 11, où il est indiqué « ENTRER VOTRE CLÉ D'ACCÈS »:
# ! /usr/bin/pythonfrom gps import * from time import * import threading import datetime from ISStreamer. Streamer import Streamer gpsd = None #Setup global variable #Setup the Initial State stream, entrez votre clé d'accès ci-dessous streamer = Streamer(bucket_name="GPS_Tracker ", bucket_key="GPS_TRACKER", access_key="ENTRER VOTRE CLÉ D'ACCÈS") classe GPSDcollector(threading. Thread): def _init_(self, threadID): threading. Thread._init_(self) self.threadID = threadID global gpsd #bring dans la portée gpsd = gps(mode=WATCH_ENABLE) #Start GPSD self.running = True #Commencer à exécuter ce thread def run(self): global gpsd while gpsdThread.running: gpsd.next() if _name_ == '_main_': gpsdThread = GPSDcollector(1) # crée un thread pour collecter des données essayez: gpsdThread.start() # démarrez-le avec True: imprimez 'GPS ', gpsd.utc, ' CPU time->', datetime.datetime.now().time(), if (gpsd.fix.longitude0) et (gpsd.fix.longitude'nan'): streamer.log("Location", "{lat}, {lon}".format(lat=gpsd.fix.latitude, lon=gpsd.fix.longitu de)) streamer.log("speed", gpsd.fix.speed) print ' lat ', gpsd.fix.latitude, print ' lon ', gpsd.fix.longitude, print ' speed ', gpsd.fix.speed sleep (5) sauf (KeyboardInterrupt, SystemExit): #lorsque vous appuyez sur ctrl+c, imprimez "\nKilling Thread…" gpsdThread.running = False gpsdThread.join() # attendez que le thread ait terminé ce qu'il fait imprimer "Terminé.\nSortie."
Enregistrez et quittez l'éditeur de texte en appuyant sur CTRL + X, Y, entrez.
Lancer le script automatiquement au démarrage
Si vous effectuez une surveillance à distance, vous souhaitez que le script s'exécute au démarrage. Pour ce faire, nous allons créer un petit script qui lancera le programme python principal. Saisissez la commande suivante:
$ nano GPStrackerStart.sh
Copiez les lignes dans l'éditeur de texte:
#!/bin/bash
dormir 15 python /home/pi/GPStracker.py &
La pause ci-dessus est là pour donner au Pi le temps de démarrer et de se connecter via PPP.
Rendez le script exécutable:
$ chmod +x ~/GPStrackerStart.sh
Nous utiliserons cron pour démarrer le script à chaque démarrage du Pi:
$ crontab -e
Ajoutez la ligne ci-dessous en bas:
@reboot /home/pi/GPStrackerStart.sh &
Étape 3: Tableau de bord de l'emplacement et de la vitesse
Maintenant que votre projet est opérationnel, les données doivent être envoyées à l'état initial. Vous aurez des données GPS et des données de vitesse. Vous pouvez utiliser les données GPS dans une tuile de cartes pour suivre l'emplacement. Pour la carte Tile, assurez-vous de cocher la case Draw Path afin que votre suivi de localisation soit mappé comme le tableau de bord ci-dessus. Vous pouvez mettre vos données de vitesse dans un graphique linéaire pour voir la vitesse au fil du temps.
Conseillé:
Comment utiliser un module d'horloge en temps réel (DS3231) : 5 étapes
Comment utiliser un module d'horloge en temps réel (DS3231): Le DS3231 est une horloge en temps réel (RTC) I2C à faible coût et extrêmement précise avec un oscillateur à cristal compensé en température (TCXO) et un cristal intégrés. L'appareil intègre une entrée de batterie et maintient un chronométrage précis lorsque l'alimentation principale à
Solveur Rubik's Cube en temps réel avec les yeux bandés utilisant Raspberry Pi et OpenCV : 4 étapes
Solveur Rubik's Cube en temps réel avec les yeux bandés utilisant Raspberry Pi et OpenCV : il s'agit de la 2ème version de l'outil Rubik's cube conçu pour résoudre les yeux bandés. La 1ère version a été développée par javascript, vous pouvez voir le projet RubiksCubeBlindfolded1Contrairement à la précédente, cette version utilise la bibliothèque OpenCV pour détecter les couleurs et e
Un compteur de niveau d'eau de puits en temps réel : 6 étapes (avec photos)
Un compteur de niveau d'eau de puits en temps réel : ces instructions décrivent comment construire un compteur de niveau d'eau en temps réel à faible coût pour une utilisation dans des puits creusés. Le compteur de niveau d'eau est conçu pour s'accrocher à l'intérieur d'un puits creusé, mesurer le niveau d'eau une fois par jour, et envoyer les données par WiFi ou connexion cellulaire
Kits de voiture de suivi de robot intelligent bricolage Suivi de voiture photosensible: 7 étapes
DIY Smart Robot Tracking Car Kits Tracking Car Photosensible: Design by SINONING ROBOTVous pouvez acheter à partir de la puce de suivi du robot carTheoryLM393 comparer les deux photorésistances, lorsqu'il y a une LED de photorésistance latérale sur BLANC le côté du moteur s'arrêtera immédiatement, l'autre côté du moteur tourner, de sorte que
Tracker GPS en temps réel fait maison (SIM800L, Ublox NEO-6M, Arduino): 8 étapes
Tracker GPS en temps réel fait maison (SIM800L, Ublox NEO-6M, Arduino) : Vous avez donc un module GSM qui traîne comme moi ? Aussi un traceur GPS ? Nous pensons la même chose ! Dans ce instructables, je vais essayer de vous guider comment atteindre votre objectif du point de vue d'un débutant. Comme je n'avais aucune connaissance préalable en génie électrique (à