Table des matières:
- Étape 1: Obtenir une carte 3D
- Étape 2: Préparation de la carte pour les inserts LED
- Étape 3: Insérez les LED
- Étape 4: Connectez les LED au Raspberry Pi
- Étape 5: Testez les LED
- Étape 6: Code pour allumer la LED à la demande
- Étape 7: Comment recevoir l'emplacement
- Étape 8: Comment tout cela fonctionne
- Étape 9: Créez le vôtre à partir de l'inspiration de mon projet
Vidéo: Carte 3D de suivi GPS : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Ce projet est une carte 3D imprimée en 3D, avec des routes, des rivières et des villes, avec des balises LED pour montrer l'emplacement des membres de la famille. Il peut montrer si un enfant est ou non à l'école, ou simplement l'emplacement des deux parents. Nous pouvons également l'utiliser pour prédire à quelle heure les parents rentrent à la maison, afin que le dîner puisse être préparé au bon moment. C'est aussi juste un projet généralement cool à montrer et à montrer à la famille et aux amis.
J'espère que vous apprécierez faire ce Instructable, ou profiter de découvrir un projet que j'ai fait
Étape 1: Obtenir une carte 3D
Pour obtenir une carte 3D de votre région, j'ai écrit un instructable séparé pour vous guider tout au long du processus de création d'un. Le lien vers l'instructable est ici:
www.instructables.com/id/Making-a-3D-Print…
Étape 2: Préparation de la carte pour les inserts LED
Maintenant que vous avez une carte 3D, avec des routes, des villes et des rivières, nous avons besoin d'un moyen d'indiquer où se trouve une personne sur la carte. J'ai utilisé des LED RG bicolores de 3 mm, car le but principal de la carte est de montrer où se trouvent les deux parents. A certains endroits, j'ai utilisé une LED RGB, pour me permettre de montrer où se trouvait l'aîné des enfants. Il y a une limite de 28 broches à sortir sur le Raspberry Pi, alors choisissez judicieusement l'emplacement des LED. J'ai fini par en utiliser environ 24, donc ça devrait aller.
Pour percer le PLA, j'ai trouvé qu'un foret à bois normal fonctionnait bien, et j'ai traité comme je traiterais du bois.
Aux endroits où la carte était trop épaisse, je percerais la couche de base avec un gros foret, puis la couche visible au-dessus avec le bon foret de 3 mm.
Étape 3: Insérez les LED
Maintenant que nous avons des trous pour les LED, nous pouvons les coller. Le PVA ou la Superglue fonctionnent bien pour cela, j'ai trouvé que le PVA l'entourait pour le sceller en place, et la superglue fonctionnait également très bien. Assurez-vous qu'avec chaque LED, elles ne dépassent que de quelques mm du côté visible, car le fait que les LED dépassent complètement semble un peu désordonné. Ne vous inquiétez pas pour les pattes à l'arrière, nous pouvons les replier une fois qu'elles sont soudées.
Étape 4: Connectez les LED au Raspberry Pi
J'ai directement soudé les LED au Raspberry Pi, cependant, si vous en avez un avec un en-tête pré-soudé, ou si vous voulez pouvoir utiliser le pi pour autre chose, alors je suggérerais d'utiliser des cavaliers pour chaque LED, ce qui signifie que le Pi est amovible. Vous pouvez voir qu'une fois la LED soudée, j'ai rabattu les pieds pour qu'ils ne collent pas à l'arrière.
Étape 5: Testez les LED
Pour m'assurer que toutes les LED fonctionnent, j'ai exécuté un script qui passe par chaque broche possible et les allume, une à la fois, qui passe à la suivante lorsque je clique sur Entrée. Cela m'a permis de noter quel numéro de broche faisait quel emplacement, ce qui s'est avéré très utile.
importer RPi. GPIO en tant que GPIO
heure d'importation GPIO.setmode(GPIO. BCM) pour i dans la plage (0, 28): GPIO.setup(i, GPIO. OUT) pour i dans la plage (0, 28): GPIO.output(i, GPIO. HIGH) time.sleep(0.3) GPIO.output(i, GPIO. LOW) print("C'était: " + str(i)) z = raw_input("Suivant ?")
Pendant que cela se produisait, je notais sur un fichier texte quelle broche faisait quel emplacement et quelle couleur. Vous devez le faire, car cela est très utile à l'étape suivante.
Étape 6: Code pour allumer la LED à la demande
La façon dont j'ai réalisé ce projet implique un Raspberry Pi Zero W, avec un site Web de base qui vous permet d'activer une broche. Cela signifie que le Pi 4 principal, qui est généralement allumé et en cours d'exécution, peut effectuer le traitement, puis le petit Pi 0 n'a qu'à allumer une broche, ce qui complique légèrement les choses. Je l'ai fait parce que cela convient à ma configuration, et j'ai également senti que le Pi 0 peut être un peu lent pour ce que nous ferons plus tard.
importer RPi. GPIO en tant que GPIO
heure d'importation depuis le flacon import Flask, render_template, request, jsonify import os app = Flask(_name_) p = GPIO.setmode(GPIO. BCM) pour i dans la plage (0, 28): GPIO.setup(i, GPIO. OUT) @app.route('/') def index(): return request.remote_addr @app.route("/off/") def turn_off(pin): GPIO.output(int(pin), GPIO. LOW) return "Off" @app.route("/off/all") def alloff(): for i in range (0, 28): GPIO.output(i, GPIO. LOW) return "off" @app.route("/on/") def turn_on(pin): GPIO.output(int(pin), GPIO. HIGH) return "On" if _name_ == '_main_': app.run(debug=True, host='0.0. 0.0')
La façon dont cela fonctionne est qu'il attend l'URL de l'adresse IP du pi, puis une activation ou une désactivation, puis le numéro de broche.
enregistrez ce code dans le répertoire home du Raspberry Pi, et nommez-le "pin_website.py"
Vous devrez configurer cela pour qu'il s'exécute automatiquement, donc pour ce faire, dans le type de terminal: sudo nano /etc/profile
Au bas de ce fichier, ajoutez "python3 pin_website.py &"
Le "&" est essentiel, car il le fait tourner en tâche de fond, et permet donc au démarrage de continuer
Étape 7: Comment recevoir l'emplacement
En utilisant IFTTT, vous pouvez configurer un service de sorte que lorsque le téléphone entre dans un certain emplacement, il puisse vous envoyer un e-mail, ou envoyer une requête ping à une adresse Web, ou vous envoyer un message par télégramme.
Étape 8: Comment tout cela fonctionne
La configuration que j'ai est un serveur Pi, hébergeant mon site Web, avec une redirection de port et un DNS statique utilisant le service fourni par https://freedns.afraid.org/. Une grande partie de cela est assez complexe, et vous devez avoir une compréhension de la redirection de port, je pourrais faire un instructable sur la façon de faire cette partie une autre fois.
Une autre façon de le faire consiste à utiliser un télégramme pour envoyer des messages au pi, ou peut-être le plus simple, consiste à configurer un lecteur de courrier électronique qui lit les courriers électroniques et reçoit les mises à jour de localisation via celui-ci.
Je n'ai pas essayé le bot Telegram ou un lecteur de courrier électronique, mais il existe de nombreux tutoriels qui vous montreront comment procéder.
Voici mon code Flask/Python qui est ensuite demandé par les webhooks utilisant IFTTT:
à partir du flacon import Flask, render_template, request, jsonify
import os from datetime import datetime from map import * app = Flask(_name_) l = 0 setup() @app.route('/') def index(): return request.remote_addr @app.route('/mum/enter /') def mu(location): mum.current_loc(location) return "Merci pour la mise à jour, maman!" @app.route("/dad/enter/") def da(l): dad.current_loc(l) return "Merci pour la mise à jour, papa!" @app.route("/child/enter/") def child_enter(l): me.current_loc(l) return "Hey, Me" @app.route('/mum/exit/') def mume(location): mum.offline(location) return "Merci pour la mise à jour, maman!" @app.route("/dad/exit/") def dade(l): dad.offline(l) return "Merci pour la mise à jour, papa!" @app.route("/child/exit/") def child_exit(l): me.offline(l) return "Hey, Me" @app.route("/reset") def redo(): setup() return "Réinitialiser!" if _name_ == '_main_': app.run(debug=True, host='0.0.0.0')
et map.py:
importer http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json import time import threading import os params = urllib.parse.urlencode({ }) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup(): conn = http.client. HTTPSConnection('freedns.afraid.org') conn.request("GET", str("/dynamic/update.php?ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) réponse = conn.getresponse() conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request() "GET", str("/off/all")) réponse = conn.getresponse() f = open("pin", "w") f.write(str(-1)) f.close() f = open("pind", "w") f.write(str(-1)) f.close() f = open("pinm", "w") f.write(str(-1)) f.close () classe maman: def current_loc(l): global last_loc locs = { "llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "quatre croix": 18, "llandrinio": 25, "welshpool": 27 } f = open("pin", "w") f.write(str(-1)) f.close() heure. sleep(1) conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/off/") + str(last_loc)) réponse = conn.getrespons e() conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/on/") + str(locs[l])) réponse = conn.getresponse() last_loc = locs[l] def offline(l): global last_loc locs = { "llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13, "quatre croix": 18, "llandrinio": 25, "welshpool": 27 } conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str(" /off/") + str(last_loc)) réponse = conn.getresponse() f = open("pin", "w") f.write(str(locs[l])) f.close() os.system ("python3 flash.py &") classe papa: locs = { "welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "four crosses": 15, "llandrinio": 10, "welshpool": 24 } def current_loc(l): global dlast_loc locs = { "welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech": 6, "quatre croix": 15 } f = open("pind", "w") f.write(str(-1)) f.close() time.sleep(1) conn = http.client. HTTPConnection('192.168.1.251:5000') conn.reques t("GET", str("/off/") + str(dlast_loc)) réponse = conn.getresponse() conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/on/") + str(locs[l])) réponse = conn.getresponse() dlast_loc = locs[l] def offline(l): global dlast_loc locs = { "welshpool": 3, "lynclys ": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "quatre croix": 15, "llandrinio": 10 } conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/off/") + str(dlast_loc)) réponse = conn.getresponse() f = open("pind", "w") f.write(str(locs[l])) f.close() os.system("python3 flashd.py &") classe moi: def current_loc(l): global mlast_loc locs = { "home": 22, "school": 2, "oswestry": 14 } f = open("pinm", "w") f.write(str(-1)) f.close() time.sleep(1) conn = http.client. HTTPConnection('192.168.1.251:5000 ') conn.request("GET", str("/off/") + str(mlast_loc)) réponse = conn.getresponse() conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request ("GET", str("/on/") + str(lo cs[l])) response = conn.getresponse() mlast_loc = locs[l] def offline(l): global dlast_loc locs = { "home": 22, "school": 2, "oswestry": 14 } conn = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/off/") + str(mlast_loc)) réponse = conn.getresponse() f = open("pinm", "w") f.write(str(locs[l])) f.close() os.system("python3 flashm.py &")
Étape 9: Créez le vôtre à partir de l'inspiration de mon projet
Je sais donc que l'étape précédente sera très difficile à comprendre, je vais donc vous montrer comment faire la carte, et pouvoir avoir un raspberry pi qui allume et éteint les LED. Vous devez maintenant créer un script python qui, à l'aide d'IFTTT, vous envoie un e-mail. Ensuite, vous devez trouver un morceau de code de lecture de courrier électronique, ce qui est assez facile (google). Ensuite, une fois que vous avez lu un e-mail et trouvé l'emplacement d'un parent, utilisez les instructions « if » pour trouver la broche à activer.
Sur la carte, un feu clignotant signifie qu'ils viennent de quitter la zone
La façon d'allumer les LED sur un autre pi de python est la suivante:
importer http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode({ }) conn = http.client. HTTPConnection('192.168.1.251:5000') #changez cela avec l'adresse IP de la carte raspberry pi conn.request("GET", str("/off /2")) # cela désactive la broche numéro 2 réponse = conn.getresponse() # cela demande l'URL, puis la carte pi lit ceci et désactive la broche numéro 2
En gros, j'espère que vous pourrez vous inspirer de ce que j'ai fait avec ma carte 3D pour créer votre propre carte de suivi GPS.
Conseillé:
Installation De La Carte TagTagTag Pour Nabaztag / Installer la carte TagTagTag sur votre Nabaztag : 15 étapes
Installation De La Carte TagTagTag Pour Nabaztag / Installation du TagTagTag Board on Your Nabaztag : (voir ci-dessous pour la version anglaise)La carte TagTagTag a été créée en 2018 lors de Maker Faire Paris pour faire renaitre les Nabaztag et les Nabaztag:tag. Elle a fait l'objet ensuite d'un financement participatif sur Ulule en juin 2019, si vous souhaitez
Introduction - Transformez un Raspberry Pi en un serveur de suivi GPS : 12 étapes
Introduction - Transformez un Raspberry Pi en serveur de suivi GPS : dans ce guide, je vais vous montrer comment installer le logiciel de suivi GPS Traccar sur un Raspberry Pi qui recevra des données d'appareils compatibles sur Internet, en enregistrant leurs positions sur une carte en temps réel suivi, et également suivi de la lecture
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
Comment programmer une carte AVR à l'aide d'une carte Arduino : 6 étapes
Comment programmer une carte AVR à l'aide d'une carte Arduino : Avez-vous une carte de microcontrôleur AVR qui traîne ? Est-ce compliqué de le programmer ? Eh bien, vous êtes au bon endroit. Ici, je vais vous montrer comment programmer une carte de microcontrôleur Atmega8a en utilisant une carte Arduino Uno en tant que programmeur. Alors sans plus
Comment connecter le DeLorme Earthmate GPS LT-20 à votre Google Earth pour une excellente carte de suivi GPS.: 5 étapes
Comment connecter le DeLorme Earthmate GPS LT-20 à votre Google Earth pour une excellente carte de suivi GPS. : Je vais vous montrer comment connecter un appareil GPS au programme populaire Google Earth, sans utiliser Google Earth Plus. Je n'ai pas un gros budget donc je peux garantir que ce sera le moins cher possible