Taula de continguts:
- Pas 1: Obtenir un mapa en 3D
- Pas 2: Preparació del mapa per a insercions LED
- Pas 3: Inseriu els LED
- Pas 4: connecteu els LED al Raspberry Pi
- Pas 5: proveu els LED
- Pas 6: Codi per encendre el LED quan se sol·liciti
- Pas 7: Com rebre la ubicació
- Pas 8: Com funciona tot això
- Pas 9: creeu-ne un des d'Inspiration Off My Project
Vídeo: Mapa 3D de seguiment GPS: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Aquest projecte és un mapa 3D imprès en 3D, amb carreteres, rius i ciutats, amb balises LED per mostrar la ubicació dels membres de la família. Pot mostrar si hi ha un nen a l'escola o simplement la ubicació dels dos pares. També el podem utilitzar per predir a quina hora arriben els pares a casa, de manera que el sopar es pugui preparar al moment adequat. També és només un projecte genial per mostrar i mostrar a familiars i amics.
Espero que us agradi fer aquest instructiu o que us agradi conèixer un projecte que he fet
Pas 1: Obtenir un mapa en 3D
Per obtenir un mapa en 3D de la vostra zona, he escrit una instrucció separada que us ajudarà a guiar-vos durant el procés de creació d'un. L’enllaç a allò instructable és aquí:
www.instructables.com/id/Making-a-3D-Print…
Pas 2: Preparació del mapa per a insercions LED
Ara que teniu un mapa en 3D, amb carreteres, ciutats i rius, necessitem una manera d’indicar on es troba una persona al mapa. He utilitzat LED RG bicolors de 3 mm, perquè el propòsit principal del mapa és mostrar on es troben els dos pares. En determinats llocs he utilitzat un LED RGB per permetre'm mostrar on era el nen més gran. Hi ha un límit de 28 pins per sortir al Raspberry Pi, de manera que trieu la ubicació dels LED amb prudència. Vaig acabar utilitzant-ne uns 24, de manera que hauríeu d’estar bé.
Per perforar PLA, he trobat que una broca de fusta normal funcionava bé i he tractat com tractaria la fusta.
Als llocs on el mapa fos massa gruixut, perforaria la capa base amb una broca gran i després la capa superior visible amb la broca correcta de 3 mm.
Pas 3: Inseriu els LED
Ara que tenim forats perquè els LED s’hi puguin asseure, els podem enganxar. El PVA o el Superglue funcionen bé per a això. Vaig comprovar que el PVA l’envoltava segellant-lo al seu lloc i la superglue també funcionava molt bé. Assegureu-vos que amb cada LED només sobresurten uns 30 mm al costat visible, ja que tenir els LEDs apagats tot el camí sembla una mica desordenat. No us preocupeu per les potes de l’esquena, les podem doblegar un cop soldades.
Pas 4: connecteu els LED al Raspberry Pi
He soldat directament els LED al Raspberry Pi, però, si en teniu un amb capçalera prèviament soldada o voleu utilitzar el pi per a una altra cosa, us suggeriria utilitzar cables de pont per a cada LED, és a dir, que el Pi és extraïble. Podeu veure que un cop heu soldat el LED, vaig doblegar les cames cap avall perquè no s’enganxessin a la part posterior.
Pas 5: proveu els LED
Per assegurar-me que tots els LED funcionen, he executat un script que passa per cada pin possible i els il·lumina, un a la vegada, que es converteix en el següent quan faig clic a Intro. Això em va permetre anotar quin número de PIN va fer una ubicació, cosa que va resultar molt útil.
importar RPi. GPIO com a GPIO
temps d’importació GPIO.setmode (GPIO. BCM) per a l’interval (0, 28): GPIO.setup (i, GPIO. OUT) per a l’interval (0, 28): sortida GPIO.i (GPIO. HIGH) time.sleep (0,3) GPIO.output (i, GPIO. LOW) print ("Això era:" + str (i)) z = raw_input ("Següent?")
Mentre això succeïa, anotaria en un fitxer de text quin pin va fer quina ubicació i quin color. Cal fer-ho, ja que és molt útil en el següent pas.
Pas 6: Codi per encendre el LED quan se sol·liciti
La manera com he fet aquest projecte consisteix en un Raspberry Pi Zero W, amb un lloc web bàsic que us permet activar un pin. Això significava que el Pi 4 principal, que normalment està en funcionament i en funcionament, pot fer el processament, i aleshores el petit Pi 0 només ha d’encendre un pin, cosa que complica una mica les coses. Ho vaig fer perquè s'adapta a la meva configuració, i també vaig sentir que el Pi 0 pot ser una mica lent pel que farem més endavant.
importar RPi. GPIO com a GPIO
temps d’importació des de flask import Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) per a l’interval (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) retorna "Desactivat" @ app.route ("/ desactivat / tot") def alloff (): per a l'interval (0, 28): GPIO.output (i, GPIO. LOW) retorna "desactivat" @ app.route ("/ on /") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) retorna "On" si _name_ == '_main_': app.run (depuració = True, host = '0.0. 0,0 ')
La forma en què funciona és que espera l’URL de l’adreça IP del pi i, a continuació, una activació o desactivació i, a continuació, el número de PIN.
deseu aquest codi al directori inicial de Raspberry Pi i anomeneu-lo "pin_website.py"
Haureu d’establir-ho perquè s’executi automàticament, per això, al tipus de terminal: sudo nano / etc / profile
A la part inferior d'aquest fitxer, afegiu "python3 pin_website.py &"
El "&" és essencial, ja que el fa funcionar en segon pla i, per tant, permet que l'arrencada continuï
Pas 7: Com rebre la ubicació
Mitjançant IFTTT, podeu configurar un servei perquè, quan el telèfon entri en una ubicació determinada, us pugui enviar un correu electrònic o fer ping a una adreça web o enviar-vos un missatge per telegrama.
Pas 8: Com funciona tot això
La configuració que tinc és un servidor Pi, que allotja el meu lloc web, amb reenviament de ports i un DNS estàtic mitjançant el servei proporcionat per https://freedns.afraid.org/. Una gran part d'això és bastant complex i cal que entengueu el reenviament de ports. És possible que us sigui instructiu sobre com fer aquesta part una altra vegada.
Una altra manera de fer-ho és fer servir el telegrama per enviar missatges al pi, o possiblement el més fàcil, mitjançant la configuració d’un lector de correu electrònic que llegeixi els correus electrònics i rebi les actualitzacions d’ubicació.
No he provat el bot de Telegram ni un lector de correu electrònic, però hi ha molts tutorials que us mostraran com fer-ho.
Aquí teniu el meu codi Flask / Python que després sol·liciten els webhooks mitjançant IFTTT:
des de la importació de flask 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 "Gràcies per l'actualització, mare!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) return "Gràcies per l'actualització, pare!" @ app.route ("/ child / enter /") def child_enter (l): me.current_loc (l) return "Ei, jo" @ app.route ('/ mum / exit /') def mume (location): mum.offline (location) return "Gràcies per l'actualització, mare!" @ app.route ("/ dad / exit /") def dade (l): dad.offline (l) return "Gràcies per l'actualització, pare!" @ app.route ("/ child / exit /") def child_exit (l): me.offline (l) return "Ei, jo" @ app.route ("/ reset") def refo (): setup () return "Restableix!" if _name_ == '_main_': app.run (depuració = True, host = '0.0.0.0')
i map.py:
importació de http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json importation 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")) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5re') "GET", str ("/ off / all")) response = 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 mum: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "quatre creus": 18, "llandrinio": 25, "welshpool": 27} f = open ("pin", "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 (last_loc)) response = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) response = 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 creus ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET ", str (" / off / ") + str (last_loc)) response = conn.getresponse () f = open (" pin "," w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") classe pare: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "quatre creus": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," quatre creus ": 15} f = obert (" 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)) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) response = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," quatre creus ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ off /") + str (dlast_loc)) response = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") class me: 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)) response = 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)) response = conn.getresponse () f = open ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
Pas 9: creeu-ne un des d'Inspiration Off My Project
Per tant, sé que el pas anterior serà molt difícil d’entendre, de manera que us deixaré com mostrar-vos com fer el mapa i ser capaç de tenir un pi de gerds que encengui i apagui els LED. Ara heu de crear un script python que usi un correu electrònic mitjançant IFTTT. A continuació, heu de trobar un fragment de codi per llegir el correu electrònic, que és bastant fàcil (google it). A continuació, un cop llegiu un missatge de correu electrònic i trobeu la ubicació d'un pare, utilitzeu les instruccions "if" per trobar quin passador s'ha d'activar.
Al mapa, una llum intermitent significa que acaben de sortir de la zona
La manera d’encendre els LED d’un altre pi des de python és la següent:
importació de http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #change this with the raspberry pi's map IP address conn.request ("GET", str ("/ off / 2 ")) # això desactiva el pin número 2 resposta = conn.getresponse () # això sol·licita l'URL i, a continuació, el mapa pi ho llegeix i desactiva el pin número 2
Bàsicament, espero que pugueu utilitzar el que he fet amb el meu mapa 3D com a inspiració per fer el vostre propi mapa de seguiment GPS.
Recomanat:
Introducció: convertiu un Raspberry Pi en un servidor de seguiment GPS: 12 passos
Introducció: convertiu un Raspberry Pi en un servidor de seguiment GPS: en aquesta guia us mostraré com instal·lar el programari de seguiment GPS Traccar en un Raspberry Pi que rebrà dades de dispositius compatibles a Internet, registrant les seves posicions en un mapa en temps real. seguiment, i també seguiment de la reproducció
Feu el vostre propi sistema de seguiment de seguretat de SMS per GPS: 5 passos (amb imatges)
Feu el vostre propi sistema de seguiment de seguretat per SMS de GPS: en aquest projecte us mostraré com combinar un mòdul SIM5320 3G amb un Arduino i un transductor piezoelèctric com a sensor de xoc per crear un sistema de seguiment de seguretat que us enviarà la ubicació del vostre vehicle preciós per SMS quan
Seguiment i seguiment de botigues petites: 9 passos (amb imatges)
Track & trace per a botigues petites: es tracta d’un sistema dissenyat per a petites botigues que se suposa que es munta en bicicletes elèctriques o patinets electrònics per a lliuraments a curt abast, per exemple, una fleca que vulgui lliurar pastes. Què significa Track and Trace? Track and trace és un sistema utilitzat per ca
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment fotosensible del cotxe: 7 passos
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment del cotxe fotosensible: dissenyat per SINONING ROBOT Podeu comprar amb el robot de seguiment El xip LM393 compara els dos fotoresistors, quan hi ha un LED de fotoresistència lateral en BLANC, el costat del motor s'aturarà immediatament, l'altre costat del motor girar, de manera que
Com connectar el GPS DeLorme Earthmate LT-20 al vostre Google Earth per obtenir un gran mapa de seguiment GPS: 5 passos
Com connectar el GPS DeLorme Earthmate LT-20 al vostre Google Earth per obtenir un gran mapa de seguiment GPS: us mostraré com connectar un dispositiu GPS al popular programa Google Earth, sense utilitzar Google Earth Plus. No tinc un pressupost important, així que puc garantir que serà el més barat possible