Tabla de contenido:
- Paso 1: obtener un mapa 3D
- Paso 2: preparación del mapa para inserciones de LED
- Paso 3: inserte los LED
- Paso 4: conecta los LED a la Raspberry Pi
- Paso 5: prueba los LED
- Paso 6: Código para encender el LED cuando se lo solicite
- Paso 7: Cómo obtener la ubicación
- Paso 8: Cómo funciona todo esto
- Paso 9: crea el tuyo propio a partir de la inspiración de mi proyecto
Video: Mapa 3D de seguimiento GPS: 9 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Este proyecto es un mapa 3D impreso en 3D, con carreteras, ríos y pueblos, con balizas LED para mostrar la ubicación de los miembros de la familia. Puede mostrar si un niño está en la escuela o no, o solo la ubicación de ambos padres. También podemos usarlo para predecir a qué hora llegan los padres a casa, de modo que la cena se pueda preparar en el momento adecuado. También es un proyecto generalmente genial para presumir y mostrar a familiares y amigos.
Espero que disfrutes haciendo este Instructable, o disfrutes descubriendo un proyecto que he realizado.
Paso 1: obtener un mapa 3D
PARA obtener un mapa 3D de su área, he escrito un instructivo separado para ayudarlo a guiarlo a través del proceso de hacer uno. El enlace al instructable está aquí:
www.instructables.com/id/Making-a-3D-Print…
Paso 2: preparación del mapa para inserciones de LED
Ahora que tiene un mapa 3D, con carreteras, pueblos y ríos, necesitamos una forma de indicar dónde se encuentra una persona en el mapa. Usé LED RG bicolor de 3 mm, porque el propósito principal del mapa es mostrar dónde están los dos padres. En ciertos lugares utilicé un LED RGB, para permitirme mostrar dónde estaba el hijo mayor. Hay un límite de 28 pines para la salida en la Raspberry Pi, así que elija sabiamente la ubicación de los LED. Terminé usando alrededor de 24 de ellos, por lo que debería estar bien.
Para perforar PLA, encontré que una broca normal para madera funcionaba bien y la traté como trataría la madera.
En lugares donde el mapa era demasiado grueso, perforaba la capa base con una broca grande y luego la capa superior visible con la broca correcta de 3 mm.
Paso 3: inserte los LED
Ahora que tenemos agujeros para que se asienten los LED, podemos pegarlos. PVA o Superglue funcionan bien para esto, descubrí que PVA lo rodeaba sellándolo en su lugar, y el superglue también funcionaba muy bien. Asegúrese de que con cada LED, solo sobresalgan unos pocos mm en el lado visible, porque tener los LED sobresaliendo por completo se ve un poco desordenado. No se preocupe por las patas en la parte posterior, podemos doblarlas una vez que estén soldadas.
Paso 4: conecta los LED a la Raspberry Pi
Soldé directamente los LED a la Raspberry Pi, sin embargo, si tiene uno con un encabezado pre-soldado, o si desea poder usar el pi para otra cosa, sugeriría usar cables de puente para cada LED, lo que significa que el Pi es extraíble. Pueden ver que una vez que hube soldado el LED, doblé las patas hacia abajo para que no se pegaran en la parte trasera.
Paso 5: prueba los LED
Para asegurarme de que todos los LED están funcionando, ejecuté un script que pasa por cada pin posible y los ilumina, uno a la vez, que pasa al siguiente cuando hago clic en Enter. Esto me permitió anotar qué número de pin hizo qué ubicación, lo que resultó muy útil.
importar RPi. GPIO como GPIO
tiempo de importación GPIO.setmode (GPIO. BCM) para i en el rango (0, 28): GPIO.setup (i, GPIO. OUT) para i en el rango (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("Eso fue:" + str (i)) z = raw_input ("¿Siguiente?")
Mientras esto sucedía, anotaba en un archivo de texto qué pin hizo qué ubicación y qué color. Debe hacer esto, ya que es muy útil en el siguiente paso.
Paso 6: Código para encender el LED cuando se lo solicite
La forma en que he realizado este proyecto involucra una Raspberry Pi Zero W, con un sitio web básico que te permite activar un pin. Esto significó que el Pi 4 principal, que generalmente está encendido y en ejecución, puede hacer el procesamiento, y luego el pequeño Pi 0 solo tiene que encender un pin, lo que hace las cosas un poco más complicadas. Hice esto porque se adapta a mi configuración, y también sentí que el Pi 0 puede ser un poco lento para lo que haremos más adelante.
importar RPi. GPIO como GPIO
import time from flask import Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) para i en el rango (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 (): para i en el rango (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 forma en que esto funciona es que espera la URL de la dirección IP del pi y luego un encendido o apagado y luego el número de pin.
guarde este código en el directorio de inicio de la Raspberry Pi y asígnele el nombre "pin_website.py"
Deberá configurar esto para que se ejecute automáticamente, así que para hacer esto, en el tipo de terminal: sudo nano / etc / profile
En la parte inferior de este archivo, agregue "python3 pin_website.py &"
El "&" es esencial, ya que hace que se ejecute en segundo plano y, por lo tanto, permite que el arranque continúe.
Paso 7: Cómo obtener la ubicación
Con IFTTT, puede configurar un servicio para que cuando el teléfono ingrese a una ubicación determinada, pueda enviarle un correo electrónico, hacer ping a una dirección web o enviarle un mensaje por telegrama.
Paso 8: Cómo funciona todo esto
La configuración que tengo es un Server Pi, que aloja mi sitio web, con reenvío de puertos y un DNS estático utilizando el servicio proporcionado por https://freedns.afraid.org/. Mucho de esto es bastante complejo, y necesita comprender el reenvío de puertos, podría hacer un instructivo sobre cómo hacer esta parte en otro momento.
Otra forma en que puede hacerlo es usar telegram para enviar mensajes al pi, o posiblemente la más fácil, es configurar un lector de correo electrónico que lea los correos electrónicos y reciba actualizaciones de ubicación a través de él.
No he probado el bot de Telegram ni un lector de correo electrónico, pero hay muchos tutoriales que le mostrarán cómo hacerlo.
Aquí está mi código de Flask / Python que luego es solicitado por webhooks usando IFTTT:
desde el matraz import Flask, render_template, request, jsonify
importar sistema operativo desde fecha y hora importar fecha y hora desde mapa importar * app = Flask (_ name_) l = 0 setup () @ app.route ('/') def index (): return request.remote_addr @ app.route ('/ mum / enter / ') def mu (ubicación): mum.current_loc (ubicación) return "¡Gracias por la actualización, mamá!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) return "¡Gracias por la actualización, papá!" @ app.route ("/ child / enter /") def child_enter (l): me.current_loc (l) return "Hey, yo" @ app.route ('/ mum / exit /') def mume (ubicación): mum.offline (ubicación) return "¡Gracias por la actualización, mamá!" @ app.route ("/ dad / exit /") def dade (l): dad.offline (l) return "¡Gracias por la actualización, papá!" @ app.route ("/ child / exit /") def child_exit (l): yo.offline (l) return "Hey, yo" @ app.route ("/ reset") def redo (): setup () return "¡Reiniciar!" if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
y map.py:
importar 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")) respuesta = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251n. "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 () class mum: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "cuatro cruces": 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)) respuesta = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) respuesta = 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," cuatro cruces ": 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 &") class dad: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "cuatro cruces": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," cuatro cruces ": 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)) 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," casa ": 23," shrewsbury ": 0," llanymynech ": 6," cuatro cruces ": 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 ("OBTENER", 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 &")
Paso 9: crea el tuyo propio a partir de la inspiración de mi proyecto
Entonces sé que el paso anterior será muy difícil de entender, así que lo dejaré como para mostrarte cómo hacer el mapa, y poder tener una raspberry pi que encienda y apague los leds. Ahora necesita crear un script de Python que, usando IFTTT, le envíe un correo electrónico. Luego, debe encontrar un código de lectura de correo electrónico, lo cual es bastante fácil (busque en Google). Luego, una vez que lea un correo electrónico y encuentre la ubicación de un padre, use las declaraciones 'si' para encontrar qué pin activar.
En el mapa, una luz intermitente significa que acaban de salir del área.
La forma de encender los LED en otro pi de python es la siguiente:
importar http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #cambie esto con la dirección IP del mapa de raspberry pi conn.request ("GET", str ("/ off / 2 ")) # esto desactiva el pin número 2 response = conn.getresponse () # esto solicita la URL, y luego el mapa pi lee esto y desactiva el pin número 2
Básicamente, espero que puedas usar lo que he hecho con mi mapa 3D como inspiración para hacer tu propio mapa de rastreo GPS.
Recomendado:
Introducción: convierta una Raspberry Pi en un servidor de seguimiento GPS: 12 pasos
Introducción - Convierta una Raspberry Pi en un servidor de rastreo GPS: en esta guía le mostraré cómo instalar el software de rastreo GPS Traccar en una Raspberry Pi que recibirá datos de dispositivos compatibles a través de Internet, registrando sus posiciones en un mapa en tiempo real. seguimiento, y también seguimiento de reproducción
Cree su propio sistema de seguimiento de seguridad GPS SMS: 5 pasos (con imágenes)
Haga su propio sistema de seguimiento de seguridad GPS SMS: en este proyecto le mostraré cómo combinar un módulo SIM5320 3G con un Arduino y un transductor piezoeléctrico como sensor de choque para crear un sistema de seguimiento de seguridad que le enviará la ubicación de su precioso vehículo a través de SMS cuando
Mochila inteligente con seguimiento GPS y luces automáticas: 15 pasos
Mochila inteligente con seguimiento GPS y luces automáticas: en este instructable haremos una mochila inteligente que puede rastrear nuestra posición, velocidad y tiene luces automáticas que pueden mantenernos seguros durante la noche. Utilizo 2 sensores para detectar si está sobre tus hombros para asegurarme de que no se active cuando no es necesario
Kits de coche de seguimiento de robot inteligente de bricolaje Seguimiento de coche fotosensible: 7 pasos
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTPuedes comprar desde el robot de seguimiento carTheoryLM393 chip compara los dos fotorresistores, cuando hay un fotorresistor LED en BLANCO, el lado del motor se detendrá inmediatamente, el otro lado del motor girar, de modo que
Cómo conectar el DeLorme Earthmate GPS LT-20 a su Google Earth para obtener un excelente mapa de seguimiento GPS: 5 pasos
Cómo conectar el DeLorme Earthmate GPS LT-20 a su Google Earth para obtener un excelente mapa de seguimiento GPS: le mostraré cómo conectar un dispositivo GPS al popular programa Google Earth, sin usar Google Earth Plus. No tengo un gran presupuesto, así que puedo garantizar que será lo más barato posible