INHOUDSOPGAWE:
- Stap 1: Kry 'n 3D -kaart
- Stap 2: Die kaart voorberei vir LED -insetsels
- Stap 3: Plaas die LED's
- Stap 4: Koppel die LED's aan die Raspberry Pi
- Stap 5: Toets die LED's
- Stap 6: Kode om die LED aan te skakel wanneer dit versoek word
- Stap 7: Hoe om ligging te ontvang
- Stap 8: Hoe dit alles werk
- Stap 9: Bou u eie uit inspirasie uit my projek
Video: GPS -dop 3D -kaart: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Hierdie projek is 'n 3D -gedrukte 3D -kaart, met paaie, riviere en dorpe, met LED -bakens om die ligging van lede van die gesin aan te dui. Dit kan aandui of 'n kind op skool is, of net die plek van albei ouers. Ons kan dit ook gebruik om te voorspel hoe laat die ouers by die huis kom, sodat aandete op die regte tyd gemaak kan word. Dit is ook net 'n baie goeie projek om te pronk en te vertoon aan familie en vriende.
Ek hoop dat u dit geniet om hierdie instruksies te maak, of dat u dit geniet om uit te vind oor 'n projek wat ek gemaak het
Stap 1: Kry 'n 3D -kaart
Om 'n 3D -kaart van u gebied te kry, het ek 'n aparte instruksie geskryf om u te help om die proses te maak. Die skakel na die instruksies is hier:
www.instructables.com/id/Making-a-3D-Print…
Stap 2: Die kaart voorberei vir LED -insetsels
Noudat u 'n 3D -kaart met paaie, dorpe en riviere het, moet ons aandui waar 'n persoon op die kaart is. Ek het tweekleurige 3 mm RG-LED's gebruik, want die hoofdoel van die kaart is om aan te toon waar die twee ouers is. Op sekere plekke het ek 'n RGB LED gebruik, sodat ek kon wys waar die oudste kind was. Daar is 'n limiet van 28 penne om op die Raspberry Pi uit te voer, dus kies die liggings van die LED's verstandig. Uiteindelik het ek ongeveer 24 daarvan gebruik, so dit moet goed gaan.
Om PLA te boor, het ek gevind dat 'n gewone houtboor goed werk, en ek het behandel soos ek hout sou behandel.
Op plekke waar die kaart te dik was, sou ek die basislaag uitboor met 'n groot boorpunt, en dan die sigbare bogenoemde laag met die korrekte boorpunt van 3 mm.
Stap 3: Plaas die LED's
Noudat ons gate in die LED's het om in te sit, kan ons dit plak. PVA of Superglue werk goed hiervoor. Maak seker dat hulle met elke LED slegs 'n paar mm aan die sigbare kant uitsteek, want dit lyk effens deurmekaar om die LED's heeltemal uit te steek. Moenie bekommerd wees oor die bene op die rug nie; ons kan dit vou sodra dit gesoldeer is.
Stap 4: Koppel die LED's aan die Raspberry Pi
Ek het die LED's direk aan die Raspberry Pi gesoldeer, maar as u een het met 'n vooraf gesoldeerde kop, of as u die pi vir iets anders wil gebruik, stel ek voor dat u draaddrade vir elke LED gebruik, wat beteken dat die Pi is verwyderbaar. U kan sien dat ek, nadat ek die LED gesoldeer het, die bene platgevou het sodat hulle nie op die rug vasgesteek het nie.
Stap 5: Toets die LED's
Om seker te maak dat al die LED's werk, het ek 'n script uitgevoer wat deur elke moontlike pen gaan, en dit een vir een aangesteek, wat na die volgende een oorgaan as ek op enter klik. Dit het my in staat gestel om aan te meld watter speldommer die ligging gedoen het, wat baie nuttig was.
voer RPi. GPIO in as GPIO
invoertyd GPIO.setmode (GPIO. BCM) vir i in reeks (0, 28): GPIO.setup (i, GPIO. OUT) vir i in reeks (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("That Was:" + str (i)) z = raw_input ("Next?")
Terwyl dit gebeur, sou ek 'n tekslêer noteer watter pen die ligging en watter kleur bevat. U moet dit doen, aangesien dit in die volgende stap baie handig is.
Stap 6: Kode om die LED aan te skakel wanneer dit versoek word
Die manier waarop ek hierdie projek gedoen het, behels een Raspberry Pi Zero W, met 'n basiese webwerf waarmee u 'n speld kan aanskakel. Dit het beteken dat die hoof Pi 4, wat gewoonlik aan en aan die gang is, die verwerking kan doen, en dan hoef die klein Pi 0 net 'n pen aan te skakel, wat dinge effens ingewikkelder maak. Ek het dit gedoen omdat dit by my opset pas, en ek het ook gevoel dat die Pi 0 'n bietjie stadig kan wees vir wat ons later gaan doen.
voer RPi. GPIO in as GPIO
invoer tyd van fles invoer fles, render_template, versoek, jsonify import os app = fles (_ naam_) p = GPIO.setmode (GPIO. BCM) vir i in reeks (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) gee "Off" @app.route ("/off/all") def alloff (): vir i in range (0, 28): GPIO.output (i, GPIO. LOW) return "off" @app.route ("/aan/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) gee "Aan" terug as _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')
Die manier waarop dit werk, wag op die url van die pi se IP -adres en dan op of af en dan die speldnommer.
stoor hierdie kode in die tuisgids van die Raspberry Pi, en noem dit "pin_website.py"
U moet dit instel om outomaties te werk, om dit te doen in die terminale tipe: sudo nano /etc /profile
Voeg onderaan hierdie lêer 'python3 pin_website.py &' by
Die '&' is noodsaaklik, want dit laat dit op die agtergrond loop en laat toe dat die opstart kan voortgaan
Stap 7: Hoe om ligging te ontvang
Deur IFTTT te gebruik, kan u 'n diens opstel sodat wanneer u die telefoon op 'n sekere plek binnegaan, u 'n e -pos kan stuur, 'n webadres kan ping, of 'n boodskap aan u kan stuur op telegram.
Stap 8: Hoe dit alles werk
Die opstelling wat ek het, is 'n Server Pi, wat my webwerf huisves, met poortaanstuur en 'n statiese DNS met behulp van die diens wat deur https://freedns.afraid.org/ aangebied word. Baie hiervan is taamlik kompleks, en u moet kennis neem van die deurstuur van poort.
'N Ander manier waarop u dit kan doen, is deur telegram te gebruik om boodskappe na die pi te stuur, of moontlik die maklikste, is om 'n e -posleser op te stel wat die e -posse lees en daardeur liggingopdaterings ontvang.
Ek het nie die Telegram -bot of 'n e -posleser probeer nie, maar daar is baie tutoriale wat u sal wys hoe u dit moet doen.
Hier is my Flask / Python -kode wat dan deur webhooks aangevra word met behulp van IFTTT:
vanaf kolf invoer Kolf, render_template, versoek, 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 (ligging): mum.current_loc (plek) terug "Dankie vir die opdatering, mamma!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) gee terug "Dankie vir die opdatering, pa!" @app.route ("/kind/enter/") def child_enter (l): me.current_loc (l) gee terug "Hey, ek" @app.route ('/ma/exit/') def mume (plek): mamma.offline (ligging) terugkeer "Dankie vir die opdatering, mamma!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) gee terug "Dankie vir die opdatering, pa!" @app.route ("/kind/uitgang/") def child_exit (l): me.offline (l) gee terug "Hey, ek" @app.route ("/reset") def redo (): setup () terug "Herstel!" as _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
en map.py:
voer http.client, urllib.request, urllib.parse, urllib.error, base64 in
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")) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn. "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 () klas ma: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "vier kruise": 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," vier kruise ": 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 &") klasvader: locs = {"welshpool": 3, "lynclys": 1, "huis": 23, "shrewsbury": 0, "llanymynech": 6, "vier kruise": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," vier kruise ": 15} f = open (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTP -verbinding ('192.168.1.251:5000') konn.reeks 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," four crosses ": 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 &") klas my: 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 (kyk 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 &")
Stap 9: Bou u eie uit inspirasie uit my projek
Ek weet dus dat die vorige stap baie moeilik sal wees om te verstaan, en ek sal u hierna laat wys hoe u die kaart kan maak en 'n framboos -pi kan hê wat die LED's aan- en uitskakel. U moet nou 'n python -script skep wat u met behulp van IFTTT e -pos. Dan moet u 'n stuk kode vind wat eenvoudig is (google dit). Sodra u 'n e -pos gelees het en die ligging van 'n ouer gevind het, gebruik 'as' -stellings om te bepaal watter pen u moet aanskakel.
Op die kaart beteken 'n flikkerlig dat hulle pas die gebied verlaat het
Die manier om die LED's op 'n ander pi vanaf python aan te skakel, is soos volg:
voer http.client, urllib.request, urllib.parse, urllib.error, base64 in
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #verander dit met die IP -adres van die framboos pi verbindingsaanvraag ("GET", str ("/off) /2 "))) # hierdie skakel pin nommer 2 reaksie uit = conn.getresponse () # dit versoek die URL, en dan lees die kaart pi dit en skakel pin nommer 2 uit
Ek hoop basies dat u wat ek met my 3D -kaart gedoen het, kan inspireer om u eie GPS -opsporingskaart te maak.
Aanbeveel:
GPS -spoorsnyer: 6 stappe
GPS Tracker: Hey ouens in hierdie video maak ons 'n GPS tracker met behulp van Esp 8266 (nodemcu) en 'n neo 6m GPS module
Maak GPS -GRENSE GRENSE Met behulp van Arduino: 8 stappe
Maak GPS -GRENSSE met behulp van Arduino: In hierdie tutoriaal leer ons hoe u 'n GPS -GRENS kan maak met Arduino, dit is handig as u 'n robot het en u nie wil hê dat dit buite die gespesifiseerde gebied moet gaan nie. As die robot buite die gebied is , sal die skerm 'Buite' wys
GPS Para Norma (Datalogger EEPROM): 5 stappe
GPS Para Norma (Datalogger EEPROM): Eenvoudige GPS troeteldier -datalogger gebaseer op arduino- en EEPROM -opname ================================= ================================================================================================== '' 'Gom' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' `` 'n = '' '' '' ========================
Skep pasgemaakte kaarte vir u Garmin GPS: 8 stappe (met foto's)
Skep pasgemaakte kaarte vir u Garmin GPS: as u 'n Garmin GPS het wat ontwerp is vir stap- en ander buitelugaktiwiteite (insluitend die GPSMAP-, eTrex-, Colorado-, Dakota-, Oregon- en Montana -reeks), hoef u nie tevrede wees met die kaalbene-kaarte wat vooraf gelaai was. E
Hoe u die DeLorme Earthmate GPS LT-20 aan u Google Earth kan koppel vir 'n uitstekende GPS-spoorkaart: 5 stappe
Hoe om die DeLorme Earthmate GPS LT-20 aan u Google Earth te koppel vir 'n uitstekende GPS-opsporingskaart: Ek sal u wys hoe u 'n GPS-toestel aan die gewilde Google Earth-program kan koppel sonder om Google Earth Plus te gebruik. Ek het nie 'n groot begroting nie, so ek kan verseker dat dit so goedkoop moontlik is