Sisukord:

GPS -i jälgimise 3D -kaart: 9 sammu
GPS -i jälgimise 3D -kaart: 9 sammu

Video: GPS -i jälgimise 3D -kaart: 9 sammu

Video: GPS -i jälgimise 3D -kaart: 9 sammu
Video: TOYOTA RAV 4 TEST YANDEX MAPS VS MAPS. ME 2024, November
Anonim
GPS -i jälgimise 3D -kaart
GPS -i jälgimise 3D -kaart
GPS -i jälgimise 3D -kaart
GPS -i jälgimise 3D -kaart

See projekt on 3D -trükitud 3D -kaart, millel on teed, jõed ja linnad ning LED -majakad pereliikmete asukoha näitamiseks. See võib näidata, kas laps käib koolis või mitte, või lihtsalt mõlema vanema asukohta. Saame selle abil ennustada ka seda, millal vanemad koju jõuavad, et õhtusöök saaks õigel ajal tehtud. See on ka lihtsalt üldiselt lahe projekt, mida näidata ja näidata perele ja sõpradele.

Loodan, et teile meeldib selle juhendi tegemine või saate teada minu tehtud projektist

Samm: 3D -kaardi hankimine

Oma piirkonna 3D -kaardi saamiseks olen kirjutanud eraldi juhendi, mis aitab teid selle tegemisel. Juhendi link on siin:

www.instructables.com/id/Making-a-3D-Print…

2. samm: kaardi ettevalmistamine LED -sisestuste jaoks

Nüüd, kui teil on 3D -kaart koos teede, linnade ja jõgedega, vajame viisi, kuidas näidata kaardil inimese asukohta. Kasutasin kahevärvilisi 3 mm RG LED-e, sest kaardi põhieesmärk on näidata, kus on kaks vanemat. Teatud kohtades kasutasin RGB LED -i, et saaksin näidata, kus vanim laps oli. Raspberry Pi -l on väljundiks 28 tihvti, seega valige valgusdioodide asukohad targalt. Lõpuks kasutasin neid umbes 24, nii et teil peaks olema kõik korras.

PLA puurimiseks leidsin, et tavaline puidust puur töötas hästi ja ma käsitlesin nii nagu puitu.

Kohtades, kus kaart oli liiga paks, puuriksin suure puurvardaga välja aluskihi ja seejärel nähtava ülaosa õige 3 mm puuriga.

Samm: sisestage valgusdioodid

Sisestage valgusdioodid
Sisestage valgusdioodid

Nüüd, kui meil on valgusdioodide jaoks istumiseks augud, saame need sisse liimida. Selleks sobib hästi PVA või Superglue, leidsin, et PVA jooksis selle ümber, tihendades selle oma kohale ja ka superliim töötas väga hästi. Veenduge, et iga valgusdioodiga jäävad need nähtavale küljele välja vaid mõne mm võrra, sest valgusdioodide lõpuni välja paistmine tundub natuke räpane. Ärge muretsege tagaküljel olevate jalgade pärast, saame need kokku joota, kui need on kokku keeratud.

Samm: ühendage LED -id Raspberry Pi -ga

Jootsin valgusdioodid otse Raspberry Pi külge, aga kui teil on selline, millel on eelnevalt joodetud päis, või soovite pi kasutada millegi muuga, siis soovitaksin kasutada iga LED-i jaoks hüppajajuhtmeid, mis tähendab, et Pi on eemaldatav. Näete, et kui olin LED -i jootnud, voldin jalad alla, nii et need ei jääks selga.

Samm: katsetage valgusdioode

Testige valgusdioode
Testige valgusdioode

Veendumaks, et kõik valgusdioodid töötavad, käivitasin skripti, mis läbib kõik võimalikud tihvtid ja süttib need ükshaaval, mis siseneb järgmisele, kui klõpsan sisestusklahvi. See võimaldas mul märkida, milline pin -number mis asukohta tegi, mis oli väga kasulik.

RPi. GPIO importimine GPIO -na

impordi aeg GPIO.setmode (GPIO. BCM) i jaoks vahemikus (0, 28): GPIO.setup (i, GPIO. OUT) i jaoks vahemikus (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("See oli:" + str (i)) z = raw_input ("Järgmine?")

Sel ajal, kui see juhtus, märgiksin tekstifailile, milline tihvt millises kohas ja mis värvi tegi. Peate seda tegema, kuna see on järgmises etapis väga kasulik.

6. samm: kood LED -i sisselülitamiseks nõudmisel

Selle projekti tegemine hõlmab ühte Raspberry Pi Zero W -d, mille põhiline veebisait võimaldab teil nööpnõela sisse lülitada. See tähendas, et põhiline Pi 4, mis on tavaliselt sisse lülitatud ja töötab, saab töödelda ja siis peab väike Pi 0 ainult nööpnõela sisse lülitama, muutes asja veidi keerulisemaks. Ma tegin seda, sest see sobib minu seadistusega, ja tundsin ka, et Pi 0 võib olla aeglane selle suhtes, mida me hiljem teeme.

RPi. GPIO importimine GPIO -na

impordi aeg kolvi impordist Kolb, render_template, request, jsonify import os app = Kolb (_ name_) p = GPIO.setmode (GPIO. BCM) i jaoks vahemikus (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) tagastama "Väljas" @app.route ("/off/all") def alloff (): i jaoks vahemikus (0, 28): GPIO.output (i, GPIO. LOW) tagastama "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) tagastab "On", kui _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')

See toimib nii, et see ootab pi IP -aadressi URL -i ja seejärel sisse või välja ning seejärel PIN -koodi.

salvestage see kood Raspberry Pi kodukataloogi ja pange sellele nimi "pin_website.py"

Peate selle seadistama automaatseks käivitamiseks, selleks tehke terminalitüübis: sudo nano /etc /profile

Lisage selle faili alaossa "python3 pin_website.py &"

"&" On hädavajalik, kuna paneb selle taustal töötama ja võimaldab seega alglaadimist jätkata

Samm: kuidas asukohta saada

Kuidas asukohta saada
Kuidas asukohta saada

IFTTT abil saate teenuse seadistada nii, et kui telefon siseneb teatud asukohta, saadab see teile e -kirja või pingutab veebiaadressi või saadab teile sõnumi.

8. samm: kuidas see kõik töötab

Minu seadistus on server Pi, mis hostib minu veebisaiti, koos portide edastamise ja staatilise DNS -iga, kasutades teenust, mille pakub https://freedns.afraid.org/. Suur osa sellest on üsna keeruline ja teil peab olema arusaam sadama edastamisest, ma võiksin juhendada, kuidas seda osa teinekord teha.

Teine viis, kuidas seda teha, on telegrammi kasutamine sõnumite saatmiseks pi -le või võib -olla kõige lihtsam on seadistada e -posti lugeja, mis loeb e -kirju ja saab selle kaudu asukohavärskendusi.

Ma pole proovinud Telegrami robotit ega e -posti lugejat, kuid seal on palju õpetusi, mis näitavad teile, kuidas seda teha.

Siin on minu Flaski / Pythoni kood, mida seejärel IFTTT -d kasutavad veebihaagid küsivad:

kolvi impordist Kolb, render_template, request, jsonify

importida osad kuupäevast ja kellaaegadest importida kuupäev ja aeg kaardilt /') def mu (asukoht): mum.current_loc (asukoht) return "Täname värskenduse eest, ema!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Täname värskenduse eest, isa!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) return "Hei, mina" @app.route ('/mum/exit/') def mume (asukoht): mum.offline (asukoht) return "Täname värskenduse eest, ema!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Aitäh värskenduse eest, isa!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hei, mina" @app.route ("/reset") def redo (): setup () return "Lähtesta!" kui _name_ == '_main_': app.run (silumine = tõsi, host = '0.0.0.0')

ja map.py:

import http.client, urllib.request, urllib.parse, urllib.error, base64

import ast, json importimise aeg impordi lõimimine impordi 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.21.25000 "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = avatud ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () klassi ema: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "neli risti": 18, "llandrinio": 25, "welshpool": 27} f = avatud ("pin", "w") f.write (str (-1)) f.close () time. uni (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," neli risti ": 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 &") klassi isa: locs = {"welshpool": 3, "lynclys": 1, "kodu": 23, "shrewsbury": 0, "llanymynech": 6, "neli risti": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," neli risti ": 15} f = avatud (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') ühendusnõuded 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," kodu ": 23," shrewsbury ": 0," llanymynech ": 6," neli risti ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (dlast_loc)) response = conn.getresponse () f = avatud ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") klass mulle: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = avatud ("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 &")

9. samm: looge oma projektist inspireeritud inspiratsioon

Nii et ma tean, et eelmist sammu on väga raske mõista, seega jätan selle nii, et see näitab teile, kuidas kaarti teha, ja mul on võimalik saada vaarikapi, mis lülitab LED -id sisse ja välja. Nüüd peate looma pythoni skripti, mis IFTTT abil teile meili saadab. Siis peate leidma e -kirja lugemise kooditüki, mis on üsna lihtne (googeldage). Kui olete e -kirja lugenud ja vanema asukoha leidnud, kasutage lauset „if”, et leida, millist tihvti sisse lülitada.

Kaardil vilkuv tuli tähendab, et nad on piirkonnast äsja lahkunud

Pythonist teise pi -de LED -ide sisselülitamise viis on järgmine:

import http.client, urllib.request, urllib.parse, urllib.error, base64

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #muuda seda vaarika pi kaardi IP -aadressiga conn.request ("GET", str ("/off /2 ")) # lülitab nööpnõela number 2 vastuse välja = conn.getresponse () # see küsib URL -i ja siis kaart pi loeb seda ning lülitab pin -numbri 2 välja

Põhimõtteliselt loodan, et saate oma 3D -kaardi abil tehtut kasutada inspiratsioonina oma GPS -jälgimiskaardi tegemiseks.

Soovitan: