Përmbajtje:

Gjurmimi GPS Harta 3D: 9 hapa
Gjurmimi GPS Harta 3D: 9 hapa
Anonim
Gjurmimi GPS Harta 3D
Gjurmimi GPS Harta 3D
Gjurmimi GPS Harta 3D
Gjurmimi GPS Harta 3D

Ky projekt është një hartë 3D e printuar 3D, me rrugë, lumenj dhe qytete, me fenerë LED për të treguar vendndodhjen e anëtarëve të familjes. Mund të tregojë nëse një fëmijë është apo jo në shkollë, ose vetëm vendndodhjen e të dy prindërve. Ne gjithashtu mund ta përdorim atë për të parashikuar në cilën orë prindërit kthehen në shtëpi, në mënyrë që darka të bëhet për kohën e duhur. Alsoshtë gjithashtu vetëm një projekt përgjithësisht interesant për tu shfaqur dhe shfaqur para familjes dhe miqve.

Shpresoj që të kënaqeni duke e bërë këtë udhëzues, ose të kënaqeni duke mësuar për një projekt që kam bërë

Hapi 1: Marrja e një harte 3D

Për të marrë një hartë 3D të zonës tuaj, unë kam shkruar një udhëzues të veçantë për t'ju ndihmuar të udhëzoni gjatë procesit të krijimit të një të tillë. Lidhja me udhëzimet është këtu:

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

Hapi 2: Përgatitja e Hartës për Futjet LED

Tani që keni një hartë 3D, me rrugë, qytete dhe lumenj, ne kemi nevojë për një mënyrë për të treguar se ku është një person në hartë. Kam përdorur LED me ngjyra RG 3 mm, sepse qëllimi kryesor i hartës është të tregojë se ku janë dy prindërit. Në vende të caktuara kam përdorur një LED RGB, për të më lejuar të tregoj se ku ishte fëmija më i madh. Ekziston një kufi prej 28 kunjash për të dalë në Raspberry Pi, kështu që zgjidhni vendet e LED -ve me mençuri. Përfundova duke përdorur rreth 24 prej tyre, kështu që ju duhet të jeni mirë.

Për të shpuar PLA, gjeta se një stërvitje normale e drurit punonte mirë, dhe unë trajtova siç do të trajtoja drurin.

Në vendet, ku harta ishte shumë e trashë, unë do të shpoja shtresën bazë me një stërvitje të madhe, dhe më pas shtresën e dukshme më sipër me stërvitjen e saktë 3 mm.

Hapi 3: Futni LED -të

Futni LED -të
Futni LED -të

Tani që kemi vrima për LED për t'u ulur, Ne mund t'i ngjisim ato. PVA ose Superglue funksionon mirë për këtë, zbulova se PVA vrapoi rreth tij duke e mbyllur atë në vend, dhe supergla gjithashtu funksionoi shumë mirë. Sigurohuni që me secilën LED, ato të qëndrojnë vetëm në anën e dukshme me disa mm, sepse të kesh LED të dalë deri në fund duket pak e çrregullt. Mos u shqetësoni për këmbët në anën e pasme, ne mund t'i palosim ato pasi të jenë ngjitur.

Hapi 4: Lidhni LED -të me Raspberry Pi

Unë i bashkova drejtpërdrejt LED-të në Raspberry Pi, megjithatë, nëse keni një me një kokë të para-ngjitur, ose dëshironi të jeni në gjendje të përdorni pi për diçka tjetër, atëherë unë do të sugjeroja përdorimin e telave të bluzave për secilën LED, që do të thotë se Pi është i heqshëm. Ju mund të shihni që sapo e kisha bashkuar LED -in, i palosa këmbët poshtë në mënyrë që ato të mos ngjiteshin në anën e pasme.

Hapi 5: Testoni LED -të

Testoni LED -të
Testoni LED -të

Për t'u siguruar që të gjitha LED -të janë duke punuar, unë drejtova një skenar që kalon nëpër secilën kunj të mundshëm dhe i ndez ato, një nga një, i cili, kalon në tjetrin kur klikoj enter. Kjo më lejoi të shënoja se cili numër pin e bëri cilin vend, i cili doli shumë i dobishëm.

importoni RPi. GPIO si GPIO

koha e importit GPIO.setmode (GPIO. BCM) për i në rang (0, 28): GPIO.setup (i, GPIO. OUT) për i në rang (0, 28): GPIO.output (i, GPIO. HIGHT) time.sleep (0.3) GPIO.putput (i, GPIO. LOW) print ("Kjo ishte:" + str (i)) z = raw_input ("Tjetra?")

Ndërsa kjo po ndodhte, unë do të shënoja një skedar teksti se cili pin e bëri atë vendndodhje dhe cilën ngjyrë. Ju duhet ta bëni këtë, pasi është shumë e dobishme në hapin tjetër.

Hapi 6: Kodi për të ndezur LED kur kërkohet

Mënyra se si e kam bërë këtë projekt përfshin një Raspberry Pi Zero W, me një uebfaqe bazë e cila ju lejon të ndizni një kunj. Kjo do të thoshte që Pi 4 kryesor, i cili zakonisht është i ndezur dhe funksionon, mund të bëjë përpunimin, dhe më pas Pi 0 i vogël duhet të ndezë vetëm një kunj, duke i bërë gjërat pak më të komplikuara. E bëra këtë sepse i përshtatet konfigurimit tim, dhe gjithashtu ndjeva që Pi 0 mund të jetë pak i ngadalshëm për atë që do të bëjmë më vonë.

importoni RPi. GPIO si GPIO

koha e importit nga importi i shishes Flask, render_template, kërkesë, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) për i në rang (0, 28): GPIO.setup (i, GPIO. OUT) @app.route ('/') def index (): kërkesa për kthim.remote_addr @app.route ("/off/") def turn_off (pin): GPIO.output (int (pin), GPIO. LOW) kthehu "Off" @app.route ("/off/all") def alloff (): për i në rang (0, 28): GPIO.output (i, GPIO. LOW) kthehu "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGHT) kthehu "On" nëse _name_ == '_main_': app.run (debug = E vërtetë, host = '0.0. 0.0 ')

Mënyra se si funksionon kjo është se pret url -në e adresës IP të pi -së dhe më pas një on ose off dhe më pas numrin pin.

ruani këtë kod në drejtorinë shtëpiake të Raspberry Pi dhe emërtojeni atë "pin_website.py"

Ju do të duhet ta vendosni këtë që të funksionojë automatikisht, kështu që për ta bërë këtë, në llojin e terminalit: sudo nano /etc /profile

Në fund të këtij skedari, shtoni "python3 pin_website.py &"

"&" Është thelbësore, pasi e bën atë të funksionojë në sfond, dhe për këtë arsye lejon që boot të vazhdojë

Hapi 7: Si të merrni vendndodhjen

Si të merrni vendndodhjen
Si të merrni vendndodhjen

Duke përdorur IFTTT, mund të vendosni një shërbim në mënyrë që kur telefoni të hyjë në një vendndodhje të caktuar, të mund t'ju dërgojë me email, ose të dërgojë një adresë uebi, ose t'ju dërgojë mesazhe në telegram.

Hapi 8: Si funksionon e gjitha kjo

Konfigurimi që kam është një Server Pi, që pret faqen time të internetit, me përcjellje portesh dhe një DNS statike duke përdorur shërbimin e ofruar nga https://freedns.afraid.org/. Shumë nga kjo është mjaft komplekse, dhe ju duhet të keni një kuptim të përcjelljes së portit, unë mund të bëj një udhëzues se si ta bëni këtë pjesë një herë tjetër.

Një mënyrë tjetër që mund ta bëni është të përdorni telegramin për të marrë mesazhe në pi, ose ndoshta më e lehtë, është të krijoni një lexues emaili që lexon email -et dhe merr përditësimet e vendndodhjes përmes tij.

Unë nuk e kam provuar botin e Telegramit ose një lexues emaili, por ka shumë mësime atje që do t'ju tregojnë se si.

Këtu është kodi im Flask / Python i cili më pas kërkohet nga lidhësit e uebit duke përdorur IFTTT:

nga importi i balonës Flask, render_template, kërkesë, jsonify

import os nga dataetime import dataetime nga harta import * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): kërkesë për kthim.remote_addr @app.route ('/mum/enter /') def mu (vendndodhja): mum.current_loc (vendndodhja) kthehu "Faleminderit Për Përditësimin, Mami!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) kthehu "Faleminderit për përditësimin, baba!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) kthe "Hey, Me" @app.route ('/mum/exit/') def mume (vendndodhja): mum.offline (vendndodhja) kthehu "Faleminderit për përditësimin, nënë!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) kthehu "Faleminderit për përditësimin, baba!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) kthehu "Hej, Unë" @app.route ("/reset") def reddo (): setup () return "Rivendos!" nëse _name_ == '_main_': app.run (debug = E vërtetë, host = '0.0.0.0')

dhe map.py:

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

import ast, json koha e importit 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 ("/dinamike/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) reply = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1) (' 192.168.1) "GET", str ("/off/all")) reply = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = hapur ("pind", "w") f.shkruaj (str (-1)) f.mbylli () f = hap ("pinm", "w") f.shkruaj (str (-1)) f.mbyl () mamaja e klasës: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "katër kryqe": 18, "llandrinio": 25, "welshpool": 27} f = hapur ("pin", "w") f.shkruaj (str (-1)) f.mbylli () kohën. fle (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') lidh. kërko ("GET", str ("/off/") + str (last_loc)) përgjigje = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.quest ("GET", str ("/on/") + str (locs [l])) answer = 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," katër kryqe ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.quest (" GET ", str (" /off/") + str (last_loc)) reply = conn.getresponse () f = open (" pin "," w ") f.write (str (locs [l])) f. mbyll () os.system ("python3 flash.py &") babai i klasës: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "katër kryqe": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," katër kryqe ": 15} f = hapur (" pind "," w ") f.shkruaj (str (-1)) f.mbylli () koha. fle (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') kon. Kërkon t ("GET", str ("/off/") + str (dlast_loc)) përgjigje = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') lidh. kërkesë ("GET", str ("/on/") + str (locs [l])) response = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," shtëpi ": 23," shrewsbury ": 0," llanymynech ": 6," katër kryqe ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (dlast_loc)) answer = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") klasa mua: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = hapur ("pinm", "w") f.shkruaj (str (-1)) f.mbyl () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000 ') conn.quest ("GET", str ("/off/") + str (mlast_loc)) answer = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') lidhje.kërkoj ("GET", str ("/on/") + str (nr cs [l])) answer = 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') konn.quest ("GET", str ("/off/") + str (mlast_loc)) respond = conn.getresponse () f = open ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")

Hapi 9: Ndërtoni tuajin nga frymëzimi nga projekti im

Kështu që unë e di se hapi i mëparshëm do të jetë shumë i vështirë për tu kuptuar, kështu që unë do ta lë atë duke ju treguar se si të bëni hartën dhe të jeni në gjendje të keni një pi mjedër që ndez dhe fik LED -et. Tani ju duhet të krijoni një shkrim python që, duke përdorur IFTTT, ju dërgon email. Atëherë ju duhet të gjeni një kod të leximit të postës elektronike, i cili është mjaft i lehtë (google it). Pastaj pasi të keni lexuar një email dhe të gjeni vendndodhjen e një prindi, përdorni deklaratat 'nëse' për të gjetur se cilën pin të aktivizoni.

Në hartë, një dritë ndezëse do të thotë që ata sapo kanë lënë zonën

Mënyra për të ndezur LED -të në një pi tjetër nga python është si më poshtë:

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

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #ndryshoje këtë me adresën IP të hartës së mjedrës pi, kërkesë ("GET", str ("/off /2 ")) # kjo fik numrin pin 2 përgjigje = conn.getresponse () # kjo kërkon URL -në, dhe pastaj harta pi e lexon këtë dhe fik numrin pin 2

Në thelb, shpresoj se mund të përdorni atë që kam bërë me hartën time 3D si frymëzim për të bërë hartën tuaj të përcjelljes GPS.

Recommended: