Turinys:
- 1 žingsnis: Gaukite 3D žemėlapį
- 2 žingsnis: Žemėlapio paruošimas LED intarpams
- 3 žingsnis: įdėkite šviesos diodus
- 4 veiksmas: prijunkite šviesos diodus prie „Raspberry Pi“
- 5 veiksmas: išbandykite šviesos diodus
- 6 veiksmas: kodas įjungti šviesos diodą, kai to paprašoma
- 7 veiksmas: kaip gauti vietą
- 8 žingsnis: kaip visa tai veikia
- 9 žingsnis: sukurkite savo įkvėpimą iš mano projekto
Video: GPS sekimo 3D žemėlapis: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Šis projektas yra 3D spausdintas 3D žemėlapis su keliais, upėmis ir miesteliais su LED švyturėliais, rodančiais šeimos narių buvimo vietą. Tai gali parodyti, ar vaikas yra mokykloje, ar ne, ar tik abiejų tėvų vieta. Mes taip pat galime jį naudoti numatydami, kada tėvai grįš namo, kad vakarienė būtų paruošta tinkamu laiku. Tai taip pat tiesiog puikus projektas, kurį galima parodyti ir parodyti šeimai ir draugams.
Tikiuosi, kad jums patiko tai padaryti „Instructable“arba jums patiko sužinoti apie mano sukurtą projektą
1 žingsnis: Gaukite 3D žemėlapį
Norėdami gauti savo vietovės 3D žemėlapį, parašiau atskirą instrukciją, kuri padės jums sukurti žemėlapį. Nuoroda į instrukciją yra čia:
www.instructables.com/id/Making-a-3D-Print…
2 žingsnis: Žemėlapio paruošimas LED intarpams
Dabar, kai turite 3D žemėlapį su keliais, miestais ir upėmis, mums reikia būdo nurodyti, kur žemėlapyje yra žmogus. Aš naudoju dviejų spalvų 3 mm RG šviesos diodus, nes pagrindinis žemėlapio tikslas yra parodyti, kur yra abu tėvai. Tam tikrose vietose aš naudoju RGB šviesos diodą, kad galėčiau parodyti, kur buvo vyriausias vaikas. „Raspberry Pi“gali būti išvestas iki 28 kaiščių, todėl protingai pasirinkite šviesos diodų vietas. Aš baigiau naudoti maždaug 24 iš jų, taigi jums turėtų būti gerai.
Norėdami gręžti PLA, radau, kad normalus medinis grąžtas gerai veikia, ir aš elgiausi taip, kaip apdorojau medieną.
Tose vietose, kur žemėlapis buvo per storas, aš išgręžčiau pagrindinį sluoksnį dideliu grąžtu, o tada matomą sluoksnį su tinkamu 3 mm grąžtu.
3 žingsnis: įdėkite šviesos diodus
Dabar, kai turime skylutes šviesos diodams prisėsti, galime jas įklijuoti. Tam puikiai tinka PVA arba „Superglue“, pastebėjau, kad PVA bėgo aplink jį, užsandarindama jį vietoje, o superklijai taip pat labai gerai veikė. Įsitikinkite, kad su kiekvienu šviesos diodu jie matomoje pusėje išsikiša tik keliais mm, nes, jei šviesos diodai išsikiša iki galo, atrodo šiek tiek netvarkinga. Nesijaudinkite dėl kojų ant nugaros, kai jas prilituosime, galime jas sulenkti.
4 veiksmas: prijunkite šviesos diodus prie „Raspberry Pi“
Aš tiesiogiai litavau šviesos diodus prie „Raspberry Pi“, tačiau, jei turite vieną su iš anksto lituojama antrašte arba norite naudoti „pi“kažkam kitam, aš siūlau kiekvienam šviesos diodui naudoti trumpiklius, tai reiškia, kad Pi yra nuimamas. Matote, kad kai litavau šviesos diodą, aš sulenkiau kojas žemyn, kad jos neliptų ant nugaros.
5 veiksmas: išbandykite šviesos diodus
Norėdami įsitikinti, kad visi šviesos diodai veikia, aš paleidžiau scenarijų, kuris eina per kiekvieną galimą kaištį, ir užsidega vienas po kito, kuris paspaudžiamas įvesti. Tai leido man užrašyti, kuris PIN kodas nurodė kokią vietą, o tai buvo labai naudinga.
importuoti RPi. GPIO kaip GPIO
importo laikas GPIO.setmode (GPIO. BCM) i diapazone (0, 28): GPIO.setup (i, GPIO. OUT), kai diapazonas (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("Tai buvo:" + str (i)) z = raw_input ("Kitas?")
Kol tai vyko, teksto faile pažymėčiau, kuris smeigtukas padarė kokią vietą ir kokia spalva. Jūs turite tai padaryti, nes tai labai naudinga kitame žingsnyje.
6 veiksmas: kodas įjungti šviesos diodą, kai to paprašoma
Šio projekto atlikimo būdas apima vieną „Raspberry Pi Zero W“su pagrindine svetaine, leidžiančia įjungti smeigtuką. Tai reiškė, kad pagrindinis „Pi 4“, kuris paprastai yra įjungtas ir veikia, gali apdoroti, o tada mažasis „Pi 0“turi tik įjungti kaištį, todėl viskas bus šiek tiek sudėtingiau. Aš tai padariau, nes tai tinka mano sąrankai, taip pat jaučiau, kad „Pi 0“gali būti šiek tiek lėtas dėl to, ką darysime vėliau.
importuoti RPi. GPIO kaip GPIO
importavimo laikas iš kolbos importavimo Kolba, render_template, request, jsonify import os app = Kolba (_ name_) p = GPIO.setmode (GPIO. BCM) i diapazone (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) grįžti „Išjungta“@app.route („/off/all“) def alloff (): i diapazone (0, 28): GPIO.output (i, GPIO. LOW) grįžti „off“@app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) grąžina "On", jei _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')
Tai veikia taip, kad laukia pi IP adreso URL, tada įjungiamas arba išjungiamas ir tada PIN kodas.
išsaugokite šį kodą „Raspberry Pi“pagrindiniame kataloge ir pavadinkite jį „pin_website.py“
Turėsite nustatyti, kad tai vyktų automatiškai, todėl, norėdami tai padaryti, įveskite terminalo tipą: sudo nano /etc /profile
Šio failo apačioje pridėkite „python3 pin_website.py &“
„&“Yra labai svarbus, nes jis veikia fone, todėl leidžia tęsti paleidimą
7 veiksmas: kaip gauti vietą
Naudodamiesi IFTTT, galite nustatyti paslaugą, kad kai telefonas įeina į tam tikrą vietą, jis gali jums atsiųsti el. Laišką, įvesti žiniatinklio adresą arba išsiųsti jums žinutę telegrama.
8 žingsnis: kaip visa tai veikia
Turiu sąranką „Server Pi“, kurioje yra mano svetainė, su prievadų peradresavimu ir statiniu DNS naudojant paslaugą, kurią teikia https://freedns.afraid.org/. Daug kas yra gana sudėtinga, ir jūs turite turėti supratimą apie uosto persiuntimą, galbūt norėčiau pamokyti, kaip kitą kartą atlikti šią dalį.
Kitas būdas, kurį galite padaryti, yra naudoti telegramą, kad gautumėte pranešimus į pi, arba galbūt lengviausia, yra nustatyti el. Pašto skaitytuvą, kuris skaito el. Laiškus ir per tai gauna vietos atnaujinimus.
Nesu bandžiusi „Telegram“roboto ar el. Pašto skaitytuvo, tačiau ten yra daug vadovėlių, kurie parodys, kaip tai padaryti.
Čia yra mano „Flask / Python“kodas, kurio tada prašo „webhooks“, naudodamiesi IFTTT:
iš kolbos importo Kolba, render_template, request, jsonify
importuoti operacines sistemas iš datos laiko importuoti datų laiką iš žemėlapio importavimo /') def mu (vieta): mum.current_loc (vieta) return "Ačiū už atnaujinimą, mama!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Ačiū už atnaujinimą, tėti!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) return "Hey, Me" @app.route ('/mum/exit/') def mume (vieta): mum.offline (vieta) grįžti "Ačiū už atnaujinimą, mama!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Ačiū už atnaujinimą, tėti!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hey, Me" @app.route ("/reset") def redo (): setup () return "Atstatyti!" if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
ir map.py:
importuoti http.client, urllib.request, urllib.parse, urllib.error, base64
importuoti ast, json importo laikas importuoti sriegį importuoti 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.2000 "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = atidaryti ("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, „keturi kryžiai“: 18, „llandrinio“: 25, „welshpool“: 27} f = atviras („kaištis“, „w“) f.rašyti (str (-1)) f.uždaryti () laiką. miego (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," keturi kryžiai ": 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 &") klasės tėtis: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "keturi kryžiai": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," keturi kryžiai ": 15} f = atviras (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') jungtiniai reikalavimai 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," namai ": 23," shrewsbury ": 0," llanymynech ": 6," keturi kryžiai ": 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ė man: 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 &")
9 žingsnis: sukurkite savo įkvėpimą iš mano projekto
Taigi aš žinau, kad ankstesnį žingsnį bus labai sunku suprasti, todėl paliksiu jį kaip parodantį, kaip sudaryti žemėlapį, ir galėsiu turėti aviečių pi, kuris įjungia ir išjungia šviesos diodus. Dabar turite sukurti „python“scenarijų, kuris, naudojant IFTTT, jums atsiųs el. Tada jums reikia rasti el. Pašto skaitymo kodą, kuris yra gana lengvas („google“). Tada, perskaitę el. Laišką ir suradę tėvų vietą, naudokite teiginius „jei“, kad surastumėte, kurį smeigtuką įjungti.
Žemėlapyje mirksinti lemputė reiškia, kad jie ką tik paliko vietovę
Šviesos diodų įjungimas kitame „Python“pi yra toks:
importuoti http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #pakeiskite tai naudodami aviečių pi žemėlapio IP adresą conn.request ("GET", str ("/off /2 ")) # tai išjungia 2 PIN kodo atsakymą = conn.getresponse () # tai prašo URL, tada žemėlapis pi skaito tai ir išjungia 2 PIN kodą
Iš esmės tikiuosi, kad galite panaudoti tai, ką padariau su savo 3D žemėlapiu, kaip įkvėpimą, kad sukurtumėte savo GPS sekimo žemėlapį.
Rekomenduojamas:
Blink Caos: Žemėlapis pagal atsitiktinį mirksėjimą: 5 žingsniai
Blink Caos: Žemėlapio logotipas ir atsitiktinis mirksėjimas: este ir pamokomas generatorius degalų, naudojimo ir žemėlapio žurnalo istorijoje, que ahora explico que es. Con el mapa log í stico, se enciende y apaga un led de forma aleatoria. Este puede servir simplemente de ejemplo de como a
Naujasis Taipėjaus miesto turistinis žemėlapis !!!: 6 žingsniai
Naujojo Taipėjaus miesto turistinis žemėlapis !!!: Šiame projekte aš padarysiu langelį, o jo viršuje bus Naujojo Taipėjaus miesto žemėlapis. Šio projekto tikslas - leisti vaikams ir suaugusiems sužinoti apie 3 pagrindines Naujojo Taipėjaus miesto teritorijas. Dėžutės šone yra 3 mygtukai
„Pasidaryk pats“išmaniųjų robotų sekimo automobilių rinkinių sekimo automobilis Jautrus šviesai: 7 žingsniai
„Pasidaryk pats“išmaniųjų robotų sekimo automobilių rinkinių sekimo automobilis Jautrus šviesai: SINONING ROBOT dizainas Galite nusipirkti iš sekimo roboto automobilio Teorija LM393 palygina du fotorezistorius, kai ant vienos BALTOS pusės yra fotorezistoriaus šviesos diodas, variklio pusė iškart sustos, kita - variklio pusė suktis taip, kad
Išmanusis Aidaho žemėlapis su LED duomenimis + menas: 8 žingsniai (su paveikslėliais)
Išmanusis Aidaho žemėlapis su LED duomenimis + menas: aš visada norėjau būdo, kaip meniškai ir dinamiškai parodyti geografinius duomenis " dažant " žemėlapis su šviesa. Aš gyvenu Aidaho valstijoje ir myliu savo valstiją, todėl maniau, kad tai būtų puiki vieta pradėti! Be to, kad tai yra meno kūrinys
Kaip prijungti „DeLorme Earthmate GPS LT-20“prie „Google“žemės, kad gautumėte puikų GPS sekimo žemėlapį: 5 žingsniai
Kaip prijungti „DeLorme Earthmate GPS LT-20“prie „Google“žemės, kad gautumėte puikų GPS sekimo žemėlapį: parodysiu, kaip prijungti GPS įrenginį prie populiariosios „Google“žemės programos, nenaudojant „Google Earth Plus“. Neturiu didelio biudžeto, todėl galiu garantuoti, kad tai bus kuo pigiau