Sisällysluettelo:
- Vaihe 1: 3D -kartan hankkiminen
- Vaihe 2: Kartan valmistelu LED -lisäosia varten
- Vaihe 3: Aseta LED -valot paikalleen
- Vaihe 4: Liitä LEDit Raspberry Pi -laitteeseen
- Vaihe 5: Testaa LEDit
- Vaihe 6: Koodi LED -valon kytkemiseksi päälle pyydettäessä
- Vaihe 7: Sijainnin saaminen
- Vaihe 8: Kuinka tämä kaikki toimii
- Vaihe 9: Rakenna oma inspiraationi projektini ulkopuolelta
Video: GPS -seuranta 3D -kartta: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tämä projekti on 3D -tulostettu 3D -kartta, jossa on teitä, jokia ja kaupunkeja, ja LED -majakat osoittavat perheenjäsenten sijainnin. Se voi osoittaa, onko lapsi koulussa vai ei, tai vain molempien vanhempien sijainti. Voimme myös käyttää sitä ennustamaan, milloin vanhemmat tulevat kotiin, jotta illallinen voidaan valmistaa oikeaan aikaan. Se on myös vain yleisesti viileä projekti, jota voidaan esitellä ja näyttää perheelle ja ystäville.
Toivon, että nautit tämän ohjeen tekemisestä tai jos haluat tietää tekemästäni projektista
Vaihe 1: 3D -kartan hankkiminen
Saadaksesi alueesi 3D -kartan, olen kirjoittanut erillisen ohjeen, joka auttaa sinua tekemään sen. Linkki ohjeeseen löytyy täältä:
www.instructables.com/id/Making-a-3D-Print…
Vaihe 2: Kartan valmistelu LED -lisäosia varten
Nyt kun sinulla on 3D -kartta, jossa on teitä, kaupunkeja ja jokia, tarvitsemme tavan osoittaa, missä henkilö on kartalla. Käytin kaksivärisiä 3 mm: n RG-LED-valoja, koska kartan päätarkoitus on näyttää, missä molemmat vanhemmat ovat. Tietyissä paikoissa käytin RGB -LEDiä, jotta voin näyttää missä vanhin lapsi oli. Raspberry Pi -laitteessa on enintään 28 nastaa, joten valitse LEDien sijainnit viisaasti. Päädyin käyttämään niitä noin 24, joten sinun pitäisi olla kunnossa.
PLA: n poraamiseksi huomasin, että tavallinen puuporakone toimi hyvin ja käsitin puuta samalla tavalla.
Paikoissa, joissa kartta oli liian paksu, poraisin pohjakerroksen suurella poranterällä ja sitten näkyvän yläkerroksen oikealla 3 mm: n poranterällä.
Vaihe 3: Aseta LED -valot paikalleen
Nyt kun meillä on reiät LED -valojen istumista varten, voimme liimata ne sisään. PVA tai Superglue toimii hyvin tähän, huomasin, että PVA juoksi sen ympärille tiivistäen sen paikalleen ja superliima toimi myös erittäin hyvin. Varmista, että jokaisella LED -valolla ne näkyvät näkyvillä puolella vain muutaman millimetrin verran, koska LED -valojen ulostulo kokonaan näyttää hieman sotkuiselta. Älä huolehdi selässä olevista jaloista, voimme taittaa ne, kun ne on juotettu.
Vaihe 4: Liitä LEDit Raspberry Pi -laitteeseen
Juotin LEDit suoraan Raspberry Pi: hen, mutta jos sinulla on sellainen, jossa on valmiiksi juotettu otsikko, tai haluat käyttää pi: tä johonkin muuhun, suosittelen käyttämään hyppyjohtimia jokaiselle LEDille, mikä tarkoittaa, että Pi on irrotettava. Näet, että kun olin juottanut LEDin, taittelin jalat alas, jotta ne eivät tartu takaosaan.
Vaihe 5: Testaa LEDit
Varmistaakseni, että kaikki LEDit toimivat, suoritin komentosarjan, joka kulkee jokaisen mahdollisen nastan läpi ja sytyttää ne yksi kerrallaan, joka siirtyy seuraavaan, kun napsautan Enter. Näin sain merkitä muistiin, mikä pin -numero sijaitsi, mikä oli erittäin hyödyllistä.
Tuo RPi. GPIO GPIO: ksi
tuontiaika GPIO.setmode (GPIO. BCM) i: lle alueella (0, 28): GPIO.setup (i, GPIO. OUT) i: lle alueella (0, 28): GPIO. output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("That Was:" + str (i)) z = raw_input ("Seuraava?")
Samalla kun tämä tapahtui, merkitsisin tekstitiedostoon muistiin, mikä nasta teki missä paikassa ja mikä väri. Sinun on tehtävä tämä, koska se on erittäin hyödyllinen seuraavassa vaiheessa.
Vaihe 6: Koodi LED -valon kytkemiseksi päälle pyydettäessä
Tapa, jolla olen tehnyt tämän projektin, sisältää yhden Raspberry Pi Zero W: n perusverkkosivustolla, jonka avulla voit ottaa nastan käyttöön. Tämä tarkoitti sitä, että pääpi 4, joka on yleensä päällä ja käynnissä, pystyy käsittelemään, ja sitten pienen Pi 0: n on vain käynnistettävä tappi, mikä tekee asioista hieman monimutkaisempia. Tein tämän, koska se sopii asetuksiini, ja minustakin tuntui, että Pi 0 voi olla hieman hidas sen suhteen, mitä teemme myöhemmin.
Tuo RPi. GPIO GPIO: ksi
tuontiaika pullon tuonnista Pullo, render_template, request, jsonify import os app = Pullo (_ name_) p = GPIO.setmode (GPIO. BCM) i: lle alueella (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) palauta "Pois" @app.route ("/off/all") def alloff (): i alueella (0, 28): GPIO.output (i, GPIO. LOW) palauta "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) palauta "On", jos _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 '')
Tämä toimii siten, että se odottaa pi: n IP -osoitteen URL -osoitetta ja sitten päälle tai pois päältä ja sitten PIN -numeroa.
tallenna tämä koodi Raspberry Pi: n kotihakemistoon ja anna sille nimi "pin_website.py"
Sinun on asetettava tämä toimimaan automaattisesti, jotta voit tehdä tämän, päätetyypissä: sudo nano /etc /profile
Lisää tämän tiedoston alareunaan "python3 pin_website.py &"
"&" On välttämätön, koska se saa sen toimimaan taustalla ja mahdollistaa käynnistyksen jatkamisen
Vaihe 7: Sijainnin saaminen
IFTTT: n avulla voit määrittää palvelun niin, että kun puhelin saapuu tiettyyn paikkaan, se voi lähettää sinulle sähköpostia tai ping -verkko -osoitteen tai lähettää viestin sähkeellä.
Vaihe 8: Kuinka tämä kaikki toimii
Asennuksessani on palvelin Pi, joka isännöi verkkosivustoani, jossa on portinsiirto ja staattinen DNS käyttämällä palvelua, jonka tarjoaa https://freedns.afraid.org/. Suuri osa tästä on melko monimutkaista, ja sinun on ymmärrettävä portin edelleenlähetys. Voisin tehdä opastettavan tämän osan suorittamisen toisen kerran.
Toinen tapa, jolla voit tehdä sen, on käyttää sähkeitä viestien vastaanottamiseen pi: lle tai mahdollisesti helpoimmin, on perustaa sähköpostinlukija, joka lukee sähköpostit ja vastaanottaa sijaintipäivitykset sen kautta.
En ole kokeillut sähkebottia tai sähköpostinlukijaa, mutta siellä on paljon opetusohjelmia, jotka näyttävät sinulle kuinka.
Tässä on Flask / Python -koodini, jota webhookit sitten pyytävät IFTTT: tä käyttäen:
pullon tuonnista Pullo, render_template, request, jsonify
tuoda osia päivämäärä- ja aika -ajoista tuoda päivämäärät kartasta /') def mu (sijainti): mum.current_loc (location) return "Kiitos päivityksestä, äiti!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Kiitos päivityksestä, isä!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) return "Hei, minä" @app.route ('/mum/exit/') def mume (location): mum.offline (sijainti) return "Kiitos päivityksestä, äiti!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Kiitos päivityksestä, isä!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hei, minä" @app.route ("/reset") def redo (): setup () return "Nollaa!" jos _nimi_ == '_main_': app.run (debug = True, host = '0.0.0.0')
ja map.py:
tuo http.client, urllib.request, urllib.parse, urllib.error, base64
tuonti ast, json tuonti aika tuontiketjujen tuonti 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 = auki ("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, "neljä ristiä": 18, "llandrinio": 25, "welshpool": 27} f = auki ("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," neljä 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 &") luokan isä: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "four crosses": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," neljä ristiä ": 15} f = auki (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') jatkopyyntöjä 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," koti ": 23," shrewsbury ": 0," llanymynech ": 6," neljä 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 = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") luokka me: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = auki ("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 &")
Vaihe 9: Rakenna oma inspiraationi projektini ulkopuolelta
Joten tiedän, että edellistä vaihetta on erittäin vaikea ymmärtää, joten jätän sen näyttämään sinulle kartan tekemisen ja voin saada vadelmapi, joka sytyttää ja sammuttaa LEDit. Sinun on nyt luotava python -komentosarja, joka IFTTT: n avulla lähettää sinulle sähköpostia. Sitten sinun on löydettävä sähköpostin lukukoodi, joka on melko helppoa (googlaa se). Kun olet lukenut sähköpostiviestin ja löytänyt vanhemman sijainnin, käytä if -lausekkeita löytääksesi, mikä nasta otetaan käyttöön.
Kartalla vilkkuva valo tarkoittaa, että he ovat juuri poistuneet alueelta
Tapa kytkeä pythonin toisen pi: n LEDit päälle seuraavasti:
tuo http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #muuta tämä raspberry pi: n kartalla IP -osoite conn.request ("GET", str ("/off) /2 ")) # tämä poistaa nastan 2 vastauksen käytöstä = conn.getresponse () # tämä pyytää URL -osoitetta, ja sitten kartta pi lukee tämän ja sammuttaa nastan 2
Pohjimmiltaan toivon, että voit käyttää 3D -kartallani tekemääni inspiraationa oman GPS -seurantakartan luomiseen.
Suositeltava:
Tee GPS -RAJAN RAJAT Arduinon avulla: 8 vaihetta
Tee GPS -RAJAN RAJAT Arduinon avulla: Tässä opetusohjelmassa opimme tekemään GPS -Rajarajoja Arduinolla, tämä on hyödyllistä, kun sinulla on robotti etkä halua, että se menee määritetyn alueen ulkopuolelle. , näytössä näkyy "Ulkopuolella"
Normaali GPS (DATalogger EEPROM): 5 vaihetta
GPS Para Norma (Datalogger EEPROM): Yksinkertainen GPS -lemmikkien dataloggeri, joka perustuu arduino- ja EEPROM -tallennukseen ================================ ======================= Sencillo datalogger GPS para mascotas basado en arduino y grabacion en memoria EEPROM
Luo mukautettuja karttoja Garmin GPS: lle: 8 vaihetta (kuvilla)
Luo mukautettuja karttoja Garmin GPS -laitteellesi: Jos sinulla on Garmin GPS, joka on suunniteltu retkeilyyn ja muuhun ulkoiluun (mukaan lukien GPSMAP-, eTrex-, Colorado-, Dakota-, Oregon- ja Montana -sarjat, muiden joukossa), sinun ei tarvitse tyytyä paljaiden luiden karttoihin, jotka esiladattiin siihen. E
LoRa GPS Tracker -opetusohjelma - LoRaWAN Dragino- ja TTN -tekniikoilla: 7 vaihetta
LoRa GPS Tracker -opetusohjelma | LoRaWAN Dragino ja TTN: Hei, mitä kuuluu, kaverit! Akarsh täällä CETechistä. Pari projektia taaksepäin katsoimme Draginon LoRaWAN -yhdyskäytävää. Yhdistimme eri solmut yhdyskäytävään ja lähetimme tietoja solmuista yhdyskäytävään käyttämällä TheThingsNetwork -palvelua
DeLorme Earthmate GPS LT-20: n liittäminen Google Earthiin saadaksesi loistavan GPS-seurantakartan: 5 vaihetta
DeLorme Earthmate GPS LT-20: n liittäminen Google Earthiin saadaksesi loistavan GPS-seurantakartan: Näytän sinulle, kuinka voit liittää GPS-laitteen suosittuun Google Earth -ohjelmaan ilman Google Earth Plus -ohjelmaa. Minulla ei ole suurta budjettia, joten voin taata, että tämä on mahdollisimman halpaa