Satura rādītājs:
- 1. darbība: 3D kartes iegūšana
- 2. darbība. Kartes sagatavošana LED ieliktņiem
- 3. solis: ievietojiet gaismas diodes
- 4. solis: pievienojiet gaismas diodes Raspberry Pi
- 5. darbība: pārbaudiet gaismas diodes
- 6. darbība: kods, lai ieslēgtu gaismas diodi pēc pieprasījuma
- 7. darbība. Kā iegūt atrašanās vietu
- 8. darbība. Kā tas viss darbojas
- 9. solis: izveidojiet savu, iedvesmojoties no mana projekta
Video: GPS izsekošanas 3D karte: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Šis projekts ir 3D drukāta 3D karte ar ceļiem, upēm un pilsētām ar LED bākām, lai parādītu ģimenes locekļu atrašanās vietu. Tas var parādīt, vai bērns mācās skolā, vai ne, vai tikai abu vecāku atrašanās vietu. Mēs to varam izmantot arī, lai prognozētu, kurā laikā vecāki atgriežas mājās, lai vakariņas varētu pagatavot īstajā laikā. Tas ir arī vienkārši foršs projekts, ko demonstrēt un parādīt ģimenei un draugiem.
Es ceru, ka jums patiks padarīt šo pamācību vai uzzināt par kādu manu projektu
1. darbība: 3D kartes iegūšana
Lai iegūtu jūsu reģiona 3D karti, esmu uzrakstījis atsevišķu pamācību, kas palīdzēs jums izveidot tās veidošanas procesu. Saite uz pamācību ir šeit:
www.instructables.com/id/Making-a-3D-Print…
2. darbība. Kartes sagatavošana LED ieliktņiem
Tagad, kad jums ir 3D karte ar ceļiem, pilsētām un upēm, mums ir nepieciešams veids, kā norādīt personas atrašanās vietu kartē. Es izmantoju divkrāsainas 3 mm RG gaismas diodes, jo kartes galvenais mērķis ir parādīt, kur atrodas abi vecāki. Dažās vietās es izmantoju RGB gaismas diodi, lai varētu parādīt, kur bija vecākais bērns. Raspberry Pi var izvadīt 28 tapas, tāpēc gudri izvēlieties gaismas diožu atrašanās vietas. Es beidzot izmantoju apmēram 24 no tiem, tāpēc jums vajadzētu būt kārtībā.
Lai urbtu PLA, es atklāju, ka parasts koka urbis darbojās labi, un es apstrādāju tā, kā es apstrādātu koku.
Vietās, kur karte bija pārāk bieza, es izurbtu bāzes slāni ar lielu urbi un pēc tam redzamo virskārtu ar pareizo 3 mm urbi.
3. solis: ievietojiet gaismas diodes
Tagad, kad mums ir caurumi, kur gaismas diodēm sēdēt, mēs varam tos pielīmēt. Šim nolūkam labi darbojas PVA vai Superglue, es atklāju, ka PVA skrēja ap to, noslēdzot to vietā, un arī superlīme darbojās ļoti labi. Pārliecinieties, ka ar katru gaismas diodi tie redzamajā pusē izliekas tikai par dažiem mm, jo gaismas diožu izgaismošana līdz galam izskatās mazliet netīra. Neuztraucieties par kājām aizmugurē, mēs varam tās salocīt, kad tās ir pielodētas.
4. solis: pievienojiet gaismas diodes Raspberry Pi
Es tieši lodēju gaismas diodes pie Raspberry Pi, tomēr, ja jums ir viens ar iepriekš lodētu galveni vai vēlaties izmantot pi kādam citam, es ieteiktu katrai gaismas diodei izmantot džemperu vadus, kas nozīmē, ka Pi ir noņemams. Jūs varat redzēt, ka pēc tam, kad biju pielodējis LED, es saliku kājas uz leju, lai tās neliptu pie muguras.
5. darbība: pārbaudiet gaismas diodes
Lai pārliecinātos, ka visas gaismas diodes darbojas, es palaidu skriptu, kas iet cauri katrai iespējamai tapai, un pa vienai iedegas, kas nokļūst nākamajā, kad noklikšķinu uz ievadīšanas. Tas ļāva man atzīmēt, kurš pin numurs kādā vietā atradās, un tas bija ļoti noderīgi.
importēt RPi. GPIO kā GPIO
importēšanas laiks GPIO.setmode (GPIO. BCM) i diapazonā (0, 28): GPIO.setup (i, GPIO. OUT) i diapazonā (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("Tas bija:" + str (i)) z = raw_input ("Nākamais?")
Kamēr tas notika, es teksta failā atzīmētu, kura tapa un kurā vietā izdarīja tapu. Jums tas jādara, jo tas ir ļoti noderīgi nākamajā solī.
6. darbība: kods, lai ieslēgtu gaismas diodi pēc pieprasījuma
Veids, kādā esmu paveicis šo projektu, ietver vienu Raspberry Pi Zero W ar pamata vietni, kas ļauj ieslēgt tapu. Tas nozīmēja, ka galvenais Pi 4, kas parasti ir ieslēgts un darbojas, var veikt apstrādi, un tad mazajam Pi 0 ir jāieslēdz tikai tapa, padarot lietas nedaudz sarežģītākas. Es to darīju, jo tas ir piemērots manam iestatījumam, un arī es jutu, ka Pi 0 var būt nedaudz lēns tam, ko mēs darīsim vēlāk.
importēt RPi. GPIO kā GPIO
importēšanas laiks no kolbas importēšanas Kolba, render_template, request, jsonify importēt os app = Kolba (_ name_) p = GPIO.setmode (GPIO. BCM) i diapazonā (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) atgriezt "Izslēgts" @app.route ("/off/all") def alloff (): i diapazonā (0, 28): GPIO.output (i, GPIO. LOW) atgriezt "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) atgriež "On", ja _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')
Tas darbojas tā, ka tas gaida pi IP adreses URL un pēc tam ieslēgšanu vai izslēgšanu un pēc tam PIN numuru.
saglabājiet šo kodu Raspberry Pi mājas direktorijā un nosauciet to par "pin_website.py"
Jums būs jāiestata, lai tas darbotos automātiski, tāpēc, lai to izdarītu, termināļa tipā: sudo nano /etc /profile
Šī faila apakšdaļā pievienojiet “python3 pin_website.py &”
"&" Ir būtiska, jo tā darbojas fonā un tādējādi ļauj turpināt sāknēšanu
7. darbība. Kā iegūt atrašanās vietu
Izmantojot IFTTT, jūs varat iestatīt pakalpojumu, lai, tālrunim ieejot noteiktā vietā, tas varētu jums nosūtīt e -pastu vai pingēt tīmekļa adresi vai ziņu telegrammā.
8. darbība. Kā tas viss darbojas
Man ir iestatījums Server Pi, kas mitina manu vietni, ar portu pāradresāciju un statisku DNS, izmantojot pakalpojumu, ko nodrošina https://freedns.afraid.org/. Daudz kas no tā ir diezgan sarežģīts, un jums ir jābūt izpratnei par ostas pāradresāciju, es varētu sniegt pamācību par to, kā šo daļu veikt citreiz.
Vēl viens veids, kā to izdarīt, ir izmantot telegrammu, lai saņemtu ziņojumus pi, vai, iespējams, vienkāršākais, ir iestatīt e -pasta lasītāju, kas lasa e -pastus un ar to saņem atrašanās vietas atjauninājumus.
Es neesmu izmēģinājis Telegram robotu vai e -pasta lasītāju, taču ir daudz pamācību, kas parādīs, kā to izdarīt.
Šeit ir mans kolbas / Python kods, kuru pēc tam pieprasa tīmekļa āķi, izmantojot IFTTT:
no kolbas importēšanas Kolba, render_template, request, jsonify
importēt os no datuma laika importēt datuma laiku no kartes importēšanas * app = kolba (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (atrašanās vieta): mum.current_loc (atrašanās vieta) atgriezties "Paldies par atjauninājumu, mammu!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Paldies par atjauninājumu, tēt!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) atgriezties "Hei, es" @app.route ('/mum/exit/') def mume (atrašanās vieta): mum.offline (atrašanās vieta) atgriezties "Paldies par atjauninājumu, mammu!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Paldies par atjauninājumu, tēt!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) atgriezties "Hei, es" @app.route ("/reset") def redo (): setup () return "Atiestatīt!" ja _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
un map.py:
importēt http.client, urllib.request, urllib.parse, urllib.error, base64
importēt ast, json importēšanas laiku importēt pavedienu importēšanu 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")) atbilde = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = atvērt ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () klases mamma: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "četri krusti": 18, "llandrinio": 25, "welshpool": 27} f = open ("pin", "w") f.writ (str (-1)) f.close () time. miega (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," četri krusti ": 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 &") klases tētis: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "četri krusti": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," četri krusti ": 15} f = open (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') savienojuma pieprasījumi 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," mājas ": 23," shrewsbury ": 0," llanymynech ": 6," četri krusti ": 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 &") klase me: 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 (skat 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. solis: izveidojiet savu, iedvesmojoties no mana projekta
Tāpēc es zinu, ka iepriekšējo soli būs ļoti grūti saprast, tāpēc es atstāšu to kā parāda, kā izveidot karti, un varēšu iegūt aveņu pi, kas ieslēdz un izslēdz gaismas diodes. Tagad jums ir jāizveido pitona skripts, kas, izmantojot IFTTT, nosūta jums e -pastu. Tad jums jāatrod e -pasta lasīšanas koda gabals, kas ir diezgan vienkārši (google to). Pēc tam, kad esat izlasījis e -pastu un atradis vecāku atrašanās vietu, izmantojiet paziņojumus “ja”, lai atrastu, kuru tapu ieslēgt.
Kartē mirgojoša gaisma nozīmē, ka viņi ir tikko izbraukuši no apgabala
Kā ieslēgt gaismas diodes citā pi no python, ir šāds:
importēt http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #mainiet to, izmantojot aveņu pi kartes IP adresi conn.request ("GET", str ("/off /2 ")) # tas izslēdz atbildes taustiņa 2 atbildi = conn.getresponse () # tas pieprasa URL, un tad karte pi to nolasa un izslēdz tapu 2. numuru
Būtībā es ceru, ka jūs varat izmantot to, ko esmu paveicis ar savu 3D karti, kā iedvesmu, lai izveidotu savu GPS izsekošanas karti.
Ieteicams:
Ievads - pārvērtiet Raspberry Pi GPS izsekošanas serverī: 12 soļi
Ievads - pārvērtiet Raspberry Pi par GPS izsekošanas serveri: Šajā rokasgrāmatā es jums parādīšu, kā instalēt Traccar GPS izsekošanas programmatūru Raspberry Pi, kas saņems datus no saderīgām ierīcēm internetā, reāllaikā reģistrējot viņu atrašanās vietas kartē. izsekošana, kā arī atskaņošanas izsekošana
Izveidojiet savu GPS SMS drošības izsekošanas sistēmu: 5 soļi (ar attēliem)
Izveidojiet savu GPS SMS drošības izsekošanas sistēmu: Šajā projektā es jums parādīšu, kā apvienot SIM5320 3G moduli ar Arduino un pjezoelektrisko devēju kā trieciena sensoru, lai izveidotu drošības izsekošanas sistēmu, kas nosūtīs jums jūsu atrašanās vietu dārgs transportlīdzeklis, izmantojot SMS, kad es
PCB: uz GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma: 3 soļi
PCB: GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma: GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma padara šo projektu daudz
Iestatiet savu GPS izsekošanas serveri Raspberry Pi: 8 soļi
Iestatiet savu GPS izsekošanas serveri Raspberry Pi: Šajā projektā es jums parādīšu, kā iestatīt savu GPS izsekošanas serveri Raspberry pi. Tam nav jābūt Raspberry pi, jo programmatūra, ko izmantosim izsekošanas serverim, ir pieejama arī operētājsistēmai Windows un Linux
Kā savienot DeLorme Earthmate GPS LT-20 ar savu Google Earth, lai iegūtu lielisku GPS izsekošanas karti: 5 soļi
Kā savienot DeLorme Earthmate GPS LT-20 ar savu Google Earth, lai iegūtu lielisku GPS izsekošanas karti .: Es jums parādīšu, kā savienot GPS ierīci ar populāro Google Earth programmu, neizmantojot Google Earth Plus. Man nav liela budžeta, tāpēc varu garantēt, ka tas būs pēc iespējas lētāk