Kazalo:
- 1. korak: Pridobite 3D zemljevid
- 2. korak: Priprava zemljevida za LED vložke
- Korak: Vstavite LED
- 4. korak: LED diode priključite na Raspberry Pi
- 5. korak: Preizkusite LED
- Korak 6: Koda za vklop LED na zahtevo
- 7. korak: Kako pridobiti lokacijo
- 8. korak: Kako vse to deluje
- 9. korak: Zgradite svoje iz navdiha na mojem projektu
Video: 3D -zemljevid GPS sledenja: 9 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Ta projekt je 3D natisnjen 3D zemljevid s cestami, rekami in mesti z LED svetilniki, ki prikazujejo lokacijo članov družine. Lahko pokaže, ali je otrok v šoli ali pa le lokacijo obeh staršev. Z njim lahko tudi napovemo, kdaj bodo starši prišli domov, da bo večerja pripravljena ob pravem času. To je tudi na splošno kul projekt, ki ga lahko pokažete družini in prijateljem.
Upam, da vam bo všeč, če boste naredili ta Instructable, ali pa boste izvedeli za moj projekt
1. korak: Pridobite 3D zemljevid
Da bi dobili 3D zemljevid vašega območja, sem napisal ločeno navodilo, ki vam bo pomagalo skozi postopek izdelave. Povezava do navodil je tukaj:
www.instructables.com/id/Making-a-3D-Print…
2. korak: Priprava zemljevida za LED vložke
Zdaj, ko imate 3D zemljevid s cestami, mesti in rekami, potrebujemo način, da navedemo, kje je oseba na zemljevidu. Uporabil sem dvobarvne 3 mm RG LED diode, ker je glavni namen zemljevida pokazati, kje sta starša. Na nekaterih mestih sem uporabil RGB LED, da sem lahko pokazal, kje je najstarejši otrok. Na Raspberry Pi je na voljo 28 izhodov, zato pametno izberite lokacije LED. Na koncu sem jih uporabil približno 24, zato bi morali biti v redu.
Za vrtanje PLA sem ugotovil, da je običajen sveder za les dobro deloval, in ravnal sem tako, kot bi obdeloval les.
Na mestih, kjer je bil zemljevid predebel, sem izvrtal osnovno plast z velikim svedrom, nato pa vidno zgornjo plast s pravilnim 3 -milimetrskim svedrom.
Korak: Vstavite LED
Zdaj, ko imamo luknje za namestitev LED, jih lahko prilepimo. PVA ali Superglue dobro deluje za to, ugotovil sem, da je PVA tekel okoli njega in ga zapečatil, superlepilo pa je tudi zelo dobro delovalo. Prepričajte se, da pri vsaki LED -u le nekaj mm štrlijo na vidni strani, ker je videti, da je LED, ki sveti do konca, nekoliko zmešan. Ne skrbite za noge na hrbtu, jih lahko zložimo, ko so spajkane.
4. korak: LED diode priključite na Raspberry Pi
LED sem neposredno spajkal na Raspberry Pi, če pa imate enega z vnaprej spajkano glavo ali želite uporabiti pi za kaj drugega, potem predlagam, da za vsako LED uporabite mostične žice. Pi je odstranljiv. Vidite, da sem po spajkanju LED zložil noge navzdol, da se niso prilepile na hrbet.
5. korak: Preizkusite LED
Da bi se prepričali, da vse LED delujejo, sem zagnal skript, ki gre skozi vsak možni zatič in jih prižge, enega za drugim, ki se premakne na naslednjega, ko kliknem enter. To mi je omogočilo, da sem zapisal, katera številka pin je naredila katero lokacijo, kar je bilo zelo koristno.
uvozite RPi. GPIO kot GPIO
čas uvoza GPIO.setmode (GPIO. BCM) za i v območju (0, 28): nastavitev GPIO. (i, GPIO. OUT) za i v območju (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("To je bilo:" + str (i)) z = raw_input ("Naprej?")
Medtem ko se je to dogajalo, bi si zapisal besedilno datoteko, kateri zatič je naredil katero lokacijo in katero barvo. To morate storiti, saj je v naslednjem koraku zelo koristno.
Korak 6: Koda za vklop LED na zahtevo
Način, kako sem izvedel ta projekt, vključuje eno Raspberry Pi Zero W z osnovno spletno stranjo, ki vam omogoča vklop pin. To je pomenilo, da lahko glavni Pi 4, ki je običajno vklopljen in delujoč, opravi obdelavo, nato pa mora mali Pi 0 samo vklopiti zatič, zaradi česar so stvari nekoliko bolj zapletene. To sem storil, ker ustreza moji nastavitvi, prav tako pa se mi je zdelo, da je Pi 0 nekoliko počasen pri tem, kar bomo počeli kasneje.
uvozite RPi. GPIO kot GPIO
čas uvoza iz bučke uvoz Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) za i v območju (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) return "Off" @app.route ("/off/all") def alloff (): za i v območju (0, 28): GPIO.output (i, GPIO. LOW) return "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) return "On" if _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')
To deluje tako, da počaka na url naslova IP -ja pi, nato na vklop ali izklop in nato na številko pin.
shranite to kodo v domači imenik Raspberry Pi in jo poimenujte "pin_website.py"
To morate nastaviti tako, da se samodejno zažene, zato to storite v vrsti terminala: sudo nano /etc /profile
Na dnu te datoteke dodajte "python3 pin_website.py &"
"&" Je bistvenega pomena, saj deluje v ozadju in zato omogoča nadaljevanje zagona
7. korak: Kako pridobiti lokacijo
Z uporabo IFTTT lahko storitev nastavite tako, da vam lahko, ko telefon vstopi na določeno lokacijo, pošlje e -pošto ali pokliče spletni naslov ali vam pošlje sporočilo v telegramu.
8. korak: Kako vse to deluje
Imam nastavitev Server Pi, ki gosti moje spletno mesto, s posredovanjem vrat in statičnim DNS -jem, ki uporablja storitev https://freedns.a fear.org/. Veliko tega je precej zapletenega in morate razumeti posredovanje vrat. Morda bom kdaj izvedel navodila, kako narediti ta del drugič.
Drug način, da to storite, je, da uporabite telegram za prejemanje sporočil na pi, ali pa najlažje, če nastavite bralnik e -pošte, ki bere e -poštna sporočila in prek tega prejema posodobitve lokacije.
Nisem preizkusil Telegram bota ali bralnika e -pošte, vendar obstaja veliko vadnic, ki vam bodo pokazale, kako.
Tukaj je moja koda Flask / Python, ki jo webhooki nato zahtevajo z uporabo IFTTT:
iz flask import Flask, render_template, request, jsonify
uvoz os iz datuma in časa uvoz datuma iz zemljevida uvoz * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (location): mum.current_loc (location) return "Hvala za posodobitev, mama!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) vrne "Hvala za posodobitev, oče!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) vrne "Hey, Me" @app.route ('/mum/exit/') def mume (lokacija): mum.offline (location) return "Hvala za posodobitev, mama!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) vrne "Hvala za posodobitev, oče!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) vrne "Hey, Me" @app.route ("/reset") def redo (): setup () return "Ponastaviti!" if _name_ == '_main_': app.run (debug = True, gostitelj = '0.0.0.0')
in map.py:
uvoz http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json čas uvoza import threading import os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('freedns.a fear.org') conn.request ("GET", str ("/dynamic/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168) "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = open ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () razred mama: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "štirje križi": 18, "llandrinio": 25, "welshpool": 27} f = open ("pin", "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 (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," štirje križi ": 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 &") razred oče: locs = {"welshpool": 3, "lynclys": 1, "dom": 23, "shrewsbury": 0, "llanymynech": 6, "štirje križi": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," štirje križi ": 15} f = open (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client Zahteve povezave. HTTPConnection ('192.168.1.251:5000') 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): globalni dlast_loc locs = {"welshpool": 3, "lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," four crosss ": 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 &") razred me: def current_loc (l): globalni 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 (glej 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. korak: Zgradite svoje iz navdiha na mojem projektu
Zato vem, da bo prejšnji korak zelo težko razumeti, zato vam bom pustil, da vam pokaže, kako narediti zemljevid, in imeti lahko malinov pi, ki vklopi in izklopi LED. Zdaj morate ustvariti skript python, ki vam z uporabo IFTTT pošlje e -pošto. Nato morate poiskati kodo za branje e -pošte, kar je precej enostavno (google). Potem, ko preberete e -poštno sporočilo in poiščete lokacijo starša, uporabite stavke 'if', da ugotovite, kateri pin morate vklopiti.
Na zemljevidu utripajoča lučka pomeni, da so pravkar zapustili območje
Način vklopa LED na drugem pi iz pythona je naslednji:
uvoz http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #spremenite to z naslovom IP -ja maline pi conn.request ("GET", str ("/off /2 ")) # to izklopi pin številka 2 response = conn.getresponse () # ta zahteva URL, nato pa zemljevid pi to prebere in izklopi pin številko 2
V bistvu upam, da lahko uporabite tisto, kar sem naredil s svojim 3D zemljevidom, kot navdih za izdelavo lastnega zemljevida za sledenje GPS.
Priporočena:
Nastavitev za zunanjega ponudnika GPS GPS za naprave Android: 8 korakov
Nastavitev za zunanjega ponudnika GPS GPS za naprave Android: Ta navodila vam bodo razložila, kako ustvarite lasten zunanji GPS, ki podpira Bluetooth, za vaš telefon, prižgite karkoli za približno 10 USD. vmesnik nizkoenergijskih modulov Blutooth Ardui
Ventilator aktivnega sledenja: 5 korakov
Ventilator aktivnega sledenja: Singapur je vlažna država in zato, da se ohladimo, uporabljamo ventilatorje ali klimatsko napravo. Vendar ne uporabljamo najbolj energetsko učinkovitih nastavitev, včasih način nastavimo prehladno ali nastavimo ventilator na visoko, nato pa nadaljujemo z oblačenjem, ki ni
EAL - Zbiranje podatkov GPS GPS Industry 4.0 na avtomobilu Rc: 4 koraki
EAL - Zbiranje podatkov GPS GPS v industriji 4.0 na avtomobilu Rc: V tem navodilu bomo govorili o tem, kako nastavimo modul GPS na avtomobil z daljinskim upravljalnikom in zbrane podatke objavili na spletni strani za lažji nadzor. Predhodno smo naredili navodila za izdelavo našega avtomobila RC, ki ga najdete tukaj. To uporablja t
Povezovanje GPS VK16E GPS z Arduino UNO: 3 koraki
Povezovanje GPS VK16E GPS z Arduino UNO: To je preprosta navodila za ljudi, ki bi radi vedeli, kako povezati in uporabljati svoj GPS modul z Arduinom. Uporabljam Arduino UNO Shield #Hackduino in modul VK16E GPS. Za več info glejte podatkovni list
Arduino projekt: Testni razpon LoRa modul RF1276 za rešitev GPS sledenja: 9 korakov (s slikami)
Arduino projekt: Testni razpon LoRa modul RF1276 za sledenje GPS Rešitev: Povezava: USB - Serijsko Potrebujete: Potrebujete brskalnik Chrome: 1 X Arduino Mega Need: 1 X Potreba GPS: 1 X SD kartica Potreba: 2 X Modem LoRa RF1276 Funkcija: Arduino Pošlji vrednost GPS na glavno bazo - Podatki glavne baze shranjujejo v modulu Dataino Server Lora: Ultra dolgi doseg