Tartalomjegyzék:
- 1. lépés: 3D térkép készítése
- 2. lépés: A térkép előkészítése a LED betétekhez
- 3. lépés: Helyezze be a LED -eket
- 4. lépés: Csatlakoztassa a LED -eket a Raspberry Pi -hez
- 5. lépés: Ellenőrizze a LED -eket
- 6. lépés: Kód a LED bekapcsolásához, amikor kérik
- 7. lépés: A hely lekérése
- 8. lépés: Hogyan működik ez az egész?
- 9. lépés: Építsd meg sajátodat a projektemből származó inspirációból
Videó: GPS nyomkövető 3D térkép: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Ez a projekt egy 3D nyomtatott 3D -s térkép, utakkal, folyókkal és városokkal, LED -es jelzőfényekkel, amelyek a család tagjainak helyét mutatják. Megmutathatja, hogy a gyermek iskolában van -e vagy sem, vagy csak mindkét szülő tartózkodási helyét. Segítségünkkel megjósolhatjuk azt is, hogy a szülők mikor érnek haza, hogy a vacsorát a megfelelő időpontra tudják elkészíteni. Ez is csak egy általában jó projekt, hogy megmutassák és megmutassák a családnak és a barátoknak.
Remélem, élvezni fogja ezt az utasítást, vagy élvezni fogja az általam készített projekt megismerését
1. lépés: 3D térkép készítése
Ahhoz, hogy 3D -s térképet kaphasson a területéről, írtam egy külön utasítást, amely segíti az elkészítés folyamatát. Az oktatható link itt található:
www.instructables.com/id/Making-a-3D-Print…
2. lépés: A térkép előkészítése a LED betétekhez
Most, hogy rendelkezik 3D -s térképpel, utakkal, városokkal és folyókkal, szükségünk van arra, hogy jelezzük, hol van egy személy a térképen. Kétszínű 3 mm-es RG LED-eket használtam, mert a térkép fő célja, hogy megmutassa, hol van a két szülő. Bizonyos helyeken RGB LED -et használtam, hogy megmutassam, hol van a legidősebb gyermek. A Raspberry Pi -n 28 tű rögzíthető, ezért okosan válassza ki a LED -ek helyét. Végül körülbelül 24 -et használtam, szóval rendben kell lennie.
A PLA fúrásához azt találtam, hogy egy normál fafúró jól működik, és úgy kezeltem, mint a fát.
Olyan helyeken, ahol a térkép túl vastag volt, nagy fúróval fúrnám ki az alapréteget, majd a látható fenti réteget a megfelelő 3 mm -es fúróval.
3. lépés: Helyezze be a LED -eket
Most, hogy lyukak vannak a LED -ek számára, ahová beülhetnek, beragaszthatjuk őket. A PVA vagy a Superglue jól működik erre, azt tapasztaltam, hogy a PVA körbefutott, lezárva a helyét, és a szuperragasztó is nagyon jól működött. Győződjön meg arról, hogy mindegyik LED -nél csak néhány mm -rel ragadnak ki a látható oldalon, mert a LED -ek teljesen kilógása kicsit zavarosnak tűnik. Ne aggódjon a hátsó lábak miatt, forrasztás után összecsukhatjuk.
4. lépés: Csatlakoztassa a LED -eket a Raspberry Pi -hez
A LED-eket közvetlenül a Raspberry Pi-hez forrasztottam, azonban ha van egy előre forrasztott fejléccel, vagy másra szeretné használni a pi-t, akkor azt javaslom, hogy minden LED-hez használjon jumper vezetékeket, ami azt jelenti, hogy a Pi eltávolítható. Láthatja, hogy miután forrasztottam a LED -et, lehajtottam a lábakat, hogy ne ragadjanak a hátlapra.
5. lépés: Ellenőrizze a LED -eket
Annak érdekében, hogy az összes LED működjön, futtattam egy szkriptet, amely végigmegy minden lehetséges tűn, és egyesével felgyújtja őket, amely az Enter gombra kattintva a következőre lép. Ez lehetővé tette számomra, hogy feljegyezzem, melyik pin szám melyik helyre került, ami nagyon hasznos volt.
importálja az RPi. GPIO -t GPIO -ként
importálási idő GPIO.setmode (GPIO. BCM) i (0, 28) tartományban: GPIO.setup (i, GPIO. OUT) i (0, 28) tartományban: GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) print ("Ez volt:" + str (i)) z = raw_input ("Következő?")
Amíg ez történt, egy szövegfájlnál lejegyezném, hogy melyik tű melyik helyen és milyen színű volt. Ezt meg kell tennie, mivel ez nagyon hasznos a következő lépésben.
6. lépés: Kód a LED bekapcsolásához, amikor kérik
A projekt elkészítésének módja egy Raspberry Pi Zero W, egy alap webhellyel, amely lehetővé teszi a csap bekapcsolását. Ez azt jelentette, hogy a fő Pi 4, amely rendszerint be van kapcsolva, és fut, képes elvégezni a feldolgozást, majd a kis Pi 0 -nak csak egy csapot kell bekapcsolnia, ami kissé bonyolultabbá teszi a dolgokat. Ezt azért tettem, mert megfelel a beállításaimnak, és úgy éreztem, hogy a Pi 0 kissé lassú lehet ahhoz, amit később fogunk csinálni.
importálja az RPi. GPIO -t GPIO -ként
importálási idő a lombik importálásából Lombik, render_template, request, jsonify import os app = Lombik (_ name_) p = GPIO.setmode (GPIO. BCM) i (0, 28) tartományban: 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 "Ki" @app.route ("/off/all") def alloff (): i tartományban (0, 28): GPIO.output (i, GPIO. LOW) return "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) return "On", ha _name_ == '_main_': app.run (debug = True, host = '0.0. 0,0 ')
Ez úgy működik, hogy várja a pi IP -címének url -jét, majd egy be- vagy kikapcsolást, majd a PIN -kódot.
mentse el ezt a kódot a Raspberry Pi saját könyvtárába, és nevezze el "pin_website.py"
Be kell állítania, hogy ez automatikusan fusson, ezért a terminál típusában: sudo nano /etc /profile
A fájl alján adja hozzá a következőt: "python3 pin_website.py &"
A "&" elengedhetetlen, mivel a háttérben fut, ezért lehetővé teszi a rendszerindítás folytatását
7. lépés: A hely lekérése
Az IFTTT használatával beállíthat egy szolgáltatást, hogy amikor a telefon egy adott helyre belép, e -mailt küldjön Önnek, vagy pingáljon egy webcímet, vagy üzenjen táviratban.
8. lépés: Hogyan működik ez az egész?
A beállításom egy szerver Pi, amely a webhelyemet tárolja, portátirányítással és statikus DNS -sel a https://freedns.afraid.org/ szolgáltatás segítségével. Ennek sok része meglehetősen bonyolult, és meg kell értenie a kikötői továbbítást, lehet, hogy máskor megtanítom, hogyan kell elvégezni ezt a részt.
Egy másik módja annak, hogy távirat segítségével juttatja el az üzeneteket a pi -hez, vagy talán a legegyszerűbb, ha beállít egy e -mail olvasót, amely elolvassa az e -maileket, és ezen keresztül fogadja a helyfrissítéseket.
Nem próbáltam ki a Telegram botot vagy egy e -mail olvasót, de rengeteg oktatóanyag létezik, amelyek megmutatják, hogyan kell.
Itt van a Flask / Python kódom, amelyet azután az IFTTT -t használó webhookok kérnek:
lombik importból Lombik, render_template, request, jsonify
rész importálása a dátumból importálás dátum/idő importálása a térkép importálásából * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (hely): mum.current_loc (location) return "Köszönöm a frissítést, anya!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Köszönöm a frissítést, apa!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) return "Hey, Me" @app.route ('/mum/exit/') def mume (hely): mum.offline (hely) return "Köszönöm a frissítést, anya!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Köszönöm a frissítést, apa!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hey, Me" @app.route ("/reset") def redo (): setup () return "Visszaállítás!" if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
és map.py:
import http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json import time 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 ("/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 = nyitott ("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, "négy kereszt": 18, "llandrinio": 25, "welshpool": 27} f = nyitott ("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): globális last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13," négy kereszt ": 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 &") osztályapa: 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," négy kereszt ": 15} f = nyitott (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.reques 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," otthon ": 23," shrewsbury ": 0," llanymynech ": 6," négy kereszt ": 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 &") class me: def current_loc (l): global mlast_loc locs = {"home": 22, "iskola": 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. lépés: Építsd meg sajátodat a projektemből származó inspirációból
Tehát tudom, hogy az előző lépést nagyon nehéz lesz megérteni, ezért úgy hagyom, hogy megmutatja, hogyan kell elkészíteni a térképet, és képes lesz egy málna pi -vel, amely be- és kikapcsolja a LED -eket. Most létre kell hoznia egy python szkriptet, amely az IFTTT használatával e -mailt küld Önnek. Ezután meg kell találnia egy e -mailt olvasó kódrészletet, ami meglehetősen egyszerű (google). Majd ha elolvasott egy e -mailt, és megtalálta a szülő helyét, használja az „if” utasításokat a bekapcsolni kívánt tű meghatározásához.
A térképen a villogó fény azt jelenti, hogy éppen elhagyták a területet
A LED -ek bekapcsolásának módja egy másik pi -n a python -ból:
import http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #módosítsa ezt a málna pi térképének IP -címével conn.request ("GET", str ("/off /2 ")) # ez kikapcsolja a 2 -es jelű válasz választ = conn.getresponse () # ez lekéri az URL -t, majd a térkép a pi ezt elolvassa és kikapcsolja a 2 -es pin -t
Alapvetően remélem, hogy a 3D -s térképemmel végzett munkámat inspirációként használhatja saját GPS nyomkövetési térképének elkészítéséhez.
Ajánlott:
GPS nyomkövető: 6 lépés
GPS nyomkövető: Hé, srácok, ebben a videóban GPS nyomkövetőt készítünk az Esp 8266 (nodemcu) és egy neo 6 m -es GPS modul használatával, így kezdjük el
DIY GPS nyomkövető --- Python alkalmazás: 5 lépés (képekkel)
DIY GPS Tracker --- Python Alkalmazás: Két héttel ezelőtt részt vettem egy kerékpáros rendezvényen. Miután befejeztem, ellenőrizni akartam az útvonalat és a sebességet. Sajnos nem sikerült elérni. Most az ESP32 -t használom GPS -nyomkövető készítéséhez, és rögzítem a kerékpáros útvonalat
Bevezetés - A Raspberry Pi átalakítása GPS nyomkövető szerverré: 12 lépés
Bevezetés - A Raspberry Pi átalakítása GPS nyomkövető szerverré: Ebben az útmutatóban megmutatom, hogyan kell telepíteni a Traccar GPS nyomkövető szoftvert egy Raspberry Pi -re, amely adatokat kap a kompatibilis eszközökről az interneten keresztül, és valós időben rögzíti pozícióikat a térképen. követés, és a lejátszás követése is
Készítse el saját GPS SMS biztonsági nyomkövető rendszerét: 5 lépés (képekkel)
Készítse el saját GPS SMS biztonsági nyomkövető rendszerét: Ebben a projektben megmutatom, hogyan kombinálhatja a SIM5320 3G modult egy Arduino -val és egy piezoelektromos jelátalakítóval ütésérzékelőként annak érdekében, hogy létrehozzon egy biztonsági nyomkövető rendszert, amely elküldi az Ön tartózkodási helyét értékes autó SMS -ben, amikor
Navigálás a robotban cipőérzékelőkkel, GPS nélkül, W/o Térkép: 13 lépés (képekkel)
Navigálás a robotban cipőérzékelőkkel, W/o GPS, W/o Térkép: A robot előre beprogramozott útvonalon mozog, és (Bluetooth-on keresztül) továbbítja tényleges mozgási információit egy telefonra a valós idejű követéshez. Az Arduino előre be van programozva az útvonallal, az oblu pedig a robot mozgásának érzékelésére szolgál. Az oblu mozgási információkat továbbít