İçindekiler:
- 1. Adım: Bir 3B Harita Alma
- 2. Adım: Haritayı LED Ek Parçaları için Hazırlama
- Adım 3: LED'leri yerleştirin
- Adım 4: LED'leri Raspberry Pi'ye bağlayın
- Adım 5: LED'leri test edin
- Adım 6: İstendiğinde LED'i Açma Kodu
- 7. Adım: Konum Nasıl Alınır
- Adım 8: Bunların Hepsi Nasıl Çalışır?
- Adım 9: Projemden İlham Alarak Kendi Projenizi Oluşturun
Video: GPS İzleme 3D Haritası: 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu proje, yolların, nehirlerin ve kasabaların bulunduğu, aile üyelerinin konumlarını gösteren LED işaretli 3D baskılı 3D haritadır. Bir çocuğun okulda olup olmadığını veya sadece her iki ebeveynin yerini gösterebilir. Ayrıca, akşam yemeğinin doğru zamanda hazırlanabilmesi için ebeveynlerin eve ne zaman geleceğini tahmin etmek için de kullanabiliriz. Aynı zamanda aile ve arkadaşlara gösteriş yapmak ve sergilemek için genel olarak harika bir proje.
Umarım bu Eğitilebilirliği yapmaktan zevk alırsınız veya yaptığım bir proje hakkında bilgi edinmekten keyif alırsınız.
1. Adım: Bir 3B Harita Alma
Bölgenizin 3B haritasını almak için, bir harita oluşturma sürecinde size rehberlik edecek ayrı bir talimat yazdım. Eğitilebilir dosyanın bağlantısı burada:
www.instructables.com/id/Making-a-3D-Print…
2. Adım: Haritayı LED Ek Parçaları için Hazırlama
Artık yolları, kasabaları ve nehirleri içeren bir 3B haritanız olduğuna göre, bir kişinin haritada nerede olduğunu göstermenin bir yoluna ihtiyacımız var. Haritanın asıl amacı iki ebeveynin nerede olduğunu göstermek olduğu için iki renkli 3 mm RG LED'ler kullandım. Bazı yerlerde, en büyük çocuğun nerede olduğunu göstermeme izin vermek için bir RGB LED kullandım. Raspberry Pi'de çıkış yapmak için 28 pin sınırı vardır, bu nedenle LED'lerin yerlerini akıllıca seçin. Yaklaşık 24 tanesini kullandım, bu yüzden iyi olmalısın.
PLA'yı delmek için normal bir ahşap matkap ucunun iyi çalıştığını gördüm ve ahşabı işleyeceğim gibi işlem yaptım.
Haritanın çok kalın olduğu yerlerde, temel katmanı büyük bir matkap ucuyla ve ardından görünen üst katmanı doğru 3 mm matkap ucuyla delerdim.
Adım 3: LED'leri yerleştirin
Artık LED'lerin oturması için deliklerimiz olduğuna göre, onları yapıştırabiliriz. PVA veya Süper Yapıştırıcı bunun için iyi çalışıyor, PVA'nın etrafında dolaştığını ve yerinde yalıttığını ve süper yapıştırıcının da çok iyi çalıştığını gördüm. Her LED'de, yalnızca görünen tarafta birkaç mm dışarı çıktıklarından emin olun, çünkü LED'lerin tamamen dışarı çıkması biraz dağınık görünüyor. Arkadaki bacaklar için endişelenme, lehimlendikten sonra bunları katlayabiliriz.
Adım 4: LED'leri Raspberry Pi'ye bağlayın
LED'leri doğrudan Raspberry Pi'ye lehimledim, ancak, önceden lehimlenmiş bir başlığınız varsa veya pi'yi başka bir şey için kullanabilmek istiyorsanız, o zaman her LED için atlama telleri kullanmanızı öneririm, yani Pi çıkarılabilir. LED'i lehimledikten sonra arkaya yapışmaması için bacakları aşağı katladığımı görebilirsiniz.
Adım 5: LED'leri test edin
Tüm LED'lerin çalıştığından emin olmak için, olası her pimden geçen ve onları birer birer aydınlatan bir komut dosyası çalıştırdım, bu da enter'a tıkladığımda bir sonrakine geçiyor. Bu, hangi pin numarasının hangi lokasyonu yaptığını not etmemi sağladı, ki bu çok faydalı oldu.
RPi. GPIO'yu GPIO olarak içe aktar
içe aktarma süresi i aralığı (0, 28) için GPIO.setmode(GPIO. BCM): i aralığı (0, 28) için GPIO.setup(i, GPIO. OUT): GPIO.output(i, GPIO. HIGH) time.sleep(0.3) GPIO.output(i, GPIO. LOW) print("Öyleydi: " + str(i)) z = raw_input("Sonraki?")
Bu olurken, hangi pinin hangi konumu ve hangi rengi yaptığını bir metin dosyasına not ederdim. Bir sonraki adımda çok faydalı olduğu için bunu yapmanız gerekir.
Adım 6: İstendiğinde LED'i Açma Kodu
Bu projeyi yapma şeklim, bir pin açmanıza izin veren temel bir web sitesine sahip bir Raspberry Pi Zero W'yi içeriyor. Bu, genellikle açık olan ve çalışan ana Pi 4'ün işlemeyi yapabileceği ve ardından küçük Pi 0'ın yalnızca bir pimi açması gerektiği ve işleri biraz daha karmaşık hale getirdiği anlamına geliyordu. Bunu yaptım çünkü kurulumuma uyuyor ve ayrıca Pi 0'ın daha sonra yapacağımız şey için biraz yavaş olabileceğini hissettim.
RPi. GPIO'yu GPIO olarak içe aktar
şişeden içe aktarma süresi içe aktarma Flask, render_template, request, jsonify import os app = Flask(_name_) p = GPIO.setmode(GPIO. BCM) for i in range(0, 28): GPIO.setup(i, GPIO. OUT) @app.route('/') def index(): request.remote_addr @app.route("/off/") def turn_off(pin): GPIO.output(int(pin), GPIO. LOW) return "Off" @app.route("/off/all") def alloff(): i aralığında (0, 28): GPIO.output(i, GPIO. LOW) return "off" @app.route("/on/") def turn_on(pin): GPIO.output(int(pin), GPIO. HIGH) _name_ == '_main_' ise "On" döndürür: app.run(debug=True, host='0.0. 0,0')
Bunun çalışma şekli, pi'nin IP adresinin url'sini ve ardından bir açık veya kapalı ve ardından pin numarasını beklemektir.
bu kodu Raspberry Pi'nin ana dizinine kaydedin ve "pin_website.py" olarak adlandırın.
Bunu otomatik olarak çalışacak şekilde ayarlamanız gerekecek, böylece bunu yapmak için terminal türünde: sudo nano /etc/profile
Bu dosyanın altına "python3 pin_website.py &" ekleyin.
"&", arka planda çalışmasını sağladığı ve bu nedenle önyüklemenin devam etmesine izin verdiği için önemlidir.
7. Adım: Konum Nasıl Alınır
IFTTT'yi kullanarak, telefon belirli bir konuma girdiğinde size e-posta gönderebilmesi, bir web adresine ping atabilmesi veya size telgrafla mesaj gönderebilmesi için bir hizmet ayarlayabilirsiniz.
Adım 8: Bunların Hepsi Nasıl Çalışır?
Sahip olduğum kurulum, web sitemi barındıran, bağlantı noktası yönlendirmeli ve https://freedns.afraid.org/ tarafından sağlanan hizmeti kullanan statik bir DNS'li bir Sunucu Pi'dir. Bunların çoğu oldukça karmaşık ve port yönlendirmeyi anlamanız gerekiyor, başka bir zaman bu bölümün nasıl yapılacağına dair bir talimat verebilirim.
Bunu yapmanın başka bir yolu, mesajları pi'ye almak için telgraf kullanmaktır veya muhtemelen en kolayı, e-postaları okuyan ve bunun aracılığıyla konum güncellemelerini alan bir e-posta okuyucusu kurmaktır.
Telegram botunu veya bir e-posta okuyucusunu denemedim, ancak size nasıl yapılacağını gösterecek çok sayıda öğretici var.
İşte daha sonra IFTTT kullanılarak web kancaları tarafından istenen Flask/Python kodum:
şişeden içe aktarma Flask, render_template, request, jsonify
işletim sistemini tarih saatinden içe aktar tarih saatini haritadan içe aktar içe aktar * app = Flask(_name_) l = 0 setup() @app.route('/') def index(): request.remote_addr @app.route('/mum/enter) /') def mu(konum): mum.current_loc(konum) return "Güncelleme için Teşekkürler Anne!" @app.route("/dad/enter/") def da(l): Dad.current_loc(l) return "Güncelleme İçin Teşekkürler Baba!" @app.route("/child/enter/") def child_enter(l): me.current_loc(l) return "Hey, Me" @app.route('/mum/exit/') def mume(konum): mum.offline(location) return "Güncelleme İçin Teşekkürler Anne!" @app.route("/dad/exit/") def dade(l): Dad.offline(l) return "Güncelleme İçin Teşekkürler Baba!" @app.route("/child/exit/") def child_exit(l): me.offline(l) return "Hey, Me" @app.route("/reset") def redo(): setup() return "Sıfırla!" if _name_ == '_main_': app.run(debug=True, host='0.0.0.0')
ve map.py:
http.client, urllib.request, urllib.parse, urllib.error, base64'ü içe aktarın
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")) yanıt = conn.getresponse() bağlantı = http.client. HTTPConnection('192.168.1.251:5000') "GET", str("/off/all")) yanıt = 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 () class anne: def current_loc(l): global last_loc locs = { "llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "dört çarpı": 18, "llandrinio": 25, "welshpool": 27 } f = open("pin", "w") f.write(str(-1)) f.close() zaman. uyku(1) bağlantı = http.client. HTTPConnection('192.168.1.251:5000') bağlantı.request("GET", str("/off/") + str(last_loc)) yanıt = bağlantı.getrespons e() bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/on/") + str(locs[l])) yanıt = bağlantı.getresponse() last_loc = locs[l] def çevrimdışı(l): global last_loc locs = { "llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13, "dört çarpı": 18, "llandrinio": 25, "welshpool": 27 } bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str(" /off/") + str(last_loc)) yanıt = conn.getresponse() f = open("pin", "w") f.write(str(locs[l])) f.close() os.system ("python3 flash.py &") class baba: locs = { "welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "dört çarpı": 15, "llandrinio": 10, "welshpool": 24 } def current_loc(l): global dlast_loc locs = { "welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech": 6, "dört çarpı": 15 } f = open("pind", "w") f.write(str(-1)) f.close() time.sleep(1) bağlantı = http.client. HTTPConnection('192.168.1.251:5000') bağlantı.reques t("GET", str("/off/") + str(dlast_loc)) yanıt = conn.getresponse() bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/on/") + str(locs[l])) yanıt = bağlantı.getresponse() dlast_loc = locs[l] def çevrimdışı(l): global dlast_loc locs = { "welshpool": 3, "lynclys ": 1, "ev": 23, "shrewsbury": 0, "llanymynech": 6, "dört çarpı": 15, "llandrinio": 10 } bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/off/") + str(dlast_loc)) yanıt = 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, "school": 2, "oswestry": 14 } f = open("pinm", "w") f.write(str(-1)) f.close() time.sleep(1) bağlantı = http.client. HTTPConnection('192.168.1.251:5000 ') conn.request("GET", str("/off/") + str(mlast_loc)) yanıt = conn.getresponse() bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request ("GET", str("/on/") + str(lo cs[l])) yanıt = bağlantı.getresponse() mlast_loc = locs[l] tanım çevrimdışı(l): global dlast_loc locs = { "ev": 22, "okul": 2, "oswestry": 14 } bağlantı = http.client. HTTPConnection('192.168.1.251:5000') conn.request("GET", str("/off/") + str(mlast_loc)) yanıt = conn.getresponse() f = open("pinm", "w") f.write(str(locs[l])) f.close() os.system("python3 flashm.py &")
Adım 9: Projemden İlham Alarak Kendi Projenizi Oluşturun
Bu yüzden bir önceki adımın anlaşılmasının çok zor olacağını biliyorum, bu yüzden size haritayı nasıl yapacağınızı ve LED'leri açıp kapatan bir ahududu pi'ye sahip olabileceğinizi göstererek bırakacağım. Şimdi, IFTTT kullanarak size e-posta gönderen bir python betiği oluşturmanız gerekiyor. O zaman oldukça kolay olan bir e-posta okuma kodu bulmanız gerekir (google it). Ardından, bir e-postayı okuyup bir ebeveynin konumunu bulduğunuzda, hangi pinin açılacağını bulmak için 'if' ifadelerini kullanın.
Haritada, yanıp sönen bir ışık, bölgeden yeni ayrıldıklarını gösterir.
Python'dan başka bir pi'deki LED'leri açmanın yolu aşağıdaki gibidir:
http.client, urllib.request, urllib.parse, urllib.error, base64'ü içe aktarın
params = urllib.parse.urlencode({ }) conn = http.client. HTTPConnection('192.168.1.251:5000') #bunu ahududu pi'nin harita IP adresi ile değiştirin conn.request("GET", str("/off) /2")) # bu 2 numaralı pini kapatır yanıt = conn.getresponse() # bu URL'yi ister ve ardından pi haritası bunu okur ve 2 numaralı pini kapatır
Temel olarak, kendi GPS izleme haritanızı yapmak için 3B haritamla yaptıklarımı ilham kaynağı olarak kullanabileceğinizi umuyorum.
Önerilen:
ESP8266 ve Arduino Kullanarak WiFi Isı Haritası Oluşturun: 5 Adım
ESP8266 ve Arduino Kullanarak Bir WiFi Isı Haritası Oluşturun: Genel Bakış Bu eğitimde, Arduino ve ESP8266 kullanarak çevredeki Wi-Fi sinyallerinin bir ısı haritasını yapacağız. Öğrenecekleriniz WiFi sinyallerine girişESP8266 ile belirli sinyalleri algılama Bir ısı haritası yapın Arduino ve TFT ekran kullanarak
Yeni Taipei Şehri Turist Haritası!!!: 6 Adım
Yeni Taipei Şehri Turist Haritası!!!: Bu projede bir kutu yapacağım ve onun üzerinde bir Yeni Taipei Şehri haritası olacak. Bu projenin amacı, çocuklara ve yetişkinlere New Taipei City'deki 3 ana büyük alanı tanımaktır. Kutunun yanına yerleştirilmiş 3 düğme var
DIY Akıllı Robot İzleme Araç Kitleri Araba İzleme Işığa Duyarlı: 7 Adım
DIY Akıllı Robot Takip Araç Kitleri Araba Takip Işığa Duyarlı: Design by SINONING ROBOTTizleme robotu carTheoryLM393 çipinden satın alabilirsiniz, iki fotodirenci karşılaştırın, bir tarafı BEYAZ üzerinde fotodirenç LED'i olduğunda motorun tarafı hemen duracak, motorun diğer tarafı döndür, böylece
Üniversite Kampüsü Öğrenci Otopark Haritası: 7 Adım (Resimli)
Üniversite Kampüsü Öğrenci Otopark Haritası: Birçok öğrenci bir üniversite kampüsünde nereye park edebileceklerini merak ediyor. Bu sorunu çözmek için Utah Eyalet Üniversitesi kampüsünün ana alanının ışıklı bir park haritası oluşturdum. Harita, öğrencilerin park seçeneklerinin neler olduğuna hızlıca göz atmaları içindir
Harika bir GPS İzleme Haritası için DeLorme Earthmate GPS LT-20'yi Google Earth'ünüze Nasıl Bağlarsınız.: 5 Adım
Harika bir GPS İzleme Haritası için DeLorme Earthmate GPS LT-20'yi Google Earth'ünüze Nasıl Bağlayabilirsiniz.: Size bir GPS cihazını Google Earth Plus kullanmadan popüler Google Earth programına nasıl bağlayacağınızı göstereceğim. Büyük bir bütçem yok, bu yüzden bunun mümkün olduğunca ucuz olacağını garanti edebilirim