Mündəricat:
- Addım 1: 3D xəritəsini əldə edin
- Addım 2: Xəritəni LED -lər üçün hazırlayın
- Addım 3: LEDləri daxil edin
- Addım 4: LED -ləri Raspberry Pi -yə qoşun
- Addım 5: LEDləri sınayın
- Addım 6: Tələb olunduqda LED -i açmaq üçün kod
- Addım 7: Məkanı necə əldə etmək olar
- Addım 8: Bütün bunlar necə işləyir
- Addım 9: Layihəmdən Öz İlhamınızı Alın
Video: GPS İzləmə 3D xəritəsi: 9 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu layihə, ailə üzvlərinin yerini göstərmək üçün yolları, çayları və şəhərləri olan LED işıqları olan 3D çaplı bir 3D xəritəsidir. Bir uşağın məktəbdə olub -olmadığını və ya hər iki valideynin yerini göstərə bilər. Valideynlərin evə nə vaxt gəldiklərini də proqnozlaşdırmaq üçün istifadə edə bilərik ki, axşam yeməyi doğru vaxtda hazırlansın. Həm də ailənizə və dostlarınıza göstərmək və göstərmək üçün ümumiyyətlə sərin bir layihədir.
Ümid edirəm ki, bu təlimatı hazırlamaqdan zövq alırsınız və ya hazırladığım bir layihə haqqında məlumat əldə etməkdən zövq alırsınız
Addım 1: 3D xəritəsini əldə edin
Bölgənizin bir 3D xəritəsini əldə etmək üçün, bir xəritə hazırlamaq prosesində sizə kömək etmək üçün ayrıca bir təlimat yazdım. Təlimat verənlərə keçid burada:
www.instructables.com/id/Making-a-3D-Print…
Addım 2: Xəritəni LED -lər üçün hazırlayın
Yollarınız, şəhərləriniz və çaylarınız olan bir 3D xəritəniz olduğuna görə, bir şəxsin xəritədə harada olduğunu göstərməyimiz lazımdır. İki rəngli 3 mm RG LED-lərindən istifadə etdim, çünki xəritənin əsas məqsədi iki valideynin harada olduğunu göstərməkdir. Bəzi yerlərdə ən böyük uşağın harada olduğunu göstərmək üçün bir RGB LED istifadə etdim. Raspberry Pi -də çıxarmaq üçün 28 sancaq limiti var, buna görə LED -lərin yerlərini ağıllı şəkildə seçin. Təxminən 24 -dən istifadə etdim, buna görə yaxşı olmalısan.
PLA qazmaq üçün normal bir ağac matkapının yaxşı işlədiyini gördüm və oduna necə qulluq edərdimsə, elə də müalicə etdim.
Xəritənin çox qalın olduğu yerlərdə əsas təbəqəni böyük bir matkap ucu ilə, sonra yuxarıdakı görünən təbəqəni düzgün 3 mm qazma ucu ilə qazardım.
Addım 3: LEDləri daxil edin
İndi LED -lərin oturması üçün deşiklərimiz var, onları yapışdıra bilərik. PVA və ya Superglue bunun üçün yaxşı işləyir, PVA -nın ətrafına yuvarlandığını və onu möhkəm bağladığını gördüm. Hər bir LED ilə yalnız görünən tərəfdə bir neçə mm qaldıqlarından əmin olun, çünki LED -lərin bir kənara çıxması bir az qarışıq görünür. Arxadakı ayaqlardan narahat olmayın, lehimləndikdən sonra bunları qatlaya bilərik.
Addım 4: LED -ləri Raspberry Pi -yə qoşun
LEDləri birbaşa Raspberry Pi-yə lehimlədim, ancaq əvvəlcədən lehimlənmiş başlığınız varsa və ya pi-ni başqa bir şey üçün istifadə etmək istəyirsinizsə, onda hər LED üçün tullanan tellərdən istifadə etməyi təklif edərdim, yəni Pi çıxarıla bilər. Görürsünüz ki, LED -i lehimlədikdən sonra ayaqlarımı arxaya yapışmaması üçün qatladım.
Addım 5: LEDləri sınayın
Bütün LED -lərin işlədiyinə əmin olmaq üçün, hər bir mümkün pindən keçən bir skript işlədim və onları bir -bir işıqlandırdım ki, bu da daxil etmə düyməsini basdığımda digərinə keçər. Bu, hansı pin nömrəsinin hansı yerdə etdiyini və çox faydalı olduğunu qeyd etməyə imkan verdi.
GPO olaraq RPi. GPIO idxal edin
idxal vaxtı GPIO.setmode (GPIO. BCM) i aralığında (0, 28): GPIO.setup (i, GPIO. OUT) i aralığında (0, 28): GPIO. çıxışı (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) yazdır ("O idi:" + str (i)) z = raw_input ("Sonrakı?")
Bu baş verərkən, bir mətn sənədində hansı pinin hansı yeri və hansı rəngdə etdiyini qeyd edərdim. Növbəti addımda çox faydalı olduğu üçün bunu etməlisiniz.
Addım 6: Tələb olunduqda LED -i açmaq üçün kod
Bu layihəni həyata keçirmə üsulum, bir pin açmağa imkan verən əsas bir veb saytına sahib bir Raspberry Pi Zero W -ni əhatə edir. Bu, ümumiyyətlə işləyən və işləyən əsas Pi 4 -ün emal edə biləcəyi və sonra kiçik Pi 0 -ın işini bir az daha mürəkkəbləşdirən yalnız bir pin açması lazım olduğu anlamına gəlirdi. Bunu konfiqurasiyama uyğun olduğu üçün etdim və Pi 0 -un daha sonra edəcəyimiz işlərdə bir az ləng ola biləcəyini də hiss etdim.
GPO olaraq RPi. GPIO idxal edin
flask idxalından idxal vaxtı Flask, render_template, request, jsonify import os app = Flask (_ name_) p = i üçün diapazonda (0, 28) GPIO.setmode (GPIO. BCM): 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) qaytar "Off" @app.route ("/off/all") def alloff (): i üçündür (0, 28) üçün: GPIO.output (i, GPIO. LOW) "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) _name_ == '_main_' olarsa "On" qaytar: app.run (debug = True, host = '0.0. 0.0 ')
Bunun necə işlədiyi, pi -nin IP ünvanının urlini, sonra açılmasını və ya sönməsini və sonra pin nömrəsini gözləməsidir.
bu kodu Raspberry Pi -nin ana qovluğunda saxlayın və "pin_website.py" adlandırın
Bunu avtomatik olaraq işləyəcək şəkildə qurmalısınız, bunun üçün terminal tipində: sudo nano /etc /profile
Bu faylın altına "python3 pin_website.py &" əlavə edin
"&" Arxa planda işləməsini təmin etdiyi üçün önəmlidir, buna görə də yükləmənin davam etməsinə imkan verir
Addım 7: Məkanı necə əldə etmək olar
IFTTT -dən istifadə edərək, telefon müəyyən bir yerə girəndə sizə e -poçt göndərə və ya veb ünvanına ping göndərə və ya telegramda mesaj göndərə biləcəyiniz bir xidmət qura bilərsiniz.
Addım 8: Bütün bunlar necə işləyir
Sahib olduğum quruluş, https://freedns.afraid.org/ tərəfindən verilən xidmətdən istifadə edərək port yönləndirmə və statik bir DNS ilə veb saytımı yerləşdirən bir Server Pi -dir. Bunun bir çoxu olduqca mürəkkəbdir və liman yönləndirmə anlayışına sahib olmalısınız, bu hissəni başqa dəfə necə edəcəyinizi izah edə bilərəm.
Başqa bir yol, pi -yə mesaj göndərmək üçün teleqramdan istifadə etmək və ya bəlkə də ən asan olanı, e -poçtları oxuyan və bunun vasitəsilə yer yeniləmələrini alan bir e -poçt oxuyucusu qurmaqdır.
Telegram botunu və ya e -poçt oxuyucusunu sınamamışam, amma necə edəcəyinizi göstərəcək çoxlu dərsliklər var.
IFTTT istifadə edərək webhooks tərəfindən tələb olunan Flask / Python kodum budur:
balon idxalından Şüşə, render_template, istək, jsonify
datetime -dan os -ı import edin datetime xəritədən daxil edin * app = Flask (_ name_) l = 0 quraşdırma () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (yer): mum.current_loc (yer) qaytar "Yeniləmə üçün təşəkkürlər, ana!" @app.route ("/dad/enter/") def da (l): dad.current_loc (l) "Yeniləmə üçün təşəkkürlər, ata!" @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) "Hey, Mən" i qaytar @app.route ('/mum/exit/') def mume (yer): mum.offline (yer) "Yeniləmə üçün təşəkkürlər, ana!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) "Yeniləmə üçün təşəkkürlər, ata!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hey, Mən" @app.route ("/reset") def redo (): setup () return "Sıfırla!" əgər _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
və map.py:
http.client, urllib.request, urllib.parse, urllib.error, base64 idxal edin
import ast, json idxal vaxtı idxal mövzuları idxal os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('ozodns.afraid.org')) conn.request ("GET", str ("/dynamic/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) cavab = conn.getresponse () conn = http.client. HTTPConnection ('192.1000'.251) "GET", str ("/off/all")) cavab = conn.getresponse () f = açıq ("pin", "w") f. yazmaq (str (-1)) f.close () f = açıq ("pind", "w") f. yaz (str (-1)) f.close () f = açıq ("pinm", "w") f. yaz (str (-1)) f.close () sinif anası: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "dörd xaç": 18, "llandrinio": 25, "welshpool": 27} f = açıq ("pin", "w") f.write (str (-1)) f.close () zaman. yuxu (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (last_loc)) cavab = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/on/") + str (locs [l])) cavab = 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," dörd xaç ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET ", str (" /off/") + str (last_loc)) cavab = conn.getresponse () f = açıq (" pin "," w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") sinif atası: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "four cross": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," dörd xaç ": 15} f = açıq (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') əlaqələndiriciləri t ("GET", str ("/off/") + str (dlast_loc)) cavab = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/on/") + str (locs [l])) cavab = conn.getresponse () dlast_loc = locs [l] def off (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," ev ": 23," shrewsbury ": 0," llanymynech ": 6," dörd xaç ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (dlast_loc)) cavab = conn.getresponse () f = açıq ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") sinif məni: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = açıq ("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)) cavab = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET", str ("/on/") + str (bax cs [l])) cavab = bağla http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (mlast_loc)) cavab = conn.getresponse () f = açıq ("pinm"), "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
Addım 9: Layihəmdən Öz İlhamınızı Alın
Beləliklə, əvvəlki addımı başa düşməyin çox çətin olacağını bilirəm, buna görə xəritənin necə ediləcəyini sizə göstərəcəyəm və LED -ləri yandıran və söndürən bir moruq pi -yə sahib olacağam. İndi IFTTT istifadə edərək sizə e -poçt göndərən bir python skript yaratmalısınız. Sonra olduqca asan olan bir e -poçt oxu kodu tapmalısınız (google it). Sonra bir e -poçt oxuduqda və bir valideynin yerini tapdıqda, hansı pin açılacağını tapmaq üçün 'if' ifadələrini istifadə edin.
Xəritədə, yanıb -sönən işıq, ərazini yenicə tərk etdikləri anlamına gəlir
Python -dan başqa bir pi -də LEDləri açmağın yolu aşağıdakı kimidir:
http.client, urllib.request, urllib.parse, urllib.error, base64 idxal edin
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #bunu moruq pi -nin xəritəsi IP ünvanı ilə dəyişin Conn.request ("GET", str ("/off") /2 ")) # bu 2 nömrəli pin cavabını bağlayır = conn.getresponse () # bu URL tələb edir və sonra xəritə pi bunu oxuyur və pin nömrəsi 2 -ni söndürür
Ümumiyyətlə, 3D xəritəmlə etdiklərimi öz GPS izləmə xəritənizi yaratmaq üçün ilham olaraq istifadə edə biləcəyinizə ümid edirəm.
Tövsiyə:
Layihə 4 - Elektron xəritəsi: 9 addım
Layihə 4 - Elektron xəritəsi: Bu layihə Yaxşı Niyyətdə tapdığım Raptor New Bright F -150 RC oyuncağına yönəlib. Bu layihədə oyuncağın içərisində nələr baş verdiyini və oyuncağın hər hissəsini necə sökdüyümü göstərəcəyəm. Bu oyuncağın səhv olduğunu da qeyd etmək lazımdır
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə İzləmə və Proqramlaşdırma Arduino Uno ilə ATtiny85: 4 addım (şəkillərlə)
ATtiny85 Geyinilə bilən Titrəmə Aktivliyi İzləmə Saatı və Proqramlaşdırılması Arduino Uno ilə ATtiny85: Geyinilə bilən fəaliyyət izləmə saatı necə edilir? Bu, durğunluq algıladıqda titrəmək üçün hazırlanmış geyilə bilən bir gadgetdır. Vaxtınızın çoxunu mənim kimi kompüterdə keçirirsinizmi? Özünüz də bilmədən saatlarla oturursunuz? Sonra bu cihaz f
ESP8266 və Arduino istifadə edərək WiFi İstilik Xəritəsi yaradın: 5 addım
ESP8266 və Arduino istifadə edərək WiFi İstilik Xəritəsi yaradın: Baxış Bu təlimatda, Arduino və ESP8266 istifadə edərək ətrafdakı Wi-Fi siqnallarının istilik xəritəsini hazırlayacağıq. Nə öyrənəcəksiniz WiFi siqnallarına giriş ESP8266 ilə xüsusi siqnalları necə aşkar etmək olar Arduino və TFT dispindən istifadə
Yeni Taipei Şəhər Turist xəritəsi !!!: 6 addım
Yeni Taipei Şəhər Turist Xəritəsi !!!: Bu layihədə bir qutu hazırlayacağam və üstündə Yeni Taipei Şəhərinin xəritəsi olacaq. Bu layihənin məqsədi uşaqlara və böyüklərə Yeni Taipei şəhərindəki 3 əsas böyük ərazini bildirməkdir. Qutunun kənarında yerləşdirilmiş 3 düymə var
Mükəmməl bir GPS İzləmə Xəritəsi üçün DeLorme Earthmate GPS LT-20-ni Google Earth-ə necə bağlamaq olar: 5 addım
Mükəmməl bir GPS İzləmə Xəritəsi üçün DeLorme Earthmate GPS LT-20-ni Google Earth-ə necə bağlamaq olar: Google Earth Plus istifadə etmədən GPS cihazını məşhur Google Earth proqramına necə bağlayacağınızı sizə göstərəcəyəm. Böyük bir büdcəm yoxdur, buna görə bunun mümkün qədər ucuz olacağına zəmanət verə bilərəm