Isi kandungan:
- Langkah 1: Mendapatkan Peta 3D
- Langkah 2: Menyiapkan Peta untuk Sisipan LED
- Langkah 3: Masukkan LED
- Langkah 4: Sambungkan LED ke Raspberry Pi
- Langkah 5: Uji LED
- Langkah 6: Kod untuk Menghidupkan LED Apabila Diminta
- Langkah 7: Cara Mendapatkan Lokasi
- Langkah 8: Bagaimana Ini Semua Berfungsi
- Langkah 9: Bangun Sendiri Dari Inspirasi dari Projek Saya
Video: Peta 3D Penjejakan GPS: 9 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Projek ini adalah peta 3D bercetak 3D, dengan jalan, sungai dan bandar, dengan suar LED untuk menunjukkan lokasi ahli keluarga. Ini dapat menunjukkan sama ada anak berada di sekolah atau tidak, atau hanya lokasi kedua ibu bapa. Kita juga dapat menggunakannya untuk meramalkan waktu ibu bapa pulang, sehingga makan malam dapat dibuat pada waktu yang tepat. Ia juga merupakan projek yang sangat menarik untuk dipamerkan dan dipamerkan kepada keluarga dan rakan-rakan.
Saya harap anda menikmati membuat Instructable ini, atau menikmati mengetahui projek yang telah saya buat
Langkah 1: Mendapatkan Peta 3D
Untuk mendapatkan peta 3D kawasan anda, saya telah menulis arahan yang terpisah untuk membantu membimbing anda melalui proses membuatnya. Pautan ke petunjuk boleh didapati di sini:
www.instructables.com/id/Making-a-3D-Print…
Langkah 2: Menyiapkan Peta untuk Sisipan LED
Sekarang anda mempunyai peta 3D, dengan jalan, bandar dan sungai, kami memerlukan cara untuk menunjukkan di mana seseorang berada di peta. Saya menggunakan LED RG dwi-warna 3mm, kerana tujuan utama peta adalah untuk menunjukkan di mana kedua ibu bapa berada. Di tempat-tempat tertentu saya menggunakan LED RGB, untuk membolehkan saya menunjukkan di mana anak tertua berada. Terdapat had 28 pin untuk output pada Raspberry Pi, Oleh itu, pilih lokasi LED dengan bijak. Saya akhirnya menggunakan sekitar 24 daripadanya, jadi anda pasti baik-baik saja.
Untuk menggerudi PLA, saya dapati bor kayu biasa berfungsi dengan baik, dan saya memperlakukannya sama seperti saya mengolah kayu.
Di tempat-tempat, di mana peta terlalu tebal, saya akan mengebor lapisan dasar dengan bit gerudi yang besar, dan kemudian lapisan yang dapat dilihat di atas dengan bit gerudi 3mm yang betul.
Langkah 3: Masukkan LED
Sekarang kita mempunyai lubang untuk menyalakan LED, Kita boleh merekatkannya. PVA atau Superglue berfungsi dengan baik untuk ini, saya dapati PVA berlari mengelilinginya dengan menutupnya, dan superglue juga berfungsi dengan baik. Pastikan bahawa dengan setiap LED, mereka hanya menonjol di sisi yang terlihat oleh beberapa mm, Kerana LED yang melekat jauh kelihatan agak tidak kemas. Jangan risau kaki di belakang, kita boleh melipatnya setelah dipateri.
Langkah 4: Sambungkan LED ke Raspberry Pi
Saya secara langsung menyolder LED ke Raspberry Pi, namun, jika anda memilikinya dengan header pra-solder, atau anda ingin dapat menggunakan pi untuk sesuatu yang lain, maka saya cadangkan menggunakan kabel jumper untuk setiap LED, yang bermaksud Pi boleh ditanggalkan. Anda dapat melihat bahawa setelah saya menyolder LED, saya melipat kaki ke bawah sehingga mereka tidak melekat di belakang.
Langkah 5: Uji LED
Untuk memastikan bahawa semua LED berfungsi, saya menjalankan skrip yang melewati setiap pin yang mungkin, dan menyalakannya, satu demi satu, yang, ke yang berikutnya ketika saya mengklik enter. Ini membolehkan saya mencatat nombor pin mana lokasi, yang masuk sangat berguna.
import RPi. GPIO sebagai GPIO
masa import GPIO.setmode (GPIO. BCM) untuk i dalam julat (0, 28): GPIO.setup (i, GPIO. OUT) untuk i dalam julat (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) cetakan ("Itu:" + str (i)) z = raw_input ("Next?")
Semasa ini berlaku, saya akan mencatat pada fail teks pin mana yang melakukan lokasi dan warna mana. Anda perlu melakukan ini, kerana ia sangat berguna pada langkah seterusnya.
Langkah 6: Kod untuk Menghidupkan LED Apabila Diminta
Cara saya melaksanakan projek ini adalah menggunakan satu Raspberry Pi Zero W, dengan laman web asas yang membolehkan anda menghidupkan pin. Ini bermaksud bahawa Pi 4 utama, yang biasanya dihidupkan, dan berjalan, dapat melakukan pemrosesan, dan kemudian Pi 0 kecil hanya harus menghidupkan pin, membuat semuanya sedikit lebih rumit. Saya melakukan ini kerana sesuai dengan persediaan saya, dan saya juga merasakan Pi 0 sedikit lambat untuk apa yang akan kita lakukan kemudian.
import RPi. GPIO sebagai GPIO
masa import dari termos import Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) untuk i dalam julat (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) kembali "Mati" @ app.route ("/ off / all") def alloff (): untuk i dalam jarak (0, 28): GPIO.output (i, GPIO. LOW) kembali "off" @ app.route ("/ on /") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) kembali "On" if _name_ == '_main_': app.run (debug = True, host = '0.0. 0.0 ')
Cara ini berfungsi ialah menunggu url alamat IP pi dan kemudian hidupkan atau matikan dan kemudian nombor pin.
simpan kod ini di direktori utama Raspberry Pi, dan beri nama "pin_website.py"
Anda perlu menetapkan ini agar berjalan secara automatik, jadi untuk melakukannya, dalam jenis terminal: sudo nano / etc / profile
Di bahagian bawah fail ini, tambahkan "python3 pin_website.py &"
"&" Adalah mustahak, kerana ia berjalan di latar belakang, dan oleh itu membolehkan boot terus
Langkah 7: Cara Mendapatkan Lokasi
Dengan menggunakan IFTTT, anda dapat mengatur layanan sehingga ketika telepon memasuki lokasi tertentu, ia dapat mengirim e-mel kepada anda, atau ping alamat web, atau mengirim pesan kepada anda melalui telegram.
Langkah 8: Bagaimana Ini Semua Berfungsi
Penyediaan yang saya miliki adalah Server Pi, yang menghosting laman web saya, dengan penerusan port dan DNS statik menggunakan perkhidmatan yang disediakan oleh https://freedns.afraid.org/. Sebilangan besar ini cukup kompleks, dan anda perlu mempunyai pemahaman tentang pemajuan port, saya mungkin akan memberi petunjuk mengenai cara melakukan bahagian ini pada waktu yang lain.
Cara lain yang boleh anda lakukan adalah menggunakan telegram untuk mendapatkan mesej ke pi, atau mungkin yang paling mudah, adalah dengan menyediakan pembaca e-mel yang membaca e-mel dan menerima kemas kini lokasi melalui itu.
Saya belum mencuba bot Telegram atau pembaca e-mel, tetapi terdapat banyak tutorial di luar sana yang akan menunjukkan kepada anda bagaimana caranya.
Berikut adalah kod Flask / Python saya yang kemudian diminta oleh webhooks menggunakan IFTTT:
dari termos import Flask, render_template, request, jsonify
import os dari datetime import datetime dari peta import * 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) kembali "Terima kasih Untuk Kemas Kini, Ibu!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) kembali "Terima kasih Untuk Kemas Kini, Ayah!" @ app.route ("/ child / enter /") def child_enter (l): me.current_loc (l) return "Hey, Me" @ app.route ('/ mum / exit /') def mume (lokasi): mum.offline (lokasi) kembali "Terima kasih Untuk Kemas Kini, Ibu!" @ app.route ("/ dad / exit /") def dade (l): dad.offline (l) kembali "Terima kasih Untuk Kemas Kini, Ayah!" @ app.route ("/ child / exit /") def child_exit (l): me.offline (l) return "Hey, Me" @ app.route ("/ reset") def redo (): setup () return "Tetapkan semula!" jika _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
dan 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")) respons = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251 "GET", str ("/ off / all")) respon = conn.getresponse () f = terbuka ("pin", "w") f.write (str (-1)) f.close () f = buka ("pind", "w") f.write (str (-1)) f.close () f = buka ("pinm", "w") f.write (str (-1)) f.close () ibu kelas: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "empat salib": 18, "llandrinio": 25, "welshpool": 27} f = buka ("pin", "w") f.write (str (-1)) f.tutup () masa. sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ off /") + str (last_loc)) tindak balas = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) respon = 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," empat salib ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET ", str (" / off / ") + str (last_loc)) respon = conn.getresponse () f = terbuka (" pin "," w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") dad class: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "empat salib": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," empat salib ": 15} f = terbuka (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') sambungan t ("GET", str ("/ off /") + str (dlast_loc)) tindak balas = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) respons = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," four crosses ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ off /") + str (dlast_loc)) respons = conn.getresponse () f = terbuka ("pind", "w") f.write (str (lokasi [l])) f.close () os.system ("python3 flashd.py &") kelas saya: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = terbuka ("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)) respons = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET", str ("/ on /") + str (lo cs [l])) respons = 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)) respons = conn.getresponse () f = terbuka ("pinm", "w") f.write (str (loc [l])) f.close () os.system ("python3 flashm.py &")
Langkah 9: Bangun Sendiri Dari Inspirasi dari Projek Saya
Oleh itu, saya tahu bahawa langkah sebelumnya akan sangat sukar difahami, jadi saya akan membiarkannya menunjukkan cara membuat peta, dan dapat memiliki raspberry pi yang menghidupkan dan mematikan LED. Anda sekarang perlu membuat skrip python yang, menggunakan IFTTT, menghantar e-mel kepada anda. Maka anda perlu mencari kod membaca e-mel, yang cukup mudah (google it). Kemudian setelah anda membaca e-mel dan mencari lokasi ibu bapa, gunakan pernyataan 'if' untuk mencari pin mana yang harus dihidupkan.
Di peta, Lampu berkelip bermaksud bahawa mereka baru saja meninggalkan kawasan itu
Cara untuk menghidupkan LED pada pi lain dari python adalah seperti di bawah:
import http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') # ubah ini dengan alamat IP peta raspberry pi.request ("GET", str ("/ off) / 2 ")) # ini mematikan jawapan nombor pin 2 = conn.getresponse () # ini meminta URL, dan kemudian peta pi membacanya dan mematikan pin nombor 2
Pada dasarnya, saya harap anda dapat menggunakan apa yang telah saya lakukan dengan peta 3D saya sebagai inspirasi untuk membuat peta penjejakan GPS anda sendiri.
Disyorkan:
Buat Peta Khusus untuk GPS Garmin Anda: 8 Langkah (dengan Gambar)
Buat Peta Khusus untuk GPS Garmin Anda: Jika anda mempunyai GPS Garmin yang direka untuk mendaki dan aktiviti luar yang lain (termasuk siri GPSMAP, eTrex, Colorado, Dakota, Oregon, dan Montana, antara beberapa yang lain), anda tidak perlu dapatkan peta telanjang yang telah dimuatkan sebelumnya. E
Pengenalan - Ubah Raspberry Pi Ke Pelayan Penjejakan GPS: 12 Langkah
Pengenalan - Mengubah Raspberry Pi Menjadi Pelayan Pelacakan GPS: Dalam panduan ini saya akan menunjukkan kepada anda cara memasang perisian penjejakan GPS Traccar ke Raspberry Pi yang akan menerima data dari peranti yang serasi melalui internet, mencatat kedudukan mereka ke peta untuk masa nyata penjejakan, dan juga penjejakan main balik
Buat Buku Peta Menggunakan Peta Google: 17 Langkah (dengan Gambar)
Buat Buku Peta Menggunakan Peta Google: Pada suatu hari saya mencari di kedai buku untuk Panduan Jalan untuk DuPage County, IL kerana teman wanita saya tinggal di sana dan memerlukan peta jalan yang terperinci. Malangnya, satu-satunya yang mereka ada dekat dengan Cook County (seperti ini
Navigasi Robot Dengan Sensor Kasut, W / o GPS, Peta W / o: 13 Langkah (dengan Gambar)
Navigasi Robot Dengan Sensor Kasut, GPS W / o, Peta W / o: Robot bergerak di jalan yang diprogramkan dan menghantar (melalui bluetooth) maklumat pergerakan sebenarnya ke telefon untuk penjejakan masa nyata. Arduino diprogramkan dengan jalur dan oblu digunakan untuk mengesan gerakan robot. oblu menghantar pergerakan maklumat
Cara Menghubungkan DeLorme Earthmate GPS LT-20 ke Google Earth anda untuk Peta Penjejakan GPS yang Hebat: 5 Langkah
Cara Menghubungkan DeLorme Earthmate GPS LT-20 ke Google Earth Anda untuk Peta Penjejakan GPS yang Hebat: Saya akan menunjukkan kepada anda cara menyambungkan peranti GPS ke program Google Earth yang popular, tanpa menggunakan Google Earth Plus. Saya tidak mempunyai anggaran yang besar sehingga saya dapat menjamin bahawa ini semurah mungkin