Talaan ng mga Nilalaman:

Pagsubaybay sa GPS ng Mapa ng 3D: 9 Mga Hakbang
Pagsubaybay sa GPS ng Mapa ng 3D: 9 Mga Hakbang

Video: Pagsubaybay sa GPS ng Mapa ng 3D: 9 Mga Hakbang

Video: Pagsubaybay sa GPS ng Mapa ng 3D: 9 Mga Hakbang
Video: GET MORE HOURS ON PISO WIFI Without Coins|WIFI HACKS| PAANO MAKA KUHA NG MARAMING ORAS SA PISO WIFI 2024, Nobyembre
Anonim
Pagsubaybay sa GPS ng Mapa ng 3D
Pagsubaybay sa GPS ng Mapa ng 3D
Pagsubaybay sa GPS ng Mapa ng 3D
Pagsubaybay sa GPS ng Mapa ng 3D

Ang proyektong ito ay isang 3D na naka-print na 3D na mapa, na may mga kalsada, ilog at bayan, na may mga LED beacon upang maipakita ang lokasyon ng mga miyembro ng pamilya. Maaari itong ipakita kung ang isang bata ay nasa paaralan, o ang lokasyon lamang ng parehong mga magulang. Magagamit din namin ito upang hulaan kung aling oras makakauwi ang mga magulang, upang ang hapunan ay maaaring gawin sa tamang oras. Ito rin ay isang pangkalahatang cool na proyekto upang ipakita at ipakita sa pamilya at mga kaibigan.

Inaasahan kong nasisiyahan ka sa paggawa ng Makatuturo na ito, o nasisiyahan kang malaman ang tungkol sa isang proyekto na aking nagawa

Hakbang 1: Pagkuha ng isang 3D Map

Upang makakuha ng isang 3D na mapa ng iyong lugar, nagsulat ako ng isang hiwalay na itinuturo upang makatulong na gabayan ka sa proseso ng paggawa ng isa. Ang link sa itinuro ay narito:

www.instructables.com/id/Making-a-3D-Print…

Hakbang 2: Paghahanda ng Mapa para sa mga LED Insert

Ngayon na mayroon kang isang 3D na mapa, na may mga kalsada, bayan at ilog, kailangan namin ng isang paraan ng pagpapahiwatig kung nasaan ang isang tao sa mapa. Gumamit ako ng bi-color 3mm RG LEDs, dahil ang pangunahing layunin ng mapa ay upang ipakita kung nasaan ang dalawang magulang. Sa ilang mga lugar ginamit ko ang isang RGB LED, upang payagan akong ipakita kung nasaan ang pinakamatandang anak. Mayroong isang limitasyon ng 28 mga pin upang mag-output sa Raspberry Pi, Kaya piliin ang mga lokasyon ng LED nang matalino. Natapos akong gumamit ng mga 24 sa kanila, kaya dapat ayos ka lang.

Upang mag-drill ng PLA, natagpuan ko ang isang normal na kahoy na drill na bit na gumana nang maayos, at ang paggamot ko ay tulad ng paggamot sa kahoy.

Sa mga lugar, kung saan ang mapa ay masyadong makapal, ilalaglag ko ang base layer na may isang malaking drill bit, at pagkatapos ay ang nakikita sa itaas na layer na may tamang 3mm drill bit.

Hakbang 3: Ipasok ang mga LED

Ipasok ang mga LED
Ipasok ang mga LED

Ngayon na mayroon kaming mga butas para sa mga LEDs upang maupuan, Maaari nating idikit ito. Ang PVA o Superglue ay gumagana nang maayos para dito, nalaman kong ang PVA ay tumakbo sa paligid nito na tinatakan ito sa lugar, at ang superglue ay gumagana rin ng maayos. Siguraduhin na sa bawat LED, mananatili lamang sila sa nakikitang tagiliran ng ilang mm, Dahil ang pagkakaroon ng mga LED na dumidikit sa lahat ng paraan ay mukhang medyo magulo. Huwag magalala tungkol sa mga binti sa likod, maaari nating itiklop ang mga ito sa sandaling ma-solder ang mga ito.

Hakbang 4: Ikonekta ang mga LED sa Raspberry Pi

Direkta akong naghinang ng mga LED sa Raspberry Pi, gayunpaman, kung mayroon kang isa na may paunang solder na header, o nais mong magamit ang pi para sa iba pa, kung gayon imumungkahi ko ang paggamit ng mga jumper wires para sa bawat LED, nangangahulugang natatanggal ang Pi. Maaari mong makita na sa sandaling na-solder ko ang LED, tiniklop ko ang mga binti pababa upang hindi sila dumikit sa likod.

Hakbang 5: Subukan ang mga LED

Subukan ang mga LED
Subukan ang mga LED

Upang matiyak na gumagana ang lahat ng mga LED, nagpatakbo ako ng isang script na dumaan sa bawat posibleng pin, at sinindihan ang mga ito, nang paisa-isa, na, papunta sa susunod kapag nag-click ako sa enter. Pinapayagan akong tandaan kung aling pin number ang gumawa kung aling lokasyon, na napakinabang.

i-import ang RPi. GPIO bilang GPIO

i-import ang oras GPIO.setmode (GPIO. BCM) para sa i sa saklaw (0, 28): GPIO.setup (i, GPIO. OUT) para sa i sa saklaw (0, 28): GPIO.output (i, GPIO. HIGH) time.s Sleep (0.3) GPIO.output (i, GPIO. LOW) print ("That Was:" + str (i)) z = raw_input ("Susunod?")

Habang nangyayari ito, tatanda ako sa isang file ng teksto kung aling pin ang gumawa aling lokasyon at aling kulay. Kailangan mong gawin ito, dahil napaka kapaki-pakinabang sa susunod na hakbang.

Hakbang 6: Code upang I-on ang LED Kapag Humiling

Ang paraan na nagawa ko sa proyektong ito ay nagsasangkot sa isang Raspberry Pi Zero W, na may isang pangunahing website na nagbibigay-daan sa iyo upang buksan ang isang pin. Nangangahulugan ito na ang pangunahing Pi 4, na karaniwang nasa, at tumatakbo, ay maaaring gawin ang pagproseso, at pagkatapos ang maliit na Pi 0 ay dapat lamang buksan ang isang pin, na ginagawang mas kumplikado ang mga bagay. Ginawa ko ito dahil nababagay ito sa aking pag-set up, at naramdaman ko rin na ang Pi 0 ay maaaring maging medyo mabagal para sa gagawin namin sa paglaon.

i-import ang RPi. GPIO bilang GPIO

oras ng pag-import mula sa flask import Flask, render_template, hiling, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) para sa i sa saklaw (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) ibalik ang "Off" @ app.route ("/ off / all") def alloff (): para sa saklaw (0, 28): GPIO.output (i, GPIO. LOW) ibalik ang "off" @ app.route ("/ on /") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) ibalik ang "On" kung _name_ == '_main_': app.run (debug = True, host = '0.0. 0.0 ')

Ang paraan ng paggana nito ay naghihintay ito para sa url ng IP address ng pi at pagkatapos ay isang on o off at pagkatapos ay ang pin number.

i-save ang code na ito sa direktoryo sa bahay ng Raspberry Pi, at pangalanan itong "pin_website.py"

Kakailanganin mong itakda ito upang awtomatikong tumakbo, kaya upang gawin ito, sa uri ng terminal: sudo nano / etc / profile

Sa ilalim ng file na ito, idagdag ang "python3 pin_website.py &"

Mahalaga ang "&", dahil ginagawa itong tumakbo sa background, at samakatuwid ay pinapayagan na magpatuloy ang boot

Hakbang 7: Paano Makatanggap ng Lokasyon

Paano Makatanggap ng Lokasyon
Paano Makatanggap ng Lokasyon

Gamit ang IFTTT, maaari kang mag-set up ng isang serbisyo upang kapag pumasok ang telepono sa isang tiyak na lokasyon, maaari ka nitong i-email, o i-ping ang isang web address, o i-message ka sa telegram.

Hakbang 8: Paano Magagawa ang Lahat ng Ito

Ang setup na mayroon ako ay isang Server Pi, na nagho-host sa aking website, na may pagpapasa ng port at isang static na DNS gamit ang serbisyong ibinigay ng https://freedns.afraid.org/. Marami sa mga ito ay medyo kumplikado, at kailangan mong magkaroon ng isang pag-unawa sa pagpapasa ng port, maaari akong magturo sa kung paano gawin ang bahaging ito sa ibang oras.

Ang isa pang paraan na magagawa mo ito ay ang paggamit ng telegram upang makakuha ng mga mensahe sa pi, o posibleng ang pinakamadali, ay ang pag-set up ng isang email reader na nagbabasa ng mga email at nakawin ang mga pag-update ng lokasyon sa pamamagitan nito.

Hindi ko pa nasubukan ang Telegram bot o isang email reader, ngunit maraming mga tutorial doon na magpapakita sa iyo kung paano.

Narito ang aking Flask / Python code na pagkatapos ay hiniling ng mga webhook gamit ang IFTTT:

mula sa flask import Flask, render_template, request, jsonify

i-import ang os mula sa datime na pag-import ng datime mula sa map import * app = Flask (_ name_) l = 0 setup () @ app.route ('/') def index (): return request.remote_addr @ app.route ('/ mum / enter / ') def mu (lokasyon): mum.current_loc (lokasyon) ibalik ang "Salamat Sa Pag-update, Mama!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) ibalik "Salamat Para Sa Update, Itay!" @ app.route ("/ child / enter /") def child_enter (l): me.current_loc (l) ibalik ang "Hey, Me" @ app.route ('/ mum / exit /') def mume (lokasyon): mum.offline (lokasyon) ibalik ang "Salamat Para sa Pag-update, Mama!" @ app.route ("/ dad / exit /") def dade (l): dad.offline (l) ibalik ang "Thanks For The Update, Dad!" @ app.route ("/ child / exit /") def child_exit (l): me.offline (l) ibalik ang "Hey, Me" @ app.route ("/ reset") def redo (): setup () return "I-reset!" kung _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

at map.py:

i-import ang 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")) tugon = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251qu000') "GET", str ("/ off / all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = buksan ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () klase mum: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "apat na krus": 18, "llandrinio": 25, "welshpool": 27} f = bukas ("pin", "w") f.write (str (-1)) f. Isara () oras. pagtulog (1) conn = http.client. HTTPConnection ('192.168.1.251dagdag000') conn.request ("GET", str ("/ off /") + str (last_loc)) tugon = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251dagdag000') conn.request ("GET", str ("/ on /") + str (locs [l])) tugon = 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," apat na krus ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251alye000') conn.request (" GET ", str (" / off / ") + str (last_loc)) tugon = conn.getresponse () f = bukas (" pin "," w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") class dad: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "apat na krus": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," apat na krus ": 15} f = bukas (" pind "," w ") f.write (str (-1)) f.close () time.s Sleep (1) conn = http.client. HTTPConnection ('192.168.1.251unting000') conn.reques t ("GET", str ("/ off /") + str (dlast_loc)) tugon = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251alye000') 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," home ": 23," shrewsbury ": 0," llanymynech ": 6," apat na krus ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251 buwan000') 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, "school": 2, "oswestry": 14} f = open ("pinm", "w") f.write (str (-1)) f.close () time.s Sleep (1) conn = http.client. HTTPConnection ('192.168.1.251tit000 ') conn.request ("GET", str ("/ off /") + str (mlast_loc)) tugon = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251dagdag000 ') 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.251dagdag000') conn.request ("GET", str ("/ off /") + str (mlast_loc)) tugon = conn.getresponse () f = buksan ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")

Hakbang 9: Buuin ang Iyong Sariling Mula sa Inspirasyon Off My Project

Kaya alam ko na ang nakaraang hakbang ay napakahirap maintindihan, kaya't iiwan ko ito bilang pagpapakita sa iyo kung paano gawin ang mapa, at magkaroon ng isang raspberry pi na nakabukas at naka-off ang mga LED. Kailangan mo na ngayong lumikha ng isang python script na, gamit ang IFTTT, i-email ka. Pagkatapos ay kailangan mong maghanap ng isang email sa pagbabasa ng isang piraso ng code, na kung saan ay medyo madali (google ito). Pagkatapos kapag nabasa mo ang isang email at nakita ang lokasyon ng isang magulang, gamitin ang mga pahayag na 'kung' upang hanapin kung aling pin ang dapat buksan.

Sa mapa, Ang isang kumikislap na ilaw ay nangangahulugang umalis na lamang sila sa lugar

Ang paraan upang i-on ang mga LED sa isa pang pi mula sa sawa ay tulad sa ibaba:

i-import ang http.client, urllib.request, urllib.parse, urllib.error, base64

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251onui000') #palitan ito sa map IP address ng raspberry pi na conn.request ("GET", str ("/ off / 2 ")) # pinapatay nito ang pin number 2 na tugon = conn.getresponse () # hinihiling nito ang URL, at pagkatapos binabasa ito ng map pi at pinapatay ang numero ng pin 2

Talaga, inaasahan kong magagamit mo ang nagawa ko sa aking 3D na mapa bilang inspirasyon upang makagawa ng iyong sariling mapa sa pagsubaybay sa GPS.

Inirerekumendang: