Мазмұны:

GPS бақылау 3D картасы: 9 қадам
GPS бақылау 3D картасы: 9 қадам

Бейне: GPS бақылау 3D картасы: 9 қадам

Бейне: GPS бақылау 3D картасы: 9 қадам
Бейне: Титаниктің құпиясы: олар айсбергті қалай байқамады?! Ең егжей-тегжейлі оқиға! 2024, Қараша
Anonim
GPS бақылау 3D картасы
GPS бақылау 3D картасы
GPS бақылау 3D картасы
GPS бақылау 3D картасы

Бұл жоба 3D басып шығарылған 3D картасы, жолдары, өзендері мен қалалары бар, отбасы мүшелерінің орналасқан жерін көрсететін жарықдиодты шамдармен. Бұл баланың мектепте бар -жоғын немесе ата -анасының екеуінің орналасқан жерін көрсете алады. Біз сондай -ақ оны ата -аналардың үйге қай уақытта келетінін болжау үшін қолдана аламыз, осылайша түскі ас дұрыс уақытқа дайындалуы мүмкін. Бұл сонымен қатар отбасы мен достарына көрсету және көрсету үшін керемет жоба.

Сізге бұл нұсқаулықты жасау ұнайды немесе менің жасаған жобам туралы білгіңіз келеді деп сенемін

1 -қадам: 3D картасын алу

Сіздің аймағыңыздың 3D картасын алу үшін мен сізге картаны жасау процесінде сізге көмектесу үшін бөлек нұсқаулық жаздым. Нұсқаулыққа сілтеме мына жерде:

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

2 -қадам: Картаны жарықдиодты енгізу үшін дайындау

Енді сізде 3D картасы бар, жолдары, қалалары мен өзендері бар, бізге адамның картадан қайда екенін көрсету әдісі қажет. Мен екі түсті 3 мм RG светодиодтарын қолдандым, себебі картаның негізгі мақсаты-екі ата-ананың қайда екенін көрсету. Кейбір жерлерде мен үлкен баланың қайда екенін көрсетуге мүмкіндік беретін RGB светодиодын қолдандым. Raspberry Pi -де 28 түйреуіш шығаруға шектеу бар, сондықтан жарық диодтардың орналасуын ақылмен таңдаңыз. Мен олардың шамамен 24 -ін қолдандым, сондықтан сіз жақсы болуыңыз керек.

PLA бұрғылау үшін мен ағаштан жасалған бұрғылаудың жақсы жұмыс істейтінін таптым, мен ағашты қалай өңдейтін болсам, солай өңдедім.

Карта тым қалың жерлерде мен базалық қабатты үлкен бұрғымен, содан кейін жоғарыда көрінетін 3 мм бұрғымен дұрыс бұрғылайтынмын.

3 -қадам: Жарық диодтарын салыңыз

Жарық диодтарын салыңыз
Жарық диодтарын салыңыз

Енді бізде светодиодтар үшін тесіктер бар, біз оларды желімдей аламыз. Бұл үшін PVA немесе Superglue жақсы жұмыс істейді, мен PVA -ның айналасында жүгіріп, оны тығыздап бекітіп қойғанын, суперглюздің де өте жақсы жұмыс істейтінін байқадым. Светодиодтың әрқайсысында олар бірнеше мм -ге ғана көрінетініне көз жеткізіңіз, себебі жарық диодтары толығымен жабысқақ болып көрінеді. Артқы жағындағы аяқтар туралы алаңдамаңыз, біз оларды дәнекерленгеннен кейін бүктеп аламыз.

4 -қадам: Жарықдиодты Raspberry Pi -ге қосыңыз

Мен светодиодты Raspberry Pi-ге тікелей дәнекерледім, бірақ егер сізде алдын-ала дәнекерленген үстіңгі тақтасы бар болса немесе сіз pi-ді басқа нәрсеге қолдана білгіңіз келсе, онда мен әр жарық диодты қосқыш сымдарды қолдануды ұсынар едім, яғни Pi жойылады. Көріп отырсыздар, мен светодиодты дәнекерлегеннен кейін, аяқтарымды бүктеп қойдым, олар артқы жағына жабысып қалмады.

5 -қадам: Жарық диодтарын тексеріңіз

Жарық диодтарын тексеріңіз
Жарық диодтарын тексеріңіз

Барлық светодиодтар жұмыс істейтініне көз жеткізу үшін мен әрбір мүмкін істікшеден өтетін сценарийді жүргіздім және оларды бірте -бірте жарықтандырамын, ол ендіру батырмасын басқан кезде келесіге ауысады. Бұл маған қай істік нөмірі қай жерде жасалғанын, қайсысы өте пайдалы екенін жазуға мүмкіндік берді.

GPO ретінде RPi. GPIO импорттау

i ауқымындағы (0, 28) GPIO.setmode (GPIO. BCM) импорттау уақыты: i ауқымындағы (0, 28) GPIO.setup (i, GPIO. OUT): GPIO. шығысы (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) басып шығару («Бұл болды:» + str (i)) z = raw_input («Келесі?»)

Бұл орын алған кезде, мен мәтіндік файлға қай түйіннің қай жерде және қандай түспен жасағанын жазар едім. Мұны істеу керек, себебі бұл келесі қадамда өте пайдалы.

6 -қадам: Сұралған кезде жарық диодты қосу коды

Мен бұл жобаны қалай іске қосамын, бұл істікті қосуға мүмкіндік беретін негізгі веб -сайты бар Raspberry Pi Zero W. Бұл әдетте қосылатын және жұмыс істейтін негізгі Pi 4 өңдеуді жасай алатынын білдіреді, содан кейін кішкене Pi 0 істі сәл күрделірек етіп істікті қосуы керек. Мен мұны менің қондырғыма сәйкес келетіндіктен жасадым, сонымен қатар Pi 0 біз кейінірек жасайтын нәрсе үшін баяу болуы мүмкін екенін сездім.

GPO ретінде RPi. GPIO импорттау

колбадан импорттау уақыты Flask, render_template, request, jsonify import os app = Flask (_ name_) p = i ауқымындағы (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) «Off» @app.route («/off/all») def alloff (): i ауқымындағы (0, 28): GPIO.output (i, GPIO. LOW) «өшіру» @app.route («/on/») def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) _name_ == '_main_' болса, «On» қайтарады: app.run (debug = True, host = '0.0. 0,0 ')

Бұл қалай жұмыс істейді, ол IP мекенжайының URL мекенжайын күтеді, содан кейін қосылады немесе өшеді, содан кейін пин нөмірі.

бұл кодты Raspberry Pi үй каталогында сақтаңыз және оны «pin_website.py» деп атаңыз

Сіз мұны автоматты түрде іске қосуды орнатуыңыз керек, ол үшін терминал түрінде: sudo nano /etc /profile

Бұл файлдың төменгі жағына «python3 pin_website.py &» қосыңыз

«&» Өте маңызды, себебі ол фонда жұмыс істейді, сондықтан жүктеуді жалғастыруға мүмкіндік береді

7 -қадам: орналасқан жерді қалай алуға болады

Орналасқан жерді қалай алуға болады
Орналасқан жерді қалай алуға болады

IFTTT көмегімен сіз телефонды белгілі бір жерге енгізгенде, ол сізге электрондық пошта жібере алатынын немесе веб -мекенжайды жібере алатынын немесе телеграмға хабар жіберетіндей етіп қызметті орната аласыз.

8 -қадам: Мұның бәрі қалай жұмыс істейді

Менде бар сервер - Pi, ол менің веб -сайтымды орналастырады, https://freedns.afraid.org/ ұсынған қызметті қолдана отырып, порт жіберу және тұрақты DNS. Мұның бәрі өте күрделі, және сіз порттарды жіберу туралы түсінікке ие болуыңыз керек, мен бұл бөлікті басқа уақытта қалай жасау керектігін түсіндіре аламын.

Мұны істеудің тағы бір тәсілі - пи -ге хабарлама алу үшін телеграмманы пайдалану, мүмкін, ең қарапайымы - бұл электрондық поштаны оқитын электрондық поштаны оқу құралы және ол арқылы орналасқан жер туралы жаңартуларды қабылдайды.

Мен Telegram ботын немесе электрондық поштаны оқу құралын қолданып көрмеппін, бірақ мұны қалай жасау керектігін көрсететін көптеген оқулықтар бар.

Міне, менің Flask / Python коды, оны IFTTT көмегімен webhooks сұрайды:

колбадан импорттаудан Flask, render_template, request, jsonify

датаны импорттау датадан картаны импорттау * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): return request.remote_addr @app.route ('/mum/enter /') def mu (орналасу): mum.current_loc (орналасу) қайтару «Жаңартуға рахмет, мама!» @app.route («/dad/enter/») def da (l): dad.current_loc (l) қайтару «Жаңартуға рахмет, әке!» @app.route («/child/enter/») def child_enter (l): me.current_loc (l) «Hey, Me» қайтару @app.route ('/mum/exit/') def mume (орналасуы): mum.offline (орналасқан жері) «Жаңартуға рахмет, мама!» @app.route («/dad/exit/») def dade (l): dad.offline (l) «Жаңартуға рахмет, әке!» @app.route («/child/exit/») def child_exit (l): me.offline (l) «Hey, Me» қайтару @app.route («/reset») def redo (): setup () return «Қалпына келтіру!» егер _name_ == '_main_': app.run (отладка = Рас, хост = '0.0.0.0')

және map.py:

http.client, urllib.request, urllib.parse, urllib.error, base64 импорттау

ast, json импорттау уақыты импорттау ағыны импорттау 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»)) answer = conn.getresponse () conn = http.client. HTTPConnection ('192.1000.1.21) «GET», str («/off/all»)) жауап = қосылу. Жауап ашық («pind», «w») f.write (str (-1)) f.close () f = open («pinm», «w») f.write (str (-1)) f.close () сынып мамасы: def current_loc (l): global last_loc locs = {«llansantffraid»: 4, «oswestry»: 5, «lynclys»: 8, «home»: 9, «shrewsbury»: 11, «llanymynech»: 13, «төрт крест»: 18, «llandrinio»: 25, «welshpool»: 27} f = open («pin», «w») f.write (str (-1)) f.close () уақыт. ұйқы (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request («GET», str («/off/») + str (last_loc)) жауап = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request («GET», str («/on/») + str (locs [l])) жауап = 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,» төрт крест «: 18,» llandrinio «: 25,» welshpool «: 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (» GET «, str (») /off/«) + str (last_loc)) жауап = conn.getresponse () f = ашық (» түйреуіш «,» w «) f. жазу («python3 flash.py &») сынып әкесі: 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,» төрт крест «: 15} f = ашық (» 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)) жауап = қосылу. жауап, str («/on/») + str (locs [l])) жауап = қосылу «: 1,» үй «: 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)) жауап = conn.getresponse () f = ашық («pind», «w») f.write (str (locs [l])) f.close () os.system («python3 flashd.py &») мені сынып: def current_loc (l): global mlast_loc locs = {«үй»: 22, «мектеп»: 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)) жауап = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') қосылу («GET», str («/on/») + str (lo cs [l])) жауап = conn.getresponse () mlast_loc = locs [l] def offline (l): жаһандық dlast_loc locs = {«үй»: 22, «мектеп»: 2, «oswestry»: 14} қосылу = http.client. HTTPConnection ('192.168.1.251:5000') conn.request («GET», str («/off/») + str (mlast_loc)) жауап = conn.getresponse () f = ашық («пинм»), «w») f.write (str (locs [l])) f.close () os.system («python3 flashm.py &»)

9 -қадам: Менің жобамнан шабыт алу арқылы өзіңізді құрыңыз

Мен алдыңғы қадамды түсіну өте қиын болатынын білемін, сондықтан мен оны сізге картаны қалай жасау керектігін көрсетемін және светодиодты қосатын және өшіретін таңқурайға ие боламын. Енді сізге IFTTT көмегімен электрондық поштаны жіберетін питон сценарийін жасау қажет. Содан кейін сізге электрондық поштаны оқу керек, бұл өте оңай (google it). Содан кейін сіз электрондық поштаны оқып, ата -ананың орналасқан жерін тапқаннан кейін, «егер» операторын қолданып, қай істікті қосу керектігін табыңыз.

Картада жыпылықтайтын жарық олардың бұл аумақтан жаңа шыққанын білдіреді

Питоннан басқа пиодтағы жарықдиодты қосу әдісі төмендегідей:

http.client, urllib.request, urllib.parse, urllib.error, base64 импорттау

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #мұны таңқурай pi картасының IP мекенжайымен өзгертіңіз conn.request («GET», str («/off») /2 «)) # бұл 2 -түйреуішті өшіреді жауап = conn.getresponse () # бұл URL сұрайды, содан кейін pi картасы осыны оқиды және 2 -ші істікшені өшіреді.

Негізінде, сіз менің 3D картаммен істегенімді GPS бақылау картасын жасау үшін шабыт ретінде пайдалана аласыз деп үміттенемін.

Ұсынылған: