Агуулгын хүснэгт:

GPS хянах 3D газрын зураг: 9 алхам
GPS хянах 3D газрын зураг: 9 алхам

Видео: GPS хянах 3D газрын зураг: 9 алхам

Видео: GPS хянах 3D газрын зураг: 9 алхам
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Долдугаар сарын
Anonim
GPS хянах 3D газрын зураг
GPS хянах 3D газрын зураг
GPS хянах 3D газрын зураг
GPS хянах 3D газрын зураг

Энэхүү төсөл нь гэр бүлийн гишүүдийн байршлыг харуулсан LED гэрэлт цамхаг бүхий зам, гол мөрөн, хот суурин бүхий 3D хэвлэсэн 3D газрын зураг юм. Энэ нь хүүхэд сургуульд байгаа эсэхээс үл хамааран эцэг эхийн аль алиных нь байршлыг харуулж чадна. Бид мөн үүнийг ашиглан эцэг эхчүүд гэртээ хэдэн цагт ирэхийг урьдчилан таамаглах боломжтой бөгөөд ингэснээр оройн хоолыг зөв цагт нь хийх боломжтой болно. Энэ бол гэр бүл, найз нөхөддөө үзүүлэх, харуулах ерөнхийдөө гайхалтай төсөл юм.

Энэхүү зааварчилгаа хийх эсвэл миний хийсэн төслийн талаар олж мэдэх нь танд таалагдана гэж найдаж байна

Алхам 1: 3D газрын зураг авах

Танай газрын 3D газрын зургийг авахын тулд би үүнийг хийх явцад танд туслах зорилгоор тусдаа заавар бичсэн. Зааварчилгаа өгөх линк энд байна:

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

Алхам 2: LED оруулга хийх газрын зургийг бэлтгэх

Зам, хот, гол мөрийг агуулсан 3D газрын зурагтай болсны дараа тухайн хүн газрын зураг дээр хаана байгааг зааж өгөх арга хэрэгтэй байна. Би хоёр өнгийн 3мм RG LED ашигладаг байсан, учир нь газрын зургийн гол зорилго нь хоёр эцэг эх хаана байгааг харуулах явдал юм. Зарим газарт би хамгийн том хүүхэд хаана байгааг харуулахын тулд RGB LED ашигладаг байсан. Raspberry Pi дээр 28 зүү гаргах хязгаарлалт байдаг тул LED -ийн байршлыг ухаалгаар сонгоорой. Би 24 -ийг нь ашигласан тул та зүгээр байх ёстой.

ХАЧА өрөмдөхийн тулд би ердийн модон өрмийн машин сайн ажиллаж байгааг олж мэдсэн бөгөөд модоор хийсэн шигээ эмчилсэн.

Газрын зураг хэт зузаан байсан газруудад би үндсэн давхаргыг том өрмийн тусламжтайгаар өрөмдөж, дараа нь харагдахуйц 3 мм -ийн өрмийн цооногоор өрөмддөг байв.

Алхам 3: LED -ийг оруулна уу

LED -ийг оруулна уу
LED -ийг оруулна уу

Одоо бид LED -д суух цоорхойтой болсон тул тэдгээрийг нааж болно. PVA эсвэл Superglue нь үүнийг сайн гүйцэтгэдэг, би PVA -ийн эргэн тойронд гүйж, түүнийг битүүмжилсэн бөгөөд супер цавуу нь маш сайн ажилладаг болохыг олж мэдсэн. LED тус бүр дээр харагдах тал дээр хэдхэн мм зайд наалддаг эсэхийг шалгаарай. Нуруун дээрх хөлний талаар санаа зовох хэрэггүй, бид тэдгээрийг гагнаж дууссаны дараа нугалж болно.

Алхам 4: LED -ийг Raspberry Pi -тэй холбоно уу

Би LED-ийг Raspberry Pi-д шууд гагнасан, гэхдээ хэрэв та урьдчилан гагнасан толгойтой бол, эсвэл pi-ийг өөр зүйлд ашиглахыг хүсч байвал LED тус бүрт холбогч утас ашиглахыг санал болгож байна. Pi нь арилгаж болно. Би LED -ийг гагнахдаа хөлийг нь нугалж, нуруун дээр наалдахгүй байсныг та харж байна.

Алхам 5: LED -ийг туршиж үзээрэй

LED -ийг туршиж үзээрэй
LED -ийг туршиж үзээрэй

Бүх LED -ууд ажиллаж байгаа эсэхийг шалгахын тулд би боломжит зүү тус бүрээр дамжуулж скрипт ажиллуулж, тэдгээрийг нэг нэгээр нь асаав. Энэ нь аль зүү дугаар аль байрлалыг хийсэн болохыг тэмдэглэх боломжийг олгосон бөгөөд энэ нь маш ашигтай болсон.

RPi. GPIO -г GPIO болгон импортлох

i -ийн мужид GPIO.setmode (GPIO. BCM) импортлох хугацаа (0, 28): i мужид GPIO.setup (i, GPIO. OUT) (0, 28): GPIO. гаралт (i, GPIO. HIGH) time.sleep (0.3) GPIO.output (i, GPIO. LOW) хэвлэх ("Энэ байсан:" + str (i)) z = raw_input ("Дараагийн?")

Ийм зүйл тохиолдож байх үед би текст файл дээр ямар зүү ямар байршил, ямар өнгө хийснийг тэмдэглэх болно. Дараагийн алхамд маш хэрэгтэй байгаа тул та үүнийг хийх хэрэгтэй.

Алхам 6: Хүссэн тохиолдолд LED -ийг асаах код

Миний энэ төслийг хийх арга нь зүү асаах боломжийг олгодог үндсэн вэбсайттай нэг Raspberry Pi Zero W юм. Энэ нь ихэвчлэн асаалттай, ажиллаж байгаа үндсэн Pi 4 нь боловсруулалт хийх боломжтой гэсэн үг бөгөөд дараа нь бяцхан Pi 0 нь зүү асаахад л бүх зүйл арай илүү төвөгтэй болно. Энэ нь миний тохиргоонд тохирсон тул би үүнийг хийсэн бөгөөд Pi 0 нь бидний дараа хийх зүйлд бага зэрэг удаашралтай байгааг би мэдэрсэн.

RPi. GPIO -г GPIO болгон импортлох

колбоны импортоос авах хугацаа Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) i (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) буцах "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 = Үнэн, хост = '0.0. 0.0 ')

Энэ арга нь pi -ийн IP хаягийн url, дараа нь асаах, унтраах, дараа нь зүү дугаарыг хүлээх явдал юм.

энэ кодыг Raspberry Pi -ийн гэрийн лавлах санд хадгалаад "pin_website.py" гэж нэрлэнэ үү.

Та үүнийг автоматаар ажиллуулахаар тохируулах хэрэгтэй бөгөөд ингэхийн тулд үүнийг терминалын төрөлд оруулна уу: sudo nano /etc /profile

Энэ файлын доод хэсэгт "python3 pin_website.py &" нэмнэ үү.

"&" Нь арын дэвсгэр дээр ажилладаг тул ачаалах ажлыг үргэлжлүүлэх боломжийг олгодог тул маш чухал юм

Алхам 7: Байршлыг хэрхэн яаж авах вэ

Байршлыг хэрхэн яаж авах вэ
Байршлыг хэрхэн яаж авах вэ

IFTTT -ийг ашиглан утас тодорхой байршилд ороход танд имэйл илгээх эсвэл вэб хаягаа пинг хийх, эсвэл телеграмд мессеж илгээх үйлчилгээгээ тохируулж болно.

Алхам 8: Энэ бүхэн хэрхэн ажилладаг

Надад байгаа тохиргоо бол миний вэбсайтыг байршуулж буй сервер Pi бөгөөд https://freedns.afraid.org/ сайтын үйлчилгээг ашиглан порт дамжуулалт, статик DNS -тэй. Энэ бол нэлээд төвөгтэй зүйл бөгөөд та порт дамжуулах талаар ойлголттой байх хэрэгтэй, энэ хэсгийг өөр удаа хэрхэн хийх талаар би зааварчилгаа өгөх болно.

Үүнийг хийх өөр нэг арга бол телеграм ашиглан pi руу мессеж хүлээн авах явдал юм.

Би Telegram бот эсвэл имэйл уншигчийг туршиж үзээгүй боловч яаж хийхийг танд зааж өгөх олон заавар байдаг.

Энэ бол миний Flask / Python код бөгөөд дараа нь вэб хөтчүүд IFTTT ашиглан хүсдэг.

колбоны импортоос Колбо, render_template, хүсэлт, jsonify

dat os -аас импорт хийх огноог газрын зургаас оруулах * 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) return "Hey, Me" @app.route ("/reset") def redo (): setup () return "Дахин тохируулах!" хэрэв _name_ == '_main_': app.run (debug = Үнэн, хост = '0.0.0.0')

болон map.py:

http.client, urllib.request, urllib.parse, urllib.error, base64 импортлох

import 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'.251) "АВАХ", str ("/унтраах/бүх")) хариу = холболтын холбоос () f = нээлттэй ("зүү", "w") f. бичих (str (-1)) f.close () f = нээлттэй ("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 () цаг. sleep (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 (" /унтраах/") + str (last_loc)) хариулт = conn.getresponse () f = нээлттэй (" зүү "," w ") f. бичих (str (locs [l])) f.close () os.system ("python3 flash.py &") ангийн аав: 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," дөрвөн загалмай ": 15} f = нээлттэй (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') холболт t ("GET", str ("/off/") + str (dlast_loc)) хариулт = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("АВАХ", str ("/on/") + str (locs [l])) хариу = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," four cross ": 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 = {"home": 22, "school": 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): 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)) хариулт = conn.getresponse () f = нээлттэй ("pinm"), "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")

Алхам 9: Төслийнхөө урам зоригоос өөрийн өмчөө бий болго

Өмнөх алхамыг ойлгоход маш хэцүү байх болно гэдгийг би мэдэж байна, тиймээс би үүнийг газрын зургийг хэрхэн яаж хийхийг зааж өгөх болно. Та одоо IFTTT ашиглан танд имэйл илгээх питон скрипт үүсгэх хэрэгтэй. Дараа нь та имэйлийг унших кодыг олох хэрэгтэй бөгөөд энэ нь маш хялбар юм (google it). Дараа нь та имэйлийг уншиж, эцэг эхийнхээ байршлыг олж мэдсэнийхээ дараа 'if' мэдэгдлийг ашиглан ямар зүү асаахыг хайж олох хэрэгтэй.

Газрын зураг дээр анивчсан гэрэл нь тэд энэ нутгаас дөнгөж гарсан гэсэн үг юм

Питоноос өөр пи дээр LED асаах арга нь дараах байдалтай байна.

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 -ийг унтраана = холболтыг аваарай. Холбоосыг аваарай () # энэ нь URL -г хүсдэг, дараа нь газрын зураг pi үүнийг уншаад 2 дугаар зүүг унтраана.

Үндсэндээ та миний 3D газрын зургаар хийсэн зүйлийг ашиглан GPS хянах газрын зургийг өөрөө хийж чадна гэж найдаж байна.

Зөвлөмж болгож буй: