فهرست مطالب:

GPS ردیابی نقشه سه بعدی: 9 مرحله
GPS ردیابی نقشه سه بعدی: 9 مرحله

تصویری: GPS ردیابی نقشه سه بعدی: 9 مرحله

تصویری: GPS ردیابی نقشه سه بعدی: 9 مرحله
تصویری: نه کاری که نمیدونستی گوشیت انجام میده | 9 کاربرد مخفی گوشی 2024, جولای
Anonim
ردیابی GPS نقشه سه بعدی
ردیابی GPS نقشه سه بعدی
ردیابی GPS نقشه سه بعدی
ردیابی GPS نقشه سه بعدی

این پروژه یک نقشه سه بعدی چاپ شده با جاده ها ، رودخانه ها و شهرها با چراغ های LED برای نشان دادن موقعیت اعضای خانواده است. این می تواند نشان دهد که آیا کودک در مدرسه است یا نه ، یا مکان هر دو والدین. ما همچنین می توانیم از آن برای پیش بینی اینکه پدر و مادر در چه ساعتی به خانه می رسند استفاده کنیم تا شام در زمان مناسب تهیه شود. همچنین این یک پروژه عموماً جالب برای خودنمایی و نمایش به خانواده و دوستان است.

امیدوارم از ساخت این دستورالعمل لذت ببرید یا از آگاهی از پروژه ای که من ساخته ام لذت ببرید

مرحله 1: تهیه نقشه سه بعدی

برای دریافت یک نقشه سه بعدی از منطقه خود ، من یک دستورالعمل جداگانه برای کمک به شما در فرآیند تهیه آن نوشته ام. پیوند دستورالعمل در اینجا آمده است:

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

مرحله 2: تهیه نقشه برای درج های LED

اکنون که یک نقشه سه بعدی دارید ، دارای جاده ها ، شهرها و رودخانه ها است ، ما به روشی نیاز داریم که نشان دهد شخص در کجا قرار دارد. من از LED های RG سه میلی متری 3 میلی متری استفاده کردم ، زیرا هدف اصلی نقشه نشان دادن محل زندگی دو والدین است. در مکانهای خاصی از LED RGB استفاده کردم تا به من اجازه دهد بزرگترین کودک را در کجا نشان دهم. حداکثر 28 پین برای خروجی رزبری پای وجود دارد ، بنابراین مکان LED ها را عاقلانه انتخاب کنید. من در نهایت از 24 مورد استفاده کردم ، بنابراین شما باید خوب باشید.

برای حفاری PLA ، متوجه شدم که یک مته چوبی معمولی خوب کار می کند ، و من مانند چوب رفتار کردم.

در مکانهایی که نقشه بیش از حد ضخیم بود ، من لایه پایه را با یک مته بزرگ و سپس لایه فوقانی قابل رویت را با مته 3 میلی متری مناسب حفر می کردم.

مرحله 3: LED ها را وارد کنید

LED ها را وارد کنید
LED ها را وارد کنید

اکنون که سوراخ هایی برای نشستن LED ها داریم ، می توانیم آنها را بچسبانیم. PVA یا Superglue برای این کار خوب عمل می کند ، من متوجه شدم که PVA دور آن می چرخد و آن را محکم می کند و ابرچسب نیز بسیار خوب کار می کند. اطمینان حاصل کنید که با هر LED ، آنها فقط چند میلی متر در قسمت قابل مشاهده قرار می گیرند ، زیرا قرار گرفتن LED ها تا انتها کمی آشفته به نظر می رسد. نگران پاهای پشت نباشید ، ما می توانیم آنها را به محض لحیم شدن تا بزنیم.

مرحله 4: LED ها را به رزبری پای وصل کنید

من LED ها را مستقیماً به Raspberry Pi لحیم کردم ، اما اگر شما دارای هدر از پیش لحیم کاری شده هستید یا می خواهید از pi برای چیز دیگری استفاده کنید ، پیشنهاد می کنم برای هر LED از سیم های بلوز استفاده کنید ، به این معنی که Pi قابل حذف است می بینید که وقتی LED را لحیم کردم ، پاها را تا کردم تا به پشت نچسبد.

مرحله 5: LED ها را آزمایش کنید

LED ها را تست کنید
LED ها را تست کنید

برای اطمینان از اینکه همه LED ها کار می کنند ، من یک اسکریپت را اجرا کردم که از طریق هر پین ممکن عبور می کند و آنها را یکی یکی روشن می کند ، که وقتی روی enter کلیک می کنم ، روی مورد بعدی قرار می گیرد. این به من اجازه داد تا یادداشت کنم که کدام شماره پین کدام مکان را انجام داد ، که بسیار مفید بود.

RPi. GPIO را به عنوان GPIO وارد کنید

زمان وارد کردن GPIO.setmode (GPIO. BCM) برای i در محدوده (0 ، 28): GPIO.setup (i، GPIO. OUT) برای i در محدوده (0، 28): GPIO.output (i، GPIO. HIGH) time.sleep (0.3) GPIO.output (i، GPIO. LOW) print ("That was:" + 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) for i in range (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) return "Off" @app.route ("/off/all") def alloff (): برای i در محدوده (0 ، 28): GPIO.output (i، GPIO. LOW) return "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin)، GPIO. HIGH) در صورت _name_ == '_main_': "app.run (اشکال زدایی درست ، درست ، میزبان = '0.0)" روشن "است. 0.0 ')

روش کار این است که منتظر url آدرس IP pi و سپس روشن یا خاموش و سپس شماره پین است.

این کد را در فهرست اصلی رزبری پای ذخیره کرده و نام آن را "pin_website.py" بگذارید

شما باید این را تنظیم کنید تا به طور خودکار اجرا شود ، بنابراین برای انجام این کار ، در نوع ترمینال: sudo nano /etc /profile

در انتهای این فایل ، "python3 pin_website.py &" را اضافه کنید

"&" ضروری است ، زیرا باعث می شود در پس زمینه اجرا شود ، و بنابراین اجازه می دهد تا بوت ادامه یابد

مرحله 7: نحوه دریافت مکان

نحوه دریافت مکان
نحوه دریافت مکان

با استفاده از IFTTT ، می توانید سرویسی را طوری تنظیم کنید که وقتی تلفن وارد مکان خاصی می شود ، بتواند برای شما ایمیل یا آدرس وب را پینگ کند یا در تلگرام به شما پیام دهد.

مرحله 8: چگونه این همه کار می کند

راه اندازی من سرور Pi است ، وب سایت من را میزبانی می کند ، با ارسال پورت و DNS ثابت با استفاده از سرویس ارائه شده توسط https://freedns.afraid.org/. بسیاری از این موارد بسیار پیچیده است ، و شما باید در مورد حمل و نقل پورت درک داشته باشید ، ممکن است بار دیگر این کار را انجام دهم.

راه دیگری که می توانید انجام دهید این است که از تلگرام برای دریافت پیام به pi استفاده کنید ، یا احتمالاً ساده ترین راه این است که یک ایمیل خوان بخوانید که ایمیل ها را بخواند و از طریق آن به روز رسانی موقعیت مکانی را دریافت کند.

من ربات تلگرام یا ایمیل خوان را امتحان نکرده ام ، اما آموزش های زیادی وجود دارد که به شما نشان می دهد چگونه این کار را انجام دهید.

در اینجا کد Flask / Python من است که سپس توسط webhooks با استفاده از IFTTT درخواست می شود:

from flask import Flask ، render_template ، request، jsonify

import os from datetime واردات datetime از map import * app = Flask (_ name_) l = 0 setup () @app.route ('/') def index (): request return.remote_addr @app.route ('/mum/enter /') def mu (location): mum.current_loc (location) return "Thanks for the Update، Mum!" @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 (location): mum.offline (محل) بازگشت "با تشکر از به روز رسانی ، مادر!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "Thanks for the Update، dad!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) بازگشت "Hey، Me" @app.route ("/reset") def redo (): setup () return "تنظیم مجدد!" if _name_ == '_main_': app.run (اشکال زدایی = درست ، میزبان = '0.0.0.0')

و map.py:

واردات 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 defup (): conn = http.client. HTTPSConnection ('freedns.afraid.org') conn.request ("GET"، str ("/dynamic/update.php؟ ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1) (' 192.168.1) "GET" ، str ("/off/all")) respond = conn.getresponse () f = open ("pin"، "w") f.write (str (-1)) f.close () f = باز کردن ("pind"، "w") f.write (str (-1)) f.close () f = open ("pinm"، "w") f.write (str (-1)) f.close () mum class: def current_loc (l): global last_loc locs = {"llansantffraid": 4 ، "oswestry": 5 ، "lynclys": 8 ، "خانه": 9 ، "shrewsbury": 11 ، "llanymynech": 13 ، "چهار صلیب": 18 ، "llandrinio": 25 ، "welshpool": 27} f = open ("pin"، "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 (last_loc)) respond = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET"، str ("/on/") + str (locs [l])) respond = conn.getresponse () last_loc = locs [l] off off (l): global last_loc locs = {"llansantffraid": 4 ، "oswestry": 5 ، "lynclys": 8 ، "خانه": 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)) respond = conn.getresponse () f = open (" pin "،" w ") f.write (str (locs [l])) f.close () os.system ("python3 flash.py &") کلاس پدر: locs = {"welshpool": 3 ، "lynclys": 1 ، "home": 23 ، "shrewsbury": 0 ، "llanymynech": 6 ، "چهار صلیب": 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)) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("دریافت" ، str ("/on/") + str (locs [l])) respond = conn.getresponse () dlast_loc = locs [l] off offline (l): global dlast_loc locs = {"welshpool": 3، "lynclys ": 1،" خانه ": 23 ،" shrewsbury ": 0 ،" llanymynech ": 6 ،" چهار صلیب ": 15 ،" llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET" ، str ("/off/") + str (dlast_loc)) respond = conn.getresponse () f = open ("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)) respond = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET" ، str ("/on/") + str (lo cs [l])) respond = conn.getresponse () mlast_loc = locs [l] 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)) respond = conn.getresponse () f = open ("pinm" ، "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")

مرحله 9: خودتان را از الهام گرفتن از پروژه من بسازید

بنابراین من می دانم که درک مرحله قبل بسیار سخت خواهد بود ، بنابراین من آن را به شما نشان خواهم داد که چگونه نقشه را بسازید و بتوانم یک تمشک pi داشته باشم که LED ها را روشن و خاموش می کند. اکنون باید یک اسکریپت پایتون ایجاد کنید که با استفاده از IFTTT به شما ایمیل ارسال کند. سپس باید یک کد کد ایمیل را بخوانید ، که بسیار آسان است (آن را در گوگل جستجو کنید). پس از خواندن یک ایمیل و یافتن مکان والدین ، از عبارات 'if' برای پیدا کردن کدام پین برای روشن کردن استفاده کنید.

بر روی نقشه ، چراغ چشمک زن به این معنی است که آنها به تازگی منطقه را ترک کرده اند

روش روشن کردن LED ها در pi دیگری از پایتون به شرح زیر است:

واردات http.client، urllib.request، urllib.parse، urllib.error، base64

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #این را با آدرس IP نقشه raspberry pi conn.request ("GET" ، str ("/off /2 ")) # این شماره شماره 2 را خاموش می کند پاسخ = conn.getresponse () # این آدرس را درخواست می کند ، و سپس نقشه pi این را می خواند و شماره شماره 2 را خاموش می کند

اساساً ، امیدوارم بتوانید از آنچه من با نقشه سه بعدی انجام داده ام الهام بگیرید تا نقشه ردیابی GPS خود را بسازید.

توصیه شده: